С развитием машинного обучения в последние несколько лет многие задачи решаются с помощью алгоритмов машинного обучения. К сожалению или к счастью, с помощью алгоритмов машинного обучения сделано мало работы по обеспечению безопасности. Поэтому я подумал о том, чтобы представить некоторые из них на Fsecurify.

Несколько дней назад у меня возникла идея о том, что, если бы мы могли обнаружить вредоносный URL-адрес из не вредоносного URL-адреса, используя некоторый алгоритм машинного обучения. По этой теме было проведено некоторое исследование, поэтому я подумал, что мне стоит попробовать и реализовать что-то с нуля. Итак, начнем.

Использование машинного обучения для обнаружения вредоносных URL-адресов с точностью 98%

Сбор данных

Первой задачей был сбор данных. Я пробежался по сети и нашел несколько сайтов, предлагающих вредоносные ссылки. Я установил небольшой сканер и просмотрел множество вредоносных ссылок с разных сайтов. Следующей задачей было найти четкие URL-адреса. К счастью, ползать мне не пришлось. Был доступен набор данных. Не волнуйтесь, если я не укажу источники данных. Вы получите данные в конце этой публикации.

Итак, я собрал около 400 000 URL-адресов, из которых около 80 000 были вредоносными, а другие - чистыми. Вот и все, наш набор данных. Пойдем дальше.

Анализ

Мы будем использовать логистическую регрессию, поскольку это быстро. Первая часть заключалась в токенизации URL-адресов. Я написал для этого свою собственную функцию токенизатора, поскольку URL-адреса не похожи на текст какого-либо другого документа.

Следующий шаг - загрузить данные и сохранить их в списке.

Теперь, когда у нас есть данные в нашем списке, нам нужно векторизовать наши URL-адреса. Я использовал оценки tf-idf вместо использования классификации пакетов слов, поскольку в URL-адресах есть слова, которые более важны, чем другие слова, например 'virus', '.exe', '. Dat' и т. д. Давайте преобразуем URL-адреса в векторную форму.

У нас есть векторы. Теперь давайте преобразуем его в тестовые и обучающие данные и перейдем к выполнению логистической регрессии.

Вот и все. Видите ли, это так просто, но так эффективно. Мы получаем точность 98%. Это очень высокая ценность для машины, которая может обнаружить вредоносный URL с помощью.

Хотите проверить несколько ссылок, чтобы увидеть, дает ли модель хорошие прогнозы? Конечно. Давай сделаем это.

Результаты оказались потрясающими.

Это то, что предсказал бы человек. Нет?

Данные и код доступны на Github.

Вот и все. Надеюсь, вам понравилось читать.

Ваши комментарии приветствуются.