Говоря о «вредоносных программах в дикой природе», у многих может возникнуть соблазн представить диких экзотических существ, бегающих по сети, и в некотором смысле это правильно. «Вредоносное ПО в дикой природе» относится к выпущенному вредоносному программному обеспечению, способному распространяться и причинять ущерб (в отличие от «зоопарка вредоносного ПО», которое создается в замкнутых средах для проверки надежности различных систем).

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

Один из способов создать этот «кибер-стадный иммунитет» — извлекать информацию из общедоступных источников, чтобы отслеживать в режиме реального времени, что происходит по всему миру. В этом посте мы поговорим о том, как использовать машинное обучение и обработку естественного языка (NLP) для просеивания сотен тысяч твитов из Twitter, чтобы собрать информацию, которая в конечном итоге приведет к созданию более качественных, быстрых и современных систем защиты.

Найти порядок в хаосе

Имена вредоносных программ являются одним из самых сложных индикаторов компрометации (IoC) для обнаружения в неструктурированных наборах данных, поскольку они не следуют регулярному шаблону, как другие IoC, такие как IP-адреса (четверка с точками), адреса электронной почты (user@domain), Идентификаторы общих уязвимостей и экспозиций (CVE-YYYY-произвольные цифры), среди прочего.

Первая стратегия решения этой проблемы — спросить, как наш мозг может отличить названия вредоносных программ от всех других слов в тексте (например, в приведенном выше твите даже неспециалисты смогут выделить MobSTSPY). в качестве имени вредоносной программы) и имитировать мыслительный процесс с помощью алгоритма.

Конвейер для получения имен вредоносных программ

После сбора более 300 000 сообщений из Твиттера, содержащих слово «вредоносное ПО» или «программа-вымогатель», в течение 18 недель первым шагом стала очистка и обработка каждого твита с целью удаления специальных символов, хэштегов, URL-адресов и прочего мусора. Используя тот же твит выше в качестве примера, обработанный твит будет выглядеть как следующий список слов:

Как только мы обработаем твит, мы можем сделать следующий шаг, удалив все английские слова, поскольку, как правило, названия вредоносных программ обычно не являются самостоятельными словами. Затем мы получаем список помеченных слов, которые потенциально могут быть именем вредоносного ПО:

Мы сразу знаем, что Google — это не имя вредоносного ПО, но наш алгоритм еще этого не знает. Причина, по которой мы знаем, что Google не является именем вредоносного ПО, заключается в том, что наш мозг подвергался воздействию этого бренда в течение многих лет, и если мы не готовы просматривать каждый твит и маркировать каждое слово, теперь нам нужно научить нашу модель тому, как самостоятельно уловить отличие от окружающей среды.

От букв к цифрам

Чтобы компенсировать все недостающие годы знакомства с брендами и названиями компаний, которых нет у компьютера, мы учим наш алгоритм получать подсказки из контекста. Используя небольшой набор предварительно размеченных данных, модель обучается путем создания контекстного окна для каждого помеченного слова. Хотя компьютеры понимают слова и буквы не так, как люди, они понимают числа, и в ходе этого процесса каждому слову присваивается коэффициент (число), который в конечном итоге поможет определить, является ли помеченное слово именем вредоносного ПО или нет.

Хорошо подходящим алгоритмом машинного обучения для этой задачи является логистическая регрессия, которая моделирует бинарную зависимую переменную (в данном случае вредоносное ПО или не вредоносное ПО). Интересно, что, применяя этот простой метод, модель способна изучать такие слова, как поскольку «против», «анти», «защищает», «сканер» и «борец» обычно не ассоциируются с названиями вредоносных программ, а такие слова, как «бэкдор», «заражения», «увидел», «разоблачил» и т. «атака» есть.

Результат: список «вредоносных программ в дикой природе», о котором люди говорят в Твиттере, в режиме реального времени. Этот же процесс можно применить и к другим общедоступным источникам данных. Совместная работа над «кибер-стадным иммунитетом» день за днем.


Спасибо компании TruSTAR Technology и моим наставникам: Николасу, Зайнаб и Ларе за их обучение в области науки о данных.
— Сан-Франциско, Калифорния. 2019