В этом посте описаны некоторые эксперименты, которые я проводил с использованием вспомогательной оптимизации потерь для увеличения гипотез (ALOHA) для обнаружения домена DGA.

(Обновление 2019–07–18). Получив отзыв от одного из авторов статьи ALOHA, я изменил свой код, чтобы установить веса потерь для вспомогательных целей, как они это делали в своей статье (использованные веса: основная цель 1.0, вспомогательные цели 0.1). Я также добавил 3 словарных DGA. Все диаграммы и показатели были обновлены, чтобы отразить это.

Недавно я прочитал эту статью ALOHA: Дополнительная оптимизация потерь для увеличения гипотез, написанную Итаном М. Раддом, Фелипе Н. Дукау, Коди Уайлдом, Константином Берлином и Ричардом Харангом из Sophos Lab. Это исследование будет представлено на выставке USENIX Security 2019 в августе 2019 года. В этом документе делятся выводами о том, что добавление большего количества целей прогнозирования к их модели во время обучения позволяет повысить эффективность прогнозирования основной цели прогнозирования. В частности, они модифицируют основанную на глубоком обучении модель обнаружения вредоносных программ (двоичный классификатор), чтобы также прогнозировать такие вещи, как прогнозы отдельных поставщиков, теги вредоносных программ и количество обнаружений VT. Их вспомогательная архитектура потерь приводит к значительному снижению частоты ошибок обнаружения (ложноотрицательных результатов) на 42,6% при частоте ложных срабатываний (FPR) 10 ^ −3 по сравнению с аналогичной моделью только с одной целью и снижением на 53,8%. при 10 ^ −5 FPR. "

Рисунок 1 из бумаги

Схематический обзор архитектуры нашей нейронной сети. Несколько выходных слоев с соответствующими функциями потерь при желании могут быть подключены к общей базовой топологии, которая состоит из пяти плотных блоков. Каждый блок состоит из уровней Dropout, плотной и пакетной нормализации, за которыми следует активация экспоненциальной линейной единицы (ELU) размеров 1024, 768, 512, 512 и 512. Эта база связана с нашим основным вредоносным / безопасным выходом (сплошная линия на рисунке) с потерей совокупной метки составляет нашу базовую архитектуру. Вспомогательные выходы и соответствующие им потери показаны пунктирными линиями. Вспомогательные потери делятся на три типа: потеря счетчика, потеря нескольких меток поставщика и потеря тега атрибутов нескольких меток.

Этот документ заставил меня задуматься, насколько хорошо этот метод будет работать в других областях сетевой безопасности, таких как:

  • Обнаружение вредоносных URL-адресов из наборов эксплойтов - возможные вспомогательные метки: имена наборов эксплойтов, категории веб-прокси и т. Д.
  • Обнаружение вредоносных доменов C2 - возможные вспомогательные метки: имена семейств вредоносных программ, DGA или нет, категории прокси.
  • Обнаружение доменов DGA - возможные вспомогательные метки: семейства вредоносных программ, тип DGA (список слов, шестнадцатеричный, буквенно-цифровой и т. Д.).

Я решил изучить последний вариант использования того, насколько хорошо вспомогательная оптимизация потерь может улучшить обнаружение домена DGA. Для этой работы я выделил четыре модели DGA и использовал их в качестве базовых. Затем я провел несколько экспериментов. Весь код из этих экспериментов размещен здесь. Этот код в значительной степени основан на dga_predict Endgame, но со многими модификациями.

Данные:

Для этой работы я использовал те же источники данных, что и dga_predict Endgame (но я добавил 3 дополнительных DGA: gozi, matsnu и suppobox).

  • Alexa топ 1 млн доменов
  • классические домены DGA для следующих семейств вредоносных программ: banjori, corebot, cryptolocker, dircrypt, kraken, lockyv2, pykspa, qakbot, ramdo, ramnit и simda.
  • Словарные / словарные домены DGA для следующих семейств вредоносных программ: gozi, matsnu и suppobox.

Базовые модели:

Я использовал 4 базовые бинарные модели + 4 расширения этих моделей, которые используют вспомогательную оптимизацию потерь для увеличения гипотез.

Базовые модели:

Расширенные модели ALOHA (каждая просто использует 11 семейств вредоносных программ DGA, упомянутых ранее как дополнительные двоичные метки):

  • АЛОХА CNN
  • АЛОХА Биграмма
  • ALOHA LSTM
  • АЛОХА CNN + LSTM

Я обучил каждую из этих моделей, используя настройки по умолчанию, предоставленные dga_predict (за исключением того, что я добавил стратифицированную выборку на основе полных меток: семейства доброкачественных + вредоносных программ):

  • тренировочные сплиты: 76% обучение, 4% проверка, 20% тестирование
  • все модели были обучены с размером партии 128
  • Модели CNN, LSTM и CNN + LSTM использовали до 25 эпох, а модели биграмм использовали до 50 эпох.

Ниже показаны подсчеты того, сколько из каждого семейства DGA было использовано и сколько доменов Alexa top 1m были включены (обозначены как «доброкачественные»).

In [1]: import pickle
In [2]: from collections import Counter
In [3]: data = pickle.loads(open('traindata.pkl', 'rb').read())
In [4]: Counter([d[0] for d in data]).most_common(100)
Out[4]: 
[('benign', 139935),
 ('qakbot', 10000),
 ('dircrypt', 10000),
 ('pykspa', 10000),
 ('corebot', 10000),
 ('kraken', 10000),
 ('suppobox', 10000),
 ('gozi', 10000),
 ('ramnit', 10000),
 ('matsnu', 10000),
 ('locky', 9999),
 ('banjori', 9984),
 ('simda', 9984),
 ('ramdo', 9984),
 ('cryptolocker', 9984)]

Полученные результаты

Показатели AUC модели (отсортированные по AUC):

  • aloha_bigram 0.9435
  • биграмма 0,9444
  • cnn 0,9817
  • aloha_cnn 0,9820
  • lstm 0,9944
  • aloha_cnn_lstm 0.9947
  • aloha_lstm 0,9950
  • cnn_lstm 0,9957

В целом, по данным AUC, метод ALOHA только улучшил модели LSTM и CNN и лишь незначительно. Кривые ROC показывают снижение количества ошибок при очень низком уровне ложных срабатываний (от 10 ^ -5 до 10 ^ -3), что аналогично тому, что наблюдалось в статье ALOHA, однако выгода в статье оказалась намного больше.

ROC: линейная шкала для всех моделей

ROC: шкала журнала для всех моделей

ROC: шкала журнала моделей биграмм

ROC: шкала журнала моделей CNN

ROC: шкала журнала моделей CNN + LSTM

ROC: шкала журнала моделей LSTM

Тепловая карта

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

Обратите внимание, что все последние 3 строки представляют собой DGA, основанные на словах / словарях. Интересно, хотя и не слишком удивительно, что модели, включающие LSTM, как правило, лучше справлялись с этими DGA.

Я пометил зелеными рамками те места, где модели ALOHA оказались лучше. Это кажется наиболее очевидным для моделей, которые включают LSTM, и для DGA, основанного на словах / словарях.

Будущая работа:

Это некоторые области будущей работы, на которые я надеюсь успеть опробовать.

Добавьте в проект больше генераторов DGA, особенно. словарные / словарные DGA и посмотрите, как реагируют модели. Я определил несколько (см. Word-based / Dictionary-based DGA Resources здесь для получения дополнительной информации).

Протестируйте эти модели в отношении всего DGAархива и сгенерируйте обновленную тепловую карту, как указано выше.

Попробуйте включить другие вспомогательные цели, например:

  • Тип DGA (шестнадцатеричный, буквенно-цифровой, пользовательский алфавит, словарь / на основе слов и т. Д.)
  • КЛАССИЧЕСКАЯ DGA Доменных Особенности шпагат энтропия, ̶ Граф LONGEST Последовательная согласная Струнный, ̶ Граф LONGEST Последовательная гласная Струнный, ̶ и т.д. Я интересно, если вынудив Nn изучить этот улучшил бы его первичная SCORING МЕХАНИЗМ. Обновление от 23.07.2019. Я расширил код, добавив энтропию в качестве вспомогательной цели, и, похоже, это не повлияло. Ну что ж, попробовать стоило. Если интересно, используйте здесь.
  • Метаданные из VT отчет по домену.
  • Сводка / статистика пассивного DNS (PDNS).
  • Особенности из различных аспектов записи whois домена.

Если вам понравился этот пост, возможно, вас заинтересует мой другой недавний пост Начало работы с исследованиями по обнаружению доменов DGA. Также, пожалуйста, просмотрите больше сообщений в блоге Security Data Science в личном блоге: covert.io.

Как всегда, обратная связь приветствуется, поэтому, пожалуйста, оставьте сообщение здесь, на Medium или @ me на twitter!

–Джейсон
@jason_trost

Изначально это было опубликовано в моем личном блоге здесь.