Отказ от ответственности: ничто в этом блоге не связано с повседневной работой автора. Контент не является аффилированным лицом и не спонсируется какими-либо компаниями.

Импортировано из моего блога на github https://toooold.com/2021/07/16/lstm_dga_is_wrong.html

Ссылка на китайскую версию https://toooold.com/2021/07/12/dga_detection.html

Короткий ответ заключается в том, что модель обнаружения DGA на основе char с LSTM уязвима для атак со стороны противника, а ее контрольный показатель 99,9% на фиксированном наборе данных может привести к значительному риску при развертывании в реальном мире DNS-трафик с миллионами запросов в секунду. Причина использования LSTM при решении этой проблемы связана с быстрым обучением. В этой статье мы кратко представляем состязательный анализ на основе выборки и некоторый анализ «быстрого обучения», начиная с исследования «почему LSTM обнаруживает неправильность DGA». Документы и открытый исходный код, упомянутые здесь, перечислены в справочном разделе для справки.

Обнаружение DGA на основе признаков Char

Обнаружение ботнетов алгоритма генерации домена (DGA) из журналов трафика DNS было горячей темой, и методы, как правило, делятся на две категории: модели классификации, использующие признаки символов доменного имени, и модели кластеризации, использующие последовательность трафика DNS и функции совпадения, с первый из них более популярен, потому что проще развертывать онлайн-модели, а также требует меньше ресурсов, что больше подходит для сценариев, в которых журналы DNS не могут быть легко собраны из коробки службы безопасности.

Модели классификации на основе признаков символов используют строковые шаблоны из доменов DGA для обучения и создания моделей бинарной или множественной классификации, таких как случайность частоты и положения, соотношение смесей гласных и согласных, комбинации n-грамм и т. д., и обычно используют известные DGA в качестве положительных образцов и домены Alexa Top в качестве отрицательных образцов. Статья CrowdStrike «Сквозной анализ семейства вредоносных программ алгоритма генерации домена» в BlackHat 2013 — один из первых примеров в продукте. В 2015 году я опубликовал статью под названием «Идентификация случайно сгенерированных доменов C&C с помощью машинного обучения», в которой я использовал SVM для обнаружения DGA в Wooyun и открыл исходный код; индустрия безопасности признала FANCI в usenixsecurity18, опубликованном «FANCI: основанная на функциях автоматическая классификация и анализ NXDomain» и соответствующем открытом исходном коде в 2018 году. достичь точности более 99% в соответствующих наборах данных.

Поскольку сейчас мы живем в эпоху глубокого обучения, почему бы не использовать модель глубокого обучения для изучения этих функций?

LSTM выглядит более «глубоким обучением»

В конце 2016 года исследователи Endgame (теперь Elastic) разработали простой LSTM, который использует порядок появления соседних символов в доменном имени в качестве входных данных для построения модели классификации; в 2018 году статья Duc Tran et al «Основа LSTM для обработки мультиклассового дисбаланса при обнаружении ботнетов DGA» представляет собой улучшение несбалансированной классификации, а также LSTM.MI с открытым исходным кодом неоднократно упоминался в отрасли. Оба основаны на этой простой сетевой структуре LSTM (из открытого исходного кода эндшпиля, и LSTM.MI использует то же самое).

def build_model(max_features, maxlen):
"""Построить модель LSTM"""
model = Sequential()
model.add(Embedding(max_features, 128, input_length=maxlen))< br /> model.add(LSTM(128))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid '))

model.compile(потеря=’binary_crossentropy’,
оптимизатор=’rmsprop’)

модель возврата

Те, кто знаком с LSTM, могут сказать, что он почти идентичен примерам LSTM в учебниках по классификации текстов, даже длина вектора кодирования 128 остается прежней, а изучаемые им функции можно рассматривать как подмножество n-грамм. функции класса для этого набора данных. Итак, можем ли мы атаковать и обмануть эту модель?

На самом деле эффективный метод атаки намного проще, чем вы думаете, и эти модели LSTM более уязвимы, чем вы думаете.

Простая атака на детектор LSTM DGA

Существуют атаки белого ящика, которые знают обучающий набор данных или структуру сети, и соответствующие подходы черного ящика для обнаружения LSTM DGA.

«CharBot: простой и эффективный метод обхода классификаторов DGA» — это метод атаки белого ящика, который требует очень небольшого программирования: выберите случайное доменное имя из отрицательных выборок обучающего набора данных и случайным образом выберите и замените два символа на два других, а затем замените ДВУ. Эта простая атака может снизить точность таких моделей, как LSTM.MI, до уровня ниже 90 %, а уровень обнаружения — до 30 %.

Некоторые модели атак методом «черного ящика», такие как «MaskDGA: метод уклонения от «черного ящика» против классификаторов DGA и состязательной защиты», также представляют интерес. Просто создав неглубокую состязательную сеть, можно уменьшить показатель F-1 таких моделей, как LSTM.MI, с 0,977 до 0,495, что сделает его неотличимым от случайного предположения. DeepDGA, DeceptionDGA и другие подобные подходы используют аналогичный подход.

Как мы видим, обнаружение LSTM DGA чрезвычайно уязвимо для простых состязательных атак на основе выборки, не говоря уже о том, что заявленная моделью точность 99,9% может быть неверной для доменов, фигурирующих в крупномасштабных журналах трафика DNS за пределами набора данных проверки. Обнаружение LSTM DGA, с другой стороны, обычно плохо работает для подобных словарю DGA с неслучайными символами, такими как `suppobox`.

Причина этого

В моем предыдущем сообщении в блоге «Смертельное совпадение алгоритмов генерации доменов» я описал процесс генерации псевдослучайного типа DGA, общий подход которого можно рассматривать как серию строк, сгенерированных путем добавления ряда операций сдвига. в начальное число случайных чисел на основе даты. Такие операции «сдвига» не изучаются LSTM или, в более широком смысле, сетевыми структурами RNN. Они могут только сопоставить результаты алгоритма DGA с фиксированным набором данных, используя комбинацию символов n-грамм. Однако такое соответствие не гарантирует таких же правильных результатов на новом наборе данных; вместо этого некоторые неправильные комбинации n-грамм могут оказаться действительными в этом наборе данных и, таким образом, механизм распространения LSTM придает им больший вес, но сам LSTM не может отличить, какие комбинации действительно действительны, а какие просто оказались. Проще говоря, он не может гарантировать, что изученные признаки действительны для различения DGA; он изучает только предвзятость, введенную обучающим набором данных для характеристик символов DGA, с минимальными усилиями.

Эта проблема существует не только для LSTM при обнаружении DGA, но и для других проблем глубокого обучения. В статье «Быстрое обучение в глубоких нейронных сетях» обсуждается, как различные модели глубокого обучения изучают ярлыки, а не истинные и действительные комбинации функций. Можем ли мы доверять человеку, который всегда идет коротким путем? То же самое и с машинным обучением.

Итак, любая надежда на онлайн-алгоритм

Является ли онлайн-обнаружение DGA на основе функций набора символов совершенно безнадежным теперь, когда LSTM подвергся резкой критике? Это все еще может быть сделано, поскольку существует потребность рынка.

Метод символьных признаков

В то время как алгоритмы, основанные на статистических функциях, также уязвимы для состязательных атак на основе выборок, их ручная разработка функций гораздо более интерпретируема, чем LSTM, а их интерпретируемые функции обеспечивают основу для принятия решений о сортировке во время операций безопасности, даже в случаях ложных срабатываний. Существуют также дополнительные академические подходы к обучению более надежных моделей LSTM с использованием состязательных выборок, которые направлены на повышение надежности LSTM за счет уменьшения смещения индукции, вносимого набором данных, но требуют более частого обновления входных данных и тестирования, а также регулярного развертывания обновленных моделей. .

Метод журнала трафика DNS

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

Word2vec и родственные модели обычно используются в моделях DGA для последовательного обнаружения признаков. Этот подход подробно описан в моем патенте «Система корреляции доменных имен», представленном в 2015 году. Основная идея состоит в том, чтобы использовать скользящее окно последовательностей запросов DNS для изучения векторных представлений каждого доменного имени путем обучения пар доменных имен, которые появляются в них, а затем использовать эти векторные представления для кластеризации. Эти векторные представления используются для формирования кластеров, и внутри кластеров мы находим кластеры, соответствующие поведенческим характеристикам сети DGA (например, в основном NXDOMAIN). Этот подход, конечно, не уникален для моей идеи, и за последние годы он несколько раз открывался заново, включая, помимо прочего, «Векторное представление доменных имен в Интернете с использованием метода встраивания слов» (2017 г.), «Dns2Vec. : Изучение доменных имен в Интернете с помощью глубокого обучения» (2019 г.) и «Обнаружение DGA на основе доменных вложений с методом пошагового обучения» (2020 г.). Можно выбрать любой из них для дальнейшего изучения алгоритма и идеи, лежащей в его основе, поэтому здесь нет необходимости подробно останавливаться. Истинная сложность реализации таких подходов в промышленных системах связана с необходимостью реализации крупномасштабных данных в режиме, близком к реальному времени, а также эффективных и надежных механизмов обучения моделей, которым в академических кругах уделяется мало внимания.

Обнаружение признаков совпадения DGA похоже на идею признаков последовательности, но позволяет избежать хлопот, связанных с обучением модели, подобной word2vec, которая является дорогостоящей. В 360netlab (https://twitter.com/360netlab) A DGA Odyssey PDNS Driven Driven DGA Analysis они используют матрицу признаков доменов A и B, которые совпадают в этот период времени и разрешаются в один и тот же IP-адрес, умножьте эту матрицу признаков на ее собственное транспонирование, а затем используйте алгоритм Лувена для сегментации на кластеры и используйте поведение сети DGA для дальнейшей калибровки. Я полагаю, читатель должен понимать, что этот алгоритм не требует очень дорогих вычислений модели или хранения журналов, а только должен накапливать достаточно DNS-трафика для кластеризации Лувена в пределах временного окна. При разумных инженерных затратах это может стать надежным методом обнаружения практически в режиме онлайн.

Наконец, люди могут спросить, поскольку некоторые DGA генерируют только один или два домена за раз, как кластеризация может обнаружить их в этом методе? `DBSCAN` и другие кластерные алгоритмы могут привести к `идентификатору кластера = -1`: если домены не кластеризуются с другими доменами, не подходят ни к кому, они могут быть подозрительными.

Резюме

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

Ссылка и дополнительная литература

* Слайды CrowdStrike https://www.slideshare.net/CrowdStrike/endtoend-analysis-of-a-domain-generating
* Технический документ CrowdStrike https://paper.bobylive.com/Meeting_Papers/BlackHat/ USA-2013/US-13-Geffner-End-To-End-Analysis-of-a-Domain-Generating-Algorithm-Malware-Family-WP.pdf
* Идентификация случайно сгенерированных доменов C&C с помощью машинного обучения ” на китайском языке «https://zhuanlan.zhihu.com/p/20045198
* Мой детектор DGA с открытым исходным кодом https://github.com/phunterlau/dga_classifier
* Endgame paper https ://arxiv.org/abs/1611.00791 github https://github.com/endgameinc/dga_predict
* Документ MaskDGA https://arxiv.org/abs/1902.08909 github https:/ /github.com/liorsidi/Adversarial-DGA-Datasets
* Смертельный матч алгоритмов генерации доменов https://blogs.akamai.com/2018/01/a-death-match-of-domain- Generation-algorithms.html
* Shortcut Learning in Deep Neural Networks https://arxiv.org/abs/2004.07780
* Мой патент Система корреляции домена n ames, US 14/937616
* Векторное представление имен доменов в Интернете с использованием метода встраивания слов https://ieeexplore.ieee.org/document/8226415
* Dns2Vec: Изучение имен доменов в Интернете с помощью Глубокое обучение https://www.usenix.org/sites/default/files/conference/protected-files/scainet19_slides_arora.pdf
* Обнаружение DGA на основе доменных вложений с методом добавочного обучения https://arxiv .org/pdf/2009.09959.pdf
* 360netlab: DGA Odyssey PDNS Driven DGA Analysis https://pc.nanog.org/static/published/meetings/NANOG71/1444/20171004_Gong_A_Dga_Odyssey__v1.pdf