Алгоритмы генерации доменов (DGA) - это класс алгоритмов, которые периодически и динамически генерируют большое количество доменных имен. Обычно домены используются вредоносными программами и ботнетами в качестве точек встречи для облегчения обратного вызова на серверы Command & Control злоумышленника. DGA позволяют вредоносным программам создавать десятки тысяч доменов в день, подавляющее большинство из которых не зарегистрированы. Огромное количество незарегистрированных доменов используется для маскировки зарегистрированных, позволяя зараженным ботнетам избежать обнаружения и сдерживания с помощью систем обнаружения безопасности на основе сигнатур или IP-репутации.
Первым известным семейством вредоносных программ, использовавших DGA, был Kraken в 2008 году. Позже в том же году червь Conflicker сделал тактику DGA широко известной. Даже по прошествии 10 лет все еще можно найти Conflicker или один из его вариантов в некоторых современных сетях.
Наряду с растущим распространением вредоносных программ использование DGA стало более распространенным.
Цели обнаружения DGA
Поскольку активность DGA является значительным показателем компрометации, становится критически важным обнаруживать любые подобные действия в вашей сети. Существует три уровня обнаружения DGA, каждый последующий уровень коррелирует с повышением серьезности. Обнаружение на более поздних уровнях сложнее, но более критично.
Если обнаружен DGA, это означает, что одна или несколько ваших систем были заражены вредоносным ПО на основе DGA и стали ботнетами. Необходимо предпринять некоторые действия. Первая цель - идентифицировать затронутые системы, должным образом очистить или изолировать их, чтобы предотвратить эскалацию.
Следующая цель - определить, зарегистрировано ли данное доменное имя DGA. Если домен зарегистрирован, он стал активным сервером управления и контроля, который представляет большой риск для вашей сети. Зараженные системы, ныне ботнеты, могут использовать эти серверы для звонков домой и получения команд от злоумышленника. Следовательно, второй компонент эффективной системы обнаружения DGA - это способность отличать зарегистрированные домены от незарегистрированных.
Например, DGA может сгенерировать 1000 доменов из xyzwer1, xyzwer2…. на xyzwer1000. Хакеру нужно зарегистрировать только один домен, то есть xyzwer500, а не остальные 999 доменов. Если зарегистрированный домен и связанный с ним IP-адрес могут быть идентифицированы, информацию можно использовать для блокировки канала связи между целевой системой и сервером Command & Control. Кроме того, информацию следует распространять на все другие системы предотвращения или обнаружения, чтобы препятствовать обратному вызову этого сервера из любой системы в сети.
Последняя, но наиболее важная задача системы обнаружения DGA - определить, был ли обратный вызов успешным с зарегистрированными доменами и был ли установлен контакт между зараженной системой (ами) и сервером Command & Control. Если такая активность обнаружена, возможно, некоторый ущерб уже был нанесен. Возможно, вредоносное ПО в вашей сети было обновлено или было установлено новое вредоносное ПО. Конфиденциальные данные могли быть украдены.
Как работает обнаружение DGA?
Активность DGA обнаруживается путем захвата и анализа сетевых пакетов, обычно в пять общих шагов.
Шаг 1 - Обнаружение приложения DNS
Обнаружение начинается с запросов DNS и / или сообщений ответа. DNS - это фундаментальный протокол Интернета, и большинство брандмауэров имеют политику, разрешающую исходящий трафик DNS на зарезервированный порт 53. Однако хакер может воспользоваться портом 53 для отправки своего трафика без соблюдения стандартного формата сообщений DNS. Эта атака называется DNS-туннелированием. Для более точной идентификации приложений DNS рекомендуется использовать механизм Deep Packet Inspection (DPI).
Шаг 2 - Извлечение доменных имен
После того, как сетевое приложение идентифицировано как DNS, необходимо извлечь доменные имена в сообщениях запроса и ответа DNS. Чтобы извлечь правильное доменное имя, содержимое сообщения DNS необходимо тщательно проанализировать, и для выполнения этой задачи требуется механизм DPI.
Шаг 3 - Обнаружение любого DGA
Необходимо провести анализ доменов, извлеченных из сообщений DNS, чтобы определить, являются ли они DGA. Это, пожалуй, самый сложный шаг. Задача состоит в том, чтобы уменьшить количество ложноположительных и ложноотрицательных результатов. Механизмы обнаружения значительно изменились за последние 10 с лишним лет.
Некоторые механизмы основаны на относительно простой энтропии Шеннона.
https://www.splunk.com/blog/2015/10/01/random-words-on-entropy-and-dns.html
Некоторые механизмы основаны на более сложных Ngram, представленных Федором на конференции Hitb.
В последнее время, когда машинное обучение становится популярным, его методологии также применяются для обнаружения DGA. Машинное обучение может сочетать в себе функции Ngrams, энтропии Шеннона, а также длину доменных имен, чтобы влиять на решения. Было опробовано несколько моделей машинного обучения. В 2014 году Джей Джейкобс написал очень хороший пост в блоге, описывающий этот процесс.
Вот еще один детектор DGA с открытым исходным кодом, основанный на машинном обучении с цепью Маркова:
https://github.com/exp0se/dga_detector
Шаг 4 - Обнаружение зарегистрированных доменов DGA
Чтобы определить, зарегистрировано ли доменное имя DGA, необходимо проверить ответы DNS. Простого отслеживания DNS-запросов недостаточно - система обнаружения должна отслеживать всю транзакцию, чтобы облегчить корреляцию между частями информации.
Шаг 5 - Обнаружение трафика в зарегистрированные домены DGA
Когда большинство существующих систем обнаружения DGA сосредотачиваются на определении того, является ли доменное имя доменом DGA, они часто забывают последний вопрос, самый важный: есть ли какой-либо трафик, который был отправлен на зарегистрированные домены DGA? Чтобы своевременно обнаружить это, обнаружение домена DGA должно быть тесно связано с проверкой сетевого трафика. Результаты должны быть переданы обратно в систему дорожной инспекции непосредственно до того, как будет нанесен какой-либо ущерб.
Шаг 6 - Блокирование трафика в зарегистрированные домены DGA
Хотя технически это не является частью обнаружения, если есть интеграция с системой предотвращения, такой как брандмауэр или IPS, следует сразу добавить правило, чтобы заблокировать весь трафик к зарегистрированным доменам.
Отличная система обнаружения DGA должна выполнять все 5 шагов. Отличная система обнаружения DGA также должна включать шаг 6. К сожалению, большинство систем обнаружения DGA сегодня останавливаются либо на шаге 3, либо на шаге 4.
Заключение
Поскольку DGA трудно обнаружить с помощью системы обнаружения или предотвращения на основе сигнатур или репутации, они стали довольно популярными среди разработчиков вредоносных программ.
Для выполнения обнаружения требуется интеллектуальная система обнаружения. Отличная система обнаружения DGA должна извлекать информацию о доменном имени из транзакций DNS, выполнять тщательную аналитику для обнаружения статуса DGA, проверять статус регистрации подозрительных доменов, соотноситься с инспекцией сетевого трафика для оценки уровня компрометации и в идеале интегрироваться с системами предотвращения, чтобы избежать дальнейшего компромисс. Чтобы уменьшить количество как ложных срабатываний, так и ложных отрицательных результатов, следует серьезно подумать о машинном обучении. Только при наличии всеобъемлющей и всеобъемлющей информации на каждом этапе угроза может быть уменьшена по-настоящему.
Ресурсы
Репозиторий Андрея Абакумова на Github содержит алгоритмы генерации доменных имен, а также словари вредоносных доменных имен.


