Алгоритмы генерации доменов (DGA) — это алгоритмы, которые можно увидеть в различных семействах вредоносных программ , которые используются для периодической генерации большого количества доменных имен , которые могут использоваться в качестве точек встречи с их командными и контрольными серверами . Большое количество потенциальных точек встречи затрудняет эффективное отключение ботнетов правоохранительными органами , поскольку зараженные компьютеры будут пытаться связаться с некоторыми из этих доменных имен каждый день для получения обновлений или команд. Использование криптографии с открытым ключом в коде вредоносных программ делает невозможным для правоохранительных органов и других субъектов имитировать команды от контроллеров вредоносных программ, поскольку некоторые черви автоматически отклоняют любые обновления, не подписанные контроллерами вредоносных программ.
Например, зараженный компьютер может создать тысячи доменных имен, таких как: www.<gibberish>.com , и попытаться связаться с частью из них с целью получения обновлений или команд.
Внедрение DGA вместо списка ранее сгенерированных (серверами управления и контроля) доменов в незашифрованный двоичный файл вредоносной программы защищает от дампа строк, который может быть предварительно передан в устройство сетевого черного списка для попытки ограничить исходящую связь с зараженными хостами внутри предприятия.
Эта техника была популяризирована семейством червей Conficker .a и .b, которые поначалу генерировали 250 доменных имен в день. Начиная с Conficker.C, вредоносная программа генерировала 50 000 доменных имен каждый день, из которых она пыталась связаться с 500, давая зараженной машине 1% вероятности обновления каждый день, если контроллеры вредоносного ПО регистрировали только один домен в день. Чтобы предотвратить обновление вредоносного ПО зараженными компьютерами, правоохранительным органам пришлось бы предварительно регистрировать 50 000 новых доменных имен каждый день. С точки зрения владельца ботнета, ему нужно было бы зарегистрировать только один или несколько доменов из нескольких доменов, которые каждый бот будет запрашивать каждый день.
Недавно эта техника была принята на вооружение другими авторами вредоносных программ. По данным компании сетевой безопасности Damballa , топ-5 наиболее распространенных семейств преступного ПО на основе DGA по состоянию на 2011 год — Conficker, Murofet, BankPatch, Bonnana и Bobax. [1]
DGA также может объединять слова из словаря для генерации доменов. Эти словари могут быть жестко закодированы во вредоносном ПО или взяты из общедоступного источника. [2] Домены, сгенерированные словарем DGA, как правило, сложнее обнаружить из-за их сходства с легитимными доменами.
def generate_domain ( year : int , month : int , day : int ) -> str : """Сгенерировать доменное имя для указанной даты.""" domain = "" для i в диапазоне ( 16 ): год = (( год ^ 8 * год ) >> 11 ) ^ (( год & 0xFFFFFFF0 ) << 17 ) месяц = (( месяц ^ 4 * месяц ) >> 25 ) ^ 16 * ( месяц & 0xFFFFFFF8 ) день = (( день ^ ( день << 13 )) >> 19 ) ^ (( день & 0xFFFFFFFE ) << 12 ) домен += chr ((( год ^ месяц ^ день ) % 25 ) + 97 ) вернуть домен + ".com"
Например, 7 января 2014 года этот метод сгенерировал доменное имя intgmxdeadnxuyla.com
, а на следующий день он вернул axwscwsslmiagfah.com
. Этот простой пример фактически использовался вредоносным ПО вроде CryptoLocker , прежде чем оно переключилось на более сложный вариант.
Доменные имена DGA [3] могут быть заблокированы с помощью черных списков, но покрытие этих черных списков либо слабое (публичные черные списки), либо крайне непоследовательное (черные списки коммерческих поставщиков). [4] Методы обнаружения делятся на два основных класса: реакционные и в режиме реального времени. Реакционное обнаружение опирается на неконтролируемые методы кластеризации и контекстную информацию, такую как сетевые ответы NXDOMAIN, [5] информацию WHOIS , [6] и пассивный DNS [7], чтобы сделать оценку легитимности доменного имени. Недавние попытки обнаружения доменных имен DGA с помощью методов глубокого обучения были чрезвычайно успешными, с оценками F1 более 99%. [8] Эти методы глубокого обучения обычно используют архитектуры LSTM и CNN , [9] хотя глубокие вложения слов показали большие перспективы для обнаружения словарных DGA. [10] Однако эти подходы глубокого обучения могут быть уязвимы для состязательных методов . [11] [12]