Що таке DGA та як їх виявити?

Алгоритми генерації доменів (DGA) – це клас алгоритмів, які періодично та динамічно генерують велику кількість доменних імен. Як правило, ці домени використовуються шкідливими програмами та ботнетами як точки зустрічі для полегшення зворотного зв'язку до серверів керування та контролю зловмисника. 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-адресу можна ідентифікувати, цю інформацію можна використовувати для блокування каналу зв'язку між цільовою системою та сервером управління та контролю. Крім того, розвідувальна інформація повинна бути поширена на всі інші системи запобігання або виявлення, щоб перешкодити зворотному виклику на цей сервер з будь-якої системи в мережі.

Остання, але найважливіша мета системи виявлення DGA — визначити, чи успішно завершився зворотний виклик із зареєстрованими доменами та чи було встановлено контакт між зараженою системою (системами) та сервером Command & Control. Якщо така активність виявлена, можливо, вже завдано певної шкоди. Можливо, шкідливе програмне забезпечення у вашій мережі було оновлено або встановлено нове. Можливо, було викрадено конфіденційні дані.

Як працює виявлення DGA?

Активність DGA виявляється шляхом захоплення та аналізу мережевих пакетів, зазвичай у п'ять загальних кроків.

Крок 1 – Виявлення DNS-застосунку
Виявлення починається через запити DNS та/або відповіді. DNS – це фундаментальний інтернет-протокол, і більшість брандмауерів мають політику, що дозволяє вихідний DNS-трафік через зарезервований порт 53. Однак хакер може скористатися портом 53 для надсилання свого трафіку без дотримання стандартного формату повідомлень DNS. Ця атака називається тунелюванням DNS. Для точнішої ідентифікації DNS-додатків рекомендується використовувати механізм глибокої перевірки пакетів (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
Деякі механізми базуються на більш складних N-грамах, представлених Федором на конференції 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 від Андрія Абакумова містить алгоритми для генерації доменних імен, а також словники шкідливих доменних імен.

Прокрутка до початку