Що таке DNS-тунелювання? Інструкція з виявлення

Що таке DNS-тунелювання? Інструкція з виявлення

DNS-тунелювання перетворює систему доменних імен на зброю хакерів. DNS – це по суті величезна телефонна книга інтернету. А ще DNS є базовим протоколом, що дозволяє адміністраторам робити запити до бази даних DNS-сервера. Поки що все зрозуміло. Але хитрі хакери усвідомили, що можна потай спілкуватися з комп'ютером-жертвою шляхом впровадження керуючих команд і даних у протокол DNS. Ця ідея лежить в основі DNS-тунелювання.

Як працює DNS-тунелювання

Що таке DNS-тунелювання? Інструкція з виявлення

Для всього в інтернеті є окремий протокол. І DNS підтримує відносно простий протокол типу запит-відповідь. Якщо ви хочете подивитися, як він працює, то можете запустити nslookup – основний інструмент для подачі запитів DNS. Ви можете запросити адресу, просто вказавши доменне ім'я, що цікавить, наприклад:

Що таке DNS-тунелювання? Інструкція з виявлення

У нашому випадку протокол відповів IP-адресою домену. У термінах DNS-протоколу я зробив запит адреси або запит т.зв. "А"-типу. Існують й інші типи запитів, при цьому DNS-протокол буде відповідати з різним набором полів даних, якими, як ми це побачимо пізніше, можуть скористатися хакери.

Так чи інакше, за своєю суттю DNS-протокол займається передачею запиту на сервер та його відповіді клієнту. А що, якщо зловмисник додасть приховане повідомлення всередину запиту доменного імені? Наприклад, замість введення цілком легітимної URL-адреси, він введе дані, які хоче передати:

Що таке DNS-тунелювання? Інструкція з виявлення

Припустимо, зловмисник керує DNS-сервером. Тоді він може передавати дані — наприклад персональні дані, — і не обов'язково буде виявлено. Зрештою, з чого раптом DNS-запит може стати чимось нелегітимним?

Керуючи сервером, хакери можуть підробляти відповіді та надсилати дані назад на цільову систему. Це дозволяє їм передавати повідомлення, заховані в різних полях DNS-відповіді, у шкідливе програмне забезпечення на зараженій машині, з вказівками на зразок пошуку всередині певної папки.

«Туннелююча» частина даної атаки полягає в приховування даних та команд від виявлення системами моніторингу. Хакери можуть використовувати набори символів base32, base64 і т.д. або навіть шифрувати дані. Таке кодування пройде непоміченою повз простих утиліт виявлення погроз, які здійснюють пошук за відкритим текстом.

І це і є DNS-тунелювання!

Історія атак через DNS-тунелювання

У всього є початок, включаючи ідею захоплення протоколу DNS для хакерських цілей. Наскільки ми можемо судити, перше обговорення Така атака проводилася Оскаром Пірсаном (Oskar Pearson) у поштовій розсилці Bugtraq у квітні 1998 року.

До 2004 року, DNS-тунелювання було представлено на Black Hat як хакерський метод у презентації Дена Камінського (Dan Kaminsky). Таким чином, ідея дуже швидко переросла у справжній інструмент атаки.

На сьогодні DNS-тунелювання займає впевнені позиції на карті потенційних загроз (і блогерів у сфері інформаційної безпеки часто просять його пояснити).

Чи чули ви про Морська черепаха ? Це діюча кампанія кіберзлочинних угруповань, швидше за все, спонсорована державою, спрямована на захоплення легітимних DNS-серверів з метою перенаправлення DNS-запитів на власні сервери. Це означає, що організації отримуватимуть «погані» IP-адреси, які вказують на підроблені веб-сторінки під керуванням хакерів, наприклад Google або FedEx. При цьому зловмисники зможуть отримати облікові записи та паролі користувачів, які неусвідомлено введуть їх на таких підроблених сайтах. Це не DNS-тунелювання, але просто ще один поганий наслідок контролю DNS-серверів хакерами.

Загрози DNS-тунелювання

Що таке DNS-тунелювання? Інструкція з виявлення

DNS-тунелювання – це як індикатор початку стадії поганих новин. Яких саме? Ми вже розповіли про кілька, але давайте їх структуруємо:

  • Виведення даних (ексфільтрація) – хакер потай передає критичні дані поверх DNS. Це, безумовно, не найефективніший спосіб передачі інформації з комп'ютера-жертви — з урахуванням усіх витрат і кодувань — але він працює, і при цьому – потай!
  • Управління та контроль (Command and Control, скорочено C2) – хакери використовують DNS-протокол для відправки простих керуючих команд, скажімо, через троян віддаленого доступу (Remote Access Trojan, скорочено RAT).
  • Тунелювання IP-Over-DNS – це може звучати шалено, але існують утиліти, що реалізують IP-стек поверх запитів та відповідей DNS-протоколу. Це робить передачі даних за допомогою FTP, Netcat, ssh і т.д. щодо простим заняттям. Вкрай зловісно!

Виявлення DNS-тунелювання

Що таке DNS-тунелювання? Інструкція з виявлення

Існує два основні методи виявлення зловживанням DNS: аналіз навантаження та аналіз трафіку.

При аналізі навантаження сторона, що захищається, шукає аномалії в даних, що передаються в обидві сторони, які можуть бути виявлені статистичними методами: дивно виглядають імена хостів, тип DNS запису, яка не використовується настільки часто, або нестандартне кодування.

При аналізі трафіку оцінюється кількість DNS запитів до кожного домену порівняно із середньостатистичним рівнем. Зловмисники, що використовують DNS-тунелювання, генеруватимуть великий обсяг трафіку на сервер. Теоретично, значно перевищує нормальний обмін DNS-повідомленнями. І це потрібно відстежувати!

Утиліти DNS-тунелювання

Якщо ви хочете провести власний пентест та перевірити, наскільки добре ваша компанія зможе виявити та відреагувати на таку активність, то для цього є кілька утиліт. Усі вони вміють тунелювати в режимі IP-Over-DNS:

  • Йод – доступна на багатьох платформах (Linux, Mac OS, FreeBSD та Windows). Дозволяє встановити SSH-шелл між цільовим та керуючим комп'ютером. Ось непоганий гайд з налаштування та використання Iodine.
  • OzymanDNS – проект DNS-тунелювання від Дена Камінського, написаний на Perl. З ним можна підключатися SSH.
  • DNSCat2 – «DNS-тунель, якого не нудить». Створює зашифрований C2-канал для відправки/завантаження файлів, запуску шеллів і т.д.

Утиліти DNS-моніторингу

Нижче наведено список кількох утиліт, який буде корисним для виявлення тунелюючих атак:

  • dnsHunter - Python-модуль, написаний для MercenaryHuntFramework та Mercenary-Linux. Зчитує .pcap файли, витягує DNS-запити та здійснює зіставлення геолокації, що допомагає при аналізі.
  • reassemble_dns – утиліта на Python, яка читає .pcap файли та аналізує DNS-повідомлення.

Мікро FAQ з DNS-тунелювання

Найкорисніша інформація у вигляді запитань та відповідей!

Питання: Що таке тунелювання?
Про: Це просто спосіб передачі даних поверх існуючого протоколу. Протокол, що лежить в основі, забезпечує виділений канал або тунель, який потім використовується для приховування інформації, що передається насправді.

Питання: Коли було здійснено першу атаку по DNS-тунелюванню?
Про: Ми не знаємо! Якщо ви знаєте, дайте, будь ласка, нам знати. Наскільки нам відомо, перше обговорення атаки було ініційовано Оскаром Пірсаном у поштовій розсилці Bugtraq у квітні 1998 року.

Питання: Які атаки схожі на DNS-тунелювання?
Про: DNS – це далеко не єдиний протокол, який можна використовувати для тунелювання. Наприклад, шкідливі програми управління та контролю (C2) часто використовують HTTP для маскування каналу взаємодії. Як і при DNS-тунелюванні, хакер приховує свої дані, але в даному випадку вони виглядають як трафік звичайного веб-браузера, що звертається на віддалений сайт (контрольований зловмисником). Це може бути непоміченим програмами моніторингу, якщо вони не налаштовані сприймати загрозу зловживання HTTP-протоколом у хакерських цілях.

Бажаєте, щоб ми допомогли з виявленням DNS-тунелювання? Ознайомтеся з нашим модулем Varonis Edge та спробуйте безкоштовне демо!

Джерело: habr.com

Додати коментар або відгук