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

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

DNS и методы создания туннелей

Протокол DNS (Domain Name System) [1,2] изначально создавался как механизм для преобразования доменных имен в соответствующие IP-адреса и наоборот. Однако злоумышленники, проявив изобретательность, начали использовать этот протокол не только для идентификации узлов в сети, но и в качестве канала передачи данных. Такие каналы получили название DNS-туннели.

DNS-туннели создают "скрытые каналы", позволяя передавать данные через стандартные DNS-трафик, внедряя информацию в служебные поля протокола, которые в обычной жизни не используются для передачи данных. Их основной целью является обход обычных механизмов обнаружения и блокировки. Почему именно DNS? Этот протокол широко распространён, так как служит для преобразования имен в адреса и обратно и не блокируется средствами защиты информации.

Тоннель DNS обычно состоит из специального DNS-клиента, который внедряет информацию в запросы, и специального DNS-сервера, который понимает такие запросы и формирует специальные ответы. Это может включать в себя генерацию большого числа поддоменов с закодированными данными, изменение порядка запросов и ответов для маскировки туннеля, а также внедрение информации в параметры DNS-пакетов.

Схема DNS туннеля [3]
Схема DNS туннеля [3]

DNS-пакет состоит из нескольких основных компонентов, которые можно анализировать для выявления DNS-туннелей:

  • Заголовок DNS-пакета: включает в себя идентификатор запроса, флаги контроля (QR - определение запроса или ответа, Opcode - код операции, AA - ответ полномочного сервера, TC - признак обрыва связи, RD - признак рекурсии, RA - признак доступности рекурсии), количество вопросов, ответов, авторитетных и дополнительных записей, а также другие контрольные параметры.

  • Запросы DNS: в этой части содержится информация о DNS-запросах, включая доменные имена и типы запросов (например, A - запрос IPv4-адреса, MX - запрос почтового сервера, CNAME - запрос канонического имени и т. д.).

  • Ответы DNS: здесь содержится информация о найденных записях, соответствующих DNS-запросам. Каждый ответ может включать в себя тип ответа (например, A, CNAME, MX), запись IP-адреса и время жизни записи (TTL).

  • Авторитетные записи DNS: этот раздел может содержать информацию о серверах, имеющих авторитет для данного доменного имени.

  • Дополнительные записи DNS: здесь могут содержаться дополнительные записи, которые могут быть полезными для интерпретации ответа.

Пример обычного DNS-запроса
Пример обычного DNS-запроса

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

Пример туннелированного DNS-запроса
Пример туннелированного DNS-запроса

Обзор существующих методов обнаружения туннелей

Проблема обнаружения DNS-туннелей привлекает исследователей и специалистов в области кибербезопасности. Множество статей, исследований и инструментов посвящены этой проблеме. [4,5,6,7,8,9,10,11,12] Существующие методы обнаружения варьируются от статистического анализа трафика и мониторинга поведения сети до разработки сигнатур для определения характерных особенностей DNS-туннелей.

переведено со статьи [4]
переведено со статьи [4]

На рисунке выше представлены некоторые пути решения данной проблемы. Кратко опишу каждый из них:

  • Сигнатурный метод: анализ сигнатурных признаков, характерных для объектов или явлений, с целью классификации или детекции нелегитимного трафика.

  • Метод пороговых значений(Thresholding): классификации или детекции на основе порогового значения для  выбранных характеристик.

  • Обучение без учителя: анализ неразмеченных данных с целью выявления структуры, группировки по кластерам или снижения размерности.

  • Обучение с учителем: обучение модели на размеченных данных, где каждый пример имеет известную метку, для предсказания меток новых данных.

  • Глубокое обучение: Использование глубоких нейронных сетей с множеством слоев для извлечения высокоуровневых закономерностей из данных.

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

1)[7] DNS Tunneling Detection by Cache-Property-Aware Features: Для решения проблемы авторы фокусируются на "следе", оставленном DNS-туннелированием, который нельзя легко скрыть. В контексте утечки данных через DNS-туннелирование вредоносное ПО подключается напрямую к кэширующему DNS-серверу , и генерируемые запросы DNS-туннелирования обязательно вызывают кэш-промахи (cache misses).А поскольку обычные DNS-транзакции чаще всего сопровождаются успешными кэш-попаданиями (cache hits), то отношение cache hit/cache miss может являться индикатором аномальной активности в сети.

2)[8] A Hybrid Method of Genetic Algorithm and Support Vector Machine for DNS Tunneling Detection: В данной статье предлагается гибридный метод, который объединяет метод генетического алгоритма для выбора наилучших характеристик с классификатором метода опорных векторов (SVM). Авторам удалось достигнуть F-меры в 0.946.

3)[10] DNS Tunneling: A Deep Learning based Lexicographical Detection Approach: В данной работе предлагается метод обнаружения на основе сверточной нейронной сети (CNN) с минимальной сложностью архитектуры для увеличения быстродействия. Несмотря на простую архитектуру, разработанная модель CNN правильно обнаруживает более 92% общего числа доменов DNS-туннелирования с вероятностью ложных срабатываний, близкой к 0.8%.

После обзора научных статей по теме DNS туннелирования, необходимо отметить, что на практике для выявления и предотвращения этих угроз активно используются разные коммерческие решения. Эти решения предлагают комплексным подходы, сочетающие в себе современные методы анализа и фильтрации трафика, что позволяет обеспечить более высокий уровень безопасности корпоративных сетей. Примерами таких коммерческих инструментов являются ZenArmor и CloudFlare DNS. ZenArmor - это инструмент, который использует глубокий анализ пакетов (DPI) и машинное обучение для мониторинга сетевого трафика и выявления аномалий, таких как DNS туннели, путем анализа поведенческих моделей и шаблонов данных. CloudFlare DNS обеспечивает безопасность и производительность DNS-запросов, активно отслеживая и фильтруя подозрительные активности, что позволяет эффективно обнаруживать и предотвращать попытки DNS-туннелирования. Также для детектирования туннелей может использоваться Suricata с определёнными наборами правил, например emerging threats. Далее в статье будет сравнение нашего решения с Suricata.

Обзор наборов данных (датасетов)

Разработка и оценка методов обнаружения DNS-туннелей с помощью машинного обучения, как и любая другая задача машинного обучения, требует наличия качественных датасетов. В данном исследовании мы опирались на разнообразные источники данных для создания обучающих и тестовых наборов. В качестве обучающих данных использовались данные, полученные с нашего собственного стенда. Для их генерации мы создали две виртуальные машины (клиент и сервер), зарегистрировали доменное имя и установили NS запись, чтобы виртуальная машина-клиент обращалась к виртуальной машине-серверу. Мы генерировали как чистый трафик, так и трафик с использованием DNS-туннелей при помощи различных программ, таких как tcp2dns[13], iodine[14] и tuns[15]. Это позволило нам создать разнообразные сценарии туннельного трафика для более эффективного обучения наших моделей.

Для проверки и оценки эффективности нашей модели мы использовали дополнительные наборы данных. В частности, мы использовали файлы формата pcap из открытых репозиториев на GitHub[16,17,18], а также данные из статей, включая открытый датасет CIC (Canadian Institute for Cybersecurity)[19]. Эти наборы данных предоставили дополнительные случаи трафика, с которыми наша модель могла столкнуться в реальных условиях, и позволили нам более всесторонне оценить ее эффективность.

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

Использование LightGBM

Для эффективного обнаружения DNS-туннелей в данной работе был выбран алгоритм  машинного обучения с учителем LightGBM (Light Gradient Boosting Machine)[20]. Этот алгоритм основан на градиентном бустинге и характеризуется высокой производительностью и точностью. LightGBM способен эффективно обрабатывать большие объемы данных и выявлять сложные зависимости между признаками, что делает его подходящим выбором для туннелей в DNS-трафике.

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

Модель машинного обучения

Количество пакетов в минуту

Macro F1-мера

LogReg

 

32343750

0.69   

SVM(poly kernel)

 

205472

0.64

SVM(rbf kernel)

 

183904

0.71

KNN

36751

0.72

Decision tree

 

646950

0.72

LightGBM

53181

0.96

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

Схема обработки DNS-трафика
Схема обработки DNS-трафика

Важно отметить, что для обеспечения универсальности и обобщения моделей мы использовали только статистические характеристики из трафика. Это означает, что мы использовали признаки, которые могут быть извлечены из трафика без прямого раскрывания содержания запросов или ответов для самих моделей. Признаки и их важность:

Request:

  • 'qd_qname_len’ / 'qd_qname_shannon’ - длина / энтропия запрашиваемого домена

  • 'ancount’ / 'nscount’ -  количество записей в блоке answer / name Server

  • 'chars’ - количество букв в доменном имени

  • 'digits’ – количество цифр в доменном имени

  • 'ratio’ – отношение количества гласных к согласным в доменном имени

Также имеется возможность графически определить причину, по которой модель обозначила тот или иной пакет как аномальный. На каждый пакет выводится 2 графика (принадлежность к 0 и 1 классу соответственно). Признаки синего цвета уменьшают уверенность модели в текущем классе, а красные наоборот увеличивают.

График влияния признаков на уверенность request-модели в нормальности пакета
График влияния признаков на уверенность request-модели в нормальности пакета
График влияния признаков на уверенность request модели в аномальности пакета
График влияния признаков на уверенность request модели в аномальности пакета

Response:

  • 'qd_qname_len’ / 'qd_qname_shannon’ - длина / энтропия запрашиваемого домена

  • 'an_rdata_len','an_rdata_shannon’ - длина / энтропия данных ответа

  • 'an_rrname_len','an_rrname_shannon’ - длина / энтропия домена в ответе

  • 'ancount’ / 'nscount’ -  количество записей в блоке answer / name Server

График влияния признаков на уверенность response модели в нормальности этого пакета  
График влияния признаков на уверенность response модели в нормальности этого пакета  
График влияния признаков на уверенность response модели в аномальности этого пакета  
График влияния признаков на уверенность response модели в аномальности этого пакета  

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

Полученные метрики и результаты

Для успешной работы модели важно избегать ложных срабатываний, так как "белого" трафика очень много, и частые ошибки могут привести к отключению модели. При оценке её производительности рекомендуется ориентироваться на F1-score (weighted), который учитывает дисбаланс классов и предоставляет более сбалансированное представление о точности и полноте, особенно в условиях неоднородного распределения данных.

В процессе оценки эффективности нашей моделей мы использовали три различных тестовых датасета. Рассмотрим результаты на каждом из них:

Датасет GitHub:

Датасет из репозиториев на GitHub[16,17,18] предоставил нам множество тестовых случаев, созданных сообществом исследователей. Мы использовали этот датасет для проверки обобщающей способности модели на разнообразных вариациях туннельного трафика.

Request-модель:

 

precision

recall

F1-score

Support

0

0.87

1.00

0.93

2477

1

1.00

0.99

1.00

74108

 

 

 

 

 

accuracy

 

 

1.00

76585

marco avg

0.93

1.00

0.96

76585

Weight avg

1.00

1.00

1.00

76585

Response-модель:

 

precision

recall

F1-score

Support

0

1.00

1.00

1.00

2477

1

1.00

1.00

1.00

59575

 

 

 

 

 

accuracy

 

 

1.00

62052

marco avg

1.00

1.00

1.00

62052

Weight avg

1.00

1.00

1.00

62052

По результатам работы на этом датасете можно сказать, что модель хорошо научилась детектировать типовые туннели.

Датасет CIC:

Набор данных от CIC[19] предоставил более сложные и реалистичные сценарии, созданные с учетом актуальных угроз в киберпространстве. Этот датасет позволил нам проверить, как модель справляется с более продвинутыми методами обхода и обнаружения DNS-туннелей, а также оценить ее способность к выявлению новых и неизвестных паттернов.

Request-модель:

 

precision

recall

F1-score

Support

0

0.96

0.94

0.95

362006

1

0.90

0.93

0.92

199612

 

 

 

 

 

accuracy

 

 

0.94

561618

marco avg

0.93

0.94

0.93

561618

Weight avg

0.94

0.94

0.94

561618

Response-модель:

 

precision

recall

F1-score

Support

0

1.00

1.00

1.00

362004

1

0.00

0.00

0.00

6

 

 

 

 

 

accuracy

 

 

1.00

362010

marco avg

0.93

0.94

0.93

362010

Weight avg

1.00

1.00

1.00

362010

На датасете CIC модель так же хорошо отработала, это показывает, что модель не переобучилась и способна работать в новых для нее ситуациях. Однако 6 пакетов первого класса не было обнаружено. Поскольку количество примеров класса 1 очень малое, в этих случаях возможно использовать дополнительный метод блокировки. Например, можно блокировать парой запрос-ответ в одном соединении.

Обученные модели были успешно интегрированы в решение UDV NTA (Network Traffic Analyzer). UDV NTA (Network Traffic Analyzer) — передовое решение для анализа сетевого трафика, обеспечивающее эффективное выявление аномалий и вредоносной активности.

Пример инцидента, созданного по сработке модели в интерфейсе UDV NTA
Пример инцидента, созданного по сработке модели в интерфейсе UDV NTA

Сравнение с Suricata

Suricata — это мощная и гибкая система обнаружения вторжений (IDS) и предотвращения вторжений (IPS), а также инструмент для мониторинга сетевой безопасности, созданный и поддерживаемый организацией Open Information Security Foundation (OISF). Suricata предназначена для анализа сетевого трафика в режиме реального времени и выявления подозрительной активности, используя комбинацию сигнатурного и аномального обнаружения. Благодаря своей многофункциональности и поддержке различных протоколов, Suricata широко используется в корпоративных сетях для защиты от кибератак и обеспечения безопасности данных.

В этом блоке мы проведем сравнение эффективности работы Suricata с нашими моделями. Оценка будет проводиться на наборах данных, предоставленных на GitHub [16,17]. В рамках нашего анализа мы будем рассматривать детектирование каждого пакета отдельно, а также пары пакетов, представляющие одно соединение. Это позволит нам детально оценить точность обнаружения угроз, скорость обработки данных и общую эффективность обеих систем. 

Конфигурация Suricata:

Suricata 4.1.2, Набор правил: Emerging Threats 2024-07-19T20:49:10Z

Request:

Suricata/Model

precision

recall

F1-score

Support

0

0.82/0.99

1.00/0.99

0.90/0.99

64677

1

0.85/0.96

0.00/0.95

0.00/0.95

13982

 

 

 

 

 

accuracy

 

 

0.82/0.98

78659

marco avg

0.84/0.97

0.50/0.97

0.45/0.97

78659

Weight avg

0.83/0.98

0.82/0.98

0.74/0.98

78659

Response:

Suricata/Model

precision

recall

F1-score

Support

0

0.99/1.00

1.00/0.99

0.99/1.00

61915

1

0.96/0.70

0.23/1.00

0.37/0.82

875

 

 

 

 

 

accuracy

 

 

0.94/0.99

62790

marco avg

0.97/0.85

0.62/0.99

0.68/0.91

62790

Weight avg

0.99/1.00

0.99/0.99

0.99/0.99

62790

Соединение:

Suricata/Model

precision

recall

F1-score

Support

0

0.90/1.00

1.00/0.99

0.95/0.99

126592

1

0.95/0.90

0.03/1.00

0.06/0.94

14857

 

 

 

 

 

accuracy

 

 

0.94/0.99

141449

marco avg

0.92/0.95

0.51/0.99

0.50/0.97

141449

Weight avg

0.90/0.99

0.90/0.99

0.85/0.99

141449

Suricata показала сработки только на одном файле, при этом 222 из них – ‘Misc activity’ и только 38 – ‘ET TROJAN Suspicious Long NULL DNS Request - Possible DNS Tunneling’. Кроме того, в ходе эксперимента было выявлено, что Suricata не детектирует туннели, сгенерированные утилитой dnscat2 [21], которые обнаруживаются нашей моделью.

Заключение

В данной статье мы представили исследование обнаружения DNS-туннелей с использованием алгоритма машинного обучения LightGBM. Мы продемонстрировали, что наша модель обладает высокой точностью и способностью к обнаружению скрытых каналов передачи данных, даже в сложных и разнообразных сценариях.

Однако, кибербезопасность - это непрерывный процесс, и новые угрозы появляются с каждым днем. В будущем планируется развивать модели для обнаружения других видов атак.

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


Автор статьи: Никита Быков, младший исследователь исследовательского центра UDV Group


Ссылки:

Комментарии (3)


  1. apevzner
    05.09.2024 06:43

    А вот интересно. DNS все же редко используется в качестве универсальной базы данных. По большей части, есть стандартные запросы и стандартные ответы.

    Чем весь этот сложный мониторинг городить, обрекая себя на вечное соревнование с атакующими в изобретательности, не проще ли сделать кеширующую DNS-прокси, которая отдает стандартный набор информации на стандартные запросы и просто не пропускает лишнего?


    1. CyberLympha Автор
      05.09.2024 06:43

      Идея, конечно, хорошая – одним действием решить все проблемы с DNS. Но тут есть два момента.
      Во-первых, не всегда есть возможность влиять на защищаемую инфраструктуру. И статья в целом про обнаружение DNS-туннелей средством, не влияющим на сеть.
      Во-вторых, не совсем понятно, как установка DNS-прокси позволит заблокировать канал утечки.
      DNS работает с поддоменами, используя иерархическую структуру доменных имен. Даже если DNS-сервер знает IP-адрес для одного поддомена (например, first-request.pirates.com), это не означает, что он автоматически знает IP-адрес для другого поддомена (например, second-request.pirates.com). Каждый поддомен может иметь свой собственный IP-адрес и соответствующие DNS-записи.
      Соответственно, если DNS-прокси не знает IP-адрес для нового домена (а он его не знает, потому что поддомен-то сгенерированный), то он сам пойдёт на внешний DNS за такой информацией – по сути, прокинет через себя туннель, доставив информацию получателю. Поэтому выглядит так, будто DNS-прокси не решит эту проблему.
      Может быть, идея была в чём-то другом?


  1. apevzner
    05.09.2024 06:43

    Идея, конечно, хорошая – одним действием решить все проблемы с DNS

    Никто, разумеется, не предлагает одним выстрелом убить всех зайцев и нескольких охотников заодно. Ценность мониторинга тоже, разумеется, никто не оспаривает.

    И статья в целом про обнаружение DNS-туннелей средством, не влияющим на сеть.

    Статья в целом про то, как в массиве данных найти вредоносный паттерн. Чтобы собрать этот массив из реальной сети, в нее все равно придется включиться. Это сравнимо по степени интрузивности с заменой одного DNS-сервера (того, который уже сейчас есть, вряд ли там 8.8.8.8) на другой.

    то он сам пойдёт на внешний DNS за такой информацией – по сути, прокинет через себя туннель, доставив информацию получателю.

    Он очень сильно сузит этот побочный канал. К примеру, полностью отшибет канал, основанный на порядке и времени отправки запросов. Не позволит включать в запросы лишние параметры и вычистит лишние данные из ответов. Приведет к стандартному виду служебные биты, избавив их от скрытой информации. Сделает невозможным запрашивать "странные" типы записей и "странные" домены пятого уровня.

    Кроме того, можно было бы ограничить запросы со "странными" метками в доменных именах (например, "H23xl43"), напоминающими сгенерированные. Вот здесь, как раз, можно было бы натренировать ИИ отличать их от нормальных. Это трудно формализовать, но человеку сразу видно, какое имя "нормальное", а какое "странное" - а на таких задачах ИИ как раз неплох. Редкие false positive срабатывания тут не очень важны, всегда можно поднапрячь админа добавить запись в список исключений.

    Фактически, останется возможность манипулировать именами запрашиваемых записей и адресами/именами в ответах.

    Само по себе такое сужение канала может сделать его малопригодным для конструирования сколь-либо значимой утечки.

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

    И наконец, такая защищающая DNS-прокси - хорошее место для сбора данных с целью мониторинга, полезность которого я не отрицаю, но все-таки полагаться на него, как на основной метод защиты я бы поостерегся.