03 октября 2012
Анализ DNS трафика как инструмент ИБ
DNS, как известно, это иерархическая структура имен и соответствующий протокол. Предполагаем, что читатель знаком с описанием сетевого протокола DNS и с механизмом его работы. Если необходимо расширить или освежить знания, рекомендуем посмотреть книгу Э.Таненбаума «Компьютерные сети», пару статей из Wikipedia1 2 и RFC 3 4. Полезным будет наличие опыта работы с программами nslookup5 и табличным редактором Excel/Calc.
Для чего анализировать DNS трафик? Что такого важного или необычного можно найти? Ответ на эти вопросы зависит от стоящих перед нами целей.
Прежде чем перейти к конкретным задачам, определимся с механизмом получения данных по DNS трафику. Два основных пути:
Первый метод несколько сложнее в техническом плане, но позволяет проводить исследование абсолютно скрытно от пользователей и администраторов, что может быть полезно при подозрениях о наличии инсайдера. Второй метод требует включения журналирования на DNS сервере. Желательно комбинировать данные методы, наибольшая эффективность достигается при получении журналов с корпоративных DNS серверов и перехвате трафика на точках выхода за пределы локальной сети. Форматы журналов разных DNS серверов и форматы данных от систем перехвата различаются, но, в любом случае, после предварительной обработки мы получим данные по DNS трафику приблизительно в таком виде, удобном для дальнейшего анализа (показаны запросы от клиентов к серверу):
Дата / время |
IP клиента |
Тип запроса |
Текст запроса |
10.09.2012 07:45:51 |
192.168.100.3 |
A |
example.net6 |
10.09.2012 07:45:51 |
192.168.69.71 |
MX |
example.org |
10.09.2012 07:45:52 |
192.168.100.84 |
TXT |
topsec3052.example.com |
... |
... |
... |
... |
Предварительная обработка не является сложной задачей и может быть выполнена скриптом или с помощью Excel/Calc.
Сканирование сети предприятия с целью аудита или ревизии
Пройдя несколько раз сетевыми сканерами, например, nmap 7, получаем списки IP адресов и имен сетевых устройств. Однако, если некоторые подсети или отдельные устройства защищены межсетевым экраном, сканирование может их не выявить. Причины включения межсетевого экрана могут быть различными: от желания скрыть несанкционированное подключение личного компьютера, до забытых настроек от прежнего системного администратора.
Обработка таблицы с данными по DNS трафику поможет выявить устройства, которые защищены межсетевым экраном, т. к. практически любая работа в сети предполагает использование функционала DNS серверов для преобразования имен в IP адреса перед установлением соединения. Прослушивание других типов трафика может не дать такого же результата, т. к. трафик между абонентами может циркулировать в небольшом сегменте сети и для его обнаружения понадобится выполнить прослушивание в большом количестве точек.
Для выявления устройств, которые отключены в момент сканирования сети и прослушивания трафика, полезно использовать данные самого DNS сервера. Если есть административный доступ к серверу — просматриваем описания зон, где перечислены все известные серверу пары имя<->IP. Также можно воспользоваться утилитой nslookup, если функционал передачи зон не заблокирован на сервере.
C:\>nslookup.exe
Default Server: ns.test.corp
Address: 192.168.0.7
> ?
…
ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)
-a - list canonical names and aliases
-d - list all records
-t TYPE - list records of the given type (e.g. A,CNAME,MX,NS,PTR etc.)
…
ls -d test.corp > dns_data.txt
Выявление аномальной активности
Аномальной, в зависимости от ситуации, может быть разная активность, рассмотрим некоторые практические примеры.
В полученной таблице очень много IP адресов клиентов, их количество значительно превосходит количество реальных компьютеров или IP адреса клиентов не принадлежат диапазонам корпоративной сети. Это может свидетельствовать о несанкционированном подключении к корпоративной сети или о сбоях в настройках сети (часто встречается некорректная настройка DHCP). Необходимо локализовать источник проблемы. Частным случаем несанкционированного подключения является чужая система перехвата трафика, которая выдает себя, пытаясь сопоставить IP адреса с именами. Для маскировки своего присутствия система подставляет в качестве источника запроса несуществующих или чужой обратный адрес, ожидая ответ DNS в перехваченном трафике. Ответ не всегда проходит через прослушиваемый канал, поэтому запросы дублируются с указанием разных IP источника запроса.
От одного IP адреса идет очень много запросов (адресов может быть несколько). Количество запросов превышает среднее значение в 10 или более раз. Если в запросах фигурируют имена компьютеров из локальной сети, это может свидетельствовать о том, что с этого IP адреса ведется сканирование сети. Если выявлено большое количество обращений к различным внешним доменам, при проверке доменов выясняем, что подавляющее большинство доменов не существует, то, вероятно, компьютер-источник заражен вирусом, который генерирует псевдослучайные имена, которые могут принадлежать управляющим серверам. Необходимо выяснить и устранить причины такой активности.
От компьютеров, которые не имеют доступа в сеть Интернет, поступают запросы, содержащие имена внешних серверов. Если от компьютера поступает хотя бы 3-5 таких запросов, это может свидетельствовать или о наличии вируса или о наличии, помимо подключения к корпоративной сети, дополнительного подключения к сети Интернет через GPRS модем.
Запрос DNS записей специфического типа, например, MX. Запросы MX записей характерны для корпоративного почтового сервера, если записи этого типа запрашиваются с других компьютеров, это может свидетельствовать о наличии несанкционированных почтовых сервисов.
DNS туннелирование как отдельный вид аномальной активности
Особый тип аномальной активности так называемое DNS туннелирование трафика. Цель DNS туннелирования — преодоление корпоративных ограничений по передаче информации и получение доступа к внешним серверам8 9.
В настоящее время системы DLP не осуществляют мониторинг DNS трафика, т. к. угроза DNS туннелирования или полагается неактуальной или изначально не рассматривается.
При использовании DNS туннелирования характерна следующая аномальная активность: с одного IP адреса очень много запросов к разным доменам третьего, четвертого или более высокого уровня на один или несколько внешних серверов.
В таблице пример характерного аномального трафика.
IP клиента |
Текст запроса |
192.168.100.100 |
cfufjekeigvplgbhknrobufneodcvibugnjrkfc.trsbjogkybnfj.example.com |
192.168.100.100 |
topsec3051.example.org |
192.168.100.100 |
topsec3052.example.org |
192.168.100.100 |
100101001111011000011100001000110110111110111110.example.com |
192.168.100.100 |
plgbhkcfufjevnrobufneodcvibugnjrkfcsbjog.trkybnfjkeig.example.com |
... |
... |
Обмен данными с внешним сервером с использованием метода DNS туннелирования происходит по следующей схеме:
-
На компьютере в корпоративной сети, откуда необходимо передать данные наружу, формируется запрос разрешения доменного имени в IP адрес. Здесь не важно, делает это вирус, скрипт или сотрудник.
Запрос имеет вид: wfrdnnuimp08ccs2xafdfv4sk85qzdtad.corp.example.com, где wfrdnnuimp08ccs2xafdfv4sk85qzdtad.corp — часть закодированной для передачи информации, example.com — сервер злоумышленников.
-
Компьютер может не иметь доступа в сеть Интернет, но сервис DNS, как правило, доступен, поэтому запрос проходит через корпоративный DNS сервер и передается на внешний сервер, подконтрольный злоумышленникам.
-
Злоумышленники получают запрос на подконтрольным им DNS сервер, отделяют часть, содержащую закодированную информацию.
-
Злоумышленники направляют ответ в виде набора IP адресов или данных в формате TXT, в зависимости от запроса.
-
Ответ злоумышленников через корпоративный DNS сервер поступает на компьютер-источник.
-
Полученный ответ игнорируется или, что более вероятно, используется как данные или команда для следующих действий.
-
Действия с 1. по 6. повторяются.
Рассмотрим следующий пример, чтобы наглядно представить простоту передачи данных в локальную сеть на компьютер, не имеющий доступ в Интернет, вручную используя nslookup и запросы типа TXT.
C:\>nslookup.exe
>set TYPE=TXT
>rejector.ru
Default Server: ns.test.corp
Address: 192.168.0.7
Non-authoritative answer:
rejector.ru text = "v=spf1 ip4:176.9.118.232/32 -all"
Мало? Но, принимая во внимание, что количество поддоменов на сервере практически не ограничено, а обработка запросов и ответов выполняется не вручную, объем данных и, соответственно, угроза возрастают.
Рекомендации
-
Разрешить на граничных межсетевых экранах выход DNS трафика за пределы локальной сети только с корпоративного DNS сервера. Все попытки обращения к внешним DNS серверам с других устройств сети должны фиксироваться и проверяться.
-
Периодически просматривать DNS трафик для выявления аномальной активности. Этот процесс можно частично автоматизировать, т. к. основан простых на операциях: отбор уникальных значений, подсчет статистики по количеству компьютеров или обращений, реакция при превышении пороговых значений.
-
Периодически проверять DNS трафик на наличие запросов, содержащих имена командных серверов бот-сетей. Имена таких серверов можно найти в описаниях вирусов на сайтах антивирусных компаний.
-
Рассмотреть вопрос использования фильтрации на уровне внешнего DNS сервера 10 11 12. Необходимо понимать, что использование такой фильтрации имеет свои достоинства и недостатки.
1http://ru.wikipedia.org/wiki/DNS
2http://ru.wikipedia.org/wiki/Ресурсные_записи_DNS
3http://tools.ietf.org/html/rfc1034
4http://tools.ietf.org/html/rfc1035
5http://ru.wikipedia.org/wiki/Nslookup
6http://tools.ietf.org/html/rfc2606
7http://nmap.org/
8 http://dnstunnel.de/
9 http://xgu.ru/wiki/DNS-tunneling
10http://rejector.ru/
11http://www.skydns.ru/
12http://www.opendns.com/