Техники использования DNS в атаках вредоносных программ
by Антон КалининВо многих случаях вредоносным программам для выполнения своих функций нужно сетевое взаимодействие с командными центрами управления (С&C). Но на их пути могут встать продукты сетевой безопасности, которые применяются в компании — например, брандмауэры, защищённые веб-шлюзы и антивирусы. Тогда, пытаясь продлить работу, нежелательный объект связывается со своим сервером C&C по скрытому каналу. В качестве такового злоумышленники нередко используют протокол системы доменных имён DNS; это позволяет им не только обеспечить соединение, но и управлять кражей данных и перенаправлением трафика.
- Введение
- Как скрывать следы, используя DNS
- Как обеспечить передачу данных в DNS
- Как обнаружить подозрительную активность в DNS
- Чем мониторить
- Как предостеречь
- Выводы
Введение
Распространённость DNS (и слабого контроля над ним) обеспечивает злоумышленников элегантными и тонкими методами для установки соединений и обмена данными.
По мнению Института SANS, 100% вредоносных программ используют DNS на каждом этапе своей работы — от проникновения и заражения до хищения данных. Как отмечено выше, DNS применяется и для того, чтобы взаимодействовать с центрами управления тем или иным способом. Это удобно для масштабирования и засекречивания своей инфраструктуры. Вредоносные агенты могут доставляться посредством различных сетевых протоколов (HTTP, FTP, SMTP или других распространённых стандартов обмена данными), но все эти методы так или иначе используют внутри себя DNS.
Рисунок 1. Роль DNS в атаках
Системы сетевой безопасности, как правило, не контролируют DNS, потому что инженеры и администраторы обычно не рассматривают его как средство передачи вредоносных сообщений. При этом DNS может быть туннелем для отправки «полезной» нагрузки на скомпрометированный узел, а также трансляции команд от центра управления. В результате подобное туннелирование позволит обойти защиту организации. Из отчёта Cloud Mark за 2018 г. видно, что «почти 90 процентов фирм пострадали от своей инфраструктуры доменных имён, а почти половина из них обнаружила данные, выходящие из сети через DNS».
Как скрывать следы, используя DNS
Проникая в систему, вредоносные программы обращаются к DNS, чтобы обнаружить свои центры управления. Например, это позволяет сделать технология Fast Flux, которая подразумевает быстрое многократное внесение изменений в записи ресурсов в зоне DNS. Злоумышленники используют Fast Flux вместе с ботнетом, чтобы скрывать следы и преодолевать провайдерские фильтры, блокирующие доступ по IP-адресам.
Fast Flux назначает любому полнофункциональному доменному имени множество сотен, а иногда и тысяч IP-адресов. Переключение между ними в потоке происходит очень быстро. При этом используется комбинация циклического набора сетевых идентификаторов и очень маленького значения TTL для каждой отдельной записи в DNS. Список IP-адресов, связанный с именем домена, меняется каждые пять секунд. В результате данный домен постоянно остаётся в сети, продлевая жизнь мошеннических сайтов, вредоносных площадок и C&C-серверов.
Кроме этого, злоумышленники проверяют бот-машины на доступность и полосу пропускания интернет-канала, чтобы эффективнее использовать данные компьютера. Как следствие, постоянно меняющаяся архитектура усложняет контроль и ликвидацию преступной деятельности.
Основные признаки Fast Flux:
- множество IP-адресов у одного доменного имени из разных AS;
- частая смена IP-адресов и name-серверов доменных имён;
- принадлежность IP-адресов ко множеству различных блоков, выделенных различным провайдерам (allocated);
- очень короткое время жизни для каждой отдельной записи в DNS;
- небольшой возраст домена;
- наличие сервера NGINX в качестве реверсивного прокси-сервера;
- управление аккаунтом регистранта без авторизации;
- уровень fast-flux домена ниже второго.
Рисунок 2. Основные признаки Fast Flux
Domain Generation Algorithms — ещё одна технология, которая используется для скрытия заражений. Она применяется для того, чтобы вычислять последовательности доменных имён, к которым могут подключаться заражённые машины.
Для этого владельцы ботнета регистрируют несколько доменных имён, сгенерированных таким алгоритмом, и связывают их с управляющими серверами. Заражённые компьютеры, в свою очередь, генерируют списки из тысяч имён и пытаются подключиться к каждому из них — до тех пор, пока не найдут действующее. Установив соединение, троянский агент получает от сервера обновления и команды. Доменные имена генерируются по псевдослучайному принципу, зависящему, например, от текущей даты, благодаря чему все боты одновременно формируют один и тот же перечень имён. При этом реальный адрес управляющего сервера периодически меняется, что дополнительно затрудняет его обнаружение.
Рисунок 3. Взаимодействие вредоносного агента с командным центром
Один из примеров — обнаруженная командой Qihoo 360 Netlab рекламная сеть, которая скрывала криптовалютные майнеры внутри баннеров на клиентских сайтах. В дополнение её создатели нашли способ обходить блокировщики рекламы. Сеть использовала DGA для регистрации уникальных доменных имён, к которым заражённый хост подключался с целью получения новых команд от главного сервера С&C.
Для проверки этого факта исследователи посетили один из веб-сайтов. Как только они перешли на страницу, загрузка процессора взлетела до 100%. Если у пользователя не было блокировщика объявлений, то он получал рекламу непосредственно с основных доменов. Затем сеть выгружала копию Coinhive для майнинга Monero на сайте. Если же пользователь имел блокировщик, то реклама могла загружаться с альтернативного домена, сгенерированного с помощью DGА. Эффективность метода была обусловлена тем, что пока блокировщик обнаруживал другие домены, из которых идёт реклама, сеть успевала сгенерировать новые. Таким образом, в наличии всегда была дополнительная порция доменов, не внесённых в чёрный список.
Как и вредоносные программы, DGA развиваются, тем самым усложняя и без того запутанные игры в кошки-мышки между преступниками и безопасниками. Один из этапов эволюции DGA был замечен в ботнете Matsnu, чей алгоритм выбирал существительные и глаголы из встроенного списка, содержавшего более 1 300 слов, для формирования доменов, состоявших из 24-символьных последовательностей. В отличие от других DGA, ботнет Matsnu использовал комбинацию «существительное-глагол-существительное-глагол», чтобы обмануть лингвистические алгоритмы, разработанные для поиска бессмысленных доменных имён. Новые варианты DGA помогали троянским программам обманывать системы безопасности, полагающиеся на рейтинги репутаций доменных имён, чёрные списки и сигнатуры.
Как обеспечить передачу данных в DNS
Канал C&C часто служит двум целям атакующего. Во-первых, он может выступать в качестве маяка, указывающего на то, что удалённая «полезная» нагрузка всё ещё работает, так как она передаёт сигналы на свой сервер. Во втором случае скомпрометированная система создаёт странные строки запроса для отправки по DNS. Подобные запросы по-прежнему действуют как маяк, однако они также предоставляют некоторые основные метаданные о жертве и, что важно, способы её уникальной идентификации.
Основная идея заключается в том, чтобы создать рекурсивный запрос к домену третьего уровня, где в кодированном виде передаются заданные сведения, домен же второго уровня принадлежит злоумышленнику (к примеру, rogue-server.com, как показано на рисунке ниже). Максимальная длина данных, передаваемых в одном пакете, составляет 255-(длина маркера)-(длина rogue-server.com)-2. Злоумышленник может принимать эти сообщения, контролируя DNS-сервер для домена rogue-server.com.
Этот механизм весьма прост в реализации, имеет децентрализованный характер и легко обходит различные брандмауэры, вовлекая местные DNS-резолверы (серверы, преобразующие доменные имена в сетевые идентификаторы) в распространение запросов. Как правило, злоумышленнику нужен работающий авторитетный сервер имён (NS), обслуживающий основной домен. Следовательно, «полезная» нагрузка кодируется и / или зашифровывается на уровне субдомена.
Рисунок 4. Реализация рекурсивного запроса к домену третьего уровня
Некоторые из метаданных скомпрометированного хоста могут быть отправлены в виде открытого текста, но тогда они будут выглядеть более подозрительно для любого, кто видит такие строки в DNS-запросе. Кроме того, во многих случаях информация будет содержать символы, не поддерживаемые DNS. Поэтому злоумышленники прибегают к кодированию данных, чаще всего используя для этого стандарт Base64.
Данная техника является одной из составных частей работы DNS-туннелирования. Фактически, общий принцип работы DNS-tunneling позволяет передавать любой произвольный трафик поверх DNS-протокола.
Более сложная версия передачи данных в DNS-туннелировании включает отправку команд, двоичного кода или файлов на заражённую машину. В этом случае C&C-сервер атакующего отвечает на запрос своими «полезными» данными в кодировке base64 в пакете ответа DNS, используя поле RDATA различных типов записей DNS-ресурсов. Записи TXT, NULL и CNAME чаще всего применяются при туннелировании DNS. Соответственно, все команды и действия будут «заворачиваться» в DNS-протокол, и единственное, что выдаст атакующего, — большая генерация таких запросов в сети. Кроме пересылки команд атакующие могут покомпонентно загружать шелл-код вредоносной программы. Для этого обычно используют ресурсные записи TXT, в которые записывается код скрипта.
Приведём пример подгружаемого вредоносного скрипта. Троянский установщик (дроппер) отправляет DNS-запросы на подконтрольный злоумышленнику сервер; ответы приходят в виде разделённых на 4 части TXT-записей. Дроппер, получив ответ, преобразует код в исходный вид; после успешной передачи всех данных скрипт собирается воедино и выполняет дальнейшую вредоносную активность.
Рисунок 5. Преобразование скрипта в исходный вид
DNS-туннелирование нельзя запретить простыми правилами брандмауэра, разрешив при этом остальной DNS-трафик. Это связано с тем, что трафик DNS-туннеля и легитимные DNS-запросы неразличимы. Обнаруживать DNS-туннелирование можно по интенсивности запросов (если трафик по туннелю велик), а также более сложными методами, используя системы обнаружения вторжений. Другими словами, фильтрация DNS также может использоваться для обхода существующих элементов управления безопасностью путём туннелирования фильтрованных протоколов по DNS.
Как обнаружить подозрительную активность в DNS
Основные индикаторы — следующие:
- большое количество поисков различных и в основном бессмысленных поддоменов для домена второго уровня;
- большой размер ответа при поиске таких поддоменов;
- большое количество или необычные типы запросов (MX, TXT);
- «оторванные» DNS-запросы, т.е. ответы, которые присылаются без запросов или наоборот;
- низкое значение TTL и множество IP-адресов у одного доменного имени;
- неудачные DNS-запросы (ответы NXDomain);
- DNS-трафик в обход DNS-серверов по умолчанию.
Также стоит использовать дополнительные инструменты для большего охвата зоны мониторинга. Так, по состоянию на 2019 год более 1000 доменов верхнего уровня существуют в списке TLD, поддерживаемых Internet Assigned Numbers Authority (IANA). Проведя исследования, эксперт по информационной безопасности из института SANS Сет Мисенар пришёл к выводу, что некоторые из этих TLD не содержат ничего, кроме вредоносных сайтов. Конечно, самый простой вариант — заблокировать известные «плохие» TLD; однако он не является лучшим из возможных. В качестве минимальной меры компании могут наблюдать за странными TLD и отправлять предупреждение, чтобы проверить, легитимны ли запросы к ним, или же обусловлены действиями вредоносных программ.
Аналитики SANS также пришли к ещё одному интересному факту: «если доменное имя существует менее 24 часов, то, возможно, оно является вредоносным».Как уже говорилось, атакующие используют генерационные алгоритмы для создания новых доменных имён и быстрого доступа к ним в интернете. Часто домены, содержащие вредоносный контент, блокируются или аннулируются, и в этом случае злоумышленники опять же будут заменять их недавно созданными. Не исключено, что полная блокировка обращений к новым доменным именам — лучшая политика, и если вам нужен доступ к только появившемуся в Сети домену, то вы можете просто добавить его в белый список.
Наконец, множество различных репутационных баз помогает не только обнаружить подозрительную активность, но и классифицировать её. Существуют и открытые, и коммерческие проекты, осуществляющие постоянный обмен информацией о новых вредоносных доменах.
Самое главное — знать, что является нормальным для вашего бизнеса, и смотреть на вещи из ряда вон выходящие. Например, если вы обычно не обращаетесь к предприятиям в других странах, и вдруг вы замечаете, что это происходит часто, исследуйте такие запросы. Если исходящие и входящие данные DNS внезапно меняются по частоте и размеру, убедитесь, что они являются законными. Предложить какие-то универсальные индикаторы здесь не удастся, поскольку каждый бизнес уникален, и трафик, который является ненормальным для одного бизнеса, может быть нормальным для другого. Перечисленное выше — это всего лишь несколько доступных командам ИТ и ИБ вариантов использования журналов DNS для поиска индикаторов компрометации, указывающих на проблему безопасности. DNS — это часто игнорируемый и недооценённый вектор атаки в сети, так что, ограничивая доступ к ненужным адресам и отслеживая журналы DNS для выявления подозрительной активности, вы можете предотвратить или обнаружить проблемы безопасности в своих сетях.
Чем мониторить
Каким же образом можно отслеживать подозрительный DNS-трафик с помощью систем безопасности и резолверов?
Один из простейших вариантов — это использование анализаторов трафика, таких как Wireshark или tcpdump. С их помощью аналитик может выявить вредоносные потоки данных. Для этого стоит записать и открыть фильтр DNS-трафика между клиентами и собственным DNS-сервером, а затем сохранить его в файле PCAP и создать скрипты для поиска образцов подозрительных действий. Но это — весьма объёмный ручной труд, а файлы PCAP требуют большого количества свободного пространства на диске.
Системы обнаружения вторжений позволяют создавать правила для исходящих DNS-запросов от неавторизованных клиентов. Они могут использоваться для идентификации необычных шаблонов сетевого трафика, созданных ботами, которые атакуют другие компьютеры. Однако системы обнаружения вторжений не смягчают последствия атаки. Поэтому здесь можно предусмотреть составление правил для подсчёта или отправки ответов NXDOMAIN, а также ответов, содержащих записи ресурсов с короткими TTL, DNS-запросов, выполненных с использованием TCP, и DNS-запросов к нестандартным портам. Службы предотвращения вторжений в брандмауэрах предоставляют правила разрешения или отказа для многих (наиболее распространённых) из этих проверок.
Современные NGFW охватывают большой набор средств детектирования аномалий и защиты от них в DNS-трафике. Помимо предотвращения DDoS-атак с использованием DNS настраиваемые политики позволяют обнаружить DNS-запросы в обход серверов, используемых по умолчанию. Ежедневно обновляемые репутационные базы дают возможность детектировать соединения с известными C&C-серверами. Механизм DNS Sinkholing помогает идентифицировать заражённые хосты в защищённой сети с использованием трафика DNS в ситуациях, когда брандмауэр не может видеть DNS-запрос инфицированного клиента (или, точнее, не может видеть отправителя DNS-запроса); он используется для подмены DNS-серверов, предотвращая разрешение имён узлов указанных URL-адресов. Этого можно добиться настроив переадресацию DNS, чтобы вернуть ложный IP-адрес в ответ на запрос по определённому URL-идентификатору. Большинство вендоров активно внедряет в свои продукты NGFW дополнительные модули анализа DNS-трафика в режиме реального времени, в том числе — используя технологии машинного обучения, что позволяет контролировать нежелательные домены, командные серверы, DNS-туннели и вредоносные программы, использующие DGA.
Одним из методов протоколирования DNS-запросов, позволяющих восстанавливать историю изменений данных с возможностью индексации и поиска, является метод Passive DNS. Пассивная репликация DNS — это технология, которая создаёт копии зон без сотрудничества с их администраторами, на основе полученных ответов от сервера имён. Основная идея пассивного DNS заключается в следующем:
- межсерверные DNS-сообщения захватываются датчиками и отправляются в точку сбора для анализа;
- после обработки отдельные записи DNS хранятся в базе данных, где они могут быть проиндексированы и откуда их можно запрашивать.
Таким образом, пассивный DNS — потенциальный источник ответов на ряд вопросов: «куда это имя домена указывало в прошлом?», «какие доменные имена размещаются этим сервером имён?», «какие доменные имена указывают на данную IP-сеть?», «какие субдомены существуют под определённым доменным именем?».
Очевидно, что пассивный DNS может быть очень полезен в исследованиях вредоносных программ, поскольку он способен помочь исследователям обнаружить сетевую инфраструктуру, управляемую одной и той же группой преступников, другие домены, используемые для распространения данного варианта вредоносного кода, управляемую алгоритмом C&C-связь точек и т. д.
Функциональные возможности названных выше систем «из коробки» не всегда удовлетворяют запросы потребителя. В таких случаях оптимальным решением будет сбор журналов DNS в системы лог-менеджмента или анализа событий, такие как SIEM или ELK. С их помощью возможно создать собственные настройки правил мониторинга, а также проводить профилирование своей инфраструктуры для выявления аномалий в DNS-трафике.
Как предостеречь
В широком доступе есть огромное разнообразие публичных альтернативных служб DNS со встроенной блокировкой угроз. Эти серверы обычно отвечают ложным IP-адресом, указывающим на информативную страницу «ЭТОТ САЙТ ЗАБЛОКИРОВАН».
Рисунок 6. Список служб DNS, предлагающих пользователям блокировку вредоносных программ и фишинга
Однако при этом они вряд ли подойдут крупным организациям, так как структура работы подобных сервисов остаётся «чёрным ящиком»: нельзя настраивать и изменять свои политики. Кроме того, нужно помнить, что организации, работающие с этими службами, будут иметь доступ к вашей истории разрешения DNS. Это может позволить им восстановить историю просмотров. Соответственно, такие службы больше подходят для домашнего использования либо для малого бизнеса.
Вместо полного закрытия рекурсивного DNS стоит ограничить доступ к наиболее популярным среди атакующих доменам. Данную политику можно реализовать с помощью механизма RPZ; это — функциональность DNS-сервера Bind, зона с политикой ответов, которая может передаваться между серверами и защищена подписями транзакции, а также обновляется в режиме реального времени (DNS NOTIFY). Грамотное использование RPZ позволяет решить следующие задачи:
- блокировка коммуникации ботнетов с управляющими центрами (C&C);
- снижение нагрузки на кеширующий DNS и канал связи;
- блокировка доступа по списку «запрещённых» сайтов (как для предприятий, так и для провайдеров);
- перенаправление пользователей на локальные ресурсы.
Рисунок 7. Схема работы с RPZ
Продукты, которые могут использовать сервис DNS RPZ, можно найти на сайте https://dnsrpz.info/. Некоторые поставщики RPZ-зон предоставляют их бесплатно для тестирования, поэтому очень легко проверить сеть на наличие заражения известными бот-агентами и другими вредоносными программами. Помимо блокировки доступа к ресурсам (NXDOMAIN, NODATA, DROP) RPZ может изменять ответ DNS-сервера. Такое изменение ответов может потребоваться, например, для:
- предупреждения пользователей о том, что их компьютеры заражены вредоносными программами или ботнет-агентами, или вывода соответствующих уведомлений при обращении к сайтам, которые распространяют инфекции (дополнительно провайдеры могут показать рекламу антивируса, а администраторы на предприятиях — указать телефон и электронный адрес IT-службы);
- предупреждения пользователей о том, что данный ресурс заблокирован (с указанием причины);
- перенаправления пользователей на внутренние ресурсы или локальные (серые) IP-адреса серверов.
Выводы
DNS — мощный инструмент, который используется почти везде, позволяя приложениям и системам искать ресурсы и сервисы, с которыми можно взаимодействовать. Помимо этого, он оказывается идеальным выбором для злоумышленников, которые ищут всегда открытый, часто упускаемый из виду и, вероятно, недооценённый протокол, чтобы использовать его для обмена данными с заражёнными узлами.
В данной статье была описана небольшая группа способов использования протокола DNS вредоносными программами и охвачена всего лишь часть тех мер, которые можно применять для обнаружения этих техник.