Понимание атак «человек посередине» — часть 2: спуфинг DNS

Опубликовано: 9 Апреля, 2023

  • Понимание атак «человек посередине» — часть 4: перехват SSL

Введение

В первой части этой серии мы рассмотрели обычное взаимодействие ARP и способы отравления кэша ARP устройства для перенаправления сетевого трафика через другой компьютер с возможным злонамеренным намерением. Эта, казалось бы, продвинутая атака «человек посередине» (MITM), известная как отравление кэша ARP, легко выполняется с помощью правильного программного обеспечения. В этой статье мы обсудим похожий тип атаки MITM, который называется DNS Spoofing. Если вы не читали предыдущую статью об отравлении кэша ARP, я бы порекомендовал сделать это сейчас, так как эта статья основана на методах, изученных в этой статье.

DNS-спуфинг

Спуфинг DNS — это метод MITM, используемый для предоставления хосту ложной DNS-информации, чтобы при попытке просмотра, например, www.bankofamerica.com по IP-адресу XXX.XX.XX.XX они фактически отправлялись на поддельный www..bankofamerica.com с IP-адресом YYY.YY.YY.YY, который злоумышленник создал для кражи учетных данных и информации об учетной записи онлайн-банкинга у ничего не подозревающих пользователей. На самом деле это делается довольно легко, и здесь мы увидим, как это работает, как это делается и как от этого защититься.

Обычная DNS-связь

Протокол системы именования доменов (DNS), определенный в RFC 1034/1035, некоторые считают одним из наиболее важных протоколов, используемых в Интернете. Это потому, что DNS — это пресловутая патока, которая скрепляет хлеб. Короче говоря, всякий раз, когда вы вводите веб-адрес, такой как http://www.google.com, в свой браузер, DNS-запрос отправляется на DNS-сервер, чтобы узнать, к какому IP-адресу разрешается это имя. Это связано с тем, что маршрутизаторы и устройства, соединяющие Интернет, не понимают google.com, они понимают только такие адреса, как 74.125.95.103.

Сам DNS-сервер работает, сохраняя базу данных записей (называемых записями ресурсов) сопоставления IP-адреса с именами DNS, передавая эти записи ресурсов клиентам и передавая эти записи ресурсов другим DNS-серверам. Архитектура DNS-серверов на предприятиях и в Интернете может быть немного сложной. Собственно, архитектуре DNS посвящены целые книги. Мы не будем рассматривать архитектурные аспекты или даже все различные типы DNS-трафика (вы можете ознакомиться с различными RFC, связанными с DNS, здесь), но мы рассмотрим базовую транзакцию DNS, показанную на рисунке 1.

Изображение 23573
Рисунок 1: DNS-запрос и ответ

DNS функционирует в формате типа запрос/ответ. Клиент, желающий преобразовать DNS-имя в IP-адрес, отправляет запрос DNS-серверу, и сервер отправляет запрошенную информацию в своем ответе. С точки зрения клиентов видны только два пакета: запрос и ответ.

Изображение 23574
Рисунок 2: Пакеты запроса и ответа DNS

Этот сценарий становится немного сложнее, если учесть рекурсию DNS. Из-за иерархической природы структуры DNS в Интернете DNS-серверам необходима возможность взаимодействовать друг с другом, чтобы находить ответы на запросы, отправленные клиентами. В конце концов, было бы справедливо ожидать, что наш внутренний DNS-сервер знает сопоставление имени с IP-адресом нашего локального сервера интрасети, но мы не можем ожидать, что он будет знать IP-адрес, связанный с Google или Dell. Здесь в игру вступает рекурсия. Рекурсия — это когда один DNS-сервер запрашивает другой DNS-сервер от имени клиента, который сделал запрос. По сути, это превращает DNS-сервер в клиента, как показано на рисунке 3.

Изображение 23575
Рис. 3. DNS-запрос и ответ с использованием рекурсии

Подмена DNS

Существует несколько способов содрать шкуру с кошки, и определенно существует более одного метода для подмены DNS. Мы будем использовать технику подмены DNS ID.

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

Мы завершим этот процесс, выполнив два шага с помощью одного инструмента. Сначала мы отравляем целевое устройство кэшем ARP, чтобы перенаправить его трафик через наш атакующий хост, чтобы мы могли перехватить DNS-запрос, а затем мы фактически отправим поддельный пакет. Цель этого сценария — заставить пользователей целевой сети посетить наш вредоносный веб-сайт, а не веб-сайт, к которому они пытаются получить доступ. Изображение этой атаки показано на рисунке 4.

Изображение 23576
Рисунок 4. Атака с подменой DNS с использованием метода подмены DNS ID

Существует несколько различных инструментов, которые можно использовать для подмены DNS. Мы будем использовать Ettercap, который имеет версии для Windows и Linux. Вы можете скачать Ettercap отсюда. Если вы проведете небольшое исследование на этом веб-сайте, вы обнаружите, что Ettercap обладает большим количеством функций, помимо спуфинга DNS, и обычно используется во многих типах атак MITM.

Если вы устанавливаете Ettercap на компьютер с Windows, вы заметите, что у него отличный графический интерфейс, но в этом примере мы будем использовать интерфейс командной строки.

Перед запуском Ettercap требуется небольшая настройка. Ettercap по своей сути представляет собой анализатор пакетов, который использует различные подключаемые модули для выполнения различных атак, которые он может выполнять. Плагин dns_spoof — это то, что будет выполнять атаку в этом примере, поэтому мы должны изменить файл конфигурации, связанный с этим плагином. В системе Windows этот файл может находиться в каталогах C:Program Files (x86)EttercapNGshareetter.dns и /usr/share/ettercap/etter.dns. Этот файл довольно прост и содержит записи DNS, которые вы хотите подделать. Для наших целей мы хотели бы, чтобы любой пользователь, пытающийся перейти на yahoo.com, был перенаправлен на хост в локальной сети, поэтому мы добавим запись, выделенную на рисунке 5.

Изображение 23577
Рисунок 5: Добавление поддельной записи DNS в etter.dns

Эти записи в основном сообщают подключаемому модулю dns_spoof, что когда он видит DNS-запрос для yahoo.com или www.yahoo.com (для записи ресурса типа A), он должен предоставить в ответ IP-адрес 172.16.16.100. В реалистичном сценарии на устройстве с адресом 172.16.16.100 будет запущено какое-то программное обеспечение веб-сервера, которое предоставит пользователю поддельный веб-сайт.

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

  • -T — указывает использование текстового интерфейса
  • -q — запускает команды в тихом режиме, чтобы захваченные пакеты не выводились на экран
  • -P dns_spoof — указывает использование подключаемого модуля dns_spoof.
  • -M arp — инициирует атаку MITM Arp отравления для перехвата пакетов между хостами.
  • // // — Указывает всю сеть в качестве целей атаки

Окончательная командная строка для наших целей будет такой:

Ettercap.exe -T -q -P dns_spoof -M arp // //

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

Изображение 23578
Рисунок 6: Ettercap активно прослушивает DNS-запросы

После запуска любой, кто пытается получить доступ к www.yahoo.com, перенаправляется на наш вредоносный сайт.

Изображение 23579
Рисунок 7: Результат попытки подмены DNS с точки зрения пользователя

Защита от спуфинга DNS

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

  • Защитите свои внутренние машины: подобные атаки чаще всего выполняются внутри сети. Если ваши сетевые устройства защищены, вероятность того, что эти скомпрометированные хосты будут использованы для запуска атаки спуфинга, меньше.
  • Не полагайтесь на DNS для безопасных систем: в высокочувствительных и безопасных системах, которые вы обычно не будете просматривать в Интернете, часто рекомендуется не использовать DNS. Если у вас есть программное обеспечение, работа которого зависит от имен хостов, их можно указать вручную в файле hosts устройств.
  • Используйте IDS: система обнаружения вторжений, при правильном размещении и развертывании, обычно может обнаруживать большинство форм отравления кэша ARP и спуфинга DNS.
  • Используйте DNSSEC: DNSSEC — это более новая альтернатива DNS, которая использует записи DNS с цифровой подписью для обеспечения достоверности ответа на запрос. DNSSEC еще не получил широкого распространения, но уже получил широкое признание как «будущее DNS». Это настолько важно, что Министерство обороны США потребовало, чтобы все домены MIL и GOV начали использовать DNSSEC в течение следующего года. Подробнее о DNSSEC можно прочитать здесь.

Заворачивать

Спуфинг DNS — это очень смертоносная форма атаки MITM, если она сочетается с правильным уровнем навыков и злонамеренным намерением. Используя этот метод, мы можем использовать методы фишинга, чтобы обманным путем украсть учетные данные, установить вредоносное ПО с помощью эксплойта или даже вызвать отказ в обслуживании. В следующей статье этой серии мы рассмотрим атаки типа «передача хэша» и то, как их можно использовать для входа на компьютеры под управлением Windows без известных учетных данных.

  • Понимание атак «человек посередине» — часть 4: перехват SSL