July 10, 2023

Мимикрия сетевого мира: DNS Spoofing и трансформация пакетов

Вступление

Доброго времени суток! В этой статье мы завершаем серию о MITM-атаках (если, конечно, мне не напомнят или я сам не вспомню о каких-то интересных аспектах этой темы). Сегодня мы рассмотрим ещё два вида атак MITM: изменение содержимого пакетов и перенаправление жертвы на свои ресурсы.

Что такое DNS Spoofing?

DNS Spoofing (или DNS-подмена) — это метод атаки, при котором злоумышленник изменяет или подменяет записи DNS (Domain Name System), чтобы перенаправить пользователей на фальшивые веб-сайты или манипулировать сетевым трафиком.

Для лучшего понимания, представьте Интернет как огромный телефонный справочник, где каждый сайт имеет свое уникальное "телефонное номер". DNS - это своего рода "справочник" Интернета, который переводит доменные имена (например, example.com) в соответствующие IP-адреса, позволяя вашему компьютеру или устройству связаться с сервером, на котором размещается веб-сайт.

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

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

DNS Spoofing через файл Hosts

Файл hosts является текстовым файлом без расширения, который присутствует в операционных системах, таких как Windows, macOS, Linux и других. Он содержит соответствия между доменными именами и IP-адресами, позволяя установить локальные ассоциации между ними без необходимости обращения к удаленному DNS-серверу.

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

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

Допустим, у нас есть цель - получить пароль от банка bank.my у нашей жертвы, и мы каким-то образом получили доступ к её компьютеру. В современном мире многие пользователи хранят свои пароли в браузерах, и можно попытаться получить их оттуда. Однако предположим, что у нас нет доступа к кейлогеру или RAT-тулу, и жертва не хранит пароли в браузере. В таком случае, единственный способ достичь нашей цели - использовать метод DNS Spoofing.

Открываем файл hosts:

Windows - C:\Windows\System32\drivers\etc\hosts
Linux и Mac - /etc/hosts

Запишем IP-адрес поддельного сайта, и рядом укажем доменное имя нашего банка:

Поддельный сайт находится на том же компьютере, что и является жертвой, поэтому я указал локальный IP-адрес 127.0.0.1

Попытаемся зайти на сайт банка:

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

Я повторил ту же операцию на другом компьютере с операционной системой Windows. Я открыл два браузера: Edge, который был полностью очищен, и Chrome, в котором я предварительно посетил оригинальный сайт, затем закрыл вкладку и перезагрузил браузер. Как видно, после изменения файла hosts я смог зайти на сайт, и Edge показал мне фальшивую страницу, в то время как Chrome, который не был очищен, открыл оригинальную страницу.

DNS Spoofing через Ettercap:

Прежде всего, мы должны настроить Ettercap. Для этого откроем файл /etc/ettercap/etter.conf:

В начале, установим значения двух переменных равными 0:

Далее в файле мы ищем эти строки и удаляем символ "#" в их начале, как показано на картинке:

После этого мы открываем файл /etc/ettercap/etter.dns:

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

В качестве примера, я решил взять реальный сайт, который не использует защищенное соединение HTTPS. Указание этого сайта в качестве примера не причинит ему никакого вреда.

Теперь мы повторяем все шаги, которые были описаны в предыдущей статье о ARP Spoofing, с той разницей, что перед началом атаки необходимо активировать плагин dns-spoof:

Для активации плагина dns-spoof необходимо выполнить двойной клик на нем.

Теперь, после активации плагина dns-spoof, вы можете запустить атаку.

После запуска атаки убедитесь, что включен режим захвата пакетов (sniffing), иначе цель может столкнуться с проблемами при подключении.

Посмотрим на результат:

Дополнение

Если у вас нет конкретного сайта в качестве цели, вы можете указать "*.*" в файле etter.dns, чтобы все сайты менялись на ваш. Однако, возникнут проблемы с HTTPS-сайтами, которые просто будут выдавать ошибку недействительного сертификата.

Если вы хотите изменить цель и перезапустить атаку, вам необходимо
полностью перезапустить Ettercap, иначе атака не будет работать.

Подмена содержимого пакетов через Burp Suite

Burp Suite - это мощный набор инструментов для тестирования безопасности веб-приложений. Он разработан для помощи профессионалам в области информационной безопасности при анализе уязвимостей и выполнении атак на веб-приложения.

Для начала нам потребуется использовать следующую команду для перенаправления трафика с порта 80 на порт 8080:

sudo iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 808

Перейдем к настройке Burp Suite. Сначала откроем программу и затем создадим новый проект.

Теперь откроем вкладку "Proxy" и перейдем к настройкам прокси:

У нас пока установлен только один стандартный прослушиватель. Cнимем с него галочку и добавим новый прослушиватель, который будет слушать IP-адрес нашего атакующего компьютера на порту 8080:

Также во вкладке "Request Handling" необходимо установить флажок "Support invisible proxying":

Нажимаем "ОК" и закрываем окно настроек. Теперь нам нужно запустить
обычную атаку через Ettercap, так же, как мы делали в предыдущем посте.

В качестве теста мы будем использовать тот же сайт - s-market.ru. Заходим на него и проверяем в Burp Suite, во вкладке "Proxy" -> "HTTP History", чтобы убедиться, что появился один запрос. Если так, значит, всё работает, и мы можем перейти к замене содержимого пакетов.

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

Request header – это заголовок запроса
Request body – тело запроса
Response header – заголовок ответа
Response body – тело ответа
Request param name – Имя параметра запроса
Request param value – Значение параметра запроса
Request first line – Первая строка запроса

<title>.*<\/title> - Регулярное выражение (Ищет <title>S-market - управление торговлей</title>)

<title>Hacked</title> - На что мы заменяем

Regex match - указывает на то, что мы ищем регулярное выражение

Нажимаем "ОК" и обновляем нашу целевую страницу.

Отлично! Заголовок нашего окна был изменен. Интересно, что это будет
работать не только с этим конкретным сайтом, но и с другими
незащищенными HTTP-сайтами.

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

sudo iptables -t nat -D PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080

Заключение

На этом заканчивается тема MITM. Я рад, что мы смогли рассмотреть эту тему, и теперь мы переходим к более сложным и практическим задачам. В заключение, хотелось бы напомнить, что всё, о чем я говорил и говорю в своих статьях, должно быть использовано в соответствии с законодательством и только с целью приносить пользу или же просто для ознакомительных целей. Спасибо всем за внимание и чтение! До новых встреч в следующей статье!