DNS-спуфинг на Python с помощью Scapy

DNS спуфинг Python Scapy

В предыдущей статье мы говорили про обнаружение ARP-спуфинга с помощью Python. Сегодня расскажу про DNS-спуфинг на Python используя Scapy.

Еще по теме: Использование библиотеки dnspython

Что такое DNS

Сервер системы доменных имен (DNS) переводит человекочитаемое доменное имя (например, google.com) в IP-адрес, который используется для установления соединения между сервером и клиентом. Например, если пользователь хочет подключиться к google.com, его компьютер автоматически отправит запрос на DNS-сервер, сообщая: «Я хочу получить IP-адрес google.com»:

DNS спуфинг Python. Запрос DNS

Сервер ответит соответствующим IP-адресом этого доменного имени:

DNS спуфинг Python. Ответ DNS

Затем пользователь подключится к серверу:

DNS спуфинг Python. Соединение с сервером после запроса DNS

Но, что если при этой такой схеме, между пользователем и Интернетом окажется посредник (компьютер злоумышленника).

Что такое DNS-спуфинг (подделка DNS)

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

Давайте посмотрим, как это работает на практике:

DNS спуфинг Python. Запрос на подделку DNS

Чтобы быть «человеком посередине», вам нужно выполнить скрипт подделки ARP, чтобы жертва начала отправлять DNS-запросы на вашу машину первой, а не напрямую на Интернет.

Теперь, так как злоумышленник находится посередине, он получит запрос DNS, указывающий «какой IP-адрес у google.com», затем он перешлет его на DNS-сервер, как показано на следующем изображении:DNS спуфинг Python.

Злоумышленник пересылает запрос DNSDNS-сервер получает законный запрос и отвечает DNS-ответом:

DNS спуфинг Python. Ответ DNS

Злоумышленник получает ответ DNS, который содержит реальный IP-адрес google.com и изменяет IP-адрес на вредоносный поддельный IP (в данном случае, свой веб-сервер с IP-адресом 192.168.1.100 или 192.168.1.106 и так далее):

DNS спуфинг Python. Поддельный IP в ответе DNS

Таким образом, когда пользователь вводит google.com в браузере, он увидит поддельную страницу злоумышленника.

Давайте посмотрим, как мы можем реализовать эту атаку с использованием Scapy на Python.

Статья в образовательных целях, для обучения этичных хакеров. Рассматриваемая в статье атака является незаконной и рассматривается как уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.

DNS-спуфинг на Python с помощью Scapy

Сначала стоит упомянуть, что мы будем использовать библиотеку NetfilterQueue, которая обеспечивает доступ к пакетам, совпавшим с правилами iptables в Linux (поэтому это будет работать только на дистрибутивах Linux).

Как вы могли догадаться, нам необходимо добавить правило iptables. Откройте терминал Linux и введите следующее:

Это правило указывает, что каждый раз, когда пакет пересылается, его нужно перенаправить ( -j) в очередь netfilter с номером 0. Это позволит перенаправлять все пересылаемые пакеты в Python.

Теперь давайте установим необходимые зависимости:

Импортируем необходимые модули (убедитесь, что у вас установлена библиотека Scapy):

Определим наш словарь DNS:

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

Мы просто преобразовали пакет очереди netfilter в пакет Scapy, затем проверили, является ли он ответом DNS. Если это так, нужно модифицировать его с помощью функции modify_packet(packet), давайте определим ее:

Теперь создадим объект очереди netfilter после вставки правила iptables:

Мы должны привязать номер очереди netfilter к только что написанному обратному вызову и запустить его:

Давайте выполним скрипт подделки ARP, который мы создали в предыдущем статье:

Ping google.com при поддельном подмене DNS

Запустим только что созданный нами DNS-спуфер:

Теперь скрипт слушает ответы DNS. Перейдите на компьютер жертвы и выполните ping google.com:

Подделка DNS Python

IP-адрес google.com — 192.168.1.100!

Попробуем открыть Google:

Результат подмены DNS

Я настроил простой веб-сервер на 192.168.1.100 (локальный сервер), который возвращает эту страницу. Теперь google.com — это 192.168.1.100!

Вернемся на машину атакующего:

Подмена DNS

Вы успешно написали скрипт для подделки DNS. Если вы хотите завершить атаку, нажмите CTRL+C остановив скрипт подделки ARP и DNS.

Заключение

Атаки подделки DNS могут быть осуществлены различными способами, такими как DNS кеширование или использование «подделанных» DNS-серверов. Однако существуют методы защиты от таких атак, такие как использование DNSSEC (Domain Name System Security Extensions), который позволяет проверять подлинность и целостность DNS-записей.

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

ПОЛЕЗНЫЕ ССЫЛКИ:

Ban32

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

Добавить комментарий