Спуфинг ARP — это злонамеренная атака, при которой хакер отправляет в сеть фальсифицированный ARP. Каждый узел в подключенной сети имеет таблицу ARP, с помощью которой мы идентифицируем IP-адрес и MAC-адрес подключенных устройств.
Мы стремимся отправить широковещательную рассылку ARP, чтобы найти желаемый IP-адрес, который необходимо подделать, а затем подделать шлюз, а также цель, обновив их таблицы ARP. Это позволит сетевым пакетам, отправленным целью, пройти с нашей машины на сетевой шлюз, что сделает подделку ARP успешной.
Чтобы разработать скрипт Python для создания спуфера ARP, нам потребуется модуль Scapy. Scapy — очень мощный инструмент и библиотека для работы с пакетами, полностью написанная на python.
Чтобы установить этот модуль, откройте терминал и введите:
pip3 install scapy
Код, показанный ниже, требует для работы Python 3. Рекомендуется обновить ваш python до последней версии.
Этапы создания спуфера ARP:
- Получите IP-адрес, который мы хотим подделать
- Получите MAC-адрес IP-адреса, который мы хотим подделать
- Затем создайте спуфинговый пакет, используя функцию ARP(), чтобы установить целевой IP-адрес, поддельный IP-адрес и его MAC-адрес, которые мы нашли выше.
- Начать спуфинг
- Отображение информации о количестве отправленных пакетов
- Наконец, сбросьте таблицы ARP поддельного адреса на значения по умолчанию после подмены.
Теперь откройте IDE Python и импортируйте scapy следующим образом:
Теперь мы разрабатываем функцию, которая возвращает нам MAC-адрес желаемого IP-адреса:
В этой функции get_mac() любой введенный IP-адрес используется для создания arp_request с помощью функции ARP(), и мы устанавливаем широковещательный MAC-адрес в «ff:ff:ff:ff:ff:ff» с помощью функции Ether.< br /> Теперь нам нужно объединить их в один пакет, поэтому для этого мы используем '/'. Функция srp() возвращает два списка IP-адресов, которые ответили на пакет и не ответили. MAC-адрес, соответствующий запрошенному IP-адресу, будет сохранен в поле hwsrc. Мы возвращаем этот MAC-адрес туда, откуда была вызвана функция.
Чтобы узнать, какие поля предлагает scapy, вы также можете запустить следующий код:
Вас поприветствуют следующие доступные поля:

Теперь, когда мы создали функцию, которая дает нам желаемый MAC-адрес, мы можем приступить к созданию функции spoof() следующим образом:
‹script src=""https://gist.github.com/aditya-dk7/25051e16fe82c11ace316c57303f9ac9.js"'›‹/script›
Эта функция принимает два параметра: целевой IP-адрес и IP-адрес спуфинга. Мы снова используем функцию ARP(), чтобы разработать пакет, который изменяет таблицу ARP шлюза и цели, и используем функцию send(), чтобы начать спуфинг. Вы можете установить подробное значение False, потому что функция отправки отображает некоторую информацию по умолчанию, которая нам не требуется. Вы можете настроить эту опцию, чтобы получить лучшее понимание.
Теперь мы вызываем функцию спуфинга, чтобы запустить спуфинг ARP:
К сожалению, приведенный выше код обновляет таблицы ARP только один раз. Если мы не будем постоянно обновлять их, то по умолчанию таблица ARP цели будет исправлена до значения по умолчанию.
Следовательно, мы модифицируем этот код:
Но опять же этот код не отображает количество отправленных пакетов, поэтому модифицируем его снова:
Вышеприведенный код теперь будет работать должным образом, как и ожидалось, но есть еще некоторые вещи, которые остались незавершенными. Это включает в себя бесконечный цикл, который этот код будет продолжать выполнять, если мы не дадим ему прерывание для остановки.
Следовательно, приведенный выше код можно переписать:
Приведенный выше код будет работать идеально и останавливаться всякий раз, когда он получает прерывание клавиатуры. Этот код почти идеален, но мы до сих пор не обновили таблицы ARP до их значений по умолчанию. Следовательно, мы можем создать функцию для этого следующим образом:
Теперь, когда мы, наконец, все рассмотрели, код для спуфинга ARP должен выглядеть так:
Теперь, когда вы успешно разработали код, пришло время запустить его и проверить, работает ли он:


Здесь мы ясно видим, что MAC-адрес шлюза жертвы 10.0.2.1 изменился во второй раз. Таким образом, мы знаем, что наш код подмены ARP успешно работает.
Поздравляем с созданием собственного спуфера ARP!!!!