При пентесте канального уровня важной частью является сетевая разведка. В сегодняшней статье поговорим о технике сетевой разведке (ARP Harvesting) и перехвате трафика с помощью ARP (ARP Cache Poisoning).
Еще по теме: Перехват трафика в локальной сети по проводу
Сетевая разведка и перехват трафика с помощью ARP
ARP Harvesting
Протокол ARP может быть очень полезен в рамках сетевой разведки. Сканирование ARP позволяет провести перечисление активных хостов и имеет небольшое преимущество перед ICMP-сканированием, поскольку трафик ICMP в корпоративной сети может быть ограничен, а то и вовсе выключен.
Проблема сканирования ARP в том, что это очень шумный способ сетевой разведки. С этим способом нужно быть осторожным, чтобы не спровоцировать тревогу систем безопасности IPS/IDS. Да и на порте, к которому ты подключен, может быть сконфигурирован Storm Control, блокирующий порт при аномальном широковещательном трафике (трафик протокола ARP — широковещательный).
C помощью ARPScanner.py можем обнаружить активные хосты в сети 10.1.1.0/24 и их MAC-адреса. В моем случае тестовая сеть маленькая, но тем не менее.
1 |
c0ldheim@PWN:~$ sudo python3 ARPScanner.py -t 10.1.1.0/24 -i eth0 |
ARP Cache Poisoning
Техника этой сетевой атаки заключается в использовании недостатков протокола ARP. Абсолютно любой хост в сети может вызывать ARP-запросы и принимать их, они это делают без механизма аутентификации (в протоколе ARP не предусмотрен механизм аутентификации), поэтому все хосты доверяют друг другу. Злоумышленнику достаточно отправить фальсифицированные ответы ARP в сторону цели A и цели B.
С помощью подделывания ответов ARP компьютер атакующего позиционируется целью А для цели B и наоборот, тем самым встав посередине. Это создает условия для перехвата трафика.
На картинке ниже представлен пример отравления кеша ARP.
Перейдем к практике. Для начала необходимо переключить наш интерфейс в неразборчивый режим и разрешить форвардинг между интерфейсами. Иначе два хоста потеряют связность между собой, ведь трафик будет идти через нас, а форвардинга между интерфейсами нет.
1 2 |
c0ldheim@PWN:~$ ifconfig eth0 promisc c0ldheim@PWN:~$ sudo sysctl -w net.ipv4.ip_forward=1 |
С помощью скрипта ARPSpoofer.py запускаем процесс отравления ARP. В качестве первой цели укажем машину на Windows с IP-адресом 10.1.1.2, в качестве второй — FTP-сервер с адресом 10.1.1.5.
1 |
c0ldheim@PWN:~$ sudo python3 ARPSpoofer.py -t1 10.1.1.2 -t2 10.1.1.5 -i eth0 |
После этого можно переходить к этапу прослушивания сетевого трафика.
Полезные ссылки: