Истощение и подмена DHCP-сервера
При атаке на канальном уровне, можно перепрыгнуть через все средства защиты, настроенные на более высоких уровнях. В данной статье мы с вами рассмотрим два вектора атак на этот самый низкий уровень сети — истощение (DHCP Starvation) и подмена DHCP-сервера (DHCP Spoofing).
Для понимания этого материала нужно иметь бэкграунд знаний компьютерных сетей, в частности знать как работает коммутация и маршрутизация.
DHCP Starvation
Эта атака основана на проведении рассылок огромного количества сообщений DHCPDISCOVER с целью истощить адресное пространство на сервере DHCP. Сервер DHCP будет реагировать на каждый запрос и выдавать IP-адрес. После переполнения допустимого адресного пространства сервер DHCP больше не сможет обслуживать новых клиентов в своей сети, выдавая им IP-адреса.
Протестируем эту атаку на небольшой локальной сети. DHCP-сервер уже настроен на маршрутизаторе GW. Подсеть — 10.1.1.0/24.
С помощью Scapy вызовем рассылку фейковых DHCPDISCOVER. В качестве MAC-адреса назначения и IP-адреса назначения выступят адреса широковещательной рассылки.
Добавим слой протокола UDP, поскольку протокол DHCP использует его. В шаблоне options укажем, что мы будем рассылать пакеты DHCP типа DISCOVER
И в конце зациклим бесконечную отправку генерируемых фреймов.
>>> malicious_dhcp_discover = Ether(src=RandMAC(), dst="FF:FF:FF:FF:FF:FF") >>> malicious_dhcp_discover /= IP(src="0.0.0.0",dst="255.255.255.255") >>> malicious_dhcp_discover /= UDP(sport=68, dport=67) >>> malicious_dhcp_discover /= BOOTP(op=1, chaddr = RandMAC()) >>> malicious_dhcp_discover /= DHCP(options=[('message-type', 'discover'),('end')]) >>> sendp(malicious_dhcp_discover, iface="eth0", loop=1, verbose=1)
Сервер DHCP выведен из строя, теперь можно приступить к созданию его ложного аналога.
DHCP Spoofing
После вывода из строя легитимного DHCP-сервера злоумышленник может поднять на своей стороне фейковый DHCP-сервер, заявив, что именно он и является шлюзом по умолчанию. Когда DHCP-сервер выдает IP-адреса хостам в сети, там передается и информация об IP-адресе шлюза по умолчанию.
Поэтому, настраивая такой DHCP-сервер, в качестве default gateway укажем наш IP-адрес. После того как клиент получит адрес, сделав запрос к нам, на его стороне мы будем шлюзом по умолчанию и он будет направлять свои пакеты нам. Это создает идеальные условия для проведения атак типа MITM.
Воспользуемся Yersinia, чтобы поднять ложный сервер DHCP.
Теперь на машине с Windows 10 с помощью двух команд вызовем обновление IP-адреса, то есть попробуем получить адрес из созданного нами ложного сервера DHCP:
C:\Windows\system32> ipconfig /release C:\Windows\system32> ipconfig /renew
Как видим, клиент получил IP-адрес и информацию о шлюзе по умолчанию. Теперь можно попытаться перехватить трафик, поскольку весь трафик клиента будет идти к нам.
Переключим наш интерфейс в неразборчивый режим и разрешим форвардинг трафика на интерфейсе:
c0ldheim@PWN:~$ sudo ifconfig eth0 promisc c0ldheim@PWN:~$ sudo sysctl -w net.ipv4.ip_forward=1
В итоге нам удалось перехватить незашифрованный FTP-трафик с кредами nightmare:nightmare.
Заключение
Исходя из личного опыта пентестов, могу сказать, что протоколы уровня L2 очень часто остаются без должного внимания и в большинстве случаев работают с конфигурацией по умолчанию. Этим, как вы видите, может воспользоваться хакер.
Атаки L2 в последнее время утратили актуальность и немного вышли из моды: сейчас мало кто обращает на них внимание. Возможно, эта статья подарит пентестерам новые варианты атак, а сетевые инженеры после прочтения смогут повысить уровень защищенности своих сетей.