В сетевом трафике можно найти много всего интересного, главное знать, что искать. С помощью анализатора Wireshark можно находить всевозможные аномалии в трафике, ретрансмиты, некорректные пакеты, вредоносную активность, можно даже прикрутить его к API Virustotal для анализа файлов на вирусы.
В рамках этой статьи мы поговорим о том, как с помощью Wireshark выявлять атаки на DHCP: Starvation и Rogue DHCP. Навык анализа подобного трафика позволит эффективнее настроить правила на системах обнаружения вторжений, а также может помочь при расследовании инцидентов и работе команд Red Team.
Но для начала давайте посмотрим на то, как работает DHCP с точки зрения сетевого трафика. Далее нам это пригодится при проведении анализа.
Давайте посмотрим, как выглядит каждый из этих этапов в дампе трафика. На первом шаге у клиента нет IP адреса, поэтому адрес источника 0.0.0.0, а адресом получателя у нас являются все узлы в сети — 255.255.255.255. На канальном уровне у клиента присутствует его МАС адрес, а в качестве адреса отправителя выступает ff:ff:ff:ff:ff:ff.
На втором шаге откликаются DHCP серверы. Здесь у нас уже присутствует предлагаемый сервером IP адрес и опции, в частности маска подсети.
На третьем шаге клиент запрашивает конкретный адрес у конкретного DHCP сервера. Соответствующие адреса мы видим в Options.
И на завершающем, четвертом шаге мы, что называется, «фиксируем договоренности»: DHCP подтверждает аренду IP адреса.
С тем, как выглядит процесс выдачи IP адреса в Wireshark мы разобрались, и теперь самое время посмотреть, как выглядят атаки на DHCP в анализаторе.
С помощью DHCP тоже можно реализовать MitM. Для этого злоумышленнику нужно реализовать две атаки: DHCP starvation и rogue DHCP. Первая предназначена для того, чтобы вывести из строя легальный DHCP сервер. А вторая — это просто развернутый злоумышленником DHCP сервер, выдающий нужные хакеру IP адреса и сетевые настройки.
При этом МАС адреса клиентов будут сгенерированы случайным образом, что также присуще именно DHCP Starvation, так как вряд ли у вас в течение очень короткого интервала времени подключится сразу несколько сотен узлов. Таким образом, для идентификации данной атаки смотрим содержимое поля Client MAC address в пакете DHCP Discover. Наличие большого числа пакетов с разными значениями МАС адресов за короткий промежуток времени — это верный признак атаки.
Для этого необходимо знать, какие IP адреса у наших легальных серверов, выдающих IP адреса. Соответственно, появление Offer, Request и Ack пакетов, содержащих в поле Option 54 DHCP Server Identifier IP адреса, отличные от наших легальных серверов — это верный признак атаки.
В пакете Ack мы также можем найти интересное в полях Option 3 Router и Option 6 Domain Name Server.
Такой способ будет работать в сети с двумя‑тремя коммутаторами, а на большем объеме лучше все‑таки использовать более автоматизированные решения.
Опытные сетевики, конечно, знают про DHCP snooping. Это технология безопасности канального уровня, используемая на современных коммутаторах, которая отбрасывает трафик DHCP, определенный как неприемлемый.
Для работы этого механизма необходимо для начала определить, за каким портами коммутатора может быть DHCP сервер, а за какими нет. И для второго (ненадежного) типа портов настроить данных механизм.
По умолчанию коммутатор отбрасывает DHCP‑пакет, который пришел на ненадёжный порт, если на ненадежный приходит одно из сообщений, которые отправляет DHCP‑сервер (DHCPOFFER, DHCPACK, DHCPNAK или DHCPLEASEQUERY), либо приходит сообщение DHCPRELEASE или DHCPDECLINE, в котором содержится MAC‑адрес из базы данных привязки DHCP, но информация об интерфейсе в таблице не совпадает с интерфейсом, на котором был получен пакет, либо в пришедшем DHCP‑пакете не совпадают MAC‑адрес указанный в DHCP‑запросе и MAC‑адрес отправителя.
Также, если приходит DHCP‑пакет, в котором есть опция 82. Данная опция используется для того, чтобы проинформировать DHCP‑сервер о том, от какого DHCP‑ретранслятора и через какой его порт был получен запрос.
Таким образом, с ненадежных портов могут приходить только запросы на получение адресов Discover и Ack, собственно только то, что нужно клиентам для того, чтобы получить адрес.
Основной проблемой при использовании DHCP Snooping является необходимость администраторам знать топологию своей сети. Ведь если мы не знаем, кто у нас живет за каким портом коммутатора, то мы не сможем эффективно настроить данную технологию.
В рамках этой статьи мы поговорим о том, как с помощью Wireshark выявлять атаки на DHCP: Starvation и Rogue DHCP. Навык анализа подобного трафика позволит эффективнее настроить правила на системах обнаружения вторжений, а также может помочь при расследовании инцидентов и работе команд Red Team.
Но для начала давайте посмотрим на то, как работает DHCP с точки зрения сетевого трафика. Далее нам это пригодится при проведении анализа.
DHCP под призмой Wireshark
Процесс получения IP адреса состоит из четырех шагов (DORA): Discover, Offer, Request, Ack.Давайте посмотрим, как выглядит каждый из этих этапов в дампе трафика. На первом шаге у клиента нет IP адреса, поэтому адрес источника 0.0.0.0, а адресом получателя у нас являются все узлы в сети — 255.255.255.255. На канальном уровне у клиента присутствует его МАС адрес, а в качестве адреса отправителя выступает ff:ff:ff:ff:ff:ff.
На втором шаге откликаются DHCP серверы. Здесь у нас уже присутствует предлагаемый сервером IP адрес и опции, в частности маска подсети.
На третьем шаге клиент запрашивает конкретный адрес у конкретного DHCP сервера. Соответствующие адреса мы видим в Options.
И на завершающем, четвертом шаге мы, что называется, «фиксируем договоренности»: DHCP подтверждает аренду IP адреса.
С тем, как выглядит процесс выдачи IP адреса в Wireshark мы разобрались, и теперь самое время посмотреть, как выглядят атаки на DHCP в анализаторе.
Два в одном
Целью злоумышленника при реализации атак на DHCP является реализация Man in the Midde. То есть злоумышленник хочет перенаправить весь трафик жертв через узел, который он контролирует. Для того, чтобы это сделать, ему необходимо подменить сетевые настройки на клиентах, в частности, указав свой шлюз по умолчанию. Также злоумышленник может передать в сетевых настройках свои адреса DNS серверов, в результате чего жертвы будут перенаправляться на фишинговые ресурсы, вводя доменные имена легальных сайтов.С помощью DHCP тоже можно реализовать MitM. Для этого злоумышленнику нужно реализовать две атаки: DHCP starvation и rogue DHCP. Первая предназначена для того, чтобы вывести из строя легальный DHCP сервер. А вторая — это просто развернутый злоумышленником DHCP сервер, выдающий нужные хакеру IP адреса и сетевые настройки.
Изучаем DHCP starvation
Отличительной чертой атаки на исчерпание DHCP является большое количество Discover пакетов, отправленных с разных МАС адресов за очень небольшой интервал времени. Исчерпать несколько сотен свободных IP адресов можно в течении буквально пары десятков секунд.При этом МАС адреса клиентов будут сгенерированы случайным образом, что также присуще именно DHCP Starvation, так как вряд ли у вас в течение очень короткого интервала времени подключится сразу несколько сотен узлов. Таким образом, для идентификации данной атаки смотрим содержимое поля Client MAC address в пакете DHCP Discover. Наличие большого числа пакетов с разными значениями МАС адресов за короткий промежуток времени — это верный признак атаки.
Поддельный DHCP
DHCP сервер, поднятый злоумышленником, это, по сути, такой же DHCP, он тоже раздает адреса и сетевые настройки, но другие. Поэтому с точки зрения сетевого трафика процесс получения IP адреса от поддельного DHCP будет точно таким же, как и от настоящего. Тот же процесс DORA. И для выявления такого сервера необходимо правильно анализировать содержимое пакета.Для этого необходимо знать, какие IP адреса у наших легальных серверов, выдающих IP адреса. Соответственно, появление Offer, Request и Ack пакетов, содержащих в поле Option 54 DHCP Server Identifier IP адреса, отличные от наших легальных серверов — это верный признак атаки.
В пакете Ack мы также можем найти интересное в полях Option 3 Router и Option 6 Domain Name Server.
Как лучше защититься
При подготовке этой статьи наткнулся на одну запись на форуме от 2006 года, где посетитель спрашивал, как найти поддельный DHCP. Один из самых забавных вариантов ответа был следующий: включите непрерывный пинг IP этого сервера и выдергивайте по очереди кабели из коммутатора. На каком порту пинг пропадет, за ним и находится поддельный DHCP сервер.Такой способ будет работать в сети с двумя‑тремя коммутаторами, а на большем объеме лучше все‑таки использовать более автоматизированные решения.
Опытные сетевики, конечно, знают про DHCP snooping. Это технология безопасности канального уровня, используемая на современных коммутаторах, которая отбрасывает трафик DHCP, определенный как неприемлемый.
Для работы этого механизма необходимо для начала определить, за каким портами коммутатора может быть DHCP сервер, а за какими нет. И для второго (ненадежного) типа портов настроить данных механизм.
По умолчанию коммутатор отбрасывает DHCP‑пакет, который пришел на ненадёжный порт, если на ненадежный приходит одно из сообщений, которые отправляет DHCP‑сервер (DHCPOFFER, DHCPACK, DHCPNAK или DHCPLEASEQUERY), либо приходит сообщение DHCPRELEASE или DHCPDECLINE, в котором содержится MAC‑адрес из базы данных привязки DHCP, но информация об интерфейсе в таблице не совпадает с интерфейсом, на котором был получен пакет, либо в пришедшем DHCP‑пакете не совпадают MAC‑адрес указанный в DHCP‑запросе и MAC‑адрес отправителя.
Также, если приходит DHCP‑пакет, в котором есть опция 82. Данная опция используется для того, чтобы проинформировать DHCP‑сервер о том, от какого DHCP‑ретранслятора и через какой его порт был получен запрос.
Таким образом, с ненадежных портов могут приходить только запросы на получение адресов Discover и Ack, собственно только то, что нужно клиентам для того, чтобы получить адрес.
Основной проблемой при использовании DHCP Snooping является необходимость администраторам знать топологию своей сети. Ведь если мы не знаем, кто у нас живет за каким портом коммутатора, то мы не сможем эффективно настроить данную технологию.