null

Реализация сценария MAN-IN-MIDDLE в локальной сети.

Сразу отмечу, что всё нижеизложенное просто до безумия и доступно любому человеку хотя бы раз работавшему на ЭВМ.

Суть сценария заключается в том, чтобы пустить весь трафик, проходящий между двумя хостами через себя. Какую пользу из этого можно извлечь, думаю, понятно каждому (от перехвата незашифрованных паролей до зашифрованных паролей :=)). Пустить таффик через себя можно разными способами (DNS-спуффинг, ARP-спуффинг и т.д.). В этой статье я покажу, как провести MAN-IN-MIDDLE, используя ARP-спуффинг.

Люди придумали протоколы. Протокол ARP не исключение - его тоже придумали. В ARP протоколе предусмотрена возможноть посылки ARP-ответа без ARP-запроса (это называется ARP-оповещение). То есть можно любым хостам сказать, что “у машины с таким-то IP-адесом теперь такой-то MAC-адрес”. И они поверят. Эту возможность, конечно, можно отключить, однако, это принесёт некоторые неудобства.

Для реализации атаки нам нужно будет организовывать форвардинг пакетов по IP-адресу и формирование ARP-оповещений. Это, конечно, можно побыстрому реализовать, например, на С, но ещё быстрее будет установить себе dsniff. В пакете dsniff есть две утилиты, которые будут нам нужны – это arpspoof и fragrouter.

Рассмотрим ситуацию, в которой хост А(192.168.2.35) хочет получить доступ к HTTP-серверу через хост Б (прокси-сервер 192.168.2.1). Мы поставим себя между хостми А и Б. В ARP-таблице хоста А есть информация о том, что хост с IP-адресом 192.168.2.1 имеет MAC-адрес 00:03:ba:06:27:57. Исправляем это недоразумение:

#arpspoof -i msk0 -t 192.168.2.35 192.168.2.1

00:1a:80:a3:4d:dd – это наш MAC-адрес. msk0 – это наш сетевой интерфейс.

Отныне запросы будут идти к нам. Теперь нам нужно перенаправлять эти запросы прокси-серверу:

#fragrouter -B1

Теперь берём любой сниффер, и просматриваем полезную информацию в пакетах, проходящих в рамках этой сессии. Таким образом мы можем смотреть пакеты, направленные только от хоста А к хосту Б, а пакеты от Б к А идут не через нас, а по нормальному маршруту. Эта ситуация неприятна ещё и потому, что хост Б может заподозрить неладное, так как пакеты приходят с одного MAC'a, а уходят на другой. Поэтому лучше хост Б тоже ввести в заблуждение:

#arpspoof -i msk0 -t 192.168.2.1 192.168.2.35

Теперь трафик в обоих направлениях ходит через нас.

 

Как же предотвратить реализацию сценария MAN-IN-MIDDLE сиспользование ARP-спуффинга? Решений, как минимум 2:

      1. Использовать статические записи в ARP-таблицах. Это плохое решение, т. к. оно исключает возможность использования DHCP и добавляет проблем в администрировании, поскольку при смене сетевой карты придётся на всех хостах менять ARP-таблицу.

      2. Регистрировать ситуации, при которых ARP-ответы приходят с определённым интервалом времени (порядка одной секунды). Атакующая сторона специально задаёт такой интервал, чтобы он был не больше интервала времени обновления ARP-кэша атакуемой стороны. Я не знаю реализовал ли это кто-нибудь, однако слышал, что система обнаружения вторжений snort умеет отлавливать ARP-спуффинг каким-то образом.

 

Ну вот и всё.

О себе

В компании TUNE IT я занимаю должность инженера. В сферу моих профессиональных интересов входят следующие направления:

  • Администрирование UNIX систем (Solaris, Freebsd);
  • Обслуживание серверов и систем хранения данных фирмы Sun Microsystems;
  • Обеспечение безопасности вычислительных систем и сетей;
  • Виртуализация вычислительных инфраструктур.