Сразу отмечу, что всё нижеизложенное просто до безумия и доступно любому человеку хотя бы раз работавшему на ЭВМ.
 Суть сценария заключается в том, чтобы пустить весь трафик, проходящий между двумя хостами через себя. Какую пользу из этого можно извлечь, думаю, понятно каждому (от перехвата незашифрованных паролей до зашифрованных паролей :=)). Пустить таффик через себя можно разными способами (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:
 Использовать 			статические записи в ARP-таблицах. Это 			плохое решение, т. к. оно исключает 			возможность использования DHCP и 			добавляет проблем в администрировании, 			поскольку при смене сетевой карты 			придётся на всех хостах менять 			ARP-таблицу.
Регистрировать 			ситуации, при которых ARP-ответы приходят 			с определённым интервалом времени 			(порядка одной секунды). Атакующая 			сторона специально задаёт такой 			интервал, чтобы он был не больше 			интервала времени обновления ARP-кэша 			атакуемой стороны. Я не знаю реализовал 			ли это кто-нибудь, однако слышал, что 			система обнаружения вторжений snort 			умеет отлавливать ARP-спуффинг каким-то 			образом.
  
 Ну вот и всё.