Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #68, АВГУСТ 2004 г.

ARP-spoofing

Степан Ильин aka Step

Xakep, номер #068, стр. 068-060-2


Однако если бы все было настолько плохо, то этот материал никогда не вышел бы в свет. Держись за стул - на самом деле перехватить чужой трафик вполне реально! Еще как реально, даже в этой, казалось бы, тупиковой ситуации! При этом существует не один, а чуть ли не пяток способов. Некоторые из них, правда, требуют наличия специального дорогостоящего оборудования, другие - реконфигурации коммутаторов, как правило, невыполнимой, третьи слишком сложны или недостаточно эффективны. Так что доступным и в то же время приносящим неплохие результаты способом является все же один - прием ARP-spoofing или, как его называют по-другому, ARP Cache poisoning.

Анатомия ARP-spoofing

Предположим, что в локалке имеются три машины - наша, Синтеза и Куттера. Задача тривиальна - перехватить идущий от Кутты к Синтезу трафик. Попробуем пощупать LAN вполне стандартным снифером, например, tcpdump'ом (www.tcpdump.org/release/). Ага - перехватываются исключительно собственные сетевые пакеты. Что ж, задача несколько усложняется. По всей видимости, в сети имеется коммутатор, который, как и ему и полагается, добросовестно направляет сетевой трафик исключительно по назначению. Ситуация типична и, бьюсь об заклад, тебе знакома.

Перехватить данные на этапе их передачи к свитчу довольно проблематично, поэтому эту дохлую идею лучше сразу отбросить. Вспомни лучше, что происходит с пакетами после попадания на свитч? Верно - в зависимости от MAC-адреса они отправляются на присвоенный адресату порт. Просекаешь фишку? Если каким-нибудь образом сделать так, чтобы в адресной части пакета был указан наш адрес, то все данные попадут не настоящему адресату, а нам! Коллега, да это ведь классический пример атаки man-in-middle. Не подозревающий подвоха свитч попросту перенаправит нам предназначенные Синтезу пакеты с фотографиями обнаженного Бублика, а мы, в свою очередь, должны позаботиться о доставке их законному владельцу, не выдавая своего вмешательства. Думаю, не стоит объяснять, что роль посредника предоставляет нам неограниченную возможность влиять на все идущие через нас данные.

Но как обмануть компьютер Кутты, чтобы тот подумал, что мы и есть Синтез и все предназначенные ему пакеты нужно высылать именно нам? Для этого неплохо было бы разобраться с одним очень важным моментом, не упомянутым мною ранее. Вероятно, ты уже заметил, что я еще ни разу не упоминал о понятии IP-адреса. Мы указываем его повсеместно, в любой сетевой программе, но в пакетах используется MAC-адрес - так кто же отвечает за связь между ними? Этим занимается специальный ARP-протокол (Address Resolution Protocol). Все просто: когда компьютер должен послать пакет по какому-то IP-адресу, он изучает свой ARP-кэш на наличие там соответствие IP><MAC. Если таковое имеется, то полученный MAC-адрес вставляется в шапку исходящего пакета, и последний отправляется ко всем чертям. В противном случае все происходит чуть-чуть сложнее. По сети пробегает специальный широковещательный ARP-запрос ("ARP who has >IP<"). Любой компьютер, опознав в запросе свой IP-адрес, должен ответить его отправителю и выслать свои MAC- и IP-адреса. Те помещаются в ARP-кэш автора запроса и используются для дальнейшей отправки сетевых пакетов.

Назад на стр. 068-060-1  Содержание  Вперед на стр. 068-060-3