Об arp атаках говорилось много раз. На всякий случай кратко напомню вам: мы отправляем поддельный mac для IP адреса компьютера 2 компьютеру 1, поддельный mac с IP 1-ого компьютеру 2. Когда пакет приходит с первого компьютера - читаем его и
форвардим второму, аналогично наоборот. От такой атаки сложно защититься: либо дорогое оборудование, либо статическая arp таблица (она задается администратором локально на компьютере и не может быть
изменена вследствие данных с другого компьютера), однако определить ее легко.

Если мы занесем в arp-таблицу наш mac, то мы сможем сниферить трафик в сети, однако наш IP адрес будет находиться в таблицах жертвы и будет им вполне доступен для просмотра. Таким образом нас будет легко вычислить. Значит нам надо поменять mac. Но тут не все так просто. Да, в linux достаточно набрать команду ipconfig и указать там нужный mac. Но у пингвина есть свои недостатки. Так, если мы вдобавок будем сниферить трафик и включим promiscous mode, то нашу вредную деятельность будет легко определить с другого компьютера, ибо линукс достаточно просто определить на сниферство (в отличие от windows), придется перекомпилировать ядро и
заморачиватся еще несколькими вещами, что
делает задачу сложной. Я не говорю, что linux в данном случае хуже windows, здесь все зависит от конкретной ситуации, где в некоторых местах windows хуже linux, где linux хуже
windows.

Итак, узнаем где хранится mac сетевой карты,
как его изменить, а так же определим часть ОС, которая с ним работает. 

1) Этот параметр хранится у сетевой карты в Memory Information Block (сокращенно MIB). Поэтому можно изменить его в сетевухе (перепрошить). Двигаемся дальше, но только если сетевая карта поддерживает данную возможность.

2) Некоторые сетевые карты позволяют использовать соответствующие протоколы для работы с ними (об этом следует читать в описании вашей сетевой карты); Примером подобного протокола может быть
SNMP.

3) Драйвер работает с сетевой картой. Необходимо заставить его выдавать ложные данные. Для этого можно написать свой драйвер (о написании драйвера под все версии windows я уже писал) или отладить существующий (жаль перекомпилировать его
не удастся, т.к. производители не публикуют исходников под
windows).

Рассмотрим так же исключения, после чего вернемся к трем вышеописанным пунктам. Некоторые сетевые карты позволяют редактировать mac прямо в настройках сети (очень просто), некоторые позволяют в реестре
(в win 9x - HKLM\System\CurrentControlSet\ Services\Class\Net\0000 создаем два ключа NetworkAddress и
SelectedID, значением которых будет указанный mac; в win NT -
те же ключи с теми же значениями, но в разделе HKLM\SYSTEM\CurrentControlSet\Services\
установленный_у_вас_адаптер\Parameters), некоторые в программах,
написанных компанией, их производящих.

Боюсь, с перепрошивкой карт я знаком не очень, поэтому описывать этот способ не буду. Второй способ индивидуален для каждой карты. Итак, перейдем сразу к третьему. В данном случае можно не только работать с драйвером в ОС, но так же и поставить виртуальный сетевой адаптер, с которым будет проходить работа. Об обоих этих способах по порядку.

Первый способ не очень сложен. Если вы собираетесь писать свой драйвер, то можно почитать
DDK (ищи vpacket и packet32), в котором есть даже примеры драйверов. Если изменять существующий, необходим опыт работы с отладчиками
типа SoftIce. Есть только одна большая проблема - найти место, где происходит считывание. Обычно ищут сигнатуру "OID_". В win 9x так же ищут NdisSend или Recieve (где происходит работа с пакетами), а в win nt происходит пропатчивание ndis.sys.
Найдя место, в Softice пишем "bpio place_where_it_is r" и перезагрузимся, после чего увидим в каком регистре находится первое значение mac адреса, после чего меняем его и трассируем дальше. Однако часто сталкиваются с проблемой, что при смене mac адреса через SoftIce, он не изменяется. Дело в том, что mac
считывается в некоторых случаях не один раз, а несколько
(преимущественно дважды).

Второй более сложен, т.к. требует детального понимания и написания низкоуровневой программы, работающих с сетевыми интерфейсами. Итак, пусть у нас есть реальная сетевая карта
(ее mac - 11-11-11-11-11-11), а так же установленный виртуальный адаптер
(его mac - 22-22-22-22-22-22). Наша транспортная таблица должна
выглядеть приблизительно так (работа с таблицей с помощью команды
route):

Сетевой адрес Маска Шлюз Интерфейс
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.10
(с настоящей сетевой данные
отправляются через шлюз 1.1; это путь по
дефолту)
0.0.0.0 0.0.0.0 192.168.1.2 192.168.1.11
(с виртуального адаптера данные
отправляются через шлюз  1.2; это путь
по дефолту)
192.168.1.0 255.255.0.0 192.168.1.3 192.168.1.11
(если удаленный адрес находится в первом
сегменте, то через шлюз 1.3 виртуальный
адаптер отправит данные)
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1
(пакеты на локальный адрес будут
доставлены на свой же компьютер)
(метрика в таблице опущена)

Теперь мы должны написать программу со следующими правилами:

1) Реальная сетевая карта должна отправлять данные с параметрами в пакете:

Mac откуда: 11-11-11-11-11-11
Mac куда: 22-22-22-22-22-22
Откуда IP: 192.168.1.10
Куда IP: 192.168.1.11

2) Виртуальный адаптер должен отправлять данные с параметрами в пакете:

Mac откуда: 33-33-33-33-33-33 (тот mac, на который мы подмениваем свой)
Mac куда: 44-44-44-44-44-44 (пусть это mac сетевой карты компьютера 192.168.1.1)
Откуда IP: 192.168.1.10
Куда IP: 192.168.1.1

3) При приеме данных на реальный адаптер с 1.1 отправить данные с виртуального адаптера со следующими параметрами:

Mac откуда: 11-11-11-11-11-11
Mac куда: 22-22-22-22-22-22
Откуда IP: 192.168.1.1
Куда IP: 192.168.1.10

Таким образом получится круг, который позволит подменить наш mac.
Останется нас поймать при arp атаке только одна возможность - если свич запоминает откуда и куда пришел пакет.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии