ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

ARP Spoofing в буквальном переводе означает «обманки ARP».

За счет передачи большого числа фальшивых пакетов ARP reply с подставным MAC-адрессом можно обмануть кэш ARP на многих ОС, что позволит перехватывать пакеты даже в коммутируемой ЛВС. ARP spoofing используется в программе Ettercap — широко известном снифере для коммутируемых сетей.

Эта атака, известная также под именем ARP Redirect, перенаправляет сетевой трафик от одной или более машин к машине злоумышленника. Выполняется в физической сети жертвы. Давайте вспомним, что представляет собой протокол ARP и как он работает.

Протокол ARP (Протокол разрешения адресов, Address Resolution Protocol) реализует механизм разрешения IP-адресов в MAC-адреса Ethernet. Сетевое оборудование общается между собой путем обмена Ethernet-фреймов (естественно в Ethernet-сети), на канальном уровне. Для обеспечения возможности передачи этой информации необходимо, чтобы каждый сетевой интерфейс имел свой уникальный адрес в сети Ethernet. Он называется MAC-адресом (MAC=Media Access Control).

При посылке IP-пакета, отправляющая машина должна знать MAC-адрес получателя. Чтобы его узнать, в локальную сеть посылается широковещательный ARP-запрос. В нем спрашивается «Какой MAC-адрес соответствует такому-то IP-адресу ?». Машина с соответствующим IP-адресом отвечает ARP-пакетом, содержащим запрошенный MAC-адрес. С этого момента, отправляющая машина знает MAC-адрес соответствующий IP-адресу назначения. Это соответствие сохраняется некоторое время в кэше (чтобы не выполнять запрос каждый раз при посылке IP-пакета).

Рассматриваемая атака изменяет кэш целевой машины. Злоумышленник шлет ARP-ответы целевой машине с информацией о новом MAC-адресе, соответствующем (например) IP-адресу шлюза. На самом деле, этот MAC-адрес соответствует интерфейсу машины злоумышленника. Следовательно, весь трафик к шлюзу будет теперь получать машина злоумышленника. Теперь можно прослушивать трафик (и/или изменять его). После этого, трафик будет направляться к реальному целевому адресу и таким образом никто не заметит изменений.

Атака ARP Spoofing используется в локальной сети, построенной на коммутаторах. С ее помощью можно перенаправить поток Ethernet-фреймов на другие порты, в соответствии с MAC-адресом. После чего злоумышленник может перехватывать все пакеты на своем порту. Таким образом, атака ARP Spoofing позволяет перехватывать трафик машин, расположенных на разных портах коммутатора.

Для реализации атаки ARP Spoofing, злоумышленник может воспользоваться генераторами ARP-пакетов, например ARPSpoof или nemesis.

Пример: машина-жертва с адресом 10.0.0.171, ее шлюз — 10.0.0.1, машина злоумышленника имеет адрес 10.0.0.227. Результат выполнения команды traceroute перед атакой:

[root@cible -> ~]$ traceroute 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets
1 10.0.0.1 (10.0.0.1) 1.218 ms 1.061 ms 0.849 ms

ARP-кэш машины:

[root@cible -> ~]$ arp
Address HWtype HWAddress Flags Mask Iface
10.0.0.1 ether 00:b0:c2:88:de:65 C eth0
10.0.0.227 ether 00:00:86:35:c9:3f C eth0

Злоумышленник запускает программу ARPSpoof:

[root@pirate -> ~]$ arpspoof -t 10.0.0.171 10.0.0.1
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f

Посылаемые пакеты — это ARP-ответы, изменяющие кэш машины 10.0.0.171. Они несут информацию, что с адресом 10.0.0.1 теперь ассоциирован MAC-адрес 00:00:86:35:c9:3f.

Теперь ARP-кэш машины 10.0.0.171 выглядит так:

[root@cible -> ~]$ arp
Address HWtype HWAddress Flags Mask Iface
10.0.0.1 ether 00:00:86:35:c9:3f C eth0
10.0.0.227 ether 00:00:86:35:c9:3f C eth0

Чтобы убедится, что весь трафик теперь проходит через машину 10.0.0.227, достаточно еще раз запустить traceroute к шлюзу 10.0.0.1 :

[root@cible -> ~]$ traceroute 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets
1 10.0.0.227 (10.0.0.227) 1.712 ms 1.465 ms 1.501 ms
2 10.0.0.1 (10.0.0.1) 2.238 ms 2.121 ms 2.169 ms

Теперь злоумышленник может прослушивать трафик между машинами 10.0.0.171 и 10.0.0.1. Он должен не забыть активировать маршрутизацию на своей машине 10.0.0.227.

Все приведенные ниже способы так или иначе используют аппаратный адрес сетевой карты MAC — Media Access Control.

Способ 1 (наиболее примитивный) — на все IP адреса MAC прописывается статически с помощью команды arp(8). На не никем занятые адреса прописывается MAC 0:0:0:0:0:0. Это можно делать приблизительно таким скриптом:

#!/bin/sh

mynet=»192.168.0.»;
n=1

while ( [ n -lt 255 ]; ); do
arp -S $mynet$n 0:0:0:0:0:0
n=$(expr $n \+ 1);
done

arp -f /etc/ethers

Здесь соответственно в переменной mynet задается защищаемая подсеть, в файле /etc/ethers лежат «правильные» пары IP<->MAC.

Однако все современные сетевые карты позволяют легко перепрограммировать MAC адрес. Во всяком случае под FreeBSD, Linux и тп это делается очень легко. Под различными Windows это возможно не всегда, в зависимости от драйвера сетевухи. Поэтому ничего не стоит прописать себе MAC 0:0:0:0:0:0 и спокойно работать с несуществующего IP. Значит данный способ защитит от всяких «умников», которые знают как мастдае меняется IP адрес. А от смены MAC это не спасет.

Способ 2: можно сделать так что бы arp lookup вообще не работал, и записи в таблицу можно было вносить исключительно с помощью arp(8). Тогда не придется присваивать нули всем пустым адресам. Делается это так:

Добавляем флаг -arp на интерфейс:

ifconfig fxp0 -arp

и в файле /etc/rc.conf:

ifconfig_fxp0=»inet 192.168.1.1 netmask 255.255.255.0 -arp»

Создаем файл, в котором прописываем соответствия IP и MAC-адресов (например, /etc/ether.local) такого вида:

192.168.1.2 00:80:23:5F:65:8C
192.168.2.3 00:5C:67:9A:55:5B
. . .

Очищаем arp-кэш и загружаем статическую таблицу:

arp -ad
arp -f /etc/ether.local

и добавляем последнюю команду в /etc/rc.local

Теперь на этом интерфейсе arp не работает вообще. То есть не только не принимаются обновления в arp-кэш, но и не отсылаются ответы на запросы arp who-has. А это значит, что и на клиентских машинах необходима статическая запись соответствия IP и MAC-адресов маршрутизатора. На Windows-машинах это делается записью вида:

arp -s 192.168.1.1 00-79-36-FC-09-0F

В старых версиях FreeBSD поддержки флага -arp для интерфесов не было. Ниже приведен патч к ядру FreeBSD который это делает(возможно подобные патчи существуют и для других ОС).

— if_ether.c.stdThu Sep 10 18:22:48 1998
+++ if_ether.cFri Sep 11 16:53:22 1998
@@ -482,6 +482,7 @@
itaddr = myaddr;
goto reply;
}
+/*VV*/if (!(ac->ac_if.if_flags & IFF_NOARP)) {
la = arplookup(isaddr.s_addr, itaddr.s_addr == myaddr.s_addr, 0);
if (la && (rt = la->la_rt) && (sdl = SDL(rt->rt_gateway))) {
if (sdl->sdl_alen &&
@@ -501,6 +502,7 @@
la->la_hold = 0;
}
}
+/*VV*/}
reply:
if (op != ARPOP_REQUEST) {
m_freem(m);

В этом patch’е блокируется только обновление arp-кэша, ответы на запросы не блокируются, поэтому статические записи на клиентских машинах не требуются. В версиях FreeBSD старше чем 4.9-RELEASE патч не требуется, такая функциональность есть out of box. Просто нужно сконфигурировать интерфейс с флагом staticarp.

Однако если какой-то пользователь выключит свой компьютер, то «хакер» может включить свой и установить его MAC. К сожалению против этого дешевыми способами защититься нельзя.

Способ 3 (дорогой и надежный): Port Security. Необходимо приобрести свитч, который позволяет сделать привязку MAC к конкретному физическому порту в свитче. А на роутере в свою очередь делается статическая привзяка IP к MAC, как описано в способе 1. Обмануть такую защиту практически невозможно. Один из недостатков данного способа — клиенты будут удивляться, почему не работает интернет после смены сетевой карты.

Способ 4:
Туннелирование. Для туннелирования в ethernet существует протокол PPPoE. Альтернативные протоколы туннелирования PPTP и L2TP требует предварительной выдачи клиенту какого-то IP адреса, поверх которого уже будет ходить реальный.

Способ 5: — авторизация юзеров по паролю. При корректной реализации (криптованные пересылки) способ почти такой же непробиваемый, как и «умный» коммутатор. На машинке с firewall’ом ставится сервер и база login:password, у юзеров — соответствующий клиент. Перед началом работы юзер запускает эту софтинку, сообщает серверу свои login/password, сервер прописывает в firewall’е разрешающее правило. Юзер работает. Клиентская софтинка у юзера регулярно извещает сервер «Я тут, я жив!». Когда юзер делает logoff или вырубает машину (сервер не получает keep-alive от клиента) — правило в firewall’е сносится.

Способ 6: (идеальный и не достижимый) — 802.1x. Протокол придуманный специально для авторизации в Ethernet. Основная идея состоит в том, что все защищенные порты на свитче находятся в «отключенном» состоянии, в котором они принимают только аутентификационные пакеты. По получении такого пакеты свитч проверяет его подлинность и включает порт. По окончании работы клиента порт снова «отключается». К сожалению поддержка 802.1x операционными системами оставляет желать лучшего.

P.S. Имеет также смысл взглянуть на следующий софт — arpwatch (http://ee.lbl.gov/),
который позволяет мониторить смену MAC адресов клиентами.

Похожие статьи:

    Не найдено

Прочитано: 36 946 раз(а)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 4, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Комментариев: 1

  1. slavka сказал:

    Технология DAI (dynamic arp inspection) на cisco свичах создана для решения этой проблемы.

Добавить комментарий

Вам следует авторизоваться для размещения комментария.