|
NetXRay
by Alice D. Saemon
Та, которую люблю...
Long long time ago... NetXRay был первым сниффером, попавшим в поле моего зрения. Тогда, в 1997 году эта английская программа произвела фурор в кругах windows-ориентированных сетевиков. Прошли годы, но старенькая версия NetXRay (3.0.1) все еще в строю, в ежедневной работе на моей рабочей станции. На сегодняшний день продукт переименован в Sniffer Basic, добавлены некоторые новые возможности, но, с большего, основная функциональность осталась неизменной со времен 3.0.1. Это первая причина, почему в газете будет описан именно NetXRay 3.0.1. Вторая причина... (озираясь на анти-пиратскую полицию) - продукт очень дорогой (1643 фунтов, которые стерлингов), и trial'ные ограничения очень серьезные. Итак, приступим.
Пакет состоит из набора разных функций и действительно может называться скорее сетевым анализатором, нежели сниффером. Все возможности (модули) сгруппированы в меню "Tools", там же находятся и различные установки. С них и начнем. Вы можете выбрать адаптер, для которого проводится текущее тестирование (probe). Адаптер должен поддерживать стандарт NDIS 3.0/3.1.
Внимание, баг! Если вы "натравливаете" NetXRay на "неправильный" по его мнению адаптер или захватываете пакеты, которые он не может декодировать на канальном-сетевом уровне (например, трафик эксплойтов, посылающих криво фрагментированные пакеты) - на стадии декодирования (анализа протоколов) программа зависает намертво.
Одновременно можно проводить тестирование на нескольких интерфейсах, для чего создаются множественные ипостаси программы (probes). В новую probe можно скопировать все настройки любой из существующих.
В опциях вы можете настроить следующие вещи: внешний вид рабочего стола, стандартные номера портов для различных протоколов (3 варианта - очень полезно в случаях, когда сетевые приложения работают по нестандартным портам), реагирование на наступление некоторого события, пороговые значения для различных видов статистики и др.
Ну вот, теперь приступаем к функциональным модулям пакета.
capture (захват пакетов)
Сердце NetXRay, собственно то, что в народном понимании есть сниффер. Поэтому позволю себе описать его наиболее подробно.
При активизации этого модуля пред нами возникает маленькое окошечко с "приборной панелью" и парой кнопок. Все действия, которые мы можем выполнять в этом окне, продублированы в меню Capture. А делать мы можем вот что: начать захват пакетов, остановить, остановить+просмотреть содержимое буфера и просто просмотреть содержимое буфера, при условии что захват был остановлен. Там же мы можем осуществить тонкую настройку фильтров:
• по адресам отправителя и получателя. Для облегчения сей задачи существует адресная книга и некоторый набор предустановленных адресов, например "Any".
• по шаблонам. Если нужно изловить пакеты, содержащие некие определенные данные в любом месте пакета, вы можете написать хитронавороченный шаблон. Причем, что особенно приятно, конструировать шаблоны можно в любом удобном для вас представлении: бинарном, шестнадцатеричном, ASCII и EBCDIC.
• по известным программе протоколам. Это:
сетевые: AppleTalk, AppleTalk ARP, APOLLO, DECNET, IP, IP ARP, IPX, LAT, NetBEUI, OSI, SNA, VINES, VINES Loopback, VINES Echo, XNS
выше в стеке IP: транспортные, служебные и маршрутизации - ICMP, IGMP, GGP, EGP, IGP, ISO-TP4, HELLO, IP-VINES, IGRP, OSPF, TCP, UDP; прикладного уровня - FTP, REXEC, RLOGIN, RSH, PRINTER, SMTP, TELNET, DNS(TCP), GOPHER, HTTP, POP, SUNRPC(TCP), NNTP, NETBIOS, X-WINDOW, DNS(UDP), BOOTP, TFTP, SUNRPC(UDP), SNMP, SNMPTRAP, BIFF, WHO, SYSLOG, RIP, GDP, NFS.
выше в стеке IPX: NCP, SAP, NRIP, NBIOS, DIAGNOSTIC, SERIALIZATION, NMPI, NLSP, NSNMP, NSNMPTRAP, SPX.
Как видите, не так уж мало, я бы сказала - для реальной жизни даже избыточно.
Внимание! Протокольный фильтр имеет немного странный интерфейс: предполагается, что если все чекбоксы в границах одного уровня не помечены, захватываются все пакеты протоколов данного уровня и все что выше (ниже, если смотреть на пользовательский интерфейс;). Таким образом, если вы не поставили ни одной "птички" - ловится абсолютно все. Естественно, неизвестные протоколы прикладных уровней в таком случае ловятся тоже, но не декодируются в удобочитабельный вид, что естественно, раз уж они неизвестные:))
Кроме этого, можно настроить размер буфера либо указать файл, куда скидывать результат захвата пакетов.
Настройки фильтра можно записать в так называемый профайл, присвоить ему название и впоследствии выбирать его из списка.
После отработки захвата нужного числа пакетов, при активизации просмотра мы вываливаемся в так называемое "окно результатов", имеющее по умолчанию имена XRay1, XRay2 ну и так далее по количеству текущих буферов. Такое окно вы можете лицезреть на скриншоте: сверху - список пакетов с краткой "аннотацией", посередине - декодированные данные (ну что смог декодировать;) и снизу - сырой пакет. Любопытно, что при нажатии на интересующее поле в декодированной секции подсвечивается соответствующее место в сыром пакете - можно проверить качество работы анализатора протоколов;)
Пользовательский интерфейс "окна результатов" имеет наряду с преимуществами (способность наложить любой из обсуждавшихся выше фильтров на отображаемый буфер, возможность одним мышьим щелчком послать любой пакет или буфер в сеть либо скопировать некоторое количество пакетов в отдельный буфер, очень красивое отображение декодированных данных, даже с некоторой вложенностью для малоинтересных рядовому пользователю полей) также и очевидные недостатки (нельзя удалить пару пакетов из буфера, нет никакой clipboard-операбельности, то бишь результаты нельзя, например, скопировать и сохранить в текстовом формате).
Кроме накапливания пакетов в буфере или файле для последующего декодирования существует также возможность просмотра трафика в режиме реального времени.
Правда а) визуально это выглядит ужасно б) включается эта опция в таком нелогичном месте, что даже такой старый NetXRay-юзер как я забывает где же эта "птичка". Птичка устанавливается в меню Tools | Options... закладка General, чекбокс Realtime Display, а не в настройках Capture, где ее логично было бы искать;-/
Кроме этого "окно результатов" содержит закладки на статистические данные по проведенной сессии захвата, но мы на них останавливаться не будем.
packet generator
Вот уж поистине замечательная штука: можно с нуля "набросать" и отправить в сеть абсолютно любой пакет. Интерфейс состоит из главного окна и так называемого конструктора пакетов, разделенного на две секции - Configure и Decode.
В первой мы имеем портрет стандартного дампа (см. теоретическую часть статьи), забитый нулями. Начинаем вписывать туда шестнадцатеричные числа - в секции декодирования, которая выглядит точь в точь как расшифрованный пакет в "окне результатов" Capture, появляется анализ нашего пакета.
Но в данном случае мы можем не только смотреть на декодированный пакет, но и вносить изменения, щелкая мышью по нужному полю. Правда, изменение значений в любом случае осуществляется только в шестнадцатеричном виде, и поля ввода поражают своим неудобством:(Есть несколько вариантов генерации и отсылки пакетов: послать текущий пакет, послать текущий буфер, написать пакет с нуля или послать отредактированный пакет из того, что насобирали.
Примечание по интерфейсу: если опция "послать текущий пакет" вызывается из "окна результатов" Capture, пакет отправляется сразу без вызова конструктора пакетов, правда, остается в текущем "буфере на отправку", и впоследствии его можно там подкорректировать.
Если "послать текущий пакет" вызывается из окна Packet Generator'а - автоматически вызывается конструктор пакетов. Будьте внимательны!
В конструкторе пакетов в секции Decode программа будет давать вам некоторые подсказки, в частности, высчитывать новую контрольную сумму при модификации пакета (она бы еще сама вносила соответствующие изменения, ленивое создание;). Однако AI оно тем и отличается от разума человеческого, что думать как следует не умеет. Поэтому когда, например, вы меняете IP-адрес получателя, подумайте, не следует ли заодно поменять его MAC-адрес?;)
Пакеты можно посылать в разных режимах: один клик - один пакет, заданное количество пакетов либо зацикленно. Таким образом можно генерить трафик. Вообще генератору пакетов можно найти массу вариантов применения, тут дело за вашей фантазией и изобретательностью.
всякая всячина
Кроме вышеописанного программа содержит массу других полезных и не очень (как кому;) наворотов. О них кратко:
• Dashboard. Статистика загруженности сети, точнее той ее части, которая вам видна. Количество пакетов, байт, ошибок всех типов, расчет утилизации. Меня всегда смущала эта фича, поскольку никогда в жизни я не видела сообщений об ошибках - ну быть не может такого чтоб их не было!;)
• Host Table. Отлавливает различные сведения о видимых снифферу хостах и их деятельности (без полного захвата и анализа пакетов)
• Matrix. Практически то же самое, что и Host Table, но представленное немного в другом формате.
• History. Чертит графики и диаграммы по поведению сети в определенный промежуток времени.
• Protocol Distribution. Как следует из названия, ведет статистику по использованию различных протоколов.
• Statistics. Статистика по утилизации и размерам кадров.
• Alarm log. Журнал учета определенных вами событий.
Ну вот вкратце и все. (ничего себе "вкратце получилось %-()) Скачивайте и тестируйте на здоровье - себе в радость и врагам назло:)
заключение
Ну вот и закончена на сегодня сказка о снифферах. Кто слушал (дочитал до конца) - молодец, надеюсь получили ответы на большинство своих вопросов. Для ради справедливости отмечу: далеко не ВСЕ вопросы были рассмотрены в рамках этой статьи. За бортом остались по крайней мере две большие темы: внутреннее устройство снифферов, включая методы и подходы к написанию подобного софта, а также способы противостояния снифферингу.
Насчет первого вот что я думаю: тема интересная, требующая отдельного материала, но предназначен он будет в основном программистам. Что-нибудь сообразим по этому поводу. Что же касается второго вопроса, ответ на него по большому счету один: шифрование, шифрование и еще раз шифрование, что есть очевидно. Существуют, конечно, методики распознавания присутствия сниффера в сети и даже противостояния оному, но они носят достаточно частный и не больно-то эффективный характер.
| |