Что такое сетевой сниффер трафика? Виды и защита от снифферов

Windows реализации снифферов

CommView — www.tamos.comДовольно продвинутый сниффер производства TamoSoft. Можно установить свои правила на сниффинг (например игнорировать ICMP, а TCP сниффать, также кроме Internet протоколов имеется поддержка Ethernet протоколов, таких как ARP,SNMP,NOVELL и т.д.). Можно например сниффать только входящие пакеты, а остальные игнорить. Можно указать лог-файл для всех пакетов с лимитов размера в мегах. Имеет две tools’ы — Packet Generator и NIC Vendor Indentifier. Можно посмотреть все подробности посланных /полученных пакетов (например в TCP пакете можно просмотреть Source Port, Destination Port, Data length, Checksum, Sequence, Window, Ack, Flags, Urgent). Радует еще то, что она автоматически устанавливает CAPTURE драйвер. В общем тулза очень полезная для снифа, рекомендую всем.

SpyNet — packetstorm.securify.comДовольно известный сниффер производства Laurentiu Nicula 2000:). Обычные функции — перехват/декодинг пакетов. Хотя декодинг развит прикольно (можно например по пакетам воссоздавать странички, на которых побывал юзер!). В общем на любителя:). 

Analyzer — neworder.box.skAnalyzer требует установку специального драйвера, вложенного в пакет (packet.inf, packet.sys). Можно посмотреть всю инфу о вашей сетевой карте. Также Analyzer поддерживает работу с командной строкой. Он прекрасно работает с локальной сетью. Имеет несколько утилит: ConvDump,GnuPlot,FlowsDet,Analisys Engine. Ничего выдающегося.

IRIS — www.eeye.comIRIS продукт известной фирмы eEye. Представляет обширные возможности по фильтрации. Меня в нем сильно порадовало три фишки:tocol Distribution2.Top hosts3.Size DistributionТакже имеется Packet Decoder. Он поддерживает развитую систему логов. А доступные возможности фильтрации превосходят все снифферы обзора. Это Hardware Filter, который может ловить либо все пакеты (Promiscious), либо с различными ограничениями (например захватывать только multicast пакеты или broadcast пакеты, либо только Mac фреймы). Можно фильтровать по определенным MAC/IP адресам, по портам, по пакетам, содержащим определенные символы. В общем неплохой сниффак. Требует 50comupd.dll.

WinDUMP Аналог TCPdump for Unix. Этот сниффак действует через командную строку и представляет минимальные возможности по конфигурации и еще требует библиотеку WinPcap. Мне не очень…

SniffitNTТоже требует WinPcap. Работа только как командной строкой, так и в интерактивном режиме. Со сложными опциями. Мне не очень.

ButtSniffОбычный пакетный сниффер созданный известнейшей группой CDC(Cult of the Dead Cow). Фишка его в том, что его можно использовать, как плагин к BO:)(Очень полезно:)).Работа из командной строки.

Существуют еще множество снифферов, таких как NatasX, NetXRay, CooperSniffer, LanExplorer, Net Analyzer и т.д. Пойдем дальне…

Видео

Как это работает

Анализаторы работают только с протоколами TCP/IP, таким программам нужно проводное подключение, например маршрутизаторы, раздающие интернет. Передача данных осуществляется с помощью отдельных пакетов, которые при достижении конечной цели вновь становятся единым целым. Они так же способны перехватить пакеты на любом этапе передачи и получить вместе с ним ценную информацию в виде незащищенных паролей. В любом случае, с помощью программ дешифраторов возможно получить ключ даже к защищенному паролю.

Проще всего использовать WiFi снифферы в сетях со слабой защитой – в кафе, общественных местах и т.п.

Провайдеры с помощью этих программ могут отследить несанкционированный доступ к внешним системным адресам.

Фильтрация

В Charles Proxy очень много вариантов фильтрации запросов. 

Начнем с вкладки Structure. Самое примитивное — скопировать хост и вставить в поле Filter. Так мы увидим только запросы с этого хоста. Примерно того же результата можно добиться, если в контекстном меню хоста выбрать Focus. Остальные запросы будут собраны в Other Hosts. Если при этом перейти на закладку Sequence и отметить настройку Focused, то в списке окажется информация только о тех запросах, которые были выбраны на вкладке Structure. 

На вкладке Sequence есть аналогичный фильтр.

Charles Proxy умеет работать с регулярными выражениями. Для этого на вкладке Sequence выбираем Settings и отмечаем пункт Filter uses regex. И вписываем в поле поиска элементарную регулярку.

Например, вот так 

можно выбрать все запросы, в которых в начале имени хоста находится четыре буквы, а потом идет точка.

Там же можно включить Autoscroll списка запросов или указать максимальное количество строк.

В Charles Proxy можно фильтровать не только отображение, но и запись запросов. Для этого надо зайти в Proxy -> Record settings и задать условия на одной из вкладок — Include или Exclude — так мы включаем или выключаем запись запросов данного хоста.

Похожего результата можно добиться, используя блок-листы. Включить хост в блок лист можно из контекстного меню (команда Block list) или через добавление в Tools -> Block list, где следует отметить Enable Block list.

Блокируемый запрос можно прервать двумя способами (подходящий надо выбрать в настройках):

  • сбросить соединение;

  • вернуть ошибку 403.

От выбранного способа блокировки зависит, какой ответ мы получим.

Можно провести эксперимент. Включим наш тестовый стенд в Block list, выбрав простой сброс соединения. С помощью контекстного меню запроса повторим его (команда Repeat) и получим такой ответ:

Статус запроса - Failed, а в описании ошибки указа

Статус запроса — Failed, а в описании ошибки указано, что Connection dropped.

Методы защиты

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

  • Специальные ARP-мониторы. Например, arpwatch и BitCometAntiARP. Их суть – установить соответствие между IP и MAC, а в случае подмены принять решение (заблокировать).
  • Создание виртуальных сетей VLAN. Т.е. можно выделить доверенные сегменты сети и «гостевые». В рамках сегмента проведение атаки будет возможным.
  • VPN подключения – PPTP и PPPoE.
  • Шифрование трафика. Например, используя IPSec.

Основы передачи данных в сети Ethernet

Каждому устройству в сети Ethernet соответствует уникальный шестибайтовый MAC-адрес (Media Access Control). Единицей передачи данных в такой сети является кадр (frame), который имеет определённую структуру и несёт в себе информацию о получателе, отправителе и сами данные.

Кадр может иметь размер от 60 до 1514 байт, из которых первые 14 байт являются служебными. Когда требуется передать большее количество данных, они разбиваются на фрагменты и последовательно направляются в сеть. Кадр передаётся по сети, и получает его каждое устройство этой сети. Значение поля структуры с именем type определяет тип и версию «полезного груза» в кадре. Завершающая секция кадра служит для проверки целостности передаваемых данных и использует код циклического контроля (CRC32 – cyclic redundancy check). Значение этого кода вычисляется с помощью специальной хэш-функции для выявления искажённости числовых данных. Обычно она аппаратно реализована в сетевой плате.

Теперь обратим внимание на полезный груз, который несёт кадр, а именно поле структуры data[]. Чаще всего в качестве данных может быть IP-пакет или ARP-пакет. ARP (address resolution protocol) – это служебный вспомогательный протокол, который осуществляет динамическую трансляцию физических MAC-адресов в логические IP-адреса на основе широковещательной рассылки запросов.

Для доставки пакетов в сети нужно определить физический адрес узла назначения. Именно для этого существует ARP – протокол автоматического определения физических адресов (IP <=> MAC). Когда одному компьютеру нужно начать обмен данными с другим, он ищет MAC-адрес получателя соответствующий запрашиваемому IP-адресу в своей ARP-таблице. Если для нужного IP-адреса не найден соответствующий MAC-адрес, то посылается широковещательный запрос ARP, содержащий искомый IP-адрес назначения, а MAC-адрес для широковещательной рассылки заполнен единицами FF:FF:FF:FF:FF:FF. Целевой хост узнает свой IP-адрес, обрабатывает запрос и посылает ответ. Система готова к пересылке данных по локальной сети.

Для нас особый интерес представляют IP-пакеты, предназначенные для передачи информации. Это более высокий уровень сетевой OSI-модели данных. Сейчас повсеместно распространена четвертая версия IP. Однако постепенно начинает делать первые шаги шестая версия этого протокола передачи данных. Новая версия интернет-протокола значительно расширит диапазон адресов, упростит автоматическое конфигурирование IP-сетей. Немаловажно, что следующая версия IP располагает исключительными средствами обеспечения безопасности и шифрации трафика.

Далее в статье будут рассматриваться только IP-пакеты самой распространённой четвёртой версии. Пакет состоит из заголовка, служебной информации (options) и данных. На языке С этот заголовок выглядит в виде вот такой структуры:

Следует помнить, что порядок байт при передаче данных в сети отличается от порядка (старшинства) байт в числах на процессорах семейства x86. В этих процессорах архитектура памяти организована таким образом, что байты в 16-ти и 32-битных числах переставлены в обратном порядке. Это так называемая «little-endian» адресация. Для корректной работы с числами следует использовать функции htons() и htonl(). В драйверах для этой цели следует использовать функции RtlUshortByteSwap(), RtlUlongByteSwap().

Подробно IP протокол описан в RFC за номером 791. Для нас особый интерес представляют поля заголовка protocol, src и dest. Два последних поля – это хорошо известные IP-адреса отправителя и получателя пакета. Например, шестнадцатеричное значение адреса 0x0000140A соответствует 10.20.0.0.

Поскольку в сети постоянно циркулирует огромное количество пакетов, то их лучше отфильтровывать. Критериями фильтрации могут быть IP-адреса, тип вышестоящего протокола (TCP, UDP, ICMP, PUP), а также содержимое пакета. Функции фильтрации весьма полезны, так как не только ограничивают собираемую программой информацию действительно нужной, но и просто обеспечивают её нормальную работу. Вполне возможно, что при интенсивной загрузке локальной сети компьютер и программа-сниффер будут не способны обработать всю поступающую информацию.

ПРИМЕЧАНИЕ

Посчитаем, сколько потребуется времени для заполнения жёсткого диска объёмом 80 Гбайт при перехвате всего трафика с сети 100 Мбит/сек. В секунду будет передано примерно 10 Мбайт. 80 Гбайт / 10 Мбайт/сек = 2,5 часа. Немного…

Отсутствие критериев для фильтрации или задание слишком большого числа вариантов для IP приводит к тому, что программа-перехватчик не успевает обрабатывать все пакеты. А если ещё записывать все пакеты на жёсткий диск, то последний может переполниться в считанные минуты. На этом факте основаны некоторые программы для борьбы с прослушиванием. Они посылают в сеть множество пакетов с поддельной информацией о паролях и т.д. В результате снифферы «захлёбываются» в огромном потоке дезинформации.

Драйвер сетевой платы (NIC) занимается приёмом и передачей кадров в сеть Ethernet. Максимальный размер IP-пакета, включая служебные данные, составляет 64 килобайта, а максимальный размер данных в кадре, как вы уже знаете, 1500 байт. При необходимости драйвер осуществляет фрагментацию и сборку IP-пакетов. Сетевая подсистема в ОС Windows основана на многоуровневой архитектуре, которую в 1978 году одобрила международная организация стандартов (см. врезку). Таким образом, NIC-драйвер взаимодействует с драйверами вышестоящих протоколов.

Программа для прослушивания сегмента сети работает именно с IP-пакетами. Она использует библиотеку Windows Sockets версии 2.2 и функционирует под управлением Windows 2000 и более поздних систем. Программирование «сырых» сокетов (raw sockets) в системе Windows предыдущих версий было почти невозможно. Неудивительно, что долгое время программы такого типа создавались только под системы Unix и DOS. В таблице 1 перечислены версии WinSock и их возможности.

WinSock 1.1Windows 98WinSock 2.xWinNT 4.0WinSock 2.0Windows 2000WinSock 2.2
Raw ICMPнетдадада
Raw IPнетнетнетда
Raw TCP|UDPнетнетнетнет
Таблица 1.
ПРИМЕЧАНИЕ

До недавнего времени многие программы, особенно для MS-DOS, имели монолитную архитектуру. Внутри программы находился код для низкоуровневой работы с аппаратурой (модемом, сетевой платой), а также весь остальной код для отображения информации и др. Изменение аппаратной части ЭВМ вынуждало модернизировать такие программы.

Современная архитектура сетевого программного обеспечения основана на семиуровневой модели OSI (Open Systems Interconnection). В основе модели лежит принцип абстракции, когда каждый компонент выполняет свои функции и предоставляет некоторый сервис вышестоящему уровню.

Слой (Layer)Описание
ApplicationПриложениеВ этом слое находятся прикладные программы – приложения. К этим программам относятся браузеры, почтовые программы, WWW- и FTP-серверы и клиенты. Они обычно не зависят ни от среды передачи данных, ни от способа передачи данных.
PresentationПредставлениеСлой представлений отвечает за то, как информация, передаваемая по сети, будет представлена пользователю. Например, html-страничка может быть представлена в виде исходного текста или в виде отформатированного документа. Вот другой пример – картинка в формате GIF закодирована в Base64 и передана в составе электронного письма. Раньше этот слой предназначался для установления различных режимов работы терминалов.
SessionСессияСессии – это процедуры обмена данными между приложениями. Сессии предназначены для связи рабочих станций с серверами. FTP Session, POP Session – это как раз сюда.
TransportТранспортПротокол передачи данных высокого уровня. Например, TCP обеспечивает гарантированную доставку информации в отличие от протокола UDP.
NetworkСетьЗнаменитый третий уровень, обычно это IP (internet protocol). Здесь передаются пакеты, осуществляется их маршрутизация, сборка и фильтрация. Пакеты несут в себе информацию об отправителе и получателе.
Data LinkКанал данныхНа этом уровне передаются кадры (порции информации) между компьютерами, коммутаторами и другими устройствами сети (Ethernet, ATM, Token Ring, PPP).
PhysicalФизический каналФизический канал передачи данных, в котором циркулируют электрические сигналы.
Таблица 2.

Как защититься от снифферов

Вот несколько советов, которые помогут обычным юзерам обезопасить себя от снифф-атаки:

1Используйте шифрование. Это наиболее простой и очевидный, но работающий метод. Все очень просто. Установите в браузер расширение VPN или такую же программу на компьютер и пользуйтесь интернетом только с ним. Секрет в том, что ваши пакеты будут настолько зашифрованными и их путь будет настолько непонятным, что никакой сниффер их не перехватит. Другие типы шифрования, с которыми вы можете столкнуться и работать: SSH, S/MIME, S/Key, SHTTP, SSL и так далее.2Используйте программу AntiSniff for Windows. Это очень удобная и бесплатная программа, которую легко найти в интернете (например, здесь). Работает она крайне просто – сканирует сеть на предмет всевозможных шпионов и сообщает, если таковые будут обнаружены. Это самый простой и понятный принцип, который позволяет обезопасить себя от кибератак.Рис. 6. AntiSniff for Windows

Рис. 6. AntiSniff for Windows

3Используйте PromiScan. По своим свойствам и выполняемым задачам эта программа очень схожа с AntiSniff for Windows, поэтому выберете что-то одно. В сети тоже есть множество ссылок на скачивание (вот одна из них). Это инновационная программа, которая позволяет отдаленно контролировать компьютеры, подключенные к одной сети. Принцип ее работы состоит в определении узлов, которых не должно быть в сети. Собственно, это, скорее всего, и есть снифферы. Программа выявляет их и сигнализирует об этом красноречивым сообщением. Очень удобно!.Рис. 7. PromiScan

Рис. 7. PromiScan

4Используйте криптографию, а если развернуто, криптографическую систему с открытым ключом. Это специальная система шифрования или электронной подписи. Ее «фишка» в том, что ключ открытый и все могут его видеть, но изменить данные невозможно, так как это нужно сделать на всех компьютерах сети одновременно. Прекрасный метод – как приманка для вора. В данной статье вы можете прочитать про блокчейн, где используется именно такая система.5Не скачивайте подозрительные программы, не заходите на подозрительные сайты и так далее. Об этом знает каждый современный пользователь и все же именно этот путь является основным для попадания троянов и других пакостей в вашу операционную систему. Поэтому очень ответственно относитесь к использованию интернета в принципе!

Теги