Контакты

Сетевой сниффер windows. Снифферы (Sniffers). Благие намерения и злоумышленные цели

Любое слежение онлайн основано на применении технологий снифферов (анализаторов сетевых пакетов). Что же такое сниффер?

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


Нюансы применения онлайн слежения через снифферы.

На широковещательном канале компьютерной сети пользователя LAN (Local Area Network), в зависимости от структуры сети (коммутатора switch или концентратора hub), снифферы перехватывают трафик либо всей, либо части сети исходящий с одного ноутбука, компьютера. Однако, применяя различные методы (например, ARP spoofing) можно добиться интернет-трафика и других компьютерных систем, подключенных в сеть.

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

Использование сетевых отводов (Network tap), в некоторых случаях, является более надежным способом слежения онлайн за интернет-трафиком чем мониторинг портов. При этом, вероятность обнаружения неисправных пакетов (потоков) увеличивается, что положительно сказывается при высокой сетевой нагрузке.
Помимо этого, снифферы хорошо отслеживают и беспроводные одно- и многоканальные локальные сети (так называемые Wireless LAN) при использовании нескольких адаптеров.

На LAN сетях сниффер может эффективно перехватывать трафик как односторонний (передача пакета информации по единственному адресу), так и многоадресный. При этом, сетевой адаптер должен иметь promiscuous mode (режим «неразборчивый»).

На беспроводных же сетях, даже когда адаптер находится в «неразборчивом» режиме, пакеты данных, перенаправляющиеся не с настроенной (основной) системы, будут автоматически проигнорированы. Чтобы отслеживать данные информационные пакеты, адаптер должен находится в ином режиме – мониторинга.


Последовательность перехвата информационных пакетов.

1. Перехват заголовков или всего содержимого.

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


2. Декодирование пакетов.

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

Анализаторы различаются по:

  • способности отображения данных (создание временных диаграмм, реконструирование UDP, TCP протоколов данных и пр.);
  • типу применения (для обнаружения ошибок, первопричин либо для слежения онлайн за пользователями).

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


Аппаратные снифферы.


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


Методы применения.

Анализаторы сетевых пакетов применяются для:

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

Снифферы применяются и в правоохранительных органах для отслеживания деятельности подозреваемых злоумышленников. Заметим, что все поставщики услуг интернета, и провайдеры в США и странах Европы соблюдают законы и правила о прослушивании (CALEA).


Популярные снифферы.

Наиболее функциональные системные анализаторы для слежения онлайн:


Шпионская программа NeoSpy, основная деятельность которой слежение онлайн за действиями пользователей включает помимо универсального программного кода сниффера, коды кейлоггеров (клавиатурных шпионов) и иных систем скрытого слежения.



Все статьи, размещенные в данных разделах, являются собственностью их авторов.
Администрация сайта не всегда согласна с позицией авторов статей и не несет ответственности за содержание материалов, размещенных на сайте сайт в разделах "Обзоры" и "Статьи".
За достоверность информации, опубликованной в разделе "Обзоры", администрация сайта ответственности не несет.


Акция! Скидка 10% за лайк вконтакте!

Нажмите "Мне нравится" и получите 10% скидку на любую версию NeoSpy для ПК.

2) Нажмите кнопку "Мне нравится" и "Рассказать друзьям" внизу главной страницы;

3) Перейдите на страницу покупки , выберите версию и нажмите "Купить";

4) Введите ваш ID вконтакте в поле "Скидочный купон", например, ваш id - 1234567, в этом случае в поле нужно ввести "id1234567" без кавычек.
Необходимо ввести именно ID страницы, а не короткий текстовый адрес.

Чтобы увидеть свой ID, зайдите в свои

Снифферы - это проги, которые перехватывают
весь сетевой трафик. Снифферы полезны для диагностики сети (для админов) и
для перехвата паролей (понятно для кого:)). Например если ты получил доступ к
одной сетевой машине и установил там сниффер,
то скоро все пароли от
их подсети будут твои. Снифферы ставят
сетевую карту в прослушивающий
режим (PROMISC).То есть они получают все пакеты. В локалке можно перехватывать
все отправляемые пакеты со всех машин (если вы не разделены всякими хабами),
так
как там практикуется широковещание.
Снифферы могут перехватывать все
пакеты (что очень неудобно, ужасно быстро переполняется лог файл,
зато для более детального анализа сети самое оно)
или только первые байты от всяких
ftp,telnet,pop3 и т.д. (это самое веселое, обычно примерно в первых 100 байтах
содержится имя и пароль:)). Снифферов сейчас
развелось... Множество снифферов есть
как под Unix, так и под Windows (даже под DOS есть:)).
Снифферы могут
поддерживать только определенную ось (например linux_sniffer.c,который
поддерживает Linux:)), либо несколько (например Sniffit,
работает с BSD, Linux, Solaris). Снифферы так разжились из-за того,
что пароли передаются по сети открытым текстом.
Таких служб
уйма. Это telnet, ftp, pop3, www и т.д. Этими службами
пользуется уйма
народу:). После бума снифферов начали появляться различные
алгоритмы
шифрования этих протоколов. Появился SSH (альтернатива
telnet, поддерживающий
шифрование), SSL(Secure Socket Layer - разработка Netscape, способная зашифровать
www сеанс). Появились всякие Kerberous, VPN(Virtual Private
Network). Заюзались некие AntiSniff"ы, ifstatus"ы и т.д. Но это в корне не
изменило положения. Службы, которые используют
передачу пароля plain text"ом
юзаются во всю:). Поэтому сниффать еще долго будут:).

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

linsniffer
Это простой сниффер для перехвата
логинов/паролей. Стандартная компиляция (gcc -o linsniffer
linsniffer.c).
Логи пишет в tcp.log.

linux_sniffer
Linux_sniffer
требуется тогда, когда вы хотите
детально изучить сеть. Стандартная
компиляция. Выдает всякую шнягу дополнительно,
типа isn, ack, syn, echo_request (ping) и т.д.

Sniffit
Sniffit - продвинутая модель
сниффера написанная Brecht Claerhout. Install(нужна
libcap):
#./configure
#make
Теперь запускаем
сниффер:
#./sniffit
usage: ./sniffit [-xdabvnN] [-P proto] [-A char] [-p
port] [(-r|-R) recordfile]
[-l sniflen] [-L logparam] [-F snifdevice]
[-M plugin]
[-D tty] (-t | -s) |
(-i|-I) | -c]
Plugins Available:
0 -- Dummy
Plugin
1 -- DNS Plugin

Как видите, сниффит поддерживает множество
опций. Можно использовать сниффак в интерактивном режиме.
Сниффит хоть и
довольно полезная прога, но я ей не пользуюсь.
Почему? Потому что у Sniffit
большие проблемы с защитой. Для Sniffit"a уже вышли ремоутный рут и дос для
линукса и дебиана! Не каждый сниффер себе такое позволяет:).

HUNT
Это
мой любимый сниффак. Он очень прост в обращении,
поддерживает много прикольных
фишек и на данный момент не имеет проблем с безопасностью.
Плюс не особо
требователен к библиотекам (как например linsniffer и
Linux_sniffer). Он
может в реальном времени перехватывать текущие соединения и под
чистую дампить с удаленного терминала. В
общем, Hijack
rulezzz:). Рекомендую
всем для усиленного юзания:).
Install:
#make
Run:
#hunt -i

READSMB
Сниффер READSMB вырезан из LophtCrack и портирован под
Unix (как ни странно:)). Readsmb перехватывает SMB
пакеты.

TCPDUMP
tcpdump - довольно известный анализатор пакетов.
Написанный
еще более известным челом - Вэн Якобсоном, который придумал VJ-сжатие для
PPP и написал прогу traceroute (и кто знает что еще?).
Требует библиотеку
Libpcap.
Install:
#./configure
#make
Теперь запускаем
ее:
#tcpdump
tcpdump: listening on ppp0
Все твои коннекты выводит на
терминал. Вот пример вывода на пинг

ftp.technotronic.com:
02:03:08.918959
195.170.212.151.1039 > 195.170.212.77.domain: 60946+ A?
ftp.technotronic.com.
(38)
02:03:09.456780 195.170.212.77.domain > 195.170.212.151.1039: 60946*
1/3/3 (165)
02:03:09.459421 195.170.212.151 > 209.100.46.7: icmp: echo
request
02:03:09.996780 209.100.46.7 > 195.170.212.151: icmp: echo
reply
02:03:10.456864 195.170.212.151 > 209.100.46.7: icmp: echo
request
02:03:10.906779 209.100.46.7 > 195.170.212.151: icmp: echo
reply
02:03:11.456846 195.170.212.151 > 209.100.46.7: icmp: echo
request
02:03:11.966786 209.100.46.7 > 195.170.212.151: icmp: echo
reply

В общем, снифф полезен для отладки сетей,
нахождения неисправностей и
т.д.

Dsniff
Dsniff требует libpcap, ibnet,
libnids и OpenSSH. Записывает только введенные команды, что очень удобно.
Вот пример лога коннекта
на unix-shells.com:

02/18/01
03:58:04 tcp my.ip.1501 ->
handi4-145-253-158-170.arcor-ip.net.23
(telnet)
stalsen
asdqwe123
ls
pwd
who
last
exit

Вот
dsniff перехватил логин с паролем (stalsen/asdqwe123).
Install:
#./configure
#make
#make
install

Защита от снифферов

Самый верный способ защиты от
снифферов -
использовать ШИФРОВАНИЕ (SSH, Kerberous, VPN, S/Key, S/MIME,
SHTTP, SSL и т.д.). Ну
а если не охота отказываться от plain text служб и установления дополнительных
пакетов:)? Тогда пора юзать антиснифферские пекеты...

AntiSniff for Windows
Этот продукт выпустила известная группа
Lopht. Это был первый продукт в своем роде.
AntiSniff, как сказано в
описании:
"AntiSniff is a Graphical User Interface (GUI) driven tool for
detecting promiscuous Network Interface Cards (NICs) on your local network
segment". В общем, ловит карты в promisc режиме.
Поддерживает огромное
количество тестов (DNS test, ARP test, Ping Test, ICMP Time Delta
Test, Echo Test, PingDrop test). Можно сканить как одну машину,
так и сетку. Здесь имеется
поддержка логов. AntiSniff работает на win95/98/NT/2000,
хотя рекомендуемая
платформа NT. Но царствование его было недолгим и уже в скором
времени появился сниффер под названием AntiAntiSniffer:),
написанный Майком
Перри (Mike Perry) (найти его можно по адресу www.void.ru/news/9908/snoof.txt).Он
основан на LinSniffer (рассмотренный далее).

Unix sniffer detect:
Сниффер
можно обнаружить командой:

#ifconfig -a
lo Link encap:Local
Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP
LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:2373 errors:0
dropped:0 overruns:0 frame:0
TX packets:2373 errors:0 dropped:0
overruns:0 carrier:0
collisions:0 txqueuelen:0

ppp0 Link
encap:Point-to-Point Protocol
inet addr:195.170.y.x
P-t-P:195.170.y.x Mask:255.255.255.255
UP POINTOPOINT PROMISC
RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:3281
errors:74 dropped:0 overruns:0 frame:74
TX packets:3398 errors:0
dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10

Как
видите интерфейс ppp0 стоит в PROMISC mode. Либо оператор
загрузил снифф для
проверки сети, либо вас уже имеют... Но помните,
что ifconfig можно спокойно
подменить, поэтому юзайте tripwire для обнаружения
изменений и всяческие проги
для проверки на сниффы.

AntiSniff for Unix.
Работает на
BSD, Solaris и
Linux. Поддерживает ping/icmp time test, arp test, echo test, dns
test, etherping test, в общем аналог AntiSniff"а для Win, только для
Unix:).
Install:
#make linux-all

Sentinel
Тоже полезная прога для
отлова снифферов. Поддерживает множество тестов.
Проста в
использовании.
Install: #make
#./sentinel
./sentinel [-t
]
Methods:
[ -a ARP test ]
[ -d DNS test
]
[ -i ICMP Ping Latency test ]
[ -e ICMP Etherping test
]
Options:
[ -f ]
[ -v Show version and
exit ]
[ -n ]
[ -I
]

Опции настолько просты, что no
comments.

MORE

Вот еще несколько
утилит для проверки вашей сети(for
Unix):
packetstorm.securify.com/UNIX/IDS/scanpromisc.c -ремоутный
детектор PROMISC mode для ethernet карт (for red hat 5.x).
http://packetstorm.securify.com/UNIX/IDS/neped.c
- Network Promiscuous Ethernet Detector (нужно libcap & Glibc).
http://packetstorm.securify.com/Exploit_Code_Archive/promisc.c
-сканирует девайсы системы на детект сниффов.
http://packetstorm.securify.com/UNIX/IDS/ifstatus2.2.tar.gz
- ifstatus тестит сетевые интерфейсы в PROMISC mode.

IP Sniffer - программа, которая позволяет следить за пакетами, проходящими через Internet Protocol (IP). Функционал программы включает в себя возможность декодирования пакетов и их фильтрации.

В эпоху современных технологий и интернета на первое место выходит безопасность. С внешним миром компьютер обменивается цифровой информацией посредством специальных протоколов. Internet Protocol (IP) является одним из самых востребованных и популярных благодаря безопасности и высокой скорости передачи данных.

Именно с его появлением, в 1981 году, компьютера получили возможность посылать друг другу сообщения в виде пакетов с данными. Сниффер для Windows предназначен для контроля за трафиком и проверки содержимого пакетов. Таким образом, эта утилита является дополнительным способом обезопасить свой компьютер. Скачать IP Sniffer является лучшим решением, держать под контролем трафик и все потоки информации.

Скачать IP Sniffer бесплатно

IP Sniffer для Windows (1,4 МБ)

Основные характеристики IP Sniffer:

  • Многофункциональность;
  • Безопасность;
  • Небольшой размер;
  • Интуитивно понятный интерфейс.

Последняя версия сниффер имеет удобный и простой интерфейс. Программа позволяет просматривать, какие IP-адреса чаще всего используются, какие чаще других подключаются к вашей машине. Удобно можно мониторить объем трафика. Также можно принудительно завершать то или иное подключение с помощью функции Netstat. Cкачать сниффер на компьютер рекомендуется если перед пользователем стоит задача перехвата трафика между хостами. Это позволяет делать функция Snoofing, которая в числе многих поддерживает популярный протокол ARP. Также востребованными функциями сниффер на русском языке являются пинг сети, возможность преобразовывать IP-адрес в Hostname и обратно, поиск DHCP серверов. Также с её помощью можно получить данные Netbios для указанного IP адреса.

Скачать бесплатно сниффер рекомендуется, если пользователь хочет получить надежного помощника в деле контроля над трафиком. Программа не нуждается в установке и дополнительной настройке. Использовать её можно сразу после загрузки. Интерфейс программы лаконичен и прост. Окна и вкладки расположены так, чтобы использовать было максимально удобно и комфортно. Разработчик постоянно совершенствует и улучшает свой продукт. Обновления выходят регулярно. Программа отличается высокой устойчивостью к любым злонамеренным воздействиям. Наш портал всем посетителям предоставляет возможность скачать программу сниффер без регистрации и SMS.

В этой статье мы рассмотрим создание простого сниффера под ОС Windows.
Кому интересно, добро пожаловать под кат.

Введение

Цель: написать программу, которая будет захватывать сетевой трафик (Ethernet, WiFi), передающийся по протоколу IP.
Средства: Visual Studio 2005 или выше.
Подход, который здесь описан, не принадлежит лично автору и успешно применяется во многих коммерческих, а также категорически бесплатных программах (привет, GPL).
Сей труд предназначен прежде всего для новичков в сетевом программровании, которые, однако, имеют хотя бы базовые знания в области сокетов вообще, и windows-сокетов в частности. Здесь я часто буду писать общеизвестные вещи, потому что предметная область специфическая, если что-то пропустить - в голове будет каша.

Надеюсь, Вам будет интересно.

Теория (читать не обязательно, но желательно)

В данный момент подавляющее большинство современных информационных сетей базируются на фундаменте стека протоколов TCP/IP. Стек протоколов TCP/IP (англ. Transmission Control Protocol/Internet Protocol) - собирательное название для сетевых протоколов разных уровней, используемых в сетях. В настоящей статье нас будет интересовать в основном протокол IP - маршрутизируемый сетевой протокол, используемый для негарантированной доставки данных, разделяемых на так называемые пакеты (более верный термин – дейтаграмма) от одного узла сети к другому.
Особый интерес для нас представляют IP-пакеты, предназначенные для передачи информации. Это достаточно высокий уровень сетевой OSI-модели данных, когда можно обстрагироваться от устройства и среды передачи данных, оперируя лишь логическим представлением.
Совершенно логичным является то обстоятельство, что рано или поздно должны были появится инструменты для перехвата, контроля, учета и анализа сетевого трафика. Такие средства обычно называется анализаторами трафика, пакетными анализаторыми или снифферами (от англ. to sniff - нюхать). Это - сетевой анализатор трафика, программа или программно-аппаратное устройство, предназначенное для перехвата и последующего анализа, либо только анализа сетевого трафика, предназначенного для других узлов.

Практика (разговор по существу)

На данный момент создано достаточно много программного обеспечения для прослушивания трафика. Наиболее известный из них: Wireshark . Естественно, пожинать его лавры цель не стоит - нас интересует задача перехвата трафика методом обычного «прослушивания» сетевого интерфейса. Важно понимать, что мы не собираемся заниматься взломом и перехватывать чужой трафик. Нужно всего лишь просматривать и анализировать трафик, который проходит через наш хост.

Для чего это может понадобиться:

  1. Смотреть текущий поток трафика через сетевое соеднинение (входящий/исходящий/всего).
  2. Перенаправлять трафик для последующего анализа на другой хост.
  3. Теоретически, можно попытаться применить его для взлома WiFi-сети (мы ведь не собираемся этим заниматься?).
В отличие от Wireshark, который базируется на библиотеке libpcap/WinPcap, наш анализатор не будет использовать этот драйвер. Чего уж там, у нас вообще не будет драйвера, и свой NDIS(о ужас!) мы писать не собираемся. Про это можно прочитать в этом топике . Он будет просто пассивным наблюдателем, использующим только библиотеку WinSock. Использование драйвера в данном случае избыточно.

Как так? Очень просто.
Ключевым шагом в превращении простого сетевого приложения в сетевой анализатор является переключение сетевого интерфейса в режим прослушивания (promiscuous mode), что и позволит ему получать пакеты, адресованные другим интерфейсам в сети. Этот режим заставляют сетевую плату принимать все кадры, вне зависимости от того, кому они адресованы в сети.

Начиная с Windows 2000 (NT 5.0) создать программу для прослушивания сегмента сети стало очень просто, т.к. ее сетевой драйвер позволяет перевести сокет в режим приёма всех пакетов.

Включение неразборчивого режима
long flag = 1; SOCKET socket; #define SIO_RCVALL 0x98000001 ioctlsocket(socket, SIO_RCVALL, &RS_Flag);
Наша программа оперирует IP-пакетами, и использует библиотеку Windows Sockets версии 2.2 и «сырые» сокеты (raw sockets). Для того чтобы получить прямой доступ к IP-пакету, сокет нужно создавать следующим образом:
Создание сырого сокета
s = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
Здесь вместо константы SOCK_STREAM (протокол TCP) или SOCK_DGRAM (протокол UDP), мы используем значение SOCK_RAW . Вообще говоря, работа с raw sockets интересна не только с точки зрения захвата трафика. Фактически, мы получаем полный контроль за формированием пакета. Вернее, формируем его вручную, что позволяет, например, послать специфический ICMP-пакет…

Идем дальше. Известно, что IP-пакет состоит из заголовка, служебной информации и, собственно, данных. Советую заглянуть сюда , чтобы освежит знания. Опишем в виде структуры IP-заголовок (спасибо отличной статье на RSDN ):

Описание структуры IP-пакета
typedef struct _IPHeader { unsigned char ver_len; // версия и длина заголовка unsigned char tos; // тип сервиса unsigned short length; // длина всего пакета unsigned short id; // Id unsigned short flgs_offset; // флаги и смещение unsigned char ttl; // время жизни unsigned char protocol; // протокол unsigned short xsum; // контрольная сумма unsigned long src; // IP-адрес отправителя unsigned long dest; // IP-адрес назначения unsigned short *params; // параметры (до 320 бит) unsigned char *data; // данные (до 65535 октетов) }IPHeader;
Главная функция алгоритма прослушивания будет выглядеть следующим образом:
Функция захвата одного пакета
IPHeader* RS_Sniff() { IPHeader *hdr; int count = 0; count = recv(RS_SSocket, (char*)&RS_Buffer, sizeof(RS_Buffer), 0); if (count >= sizeof(IPHeader)) { hdr = (LPIPHeader)malloc(MAX_PACKET_SIZE); memcpy(hdr, RS_Buffer, MAX_PACKET_SIZE); RS_UpdateNetStat(count, hdr); return hdr; } else return 0; }
Здесь все просто: получаем порцию данных с помощью стандартной функции socket-функции recv , а затем копируем их в структуру типа IPHeader .
И, наконец, запускаем бесконечный цикл захвата пакетов:
Захватым все пакеты, которые попадут на наш сетевой интерфейс
while (true) { IPHeader* hdr = RS_Sniff(); // обработка IP-пакета if (hdr) { // печатаем заголовок в консоли } }
Немного оффтопика
Здесь и далее у некоторых важных функций и переменных автор сделал префкис RS_ (от Raw Sockets). Проект делал 3-4 года назад, и была шальная мысль написать полноценную библиотеку для работы с сырыми сокетами. Как это часто бывает, после получения сколь-нибудь значимых(для автора) результатов, энтузиазм угас, и дальше учебного примера дело не полшло.

В принципе, можно пойти дальше, и описать заголовки всех последующих протоколов, находящихся выше. Для этого необходимо анализировать поле protocol в структуре IPHeader . Посмотрите на пример кода (да, там должен быть switch, чёрт возьми!), где происходит раскрашивание заголовка в зависимости от того, какой протокол имеет пакет, инкапсулированный в IP:

/* * Выделение пакета цветом */ void ColorPacket(const IPHeader *h, const u_long haddr, const u_long whost = 0) { if (h->xsum) SetConsoleTextColor(0x17); // если пакет не пустой else SetConsoleTextColor(0x07); // пустой пакет if (haddr == h->src) { SetConsoleTextColor(BACKGROUND_BLUE | /*BACKGROUND_INTENSITY |*/ FOREGROUND_RED | FOREGROUND_INTENSITY); // "родной" пакет на отдачу } else if (haddr == h->dest) { SetConsoleTextColor(BACKGROUND_BLUE | /*BACKGROUND_INTENSITY |*/ FOREGROUND_GREEN | FOREGROUND_INTENSITY); // "родной" пакет на прием } if (h->protocol == PROT_ICMP || h->protocol == PROT_IGMP) { SetConsoleTextColor(0x70); // ICMP-пакет } else if(h->protocol == PROT_IP || h->protocol == 115) { SetConsoleTextColor(0x4F); // IP-in-IP-пакет, L2TP } else if(h->protocol == 53 || h->protocol == 56) { SetConsoleTextColor(0x4C); // TLS, IP with Encryption } if(whost == h->dest || whost == h->src) { SetConsoleTextColor(0x0A); } }

Однако это существенно выходит за рамки этой статьи. Для нашего учебного примера вполне достаточно будет посмотреть ip-адреса хостов, с которых и на которые идет трафик, и посчитать его количество в единицу времени(готовая программа в архиве в конце статьи).

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

Преобразование IP-заголовка в строку
inline char* iph2str(IPHeader *iph) { const int BUF_SIZE = 1024; char *r = (char*)malloc(BUF_SIZE); memset((void*)r, 0, BUF_SIZE); sprintf(r, "ver=%d hlen=%d tos=%d len=%d id=%d flags=0x%X offset=%d ttl=%dms prot=%d crc=0x%X src=%s dest=%s", BYTE_H(iph->ver_len), BYTE_L(iph->ver_len)*4, iph->tos, ntohs(iph->length), ntohs(iph->id), IP_FLAGS(ntohs(iph->flgs_offset)), IP_OFFSET(ntohs(iph->flgs_offset)), iph->ttl, iph->protocol, ntohs(iph->xsum), nethost2str(iph->src), nethost2str(iph->dest)); return r; }
На основании приведенных выше базовых сведений, получается вот такая небольшая программа (жуткое название ss, сокр. от англ. simple sniffer), реализующая локальное прослушивание IP-трафика. Интерфейс ее приведен ниже на рисунке.

Исходный и бинарный код предоставляю как есть, таким как он был несколько лет назад. Сейчас мне на него страшно смотреть, и все же, он вполне читабельный (конечно же, нельзя быть таким самоуверенным). Для компиляции будет достаточно даже Visual Studio Express 2005.

Что у нас получилось в итоге:

  • Сниффер работает в режиме пользователя, однако требует привилегии администратора.
  • Пакеты не фильтруются, отображаясь как есть (можно добавить настраиваемые фильтры - предлагаю подробно рассмотреть эту тему в следующей статье, если интересно).
  • WiFi-трафик тоже захватывается(все зависит от конкретной модели чипа, у Вас может и не работать, как у меня несколько лет назад), хотя есть AirPcap, которая чудесно это умеет делать, но стоит денег.
  • Весь поток дейтаграмм логируется в файл (см. архив, приложенный в конце статьи).
  • Программа работает в качестве сервера на порту 2000. Можно подключиться с помощью утилиты telnet к хосту и произвести мониторинг потоков трафика. Количество подключений ограничено двадцатью (код не мой, нашел на просторах сети и применял для экспериментов; удалять не стал - жалко)
Спасибо за внимание, проздравляю хабровчан и хабровчанок и всех-всех-всех с наступающим Рождеством!

SmartSniff позволяет перехватить сетевой трафик и отобразить его содержимое в ASCII. Программа захватывает пакеты проходящие через сетевой адаптер и выводит на экран содержание пакетов в текстовом виде (протоколы http, pop3, smtp, ftp) и в виде шестнадцатеричного дампа. Для захвата TCP/IP пакетов SmartSniff использует методики: необработанные сокеты - RAW Sockets, WinCap Capture Driver и Microsoft Network Monitor Driver. Программа поддерживает русский язык и проста в использовании.

Программа сниффер для захвата пакетов


SmartSniff отображает следующую информацию: название протокола, локальный и удаленный адрес, локальный и удаленный порт, локальный узел, название службы, объем данных, общий размер, время захвата и время последнего пакета, длительность, локальный и удаленный МАС адрес, страны и содержание пакета данных. Программа обладает гибкими настройками, в ней реализована функция фильтра захвата, распаковка ответов http, преобразования ip адреса, утилита сворачивается в системный трей. SmartSniff формирует отчет о потоках пакетовв виде HTML страницы. В программе возможно выполнить экспорт потоков TCP/IP.



Понравилась статья? Поделитесь ей