Контакти

Мережевий сніффер 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 пакетів: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 пакетів:3281
errors:74 dropped:0 overruns:0 frame:74
TX пакетів:3398 errors:0
dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10

Як
бачите інтерфейс ppp0 стоїть у PROMISC mode. Або оператор
завантажив сніфф для
перевірки мережі, або вас вже мають ... Але пам'ятайте,
що ifconfig можна спокійно
підмінити, тому юзайте tripwire для виявлення
змін та усілякі проги
для перевірки на сніффи.

AntiSniff для 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
коментарів.

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. Завантажити сніффер на комп'ютер рекомендується, якщо перед користувачем стоїть завдання перехоплення трафіку між хостами. Це дозволяє виконувати функцію 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;
Тут все просто: отримуємо порцію даних за допомогою стандартної функції 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-> ) ( SetConsoleTextColor(BACKGROUND_BLUE | /*BACKGROUND_INTENSITY |*/ FOREGROUND_GREEN | FOREGROUND_INTENSITY); // "рідний" пакет на прийом ) if (h->protocol == PROT_ICMP || h->protocol == PROT_IGMP // 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 || (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.



Сподобалася стаття? Поділіться їй