Contacte

Sniffer de rețea Windows. Sniffers. Intenții bune și scopuri rău intenționate

Orice urmărire online se bazează pe utilizarea tehnologiilor sniffer (analizatoare de pachete de rețea). Ce este un sniffer?

Un sniffer este un program de calculator sau un echipament informatic care poate intercepta și analiza traficul care trece printr-o rețea digitală sau o parte a acesteia. Analizorul captează toate fluxurile (interceptează și înregistrează traficul pe Internet) și, dacă este necesar, decodifică datele, stochând secvențial informațiile transmise de utilizator.


Nuanțe ale utilizării urmăririi online prin sniffer.

Pe canalul de difuzare al rețelei de calculatoare LAN (Local Area Network) a utilizatorului, în funcție de structura rețelei (switch sau hub), sniffer-ul interceptează traficul fie al întregii, fie al unei părți a rețelei, provenit de la un laptop sau computer. Cu toate acestea, folosind diferite metode (de exemplu, spoofing ARP) este posibil să se realizeze trafic pe Internet și alte sisteme informatice conectate la rețea.

Snifferele sunt adesea folosite și pentru a monitoriza rețelele de calculatoare. Efectuând o monitorizare constantă, continuă, analizoarele de pachete de rețea identifică sistemele lente, defecte și transmit (prin e-mail, telefon sau server) informațiile de defecțiune rezultate către administrator.

Utilizarea robinetelor de rețea, în unele cazuri, este o modalitate mai fiabilă de a monitoriza traficul de internet online decât monitorizarea porturilor. În același timp, crește probabilitatea de detectare a pachetelor (fluxuri) defecte, ceea ce are un efect pozitiv în condiții de încărcare mare a rețelei.
În plus, sniffer-urile sunt bune la monitorizarea rețelelor locale fără fir cu un singur și multicanal (așa-numita LAN fără fir) atunci când folosesc mai multe adaptoare.

În rețelele LAN, un sniffer poate intercepta în mod eficient atât traficul unidirecțional (transferul unui pachet de informații la o singură adresă), cât și traficul multicast. În acest caz, adaptorul de rețea trebuie să aibă un mod promiscuu.

În rețelele fără fir, chiar și atunci când adaptorul este în modul „promiscuu”, pachetele de date care nu sunt redirecționate de la sistemul configurat (principal) vor fi ignorate automat. Pentru a monitoriza aceste pachete de informații, adaptorul trebuie să fie într-un mod diferit - monitorizare.


Secvența de interceptare a pachetelor de informații.

1. Interceptarea antetelor sau a întregului conținut.

Sniffer-ii pot intercepta fie întregul conținut al pachetelor de date, fie doar anteturile acestora. A doua opțiune vă permite să reduceți cerințele generale pentru stocarea informațiilor, precum și să evitați problemele legale asociate cu eliminarea neautorizată a informațiilor personale ale utilizatorilor. În același timp, istoricul antetelor pachetelor transmise poate avea o cantitate suficientă de informații pentru a identifica informațiile necesare sau pentru a diagnostica defecțiuni.


2. Decodarea pachetelor.

Informația interceptată este decodificată dintr-o formă digitală (izibilă) într-un tip care este ușor de perceput și citit. Sistemul sniffer permite administratorilor analizorului de protocol să vadă cu ușurință informațiile care au fost trimise sau primite de un utilizator.

Analizoarele diferă prin:

  • capabilități de afișare a datelor(crearea diagramelor de timp, reconstruirea protocoalelor de date UDP, TCP etc.);
  • tip de aplicatie(pentru a detecta erori, cauze principale sau pentru a urmări utilizatorii online).

Unele sniffer-uri pot genera trafic și pot acționa ca un dispozitiv sursă. De exemplu, vor fi utilizați ca testeri de protocol. Astfel de sisteme de testare sniffer vă permit să generați traficul corect necesar pentru testarea funcțională. În plus, sniffer-ii pot introduce erori pentru a testa capabilitățile dispozitivului testat.


Sniffer hardware.


Analizatoarele de trafic pot fi, de asemenea, de tip hardware, sub forma unei sonde sau a unei matrice de discuri (tipul mai comun). Aceste dispozitive înregistrează pachete de informații sau părți ale acestora pe o matrice de discuri. Acest lucru vă permite să recreați orice informație primită sau transmisă de utilizator pe Internet sau să identificați cu promptitudine o defecțiune a traficului pe Internet.


Metode de aplicare.

Analizoarele de pachete de rețea sunt utilizate pentru:

  • analiza problemelor existente în rețea;
  • detectarea încercărilor de intruziune în rețea;
  • determinarea abuzului de trafic de către utilizatori (în interiorul și în afara sistemului);
  • documentarea cerințelor de reglementare (perimetrul de conectare posibil, punctele finale de distribuție a traficului);
  • obținerea de informații despre posibilitățile de intruziune în rețea;
  • izolarea sistemelor de operare;
  • monitorizarea încărcării canalelor rețelei globale;
  • utilizat pentru a monitoriza starea rețelei (inclusiv activitatea utilizatorului atât în ​​interiorul, cât și în afara sistemului);
  • monitorizarea datelor în mișcare;
  • Monitorizarea WAN și starea securității terminalelor;
  • colectarea statisticilor de rețea;
  • filtrarea conținutului suspect provenit din traficul de rețea;
  • crearea unei surse primare de date pentru monitorizarea stării și managementului rețelei;
  • urmărire online ca spion care colectează informații confidențiale despre utilizatori;
  • depanarea comunicațiilor cu serverul și clientul;
  • verificarea eficacității controalelor interne (control acces, firewall-uri, filtre de spam etc.).

Snifferele sunt, de asemenea, folosite de agențiile de aplicare a legii pentru a monitoriza activitățile suspecților infractori. Vă rugăm să rețineți că toți ISP-urile și ISP-urile din SUA și Europa respectă CALEA.


Mirositoare populare.

Cele mai funcționale analizoare de sistem pentru urmărirea online:


Programul de spionaj NeoSpy, a cărui activitate principală este monitorizarea acțiunilor utilizatorilor online, include, pe lângă codul programului universal sniffer, coduri keylogger (keylogger) și alte sisteme de urmărire ascunse.



Toate articolele postate în aceste secțiuni sunt proprietatea autorilor lor.
Administrația site-ului nu este întotdeauna de acord cu poziția autorilor articolelor și nu este responsabilă pentru conținutul materialelor postate pe site în secțiunile „Recenzii” și „Articole”.
Administrația site-ului nu este responsabilă pentru acuratețea informațiilor publicate în secțiunea „Recenzii”.


Promovare! 10% reducere pentru că ați apreciat VKontakte!

Faceți clic pe „Like” și obțineți o reducere de 10% la orice versiune de NeoSpy pentru PC.

2) Faceți clic pe butonul „Like”. și „Spune-le prietenilor”în partea de jos a paginii principale;

3) Accesați pagina de achiziție, selectați o versiune și faceți clic pe „Cumpărați”;

4) Introduceți ID-ul dvs. VKontakte în câmpul „Cupon de reducere”, de exemplu, id-ul dvs. este 1234567, în acest caz trebuie să introduceți „id1234567” fără ghilimele în câmp.
Este necesar să introduceți ID-ul paginii și nu o adresă text scurtă.

Pentru a vă vedea actul de identitate, mergeți la dvs

Sniffers- acestea sunt programe care interceptează
tot traficul din rețea. Snifferele sunt utile pentru diagnosticarea rețelei (pentru administratori) și
pentru a intercepta parolele (e clar pentru cine :)). De exemplu, dacă ați obținut acces la
o mașină de rețea și a instalat un sniffer acolo,
apoi în curând toate parolele de la
subrețelele lor vor fi ale tale. Set de adulmetoare
placa de rețea în ascultare
modul (PROMISC) Adică primesc toate pachetele. La nivel local puteți intercepta
toate pachetele trimise de la toate mașinile (dacă nu sunteți separat de niciun hub),
Asa de
Cum se practică emisiunea acolo?
Sniffers pot intercepta totul
pachete (ceea ce este foarte incomod, fișierul jurnal se umple teribil de repede,
dar pentru o analiză mai detaliată a rețelei este perfect)
sau doar primii octeți din tot felul de
ftp, telnet, pop3 etc. (aceasta este partea distractivă, de obicei în aproximativ primii 100 de octeți
conține numele de utilizator și parola :)). Adulmecă acum
divorţat... Sunt mulţi adulmecători
atat sub Unix cat si sub Windows (chiar si sub DOS exista :)).
Sniffers pot
acceptă doar o anumită axă (de exemplu linux_sniffer.c, care
acceptă Linux :)), sau mai multe (de exemplu Sniffit,
funcționează cu BSD, Linux, Solaris). Sniffers s-au îmbogățit pentru că
că parolele sunt transmise prin rețea în text clar.
Asemenea servicii
mult. Acestea sunt telnet, ftp, pop3, www, etc. Aceste servicii
foloseste mult
oameni :). După boom-ul sniffer, diverse
algoritmi
criptarea acestor protocoale. A apărut SSH (o alternativă
suport telnet
criptare), SSL (Secure Socket Layer - o dezvoltare Netscape care poate cripta
sesiune www). Tot felul de Kerberous, VPN (Virtual Private
Reţea). Au fost folosite unele AntiSniffs, ifstatus etc. Dar, în principiu, nu este
a schimbat situația. Servicii care folosesc
transmiterea parolei text simplu
sunt folosite la maxim :). Prin urmare, vor adulmeca mult timp :).

Implementări Windows sniffer

linsniffer
Acesta este un sniffer simplu de interceptat
autentificare/parole. Compilare standard (gcc -o linsniffer
linsniffer.c).
Jurnalele sunt scrise pe tcp.log.

linux_sniffer
Linux_sniffer
necesar când doriți
studiază rețeaua în detaliu. Standard
compilare. Oferă tot felul de prostii în plus,
cum ar fi isn, ack, syn, echo_request (ping), etc.

Adulmecă
Sniffit - model avansat
sniffer scris de Brecht Claerhout. Instalați (necesar
libcap):
#./configure
#face
Acum hai să lansăm
adulmeca:
#./sniffit
utilizare: ./sniffit [-xdabvnN] [-P proto] [-A char] [-p
port] [(-r|-R) fișier de înregistrare]
[-l sniflen] [-L logparam] [-F snifdevice]
[plugin -M]
[-D tty] (-t | -s ) |
(-i|-I) | -c ]
Pluginuri disponibile:
0 -- Manichiu
Conecteaza
1 -- Plugin DNS

După cum puteți vedea, sniffit suportă multe
Opțiuni. Puteți folosi sniffak-ul în mod interactiv.
Adulmecă totuși
un program destul de util, dar nu-l folosesc.
De ce? Pentru că Sniffit
probleme mari cu protectia. Pentru Sniffit, o rădăcină la distanță și dos au fost deja lansate pentru
Linux și Debian! Nu orice sniffer își permite să facă asta :).

VÂNĂTOARE
Acest
adulmecul meu preferat. Este foarte usor de folosit,
suportă o mulțime de cool
cipuri și în prezent nu are probleme de securitate.
Plus că nu prea mult
exigente din partea bibliotecilor (cum ar fi linsniffer și
Linux_sniffer). El
poate intercepta conexiunile curente în timp real și
curățați depozitul de la un terminal la distanță. ÎN
în general, Hijack
rulezzz:). Vă recomand
toată lumea pentru o utilizare îmbunătățită :).
Instalare:
#face
Alerga:
#hunt -i

CITEȘTEMB
Snifferul READSMB este tăiat din LophtCrack și portat la
Unix (destul de ciudat :)). Readsmb interceptează SMB
pachete.

TCPDUMP
tcpdump este un analizor de pachete destul de cunoscut.
Scris
o persoană și mai faimoasă - Van Jacobson, care a inventat compresia VJ pentru
PPP și a scris un program traceroute (și cine știe ce altceva?).
Necesită o bibliotecă
Libpcap.
Instalare:
#./configure
#face
Acum hai să lansăm
a ei:
#tcpdump
tcpdump: ascultare pe ppp0
Toate conexiunile dvs. sunt afișate pe
Terminal. Iată un exemplu de ieșire ping

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

În general, sniff-ul este util pentru depanarea rețelelor,
depanare și
etc.

Adulmecă
Dsniff necesită libpcap, ibnet,
libnids și OpenSSH. Înregistrează doar comenzile introduse, ceea ce este foarte convenabil.
Iată un exemplu de jurnal de conexiune
pe 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
OMS
ultimul
Ieșire

Aici
dsniff a interceptat autentificarea și parola (stalsen/asdqwe123).
Instalare:
#./configure
#face
#face
instalare

Protecție împotriva mirositoarelor

Cel mai sigur mod de a vă proteja împotriva
adulmecă -
utilizați criptarea (SSH, Kerberous, VPN, S/Key, S/MIME,
SHTTP, SSL etc.). Bine
și dacă nu doriți să renunțați la serviciile de text simplu și să instalați suplimentar
pachete :)? Atunci este timpul să folosiți pachete anti-sniffer...

AntiSniff pentru Windows
Acest produs a fost lansat de un grup celebru
Mansarda. A fost primul produs de acest gen.
AntiSniff, așa cum este menționat în
Descriere:
„AntiSniff este un instrument bazat pe interfața grafică de utilizator (GUI) pentru
detectarea plăcilor de interfață de rețea (NIC) promiscue în rețeaua locală
segment". În general, prinde cărți în modul promisc.
Sprijină enorm
numărul de teste (test DNS, test ARP, test Ping, ICMP Time Delta
Test, Echo Test, PingDrop test). Poate fi scanat ca o singură mașină,
si grila. Există
suport pentru jurnal. AntiSniff funcționează pe win95/98/NT/2000,
deși recomandat
Platforma NT. Dar domnia lui a fost de scurtă durată și avea să aibă loc în curând
timp, a apărut un sniffer numit AntiAntiSniffer :),
scris de Mike
Perry (Mike Perry) (îl puteți găsi pe www.void.ru/news/9908/snoof.txt).
bazat pe LinSniffer (discutat mai jos).

Detectare sniffer Unix:
Mirositoare
poate fi găsit cu comanda:

#ifconfig -a
lo Link encap:Local
Loopback
inet addr:127.0.0.1 Masca:255.0.0.0
SUS.
LOOPBACK RUNNING MTU:3924 Metric:1
Pachete RX:2373 erori:0
dropped:0 overruns:0 frame:0
Pachete TX:2373 erori:0 scăpat:0
depășiri:0 purtător:0
coliziuni:0 txqueuelen:0

ppp0 Link
encap:Protocol punct la punct
inet adresa:195.170.y.x
P-t-P:195.170.y.x Masca:255.255.255.255
UP POINTOPOINT PROMISC
RUNERE NOARP MULTICAST MTU:1500 Metric:1
Pachete RX: 3281
erori:74 dropped:0 overruns:0 frame:74
Pachete TX:3398 erori:0
dropped:0 overruns:0 carrier:0
coliziuni:0 txqueuelen:10

Cum
vezi că interfața ppp0 este în modul PROMISC. Oricare operator
sniff încărcat pentru
verificări de rețea, sau te au deja... Dar ține minte,
că ifconfig se poate face în siguranță
spoof, așa că folosește tripwire pentru a detecta
modificări și tot felul de programe
pentru a verifica adulmecurile.

AntiSniff pentru Unix.
Lucreaza pentru
BSD, Solaris și
Linux. Suporta testul de timp ping/icmp, testul arp, testul ecou, ​​dns
test, etherping test, în general un analog al AntiSniff for Win, numai pentru
Unix:).
Instalare:
#make linux-all

Santinelă
De asemenea, un program util pentru
prind sniffers. Suporta multe teste.
Usor de
utilizare.
Instalați: #make
#./santinelă
./sentinel [-t
]
Metode:
[ -un test ARP ]
[ -d test DNS
]
[ -i Test de latență Ping ICMP ]
[ -e Test ICMP Etherping
]
Opțiuni:
[ -f ]
[ -v Afișează versiunea și
Ieșire ]
[ -n ]
[ -I
]

Opțiunile sunt atât de simple încât nu
comentarii.

MAI MULT

Iată încă câteva
utilitare pentru a vă verifica rețeaua (pentru
Unix):
packetstorm.securify.com/UNIX/IDS/scanpromisc.c -remote
Detector mod PROMISC pentru carduri Ethernet (pentru red hat 5.x).
http://packetstorm.securify.com/UNIX/IDS/neped.c
- Detector Ethernet Promiscuous în Rețea (necesită libcap și Glibc).
http://packetstorm.securify.com/Exploit_Code_Archive/promisc.c
- scanează dispozitivele sistemului pentru a detecta mirosurile.
http://packetstorm.securify.com/UNIX/IDS/ifstatus2.2.tar.gz
- ifstatus testează interfețele de rețea în modul PROMISC.

IP Sniffer- un program care vă permite să monitorizați pachetele care trec prin Internet Protocol (IP). Funcționalitatea programului include capacitatea de a decoda pachete și de a le filtra.

În era tehnologiei moderne și a internetului, securitatea este pe primul loc. Calculatorul face schimb de informații digitale cu lumea exterioară prin protocoale speciale. Protocolul Internet (IP) este unul dintre cele mai populare și populare datorită securității și vitezei mari de transfer de date.

Odată cu apariția sa, în 1981, computerele au putut să-și trimită mesaje între ele sub formă de pachete de date. Sniffer pentru Windows este conceput pentru a monitoriza traficul și a verifica conținutul pachetelor. Astfel, acest utilitar este o modalitate suplimentară de a vă securiza computerul. Descărcați IP Sniffer este cea mai bună soluție pentru a menține sub control traficul și toate fluxurile de informații.

Descărcați IP Sniffer gratuit

IP Sniffer pentru Windows (1,4 MB)

Caracteristici cheie ale IP Sniffer:

  • Multifunctionalitate;
  • Siguranță;
  • Mărime mică;
  • Interfață intuitivă.

Cea mai recentă versiune a sniffer-ului are o interfață convenabilă și simplă. Programul vă permite să vizualizați ce adrese IP sunt cele mai des utilizate și care sunt cel mai des conectate la aparatul dvs. Puteți monitoriza convenabil volumul traficului. De asemenea, puteți încheia forțat o anumită conexiune folosind funcția Netstat. Este recomandat să descărcați sniffer-ul pe computer dacă utilizatorul se confruntă cu sarcina de a intercepta traficul dintre gazde. Acest lucru se poate face prin funcția Snoofing, care, printre multe, acceptă popularul protocol ARP. De asemenea, funcțiile populare ale sniffer-ului în limba rusă sunt ping-ul de rețea, capacitatea de a converti o adresă IP în Hostname și invers și căutarea serverelor DHCP. De asemenea, îl puteți utiliza pentru a obține date Netbios pentru o anumită adresă IP.

Este recomandat să descărcați gratuit sniffer-ul dacă utilizatorul dorește să obțină un asistent de încredere în controlul traficului. Programul nu necesită instalare sau configurare suplimentară. Îl puteți folosi imediat după descărcare. Interfața programului este concisă și simplă. Ferestrele și filele sunt amplasate astfel încât utilizarea să fie cât mai convenabilă și confortabilă posibil. Dezvoltatorul își îmbunătățește și își îmbunătățește constant produsul. Actualizările sunt lansate în mod regulat. Programul este foarte rezistent la orice influențe rău intenționate. Portalul nostru oferă tuturor vizitatorilor posibilitatea de a descărca programul sniffer fără înregistrare și SMS.

În acest articol ne vom uita la crearea unui sniffer simplu pentru sistemul de operare Windows.
Oricine este interesat, bine ați venit la cat.

Introducere

Ţintă: scrieți un program care va capta traficul de rețea (Ethernet, WiFi) transmis prin protocolul IP.
Facilităţi: Visual Studio 2005 sau o versiune ulterioară.
Abordarea descrisă aici nu aparține autorului personal și este folosită cu succes în multe programe comerciale, precum și complet gratuite (bună ziua, GPL).
Această lucrare este destinată în primul rând începătorilor în programarea în rețea, care, totuși, au cel puțin cunoștințe de bază în domeniul socket-urilor în general și socket-urilor Windows în special. Aici voi scrie deseori lucruri cunoscute, pentru că tematica este specifică, dacă îmi lipsește ceva, capul îmi va fi o mizerie.

Sper să găsești interesant.

Teorie (citirea nu este obligatorie, dar recomandată)

În prezent, marea majoritate a rețelelor moderne de informații se bazează pe baza stivei de protocoale TCP/IP. Stiva de protocoale TCP/IP (Transmission Control Protocol/Internet Protocol) este un nume colectiv pentru protocoalele de rețea de diferite niveluri utilizate în rețele. În acest articol, ne va interesa în principal protocolul IP - un protocol de rețea direcționat utilizat pentru livrarea negarantată a datelor împărțite în așa-numitele pachete (un termen mai corect este o datagramă) de la un nod de rețea la altul.
De un interes deosebit pentru noi sunt pachetele IP concepute pentru a transmite informații. Acesta este un nivel destul de ridicat al modelului de date de rețea OSI, când vă puteți izola de dispozitiv și mediul de transmisie a datelor, operând doar cu o reprezentare logică.
Este complet logic ca mai devreme sau mai târziu să fi apărut instrumente de interceptare, monitorizare, înregistrare și analiză a traficului de rețea. Astfel de instrumente sunt de obicei numite analizoare de trafic, analizoare de pachete sau sniffer (din engleză la sniff - sniff). Acesta este un analizor de trafic de rețea, un program sau un dispozitiv hardware-software conceput pentru a intercepta și ulterior analiza, sau doar analiza, traficul de rețea destinat altor noduri.

Practică (conversație de fond)

În acest moment, a fost creat destul de mult software pentru a asculta traficul. Cel mai faimos dintre ei: Wireshark. Desigur, scopul nu este să-i culegem laurii - ne interesează sarcina de a intercepta traficul pur și simplu „ascultând” o interfață de rețea. Este important să înțelegem că nu vom pirata și intercepta străin trafic. Trebuie doar să vedem și să analizăm traficul care trece prin gazda noastră.

De ce poate fi necesar:

  1. Vizualizați fluxul curent de trafic prin conexiunea la rețea (intrare/ieșire/total).
  2. Redirecționați traficul pentru o analiză ulterioară către o altă gazdă.
  3. Teoretic, poți încerca să-l folosești pentru a pirata o rețea WiFi (nu vom face asta, nu-i așa?).
Spre deosebire de Wireshark, care se bazează pe biblioteca libpcap/WinPcap, analizatorul nostru nu va folosi acest driver. În plus, nu vom avea deloc șofer și nu vom scrie propriul nostru NDIS (oh groază!). Puteți citi despre asta în acest subiect. El va fi pur și simplu un observator pasiv, folosind numai Biblioteca WinSock. Utilizarea unui driver în acest caz este redundantă.

Cum așa? Foarte simplu.
Pasul cheie în transformarea unei simple aplicații de rețea într-un analizor de rețea este comutarea interfeței de rețea în modul promiscuu, ceea ce îi va permite să primească pachete adresate altor interfețe din rețea. Acest mod forțează placa de rețea să accepte toate cadrele, indiferent cui sunt adresate în rețea.

Începând cu Windows 2000 (NT 5.0), a devenit foarte ușor să creezi un program pentru a asculta un segment de rețea, deoarece driverul său de rețea vă permite să setați soclul pentru a primi toate pachetele.

Activarea modului promiscuu
steag lung = 1; priză SOCKET; #define SIO_RCVALL 0x98000001 ioctlsocket(socket, SIO_RCVALL, &RS_Flag);
Programul nostru funcționează pe pachete IP și utilizează biblioteca Windows Sockets versiunea 2.2 și socketuri brute. Pentru a obține acces direct la un pachet IP, socket-ul trebuie creat după cum urmează:
Crearea unei prize brute
s = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
Aici în loc de o constantă SOCK_STREAM(protocol TCP) sau SOCK_DGRAM(protocol UDP), folosim valoarea SOCK_RAW. În general, lucrul cu prize brute este interesant nu numai din punctul de vedere al captării traficului. De fapt, obținem control complet asupra formării pachetului. Sau, mai degrabă, îl formăm manual, ceea ce permite, de exemplu, să trimitem un anumit pachet ICMP...

Daţi-i drumul. Se știe că un pachet IP constă dintr-un antet, informații de serviciu și, de fapt, date. Vă sfătuiesc să căutați aici pentru a vă reîmprospăta cunoștințele. Să descriem antetul IP sub forma unei structuri (mulțumită excelentului articol despre RSDN):

Descrierea structurii pachetului IP
typedef struct _IPHeader ( unsigned char ver_len; // antet versiunea și lungimea caracterului nesemnat; // tipul serviciului unsigned short length; // lungimea întregului pachet unsigned short id; // Id unsigned short flgs_offset; // flags și offset unsigned char ttl ; // protocol char nesemnat pe viață; // protocol unsigned short xsum; // checksum unsigned long src; // adresa IP expeditorului unsigned long dest; // adresa IP destinație unsigned short *params; // parametri (până la 320 biți) caracter nesemnat *date; // date (până la 65535 octeți) )IPHeader;
Funcția principală a algoritmului de ascultare va arăta astfel:
Funcție de captare a unui singur pachet
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; ) altfel returnează 0; )
Totul este simplu aici: primim o bucată de date folosind funcția socket standard recv, apoi copiați-le într-o structură ca IPHeader.
Și, în sfârșit, începem o buclă de captare a pachetelor fără sfârșit:
Să captăm toate pachetele care ajung la interfața noastră de rețea
while (true) ( ​​​​IPHeader* hdr = RS_Sniff(); // procesează pachetul IP dacă (hdr) ( // imprimă antetul în consolă) )
Un pic offtopic
Aici și mai jos, autorul a creat prefixul RS_ (de la Raw Sockets) pentru unele funcții și variabile importante. Am făcut proiectul acum 3-4 ani și am avut o idee nebună să scriu o bibliotecă cu drepturi depline pentru lucrul cu socket-uri brute. După cum se întâmplă adesea, după obținerea unor rezultate semnificative (pentru autor), entuziasmul s-a stins, iar problema nu a mers mai departe decât un exemplu de antrenament.

În principiu, puteți merge mai departe și puteți descrie anteturile tuturor protocoalelor ulterioare situate mai sus. Pentru a face acest lucru, trebuie să analizați câmpul protocolîn structură IPHeader. Uită-te la exemplul de cod (da, ar trebui să existe un comutator, la naiba!), unde antetul este colorat în funcție de protocolul pe care pachetul l-a încapsulat în IP:

/* * Evidențierea unui pachet cu culoare */ void ColorPacket(const IPHeader *h, const u_long haddr, const u_long whost = 0) ( dacă (h->xsum) SetConsoleTextColor(0x17); // dacă pachetul nu este gol altfel SetConsoleTextColor(0x07) ; // pachet gol if (haddr == h->src) ( SetConsoleTextColor(BACKGROUND_BLUE | /*BACKGROUND_INTENSITY |*/ FOREGROUND_RED | FOREGROUND_INTENSITY); // pachet "nativ" == pentru returnare )relse h->dest ) ( SetConsoleTextColor(BACKGROUND_BLUE | /*BACKGROUND_INTENSITY |*/ FOREGROUND_GREEN | FOREGROUND_INTENSITY); // pachet de primire „nativ” ) if (h->protocol == PROT_ICMP || h->protocol == Set PROT_IGMP)t (0x70) ; // pachet ICMP ) else if(h->protocol == PROT_IP || h->protocol == 115) ( SetConsoleTextColor(0x4F); // pachet IP-in-IP, L2TP ) else if(h - >protocol == 53 || h->protocol == 56) ( SetConsoleTextColor(0x4C); // TLS, IP cu Encryption ) if(whost == h->dest || whost == h->src) ( SetConsoleTextColor (0x0A); ) )

Cu toate acestea, acest lucru depășește semnificativ domeniul de aplicare al acestui articol. Pentru exemplul nostru de instruire, va fi suficient să ne uităm la adresele IP ale gazdelor de la care și către care vine traficul și să calculam cantitatea acestuia pe unitatea de timp (programul terminat se află în arhivă la sfârșitul articolului) .

Pentru a afișa datele antetului IP, trebuie să implementați o funcție pentru a converti antetul (dar nu datele) datagramei într-un șir. Ca exemplu de implementare, putem oferi următoarea opțiune:

Conversia unui antet IP într-un șir
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; )
Pe baza informațiilor de bază date mai sus, obținem acest mic program (nume înfiorător ss, prescurtare de la simplu sniffer), care implementează ascultarea locală a traficului IP. Interfața sa este prezentată mai jos în figură.

Ofer codul sursă și codul binar așa cum este, așa cum a fost acum câțiva ani. Acum mi-e frică să mă uit la el și, totuși, este destul de lizibil (desigur, nu poți fi atât de încrezător în tine). Chiar și Visual Studio Express 2005 va fi suficient pentru compilare.

Cu ce ​​am ajuns:

  • Snifferul funcționează în modul utilizator, dar necesită privilegii de administrator.
  • Pachetele nu sunt filtrate și sunt afișate așa cum sunt (puteți adăuga filtre personalizate - vă sugerez să vedeți acest subiect în detaliu în articolul următor dacă sunteți interesat).
  • Se captează și traficul WiFi (totul depinde de modelul de cip specific, s-ar putea să nu funcționeze pentru tine, așa cum a făcut pentru mine acum câțiva ani), deși există AirPcap, care poate face acest lucru de minune, dar costă bani.
  • Întregul flux de datagramă este înregistrat într-un fișier (vezi arhiva atașată la sfârșitul articolului).
  • Programul funcționează ca un server pe portul 2000. Vă puteți conecta la gazdă folosind utilitarul telnet și puteți monitoriza fluxurile de trafic. Numărul de conexiuni este limitat la douăzeci (codul nu este al meu, l-am găsit pe Internet și l-am folosit pentru experimente; nu l-am șters - este păcat)
Vă mulțumesc pentru atenție, îi felicit pe locuitorii din Khabrovsk și Khabrovka și pe toți, Crăciun Fericit!

SmartSniff vă permite să interceptați traficul de rețea și să afișați conținutul acestuia în ASCII. Programul captează pachetele care trec prin adaptorul de rețea și afișează conținutul pachetelor sub formă de text (protocoale http, pop3, smtp, ftp) și ca un dump hexazecimal. Pentru a captura pachete TCP/IP, SmartSniff folosește următoarele tehnici: socket-uri brute - Socket-uri RAW, WinCap Capture Driver și Microsoft Network Monitor Driver. Programul acceptă limba rusă și este ușor de utilizat.

Program sniffer pentru capturarea pachetelor


SmartSniff afișează următoarele informații: numele protocolului, adresa locală și de la distanță, portul local și la distanță, nodul local, numele serviciului, volumul de date, dimensiunea totală, timpul de captare și ora ultimului pachet, durata, adresa MAC locală și de la distanță, țările și pachetul de date continuturi . Programul are setări flexibile, implementează funcția de filtru de captură, despachetarea răspunsurilor http, conversia adreselor IP, utilitarul este minimizat în tava de sistem. SmartSniff generează un raport privind fluxurile de pachete ca pagină HTML. Programul poate exporta fluxuri TCP/IP.



Ți-a plăcut articolul? Împărtășește-l