- Unde e harta, Billy? Avem nevoie de o hartă!
O hartă a rețelei este un atribut indispensabil al oricărui pentest. Dacă efectuați un audit intern al rețelei și clientul a furnizat un card - știi, sunteți foarte norocoși! Dar dacă nu există carte?
Ce ai face dacă ai fi fost într-o cameră întunecată și închisă? Desigur, ei ar asculta toate sunetele care te ajung, să înțelegi unde ești și ce e în jur.
Același lucru ar trebui să fie făcut de un penitenciar, care a primit acces fizic la rețea. Dacă aveți o sarcină de a rămâne neobservată și timpul permite, atunci trebuie să ascultați rețeaua ... o oră, două, pe zi ... doar ascultați. Cu ajutorul acțiunilor pasive, va fi dificil să vă detectați. Desigur, nu puteți obține o hartă a rețelei pe scară largă utilizând scanarea pasivă, dar este ușor să găsiți informații utile în cadrul segmentului!
Ce puteți învăța ascultând interfața Ethernet?
Să vedem ce cadre sunt la stratul de legătură (nivelul 2 al modelului OSI):
Pentru a asculta în rețea pasivă, cel mai simplu mod este să luați Wireshark și să selectați cadrele de difuzare. Dar nu căutăm modalități ușoare :)) ... să scriem utilitatea proprie pentru detectarea pasivă a dispozitivelor în rețea.
Pentru cei nerăbdători, postați imediat codul sursă fpas.c
Pentru cei care vor să înțeleagă mai mult, voi descrie funcțiile cheie și structura programului. Deci, să începem ...
Structura cadrului Ethernet se află în fișierul antet
Acum mergeți la nivelul de mai sus și luați în considerare structura pachetului ARP. Este greu de spus la ce nivel funcționează protocolul ARP. Unii experți îl atribuie celui de-al doilea nivel, deși pachetele ARP sunt încapsulate în rame Ethernet și ar trebui să se refere la nivelul 3 al OSI / ISO. Dar standardele nu susțin ...
Ce pachete sunt de interes pentru noi:
În general, credem că:
"Dacă cineva trimite emisiuni, atunci" cineva "este prezent în rețea!"
Pentru ascultarea anonimă, trebuie să configurați corect interfața de rețea (dezactivați serviciul ARP și blocați tot traficul de ieșire).
Pentru a rămâne anonim, trebuie doar să ascultăm. Niciun pachet nu poate fi trimis!
1. Blocarea răspunsurilor la stratul de legătură (serviciu ARP):
unde eth0 este interfața de rețea care este configurată pentru a asculta
2. Blocarea traficului de ieșire și de tranzit prin iptables:
F: Resetați toate regulile (înfundarea).
X: Ștergeți lanturile de reguli.
P: Setați politicile implicite pentru traficul de intrare, ieșire și de tranzit (de exemplu, DROP, REJECT sau ACCEPT).
3. Inițializarea interfeței de rețea:
Pentru a intercepta toate cadrele, este necesar să traduceți interfața de rețea într-un mod ilizibil. Acest lucru se face folosind funcția ioctl. Funcția set_promiscuous_mode citește configurația curentă de interfață umple structura lNetwork_Device și stabilește un steag mod promiscuu IFF_PROMISC (dacă este necesar, pentru a inițializa placa de rețea), sau aruncate înapoi în ea (în cazul în care termina sniffing):
Pachetele ARP vor fi primite într-un ciclu constant, al cărui rezultat va fi apăsarea combinației CTRL + C. Pentru a nu strânge explicațiile cu logica complexă a muncii, voi arăta o schemă simplificată de primire a pachetelor (procesarea CTRL + C este descrisă mai jos):
Rețineți căutarea pachetului ARP și a tipului acestuia.
În mod similar, situația se referă la definirea tipului de pachet ARP. Decalat [tampon + 20] [tampon + 21] scrie de tip pachet (cerere ARP_REQUEST = 0x0001 sau răspuns ARP_REPLAY = 0x0002).
În practică, în rețelele corporative încărcate foarte puternic, intensitatea cererilor ARP poate ajunge la zeci de unități pe secundă. Și cea mai mare parte este repetarea. Pentru a elimina intensitatea excesivă a fluxului, am adăugat o utilitate specială -u (unic), care vă permite să filtrați pachetele duplicat.
Primirea și procesarea pachetelor are loc într-un mod continuu. Când apăsați CTRL + C, evenimentul SIGINT intră în procesul principal și trebuie să îl procesați. Instrumentul de tratare a evenimentului (funcția break_mode) setează flagul terminate_signal la SET_ON. În bucla principală, acest steag este verificat și, dacă este setat, programul se termină.
Construiți programul și testați-l
Salvăm fișierul sursă în directorul de domiciliu și îl compilam (credem că compilatorul gcc este deja instalat în sistem):
Pe ieșire obținem fișierul executabil fpas.
Desfășurăm programul sub rădăcină, pentru că pentru a traduce interfața într-un mod ilizibil, ai nevoie de drepturi de superuser. Mai întâi, executați fpas fără parametri:
Programul va emite un certificat:
-i Numele interfeței (necesar).
-u Căutați gazde unice.
-r Afișați contorul de pachete ARP.
Acum, să ascultăm o interfață de rețea (nu uitați să specificați opțiunea -i necesară cu numele interfeței):
După câteva minute, prindem mai multe cereri ARP (inclusiv cele repetate). Este bine, atunci când rețeaua este mică și dacă avem un segment corporativ foarte încărcat, vom fi ajutați (key -u) - căutarea unor gazde unice. De asemenea, adăugăm, la pornirea programului, comutatorul -r, care va afișa contorul de pachete ARP. De fapt, asta e tot. Acum, putem obține o listă a tuturor gazdelor de lucru din segment și să construim o hartă a rețelei.Și în următorul articol, vă voi spune cum să implementați un atac ICMP-inundații (firește, manual) :)).