Sunteți pe pagina 1din 5

Descoperirea hosturilor

Nota: Vom imprumuta din limba engleza termenul de host. Acesta se refera la orice element din retea
care comunica sau poate comunica. Aceste elemente pot fi statii de lucru, servere, routere, imprimante
de retea, etc. Unul din primii pasi ai descoperirii elementelor din retea este reducerea numarului
(adesea urias) de IP intr-o lista de hosturi active sau interesante. Scanarea fiecarui port de pe fiecare IP
este un proces lent si de obicei inutil. Desigur, ce transforma un host intr-unul interesant depinde in
mare parte de scopul scanarii. Administratorii de retea ar putea fi interesati doar de calculatoarele ce
ruleaza anumite servicii, in timp ce auditorii de securitate pot fi interesati de toate elementele ce poseda
o adresa IP. Unui administrator ii poate fi suficient un simplu pachet ping ICMP pentru localizarea
calculatoarelor din reteaua interna, in timp ce un auditor extern poate folosi o multitudine de probe in
incercarea de a scapa de restrictiile firewallului.

Deoarece necesitatile in vederea descoperirii hosturilor sunt atat de diverse , Nmap ofera o varietate
mare de optiuni de personalizare a tehnicilor folosite. Descoperirea hosturilor este adesea numita
scanare ping, dar trece cu mult de simplul stadiu al pachetelor ICMP care solicita un raspuns asociate
omniprezentului instrument pingUtilizatorii pot sari de pasul care implica pingul cu o scanare de tip
lista ( -sL) sau dezactivand pingul ( -P0), sau angrenand alte combinatii arbitrare de probe multiport
TCP SYN/ACK, UDP si ICMP. Scopul acestor probe este sa solicite raspunsuri care sa demonstreze
daca o adresa IP este cu adevarat activa (este folosita de un dispozitiv din retea). In multe retele, doar
un mic procentaj de adrese IP sunt active la un moment dat. Acest lucru este in mod special adevarat
intr-un spatiu de adrese rezervat conform binecuvantatului RFC1918 cum ar fi 10.0.0.0/8. Aceasta retea
are 16 milioane de IPuri, dar am vazut ca sunt folosite de companii cu mai putin de o mie de
calculatoare. Descoperirea hosturilor poate gasi acele masini risipite in marea de adrese IP.

Daca nu sunt furnizate optiuni de descoperire a hosturilor, Nmap trimite un pachet TCP ACK destinat
portului 80 si un pachet de interogare ICMP cu solicitare de raspuns la fiecare masina tinta. O exceptie
la acestea este ca scanarea ARP este folosita pentru orice tinta dintr-o retea locala. Pentru utilizatori
neprivilegiati cu conturi shell pe sisteme UNIX, sunt trimise pachete SYN in locul celor ack folosind
apelul de sistem connect(). Aceste optiuni implicite sunt echivalente cu -PA -PE. Descoperirea
hosturilor este de obicei suficienta pentru scanarea retelelor locale, dar un set mult mai cuprinzator de
probe pentru descoperire este recomandat in auditul de securitate.

Optiunea -P*(care selecteaza tipul pingului) poate fi combinata. Puteti mari sansele de penetrare a unor
firewalluri stricte trimitand mai multe probe folosind diferite porturi/flaguri (indicatori din pachetele)
TCP si coduri ICMP. Notati de asemenea ca descoperirea ARP ( -PR) este executata implicit impotriva
tintelor dintr-o retea locala chiar daca specificati alta optiune -P*, deoarece este aproape intotdeauna
mai rapida si mai eficienta.

Urmatoarele optiuni controleaza descoperirea hosturilor.


-sL(Scanarea de tip lista)

Scanarea de tip lista este o forma degenerata de descoperire a hosturilor care listeaza fiecare host al
retelei specificate, fara a trimite nici un pachet tintelor. In mod implicit, Nmap realizeaza totusi o
rezolutie inversa DNS pentru a afla si numele tintelor. Adesea este surprinzator cate informatii utile ne
pot oferi simplele nume ale hosturilor. De exemplu, fw.chi.playboy.comeste firewallul biroului din
Chicago al Playboy Enterprises. Nmap raporteaza numarul total de adrese IP la sfarsit. Scanarea de tip
lista este o buna verificare a faptului ca aveti adresele IP corecte pentru tinte. Daca hosturile au nume
pe care nu le recunoasteti, este bine sa investigati in profunzime pentru a nu scana reteaua unei alte
companii.

Din moment ce ideea este de afisa o lista cu tinte, optiunile pentru un nivel mai inalt de functionalitate
cum ar fi scanare de porturi, detectia sistemului de operare sau scanarea ping nu pot fi combinate cu
aceasta. Daca doriti dezactivarea scanarea ping si in acelasi timp sa executati tehnicile corespunzatoare
nivelului inalt de functionalitate, cititi paragraful destinat optiunii -P0.
-sP(Scanare ping)

Aceasta optiune spune Nmapului sa realizeze numaio scanare ping (descoperirea hosturilor) si apoi sa
afiseze hosturile disponibile care raspund la scanare. Nici un alt fel de test (cum ar fi scanarea de
porturi sau detectia sistemului de operare) nu va fi realizat. Acest pas este mai intruziv decat scanarea
de tip lista si poate fi folosita adesea in acelasi scop. Permite o descoperire a tintelor din retea fara a
atrage prea mult atentia. Cunoscand cate hosturi sunt active este o informatie mult mai valoroasa unui
atacator decat simpla lista furizata de scanarea de tip lista a fiecarei adrese IP si a numelor hosturilor.

Administratorii de sistem gasesc adesea aceasta optiune pretioasa ca atare. Poate fi usor utilizat pentru
numararea masinilor disponibile intr-o retea sau pentru monitorizarea disponibilitatii serverelor. Adesea
este denumita maturare ping si este mai de incredere decat pingul asupra adresei de broadcast deoarece
multe hosturi nu raspund la solicitarile de broadcast.

Optiunea -sPtrimite un pachet ICMP cu solicitare de raspuns si un pachet TCP la portul 80 in mod
implicit. Cand se executa de catre un utilizator neprivilegiat, un pachet SYN este trimis (folosin apelul
connect()) la portul 80 al tintei. Cand un utilizator privilegiat incearca sa scaneze tinte dintr-o retea
locala, solicitari ARP ( -PR) sunt utilizate, doar daca --send-ip(adresa IP de expediere) a fost specificat.
Optiunea -sPpoate fi combinata cu oricare dintre tipurile de probe de descoperire (optiunile -P*,
exluzand -P0) pentru o mai mare flexibilitate. Daca oricare dintre tipurile de probe si optiuni de porturi
sunt utilizate, se renunta la probele implicite (ACK si ICMP cu solicitare de raspuns). Cand firewalluri
stricte sunt plasate intre calculatorul sursa care ruleaza Nmap si reteaua tinta, folosirea acelor tehnici
avansate este recomandata. Altfel, hosturi pot ramane nedescoperite cand firewallul executa comanda
drop (pur si simplu ignora pachetele) la probe sau la raspunsuri.
-P0(Fara ping)

Aceasta optiune sare complet peste faza de descoperire. In mod normal, Nmap foloseste aceasta faza
pentru a determina masinile active pentru scanarea avansata. Implicit, Nmap realizeaza scanarea
avansata cum ar fi scanarea de porturi, detectia versiunii si a sistemului de operare doar pentru hosturile
gasite active. Dezactivarea descoperirii hosturilor cu -P0face ca Nmap sa incerce tehnicile avansate de
scanare pentru fiecareadresa IP specificata ca tinta. Asadar, daca spatiul unei clase B (/16) este
specificata in linia de comanda, toate cele 65,536 de IP vor fi scanate cu tehnicile avansate. Cel de-al
doilea caracter din optiunea -P0este un zero si nu litera O. Descoperirea obisnuita a hosturilor este
sarita execucandu-se o scanare de tip lista, dar in loc sa se opreasca si sa afiseze lista de tinte, Nmap
continua sa realizeze cererile din linia de comanda ca si cum fiecare adresa IP ar fi activa.
-PS [listadeporturi](Ping TCP SYN)

Aceasta optiune trimite un pachet TCP gol cu flagul SYN setat. Portul de destinatie implicit este 80
(configurabil la compilare prin schimbarea DEFAULT_TCP_PROBE_PORT in nmap.h), dar un alt port
poate fi specificat ca parametru. Chiar o lista separata prin virgula de porturi poate fi specificata (de
exemplu -PS22,23,25,80,113,1050,35000),caz in care probele vor fi trimise la fiecare port in paralel.

Flagul SYN sugereaza tintei ca dorim sa stabilim o conexiune. In mod normal portul destinatie va fi
inchis si un pachet RST (de resetare) este trimis inapoi. Daca se intampla ca portul sa fie deschis, tinta
va face cel de-al doilea pas dintr-un 3-way-handshake (stabilirea unei conexiuni in trei pasi)
raspunzand cu un pachet TCP SYN/ACK. Masina care ruleaza nmap va inchide apoi conexiunea
raspunzand cu un pachet RST in loc sa trimita pachetul ACK care ar completa 3-way-handshakeul si ar
stabili o conexiune completa. Pachetul RST este trimis de kernelul sistemului de operare al masinii care
ruleaza Nmap ca raspuns la pachetul SYN/ACK neasteptat, si nu de catre Nmap ca atare.

Nmapului nu ii pasa daca portul este deschis sau inchis. Fie ca este RST sau SYN/ACK dupa cum s-a
vazut anterior, raspunsul anunta Nmapul ca hostul este activ si raspunde la probe

Pe masinile UNIX, numai utilizatorii privilegiati rootsunt capabili sa trimita si sa primeasca pachete
TCP in forma bruta. Pentru utilizatorii neprivilegiati, un ocolis este automat pus in functiune si implica
apelul de sistem connect() initiat impotriva fiecarui port tinta. Acesta are ca efect trimiterea unui pachet
SYN catre tinta, intr-o incercare de a stabili conexiunea. Daca connect() returneaza o valoare care
indica succesul operatiunii sau un raspuns ECONNREFUSED (conexiune refuzata), inseamna ca
nivelele inferioare ale stivei TCP au primit un SYN/ACK sau RST iar hostul este marcat ca fiind
disponibil. Daca tentativa de conexiune este lasata sa astepte un timp mai mare decat timeoutul (timpul
maxim in care se asteapta un raspuns), hostul este marcat ca indisponibil. Acest ocolis este utilizat si
pentru conexiunile IPv6, deoarece constructia pachetelor brute IPv6 nu este inca suportata de Nmap.
-PA [lista_de_porturi](Ping TCP ACK)

Pingul TCP ACK este similar cu proaspat discutatul ping SYN. Diferenta, dupa cum probabil ati ghicit,
este ca flagul TCP ACK este setat in locul celui SYN. Un astfel de pachet ACK pretinde ca transporta
date in cadrul unei conexiuni ACK deja stabilite, dar nu exista nici o astfel de conexiune. Asadar tintele
trebuie sa raspunda intotdeauna cu un pachet RST, dezvaluindu-si existenta in cadrul acestui proces.

Optiunea -PAfoloseste acelasi port implicit ca probele SYN si de asemenea poate prelua o lista de
porturi destinatie in acelasi format. Daca un utilizator neprivilegiat incearca aceasta optiune, sau o tinta
IPv6 este specificata, ocolisul connect() discutat anterior este utilizat. Acest ocolis este imperfect
deoarece connect() trimite de fapt un pachet SYN in locul unuia ACK.

Motivul oferirii ambelor probe de ping SYN si ACK este de a maximiza sansele de trecere printr-un
firewall. Multi administratori configureaza routerele si alte firewalluri simple pentru a bloca pachetele
SYN cu exceptia acelora destinate serviciilor publice cum ar fi serverul web sau serverul de mail al
companiei. Acest lucru previne realizarea altor conexiuni catre reteaua organizatiei, in timp ce permite
utilizatorilor sa realizeze neobstructionati conexiuni catre Internet. Aceasta abordare non-statefull sau
stateless (nu se analizeaza ACK) utilizeaza putine resurse ale firewallului sau routerului si este
suportata intr-un procent mare de filtrele hardware sau software. Firewallul software din Linux
Netfilter/iptables ofera o optiune convenabila --synpentru implementarea acestei abordari stateless.
Cand firewalluri stateless ca acestea sunt in functiune, probele ping SYN ( -PS) vor fi mai mult ca sigur
blocate in drumul lor catre porturi tinta inchise. In aceste cazuri, probele ACK stralucesc deoarece trec
cu usurinta de aceste reguli.

Alt tip comun de firewalluri folosesc reguli statefull care ignora pachetele ce nu sunt asteptate. Aceasta
optiune a fost initial gasita doar in firewallurile high-end, dar a devenit mult mai comuna de-a lungul
timpului. In linux, sistemul Netfilter/iptables suporta aceasta abordare prin optiunea --state, care
catalogheaza pachetele in functie de starea conexiunii. O proba SYN este mai probabil sa functioneze
impotriva unui astfel de sistem din moment ce pachetele neasteptate sunt in general recunoscute ca
fiind simulate si ignorate. O solutie la aceasta dilema este trimiterea ambelor probe, SYN si ACK,
specificand -PSsi -PA.
-PU [lista_de_porturi](Ping UDP)

Alta optiune de descoperire a hosturilor este pingul UDP, care trimite un pachet gol (doar daca optiunea
--data-lengthnu este specificata) UDP la portul specificat. Lista de porturi are acelasi format cu cel
discutat anterior la optiunile -PSsi -PA. daca nici un port nu este specificat, implicit este utilizat 31338.
Aceasta valoare implicita poate fi configurata la compilare schimband DEFAULT_PROBE_PORT in
nmap.h. Un port necomun este folosit implicit deoarece trimiterea unui pachet la un port deschis nu
este de dorit pentru acest tip de scanare.

Dupa trimiterea probei catre un port inchis al tintei, proba UDP trebuie sa obtina un pachet ICMP de
port indisponibil. Acest lucru semnalizeaza Nmapul ca masina este activa si disponibila. Multe alte
tipuri de erori ICMP, cum ar fi cele de host/retea ce nu pot fi contactate sau TTL (time to live = timp de
viata; timpul maxim admis pentru asteptarea raspunsului) depasit sunt indicatori al unui host inactiv sau
care nu poate fi contactat. Lipsa unui raspuns este interpretata la fel. Daca un port deschis este nimerit
de pachetul de proba, multe servicii vor ignora pachetul si nu vor returna nici un raspuns. De aceea
portul de proba este 31338, care are o probabilitate mare sa nu fie utilizat. Cateva servicii vor raspunde
totusi la un pachet UDP gol, dezvaluind in acest fel Nmapului faptul ca masina este disponibila.

Principalul avantaj al acestui tip de scanare este ca poate trece de firewallurile si filtrele care
monitorizeaza doar traficul TCP. De exemplu, am avut o data un router wireless Linksys BEFW11S4.
Interfata externa a acestui dispozitiv filtra in mod implicit toate porturile TCP, dar probele UDP puteau
totusi sa obtina mesajele de port indisponibil si in felul acesta sa arate starea hostului.
-PE; -PP; -PM(Tipuri de ping ICMP)

Pe langa tipurile de descoperire TCP si UDP uzuale discutate anterior, Nmap poate trimite pachete
standard prin intermediul omniprezentului ping. Nmap un pachet ICMP de tipul 8 (solicitare de
raspuns) catre adresa IP tinta, asteptand un pachet de tip 0 (raspuns) in schimb de la hosturile
disponibile. Din pacate pentru exploratorii de retele, in zilele noastre multe hosturi si firewalluri
blocheaza aceste pachete, in loc sa raspunda in conformitate cu RFC1122. Din acest motiv scanarile
ICMP simple sau rareori de incredere impotriva unor tinte necunoscute din Internet. Dar pentru
administratorii de sistem care monitorizeaza o retea interna, ea poate fi o abordare practica si eficienta.
Folositi optiunea -PEpentru a activa acest comportament de solicitare a raspunsului.

Cu toate ca cererile de raspuns ICMP sunt standard, Nmap nu se opreste aici. Standardul ICMP
( RFC792) specifica de asemenea solicitarea amprentei de timp, a informatiilor si a mastii de retea
corespunzatoare codurilor 13,15 si 17. Aceste solicitari au ca scop aflarea de informatii precum
amprenta de timp sau masca de retea dar pot fi usor folosite si la descoperirea hosturilor. Un sistem
care raspunde este disponibil. Nmap nu implementeaza inca solicitarea de informatii (15) deoarece
acestea nu beneficiaza de o implementare la nivel larg. RFC 1122 insista ca “un host NU TREBUIE sa
implmenteze aceste mesaje”. Solicitarile de amprenta de timp si masca de retea pot fi trimise cu
ajutorul optiunilor -PP, respectiv -PM. Un raspuns amprenta de timp (ICMP cod 14) sau un raspuns
masca de retea (cod 18) dezvaluie un host disponibil. Aceste doua interogari pot fi de folos cand
administratorul de retea blocheaza pingul ICMP standard uitand faptul ca si celelalte solicitari ICMP
pot fi folosite in acelasi scop.
-PR(Ping ARP)

Unul dintre cele mai comune scenarii de utilizare ale Nmapului o reprezinta scanarea unei intregi retele
locale (LAN). In multe LANuri, in special in cele care folosesc spatiul privat de adrese specificat in
RFC1918, mare majoritate a adreselor IP nu sunt utilizate la un moment dat. Cand Nmap incearca sa
trimita un pachet ICMP solicitand un raspuns, sistemul de operare trebuie sa determine adresa de
destinatie hardware (ARP) corespunzatoare adresei tinta IP astfel incat sa poata adresa in mod corect
frameul ethernet. Este adesea un proces lent, din moment ce sistemele de operare nu au fost proiectate
sa realizeze milioane de solicitari ARP catre hosturi indisponibile intr-o peioada foarte scurta de timp.

Scanarea ARP pune Nmapul si algoritmii lui optimizati in functiune pentru a realiza solicitarile ARP. Si
daca primeste un raspuns, Nmap nici nu mai ia in in considerare pingurile bazate pe IP din moment ce
stie deja ca hostul este activ. Acest lucru face scanarea ARP mult mai rapida si mai corecta decat
scanarile bazate pe IP. Asadar este realizata implicit cand Nmapul detecteaza faptul ca adresele scanate
fac parte dintr-un LAN. Chiar daca tipuri diferite de ping (cum ar fi optiunea -PEsau -PS) sunt
specificate, Nmap foloseste ARP in locul lor pentru orice adresa din acelasi LAN cu masina care
ruleaza Nmap. Daca sunteti sigur ca nu doriti scanare ARP, specificati --send-ip.
-n(Nu se realizeaza rezolutia DNS)

Transmite Nmapului ca niciodatasa nu realizeze rezolutia inversa DNS pentru IPurile active gasite. Din
moment ce DNS este adesea lent, aceasta optiune poate mari viteza de scanare.
-R(Rezolutie DNS pentru toate tintele)

Transmite Nmapului ca intotdeaunasa realizeze rezolutia DNS pentru IPurile tinta. In mod normal acest
lucru este realizat cand o masina este gasita activa.
--system_dns(Foloseste DNSul sistemului de operare)

Implicit, Nmap rezolva adresele IP prin trimiterea de cereri la DNSurile configurate pe sistem si
asteapta apoi raspunsuri. Multe solicitari (adesea foarte multe) sunt realizate in paralel pentru o
performanta crescuta. Specificati aceasta optiune daca doriti sa folositi DNSul sistemului de operare
(cate un IP o data prin intermediul apelului getnameinfo()). Aceasta optiune este lenta si rareori
folositoare. O putei folosi in cazul in care exista o problema in codul DNS al Nmapului – va rugam sa
ne contactati in acest caz. DNSul sistemului este intotdeauna folosit pentru scanarile IPv6.