
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.
|
|