-sS
(scanare TCP SYN)
Scanarea SYN este opțiunea de scanare implicită și cea mai populară din motive întemeiate. Poate fi efectuată rapid, scanând mii de porturi pe secundă pe o rețea rapidă care nu este împiedicată de firewall-uri restrictive. De asemenea, esterelativ discretă și invizibilă, deoarece nu finalizează niciodată conexiunile TCP. Scanarea SYN funcționează față de orice stivă TCP conformă, în loc să depindă de idiosincrasiile unor platforme specifice, așa cum fac scanările NmapFIN/NULL/Xmas, Maimon și idle. De asemenea, permite o diferențiere clară și fiabilă între stările open
, closed
și filtered
.
Această tehnică este adesea denumită scanare semi-deschisă,deoarece nu se deschide o conexiune TCP completă. Trimiți un pachet SYN,ca și cum ai avea de gând să deschizi o conexiune reală și apoi aștepți arespuns. Un SYN/ACK indică faptul că portul este în ascultare (deschis), în timp ce unRST (resetare) indică faptul că nu este în ascultare. Dacă nu se primește niciun răspuns după mai multe retransmisiuni, portul este marcat ca fiind filtrat. De asemenea, portul este marcat ca filtrat dacă se primește o eroare ICMP unreachableerror (tip 3, cod 0, 1, 2, 3, 9, 10 sau 13). De asemenea, portul este considerat deschis dacă se primește ca răspuns un pachet SYN (fără steagul ACK). Acest lucru se poate datora unei caracteristici TCP extrem de rare, cunoscută sub numele de conexiune deschisă simultan sau conexiune cu handshake divizat (a se vedea https://nmap.org/misc/split-handshake.pdf).
-sT
(scanare de conectare TCP)
Scanarea de conectare TCP este tipul de scanare TCP implicit atunci când scanarea SYN nu este o opțiune. Acesta este cazul când un utilizator nu are privilegii de pachete brute. În loc să scrie pachete neprelucrate, așa cum fac majoritatea celorlalte tipuri de scanare, Nmap cere sistemului operațional subiacent să stabilească o conexiune cu mașina-țintă șiportul prin emiterea apelului de sistem connect
. Acesta este acelaș i apel de sistem de nivel înalt pe care browserele web, clienții P2P ș i cele mai multe alte aplicații de rețea îl folosesc pentru a stabili o conexiune.Face parte dintr-o interfață de programare cunoscută sub numele de Berkeley SocketsAPI. În loc să citească răspunsurile brute ale pachetelor de pe fir, Nmap foloseșteacest API pentru a obține informații despre starea fiecărei încercări de conectare.
Când este disponibilă scanarea SYN, aceasta este de obicei o alegere mai bună. Nma are mai puțin control asupra apelului de nivel înalt connect
decât în cazul pachetelor brute, ceea ce îl face mai puțin eficient. Apelul de sistemcompletează conexiunile la porturile țintă deschise, în loc să efectueze resetarea la jumătatea deschiderii pe care o face scanarea SYN. Nu numai că acest lucru durează mai mult și necesită mai multe pachete pentru a obține aceleași informații, dar este mai probabil ca mașinile-țintă să înregistreze conexiunea. Un IDS decent va detecta oricare dintre acestea, dar majoritatea mașinilor nu au un astfel de sistem de alarmă. Multe servicii de pe un sistem Unix obișnuit vor adăuga o notă la syslog și, uneori, un mesaj de eroare criptic, atunci când Nmap se conectează și apoi închide conexiunea fără a trimite date. Serviciile cu adevărat patetice se blochează atunci când se întâmplă acest lucru, deși acest lucru este neobișnuit. Un administrator care vede o grămadă de încercări de conectare în jurnalele sale de la un singur sistem ar trebui să știe că a fost scanat prin conectare.
-sU
(scanări UDP)
În timp ce cele mai populare servicii de pe Internet rulează prin protocolul TCP, serviciile UDP sunt larg răspândite. DNS, SNMP și DHCP (porturile înregistrate 53, 161/162 și 67/68) sunt trei dintre cele mai comune. Deoarece scanarea UDP este, în general, mai lentă și mai dificilă decât TCP, unii auditori de securitate ignoră aceste porturi. Aceasta este o greșeală, deoarece serviciile UDP exploatabile sunt destul de frecvente, iar atacatorii cu siguranță nu ignoră întregul protocol. Din fericire, Nmap poate ajuta la inventarierea porturilor UDP.
Scanarea UDP este activată cu opțiunea -sU
. Poate fi combinată cu un tip de scanare TCP, cum ar fi scanarea SYN(-sS
), pentru a verifica ambele protocoale în timpul aceleiași runde.
ScanareaUDP funcționează prin trimiterea unui pachet UDP către fiecare port vizat. Pentru unele porturi comune, cum ar fi 53 și 161, se trimite o încărcătură utilă specifică protocolului pentru a crește rata de răspuns, dar pentru majoritatea porturilor, pachetul este gol, cu excepția cazului în care sunt specificate opțiunile --data
,--data-string
sau --data-length
.Dacă se returnează o eroare ICMP port unreachable (tip 3, cod 3), portul este closed
. Alte erori ICMP unreachable (tip 3,codurile 0, 1, 2, 9, 10 sau 13) marchează portul ca fiind filtered
. Ocazional, aservice va răspunde cu un pachet UDP, dovedind că este open
. Dacă nu se primește nici un răspuns după retransmisii, portul este clasificat ca open|filtered
. Acest lucru înseamnă că portul ar putea fi deschis, sau poate că filtrele de pachete blochează comunicarea. Detectarea versiunii(-sV
) poate fi folosită pentru a ajuta la diferențierea porturilor cu adevărat deschise de cele filtrate.
O mare provocare cu scanarea UDP este să o faci rapid.Porturile deschise și filtrate rareori trimit vreun răspuns, lăsând Nmap să se oprească în timp și apoi să efectueze retransmisiuni doar în cazul în care sonda saurăspunsul au fost pierdute. Porturile închise sunt adesea o problemă și mai mare.ele trimit de obicei înapoi o eroare ICMP port unreachable. Dar, spre deosebire de pacheteleRST trimise de porturile TCP închise ca răspuns la o scanare SYN sau de conectare, multe gazde limitează în mod implicit rata mesajelor ICMP port unreachable.Linux și Solaris sunt deosebit de stricte în această privință. De exemplu, kernelulLinux 2.4.20 limitează mesajele de destinație de neatins la unul pe secundă (în net/ipv4/icmp.c
).
Nmap detectează limitarea ratei și încetinește în consecință pentru a evitainundarea rețelei cu pachete inutile pe care mașina țintă le va abandona. Din păcate, o limită în stil Linux de un pachet pe secundăface ca o scanare de 65.536 de porturi să dureze mai mult de 18 ore. Printre ideile pentru a accelera scanările UDP se numără scanarea mai multor gazde în paralel, efectuarea unei scanări rapide doar a porturilor populare mai întâi, scanarea din spatele firewall-ului și utilizarea --host-timeout
pentru a sări peste gazdele lente.
-sY
(SCTP INIT scan)
SCTP este o alternativă relativ nouă la protocoalele TCP și UDP, combinând majoritatea caracteristicilor TCP și UDP și adăugând, de asemenea, caracteristici noi, cum ar fi multi-homing și multi-streaming. Este utilizat în principal pentru serviciile legate de SS7/SIGTRAN, dar are potențialul de a fi utilizat și pentru alte aplicații.Scanarea SCTP INIT este echivalentul SCTP al unei scanări TCP SYN.Poate fi efectuată rapid, scanând mii de porturi pe secundă pe o rețea rapidă care nu este împiedicată de firewall-uri restrictive.Ca și scanarea SYN, scanarea INIT este relativ discretă și invizibilă, deoarece nu finalizează niciodată asociațiile SCTP. De asemenea, permite o diferențiere clară și fiabilă între stările open
,closed
și filtered
.
Această tehnică este adesea denumită scanare semi-deschisă,deoarece nu se deschide o asociere SCTP completă. Trimiteți un INITchunk, ca și cum ați avea de gând să deschideți o asociație reală și apoi așteptați un răspuns. Un chunk INIT-ACK indică faptul că portul este în ascultare (deschis), în timp ce un chunk ABORT indică faptul că nu este în ascultare. În cazul în care nu se primește niciun răspuns după mai multe retransmisiuni, portul este marcat ca fiind filtrat. Portul este, de asemenea, marcat ca filtrat dacă se primește o eroare ICMPunreachable (tip 3, cod 0, 1, 2, 3, 9, 10 sau 13).
-sN
;-sF
;-sX
(scanări TCP NULL, FIN și Xmas)
Aceste trei tipuri de scanare (sunt posibile și mai multe cu opțiunea--scanflags
descrisă în secțiunea următoare) exploatează o lacună subtilă subtilă din TCP RFC pentru a face diferența între porturile open
șiclosed
. Pagina 65 din RFC 793 spune că „dacă starea portului este CLOSED …. un segment de intrare care nu conține un RST determină trimiterea unui RST ca răspuns”. Apoi, la pagina următoare se discută despre pachetele trimise către porturi deschise fără a avea setul de biți SYN, RST sau ACK, precizând că: „este puțin probabil să ajungeți aici, dar dacă o faceți, renunțați la acest segment și întoarceți-vă.”
Când se scanează sisteme conforme cu acest text RFC, orice pachet care nu conține biți SYN, RST sau ACK va avea ca rezultat un RST returnat dacă portul este închis și nici un răspuns dacă portul este deschis. Atâta timp cât niciunul dintre acești trei biți nu este inclus, orice combinație a celorlalți trei (FIN, PSH și URG) este OK. Nmap exploatează acest lucru cu trei tipuri de scanare:
-sN
)
Nu setează niciun bit (antetul TCP flag este 0)
FIN scan (-sF
)
Setează doar bitul TCP FIN.
Xmas scan (-sX
)
Stabilește stegulețele FIN, PSH și URG, luminând pachetul ca un pom de Crăciun.
Aceste trei tipuri de scanare au exact același comportament, cu excepția stegulețelor TCP setate în pachetele sondă. Dacă se primește un pachet RST, portul este considerat closed
, în timp ce lipsa de răspuns înseamnă că este open|filtered
. Portul este marcatfiltered
dacă se primește o eroare ICMP unreachable (tip 3, cod0, 1, 2, 3, 9, 10 sau 13).
Avantajul cheie al acestor tipuri de scanare este că se pot strecura prin anumite firewall-uri non-stateful și routere de filtrare a pachetelor. Un alt avantaj este că aceste tipuri de scanare sunt puțin mai discrete chiar și decât o scanare SYN. Totuși, nu vă bazați pe acest lucru – majoritatea produselor IDS moderne pot fi configurate pentru a le detecta. Marele dezavantaj este că nu toate sistemele respectă RFC 793 întocmai. Un număr de sisteme trimit răspunsuri RST la sonde indiferent dacă portul este deschis sau nu. Acest lucru face ca toate porturile să fie etichetate closed
. Principalele sisteme de operare care fac acest lucru sunt Microsoft Windows, multe dispozitive Cisco, BSDI și IBM OS/400. Totuși, această scanare funcționează împotriva majorității sistemelor bazate pe Unix. Un alt dezavantaj al acestor scanări este că nu pot distinge porturile open
de anumite porturi filtered
, lăsându-vă cu răspunsulopen|filtered
.
-sA
(TCP ACK scan)
Această scanare este diferită de celelalte discutate până acum prin faptul că nu determină niciodată porturile open
(sau chiaropen|filtered
). Este folosită pentru a cartografia seturile de regulifirewall, determinând dacă sunt sau nu stateful sau nu și ce porturi sunt filtrate.
Pachetul sondă de scanare ACK are doar steagul ACK setat (cu excepția cazului în care folosiți --scanflags
). La scanarea sistemelor nefiltrate, porturile open
și closed
vor returna ambele un pachet RST. Nmap le etichetează apoi ca fiindunfiltered
, ceea ce înseamnă că sunt accesibile prin pachetulACK, dar nu se știe dacă sunt open
sauclosed
. Porturile care nu răspund,sau trimit înapoi anumite mesaje de eroare ICMP (tip 3, cod 0, 1, 2, 2, 3, 9, 10 sau 13), sunt etichetate filtered
.
-sW
(TCP Window scan)
Window scan este exact la fel ca și ACK scan, cu excepția faptului că exploatează un detaliu de implementare al anumitor sisteme pentru a diferenția porturile deschise de cele închise, în loc să tipărească întotdeaunaunfiltered
atunci când este returnat un RST. Acest lucru se face prin examinarea câmpului TCP Window din pachetele RST returnate. Pe unele sisteme, porturile deschise utilizează o dimensiune pozitivă a ferestrei (chiar și pentru pachetele RST), în timp ce porturile închise au o fereastră zero. Astfel, în loc să listeze întotdeauna un port ca unfiltered
atunci când primește un RST înapoi, Window scan listează portul ca open
sau closed
dacă valoarea TCP Window din acea resetare este pozitivă sau, respectiv, zero.
Acest scan se bazează pe un detaliu de implementare a unei minorități de sisteme de pe Internet, astfel încât nu puteți avea întotdeauna încredere în el. Sistemele care nu o suportă vor returna de obicei toate porturileclosed
. Desigur, este posibil ca mașina să nu aibă într-adevăr niciun port deschis. Dacă majoritatea porturilor scanate suntclosed
, dar câteva numere de porturi comune (cum ar fi 22,25, 53) sunt filtered
, cel mai probabil sistemul este susceptibil. Ocazional, sistemele vor prezenta chiar și comportamentul exact opus. Dacă scanarea dvs. arată 1.000 de porturi deschise și trei porturi închise sau filtrate, este foarte posibil ca acele trei porturi să fie cele cu adevărat deschise.
-sM
(TCP Maimon scan)
Scanarea Maimon poartă numele descoperitorului său, Uriel Maimon.El a descris tehnica în numărul 49 al revistei Prack Magazine (noiembrie 1996).Nmap, care a inclus această tehnică, a fost lansat două numere mai târziu.Această tehnică este exact la fel ca scanările NULL, FIN și Xmas, cu excepția faptului că sonda este FIN/ACK. În conformitate cu RFC 793 (TCP), un pachet RST ar trebui să fie generat ca răspuns la o astfel de sondă, indiferent dacă portul este deschis sau închis. Cu toate acestea, Uriel a observat că multe sisteme derivate din BSD pur și simplu abandonează pachetul dacă portul este deschis.
--scanflags
(Scanare TCP personalizată)
Utilizatorii cu adevărat avansați ai Nmap nu trebuie să se limiteze la tipurile de scanare oferite. Opțiunea --scanflags
--scanflags
vă permite să vă proiectați propria scanare prin specificarea unor stegulețe TCP arbitrare.Dați frâu liber creativității, evitând în același timp sistemele de detectare a intruziunilor ale căror vânzători pur și simplu au răsfoit pagina de manual Nmap adăugând reguli specifice!
Argumentul --scanflags
poate fi o valoare numerică a stegulețelor, cum ar fi 9 (PSH și FIN), dar folosirea unor nume simbolice este mai ușoară. Pur și simplu amestecați orice combinație de URG
,ACK
, PSH
,RST
, SYN
șiFIN
. De exemplu, --scanflagsURGACKPSHRSTSYNFIN
stabilește totul, deși nu este foarte util pentru scanare. Ordinea în care acestea sunt specificate este irelevantă.
În plus față de specificarea stegulețelor dorite, puteți specifica un tip de scanareTCP (cum ar fi -sA
sau -sF
).Acest tip de bază îi spune lui Nmap cum să interpreteze răspunsurile. De exemplu, o scanare SYN consideră că lipsa răspunsului indică un portfiltered
, în timp ce o scanare FIN tratează același lucru caopen|filtered
. Nmap se va comporta la fel ca în cazul tipului de scanare de bază, cu excepția faptului că va folosi în schimb stegulețele TCP pe care le specificați. Dacă nu specificați un tip de bază, se utilizează scanarea SYN.
-sZ
(Scanare SCTP COOKIE ECHO)
Scanarea SCTP COOKIE ECHO este o scanare SCTP mai avansată. Ea profită de faptul că implementările SCTP ar trebui să abandoneze în tăcere pachetele care conțin bucăți COOKIE ECHO pe porturile deschise, dar să trimită un ABORT dacă portul este închis.Avantajul acestui tip de scanare este că nu este la fel de evidentă ca o scanare INIT. De asemenea, este posibil să existe seturi de reguli de firewall nestatale care să blocheze pachetele INIT, dar nu și pachetele COOKIE ECHO. Nu vă lăsați păcălit să credeți că acest lucru va face invizibilă o scanare de tip aport; un IDS bun va fi capabil să detecteze și scanările SCTPCOOKIE ECHO.Dezavantajul este că scanările SCTP COOKIE ECHO nu pot face diferența între porturile open
și filtered
, lăsându-vă cu starea open|filtered
în ambele cazuri.
-sI
(idle scan)<zombie host>
Această metodă avansată de scanare permite o scanare cu adevărat oarbă a porturilor TCP ale țintei (ceea ce înseamnă că nu sunt trimise pachete către țintă de la adresa dumneavoastră IP reală). În schimb, un atac unic pe canal lateral exploatează generarea previzibilă a secvenței ID de fragmentare IP pe gazda zombi pentru a culege informații despre porturile deschise pe țintă. Sistemele IDS vor afișa scanarea ca provenind de la mașina zombi pe care o specificați (care trebuie să fie activă și să îndeplinească anumite criterii). Detalii complete despre acest tip fascinant de scanare se găsesc în secțiunea intitulată „TCP Idle Scan (-sI
)”.
Pe lângă faptul că este extraordinar de invizibil (datorită naturii sale oarbe), acest tip de scanare permite cartografierea relațiilor de încredere bazate pe IP între mașini. Lista porturilor arată porturile deschise din perspectiva gazdei zombi. Așadar, puteți încerca să scanați o țintă folosind diverși zombi despre care credeți că ar putea fi de încredere (prin intermediul regulilor de filtrare a routerului/pachetelor).
Puteți adăuga două puncte urmate de un număr de port la gazda zombi dacă doriți să sondați un anumit port de pe zombi pentru modificări ale ID-ului IP. În caz contrar, Nmap va utiliza portul pe care îl folosește în mod implicit pentru ping-uri TCP (80).
-sO
(Scanare protocol IP)
Scanarea protocolului IP vă permite să determinați ce protocoale IP(TCP, ICMP, IGMP, etc.) sunt acceptate de mașinile țintă. Aceasta nu este, din punct de vedere tehnic, o scanare a porturilor, deoarece trece prin numere de protocoale IP și nu prin numere de porturi TCP sau UDP. Cu toate acestea, utilizează în continuare opțiunea-p
pentru a selecta numerele de protocol scanate, raportează rezultatele în formatul normal al tabelului de porturi și chiar utilizează același motor de scanare subiacent ca și adevăratele metode de scanare a porturilor. Așadar, este suficient de apropiat de o scanare de porturi pentru a-și găsi locul aici.
Pe lângă faptul că este util în sine, scandalul de protocol demonstrează puterea software-ului open-source. Deși ideea fundamentală este destul de simplă, nu m-am gândit să o adaug și nici nu am primit cereri pentru o astfel de funcționalitate. Apoi, în vara anului 2000, Gerhard Rieger a conceput ideea, a scris un patch excelent care o implementează și a trimis-o pe lista de discuțiiannounce (pe atunci numită nmap-hackers).Am încorporat acel patch în arborele Nmap și am lansat o nouă versiune a doua zi. Puține bucăți de software comercial au utilizatori suficient de entuziaști pentru a proiecta și contribui cu propriile îmbunătățiri!
Scanarea protocolului funcționează în mod similar cu scanarea UDP. În loc să parcurgă câmpul numărului de port al unui pachet UDP, trimite antetele pachetelor IP și parcurge câmpul de opt biți al protocolului IP.Antetele sunt de obicei goale, nu conțin date și nici măcar antetul corespunzător pentru protocolul revendicat. Excepțiile sunt TCP, UDP, ICMP, SCTP și IGMP. Un antet de protocol adecvat pentru acestea este inclus deoarece unele sisteme nu le trimit altfel și pentru că Nmap are deja funcții pentru a le crea. În loc să urmărească mesajele ICMP portunreachable, scanarea protocolului este în căutarea mesajelor ICMPprotocol unreachable. Dacă Nmap primește un răspuns în orice protocol de la gazda țintă, Nmap marchează acel protocol ca fiind open
. O eroare ICMP protocol unreachableerror (tip 3, cod 2) face ca protocolul să fie marcat caclosed
, în timp ce port unreachable (tip 3, cod 3)marchează protocolul open
. Alte erori ICMP unreachable (tip 3, cod0, 1, 9, 10 sau 13) fac ca protocolul să fie marcatfiltered
(deși acestea dovedesc că ICMP esteopen
în același timp). Dacă nu se primește nici un răspunsdupă retransmisii, protocolul este marcatopen|filtered
-b
(FTP bounce scan)<FTP relay host>
O caracteristică interesantă a protocolului FTP (RFC 959) issuport pentru așa-numitele conexiuni FTP proxy. Aceasta permite unui utilizator să se conecteze la un server FTP, apoi să ceară ca fișierele să fie trimise la un server terț. O astfel de caracteristică se pretează la abuzuri pe mai multe planuri,astfel încât majoritatea serverelor au încetat să o mai susțină. Unul dintre abuzurile pe care le permite această funcție este acela de a determina serverul FTP să scaneze porturile altor gazde.Pur și simplu, cereți serverului FTP să trimită un fișier la fiecare port interesant al gazdei vizate, pe rând. Mesajul de eroare va descrie dacă portul este deschis sau nu. Aceasta este o modalitate bună de a ocoli firewall-urile, deoarece serverele FTP organizaționale sunt adesea plasate în locuri în care au mai mult acces la alte gazde interne decât orice gazdă veche de pe Internet. Nmap suportă scanarea FTPbounce cu opțiunea -b
. Aceasta primește un argument de forma<username>
:<password>
@<server>
:<port>
.<Server>
este numele sau adresa IP a unui server FTP avulnerabil. Ca și în cazul unei adrese URL normale, puteți omite<username>
:<password>
,caz în care se folosesc acreditările de autentificare anonimă (utilizator:anonymous
parolă:-wwwuser@
). Numărul portului (și cele două puncte precedente) pot fi de asemenea omise, caz în care se utilizează portul FTP implicit (21) pe<server>
.
Această vulnerabilitate era larg răspândită în 1997, când a fost lansat Nmap, dar a fost în mare parte rezolvată. Serverele vulnerabile sunt încă în jur, așa că merită să încercați atunci când toate celelalte eșuează. Dacă scopul dumneavoastră este să ocoliți un afirewall, scanați rețeaua țintă pentru portul 21 (sau chiar pentru orice serviciu FTP dacă scanați toate porturile cu versiondetection) și utilizați scriptulftp-bounce
NSE. Nmap vă va spune dacă gazda este vulnerabilă sau nu. Dacă încercați doar să vă acoperiți urmele, nu este necesar (și, de fapt, nu ar trebui) să vă limitați la gazdele din rețeaua țintă. Înainte de a începe să scanați adrese de Internet la întâmplare pentru servere FTP vulnerabile, gândiți-vă că administratorii de sistem s-ar putea să nu aprecieze faptul că abuzați de serverele lor în acest mod.
.