Un tutorial rapid de scanare a porturilor
Unul dintre obiectivele mele în dezvoltarea Nmap este de a menține simple cele mai comune utilizări, păstrând în același timp flexibilitatea pentru scanări personalizate și avansate. Acest lucru este realizat cu interfața liniei de comandă prin oferirea a zeci de opțiuni, dar alegerea unor valori implicite sănătoase atunci când acestea nu sunt specificate. Un începător poate începe cu o comandă atât de simplă precumnmap <target>
.Între timp, utilizatorii avansați specifică uneori atât de multe opțiuni încât linia lor terminală se înfășoară.
Un echilibru similar trebuie găsit cu ieșirea comenzilor. Cele mai importante rezultate ar trebui să iasă în evidență chiar și pentru utilizatorul ocazional care nici măcar nu a citit pagina man. Cu toate acestea, ieșirea ar trebui să fie suficient de cuprinzătoare și concisă pentru a se potrivi testelor de penetrare profesionale care rulează Nmap împotriva a mii de mașini zilnic. Utilizatorii suficient de inteligenți pentru a citi această carte sau codul sursă Nmap beneficiază de un control mai mare al scanerului și de o înțelegere a ceea ce înseamnă cu adevărat rezultatul Nmap.
Acest tutorial demonstrează câteva scenarii comune de scanare a porturilor Nmap și explică rezultatul. Mai degrabă decât să încerce să devină cuprinzător, scopul este pur și simplu de a familiariza noii utilizatori suficient de bine pentru a înțelege restul acestui capitol.
Cea mai simplă comandă Nmap este doar nmap de sine stătător. Aceasta tipărește o foaie de ieftinire a opțiunilor și sintaxei comune Nmap.O comandă mai interesantă este nmap<target>
, care face următoarele:
-
Converte
<target>
dintr-un nume de gazdă într-o adresă IPv4 folosind DNS. Dacă este specificată o adresă IP în loc de un nume de gazdă, această căutare este omisă. -
Pestează gazda, în mod implicit cu un pachet de cerere de ecou ICMP și un pachet TCP ACK la portul 80, pentru a determina dacă este activă și funcționează. Dacă nu, Nmap raportează acest fapt și iese. Aș fi putut specifica
-Pn
pentru a sări peste acest test. Consultați Capitolul 3, Descoperirea gazdelor („Scanare Ping”). -
Convertește adresa IP țintă înapoi în nume folosind o interogare reverse-DNS. Din cauza modului în care funcționează DNS, este posibil ca numele inversat să nu fie același cu cel
<target>
specificat pe linia de comandă. Această interogare poate fi omisă cu opțiunea-n
pentru a îmbunătăți viteza și discreția. -
Lansează o scanare a porturilor TCP a celor mai populare 1.000 de porturi enumerate în
nmap-services
. De obicei se folosește o scanare invizibilă SYN, dar scanarea connect este înlocuită în locul acesteia pentru utilizatorii Unix non-root care nu au privilegiile necesare pentru a trimite pachete brute. -
Imprimă rezultatele pe ieșirea standard în format normal, lizibil pentru oameni, și iese. Pot fi specificate și alte formate de ieșire și locații (fișiere), așa cum este descris în Capitolul 13, Formate de ieșire Nmap. Exemplul 4.2 afișează rezultatele atunci când scanme.nmap.org este utilizat ca
<target>
.
Exemplu 4.2. Scanare simplă: nmap scanme.nmap.org
# Starting Nmap ( http://nmap.org )Nmap scan report for scanme.nmap.org (64.13.134.52)Not shown: 994 filtered portsPORT STATE SERVICE22/tcp open ssh25/tcp closed smtp53/tcp open domain70/tcp closed gopher80/tcp open http113/tcp closed authNmap done: 1 IP address (1 host up) scanned in 4.99 seconds
Prima linie de ieșire dinExemplul 4.2 oferă pur și simplu URL-ul pentru descărcarea Nmap. În mod normal, sunt furnizate și ora la care a început Nmap și numărul versiunii, deși acestea au fost în general eliminate din această carte din motive de consecvență și pentru a se evita formarea de linii.
Linia următoare furnizează adresa IP țintă (IPv4 în acest caz) și numele DNS invers (cunoscut și sub numele de înregistrare PTR), dacă este disponibil. Nmap promite să arate „porturile interesante”, deși toate porturile scanate sunt luate în considerare. Porturile considerate cele mai interesante pentru că sunt deschise sau într-o stare rar întâlnită pentru gazda respectivă sunt prezentate individual. Atunci când mai multe porturi se află într-o singură stare nu deschis, acestea sunt considerate o stare implicită și sunt agregate pe o singură linie pentru a evita diluarea rezultatelor cu mii de intrări neinteresante. În acest caz, Nmap notează că 994 de porturi sunt filtrate.
Tabloul porturilor interesante vine în continuare și oferă rezultatele scanării cheilor. Coloanele variază în funcție de opțiunile folosite, dar înacest caz furnizează numărul portului și protocolul, starea și serviciulprotocol pentru fiecare port. Serviciul de aici este doar o presupunere făcută prin căutarea portului din nmap-services
. Serviciul ar fi listat ca unknown
dacă vreunul dintre porturi nu ar avea un nume înregistrat în acest fișier. Trei dintre aceste porturi sunt deschise și trei sunt închise.
În cele din urmă, Nmap raportează câteva statistici cronologice de bază înainte de a ieși.Aceste statistici sunt numărul de ținte specificate, numărul de ținte despre care scanarea ping a constatat că sunt active și timpul total necesar.
În timp ce această comandă simplă este adesea tot ce este necesar, utilizatorii avansați merg adesea mult mai departe. În exemplul 4.3, scanarea este modificată cu patru opțiuni. -p0-
îi cere lui Nmap să scaneze fiecare portTCP posibil, -v
îi cere lui Nmap să fie verbos în această privință,-A
activează testele agresive, cum ar fi detectarea sistemului de operare la distanță, detectarea serviciului/versiunii și Nmap Scripting Engine(NSE). În cele din urmă, -T4
activează o politică de sincronizare mai agresivă pentru a accelera scanarea.
Exemplu 4.3. Mai complex: nmap -p0- -v -A -T4 scanme.nmap.org
# Starting Nmap ( http://nmap.org )Completed Ping Scan at 00:03, 0.01s elapsed (1 total hosts)Scanning scanme.nmap.org (64.13.134.52) Discovered open port 22/tcp on 64.13.134.52Discovered open port 53/tcp on 64.13.134.52Discovered open port 80/tcp on 64.13.134.52SYN Stealth Scan Timing: About 6.20% done; ETC: 00:11 (0:07:33 remaining)Completed SYN Stealth Scan at 00:10, 463.55s elapsed (65536 total ports)Completed Service scan at 00:10, 6.03s elapsed (3 services on 1 host)Initiating OS detection (try #1) against scanme.nmap.org (64.13.134.52)Initiating Traceroute at 00:1064.13.134.52: guessing hop distance at 9Completed SCRIPT ENGINE at 00:10, 4.04s elapsedHost scanme.nmap.org (64.13.134.52) appears to be up ... good.Nmap scan report for scanme.nmap.org (64.13.134.52)Not shown: 65530 filtered portsPORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 4.3 (protocol 2.0)25/tcp closed smtp53/tcp open domain ISC BIND 9.3.470/tcp closed gopher80/tcp open http Apache httpd 2.2.2 ((Fedora))|_HTML title: Go ahead and ScanMe!113/tcp closed authDevice type: general purposeRunning: Linux 2.6.XOS details: Linux 2.6.20-1 (Fedora Core 5)Uptime guess: 2.457 days (since Thu Sep 18 13:13:24 2008)TCP Sequence Prediction: Difficulty=204 (Good luck!)IP ID Sequence Generation: All zerosTRACEROUTE (using port 80/tcp)HOP RTT ADDRESS9 10.36 metro0.sv.svcolo.com (208.185.168.173)10 10.29 scanme.nmap.org (64.13.134.52)Nmap done: 1 IP address (1 host up) scanned in 477.23 seconds Raw packets sent: 131432 (5.783MB) | Rcvd: 359 (14.964KB)
Nmap a furnizat cu siguranță verbozitatea solicitată în Exemplul 4.3! Din fericire, rezultatul suplimentar este ușor de înțeles. Primele 13 linii noi sunt informații de execuție care îi permit utilizatorului să știe ce se întâmplă în timp ce se uită cu nerăbdare la terminal, sperând la vești bune. Ceea ce reprezintă o veste bună depinde de faptul dacă este un administrator de sistem care trebuie să rezolve probleme, un pen-tester care are nevoie de probleme pe care să le raporteze sau un cracker cu pălărie neagră care încearcă să le exploateze. Aproximativ o duzină de rânduri similare au fost eliminate pentru a fi mai scurte. Liniile „discovered open port” (porturi deschise descoperite) oferă o notificare pe parcurs a porturilor deschise, astfel încât ea poate începe să le bată înainte ca scanarea să se termine. Linia „Scan timing” oferă o estimare a duratei de finalizare a scanării, astfel încât să știe dacă trebuie să se uite în continuare la ecran sau să ia masa de prânz. Deoarece condițiile de rețea (latență, congestie, lățime de bandă etc.) și regulile de filtrare a pachetelor variază atât de mult, aceleași opțiuni de scanare pot dura 30 de secunde pentru a fi finalizate împotriva unei gazde și 45 de minute împotriva alteia. Dacă doriți o estimare a timpului curent în timpul scanării, trebuie doar să apăsațienter.
Tabloul de porturi nu prezintă porturi noi. Toate porturile suplimentare scanate sunt în stare filtrată, ridicând totalul porturilor filtrate de la 994 la 65.530. Deși nu există porturi noi detaliate, intrările s-au schimbat. O nouă coloană VERSION
oferă numele aplicației și detalii despre versiunea serviciului de ascultare. Acest lucru provine din detectarea serviciilor, una dintre caracteristicile activate de opțiunea -A
.O altă caracteristică a detecției serviciilor este că toateprotocoalele serviciilor din coloana SERVICE
au fost de fapt verificate. În scanarea anterioară, acestea se bazau pe euristica relativ firavă a unei căutări a numărului de port nmap-services
.Această căutare în tabel s-a întâmplat să fie corectă de data aceasta, dar nu va fi întotdeauna așa.
O altă caracteristică adăugată de -A
este NmapScripting Engine, care este discutată în profunzime în Capitolul 9, Nmap Scripting Engine. Singurul script prezentat aici este HTMLtitle
. Există zeci de alte scripturi, dar niciunul nu a găsit o ieșire utilă pentru această mașină. Rezultateletraceroute au fost, de asemenea, adăugate de -A
. Această opțiune este mai eficientă și mai puternică decât majoritatea programelor de traceroute, deoarece sondele sunt efectuate înparalel și Nmap folosește rezultatele scanării pentru a determina un tip de sondă favorabil (pachete TCP către portul 80 în acest caz).
Majoritatea liniilor noi rămase provin de la detectarea sistemului de operare (activată și ea de -A
), care este discutată în profunzime înCapitolul 8, Remote OS Detection. Ultima linie arată că tot acest extrainfo a avut un preț – scanarea a durat de aproape 100 de ori mai mult decâtExemplul 4.2, „Scanare simplă: nmap scanme.nmap.org” pentru a se finaliza (477secunde față de 5).
.