Nmap: un „instrument Hacker” pentru profesioniștii din domeniul securității
de Justin Hutchens
noțiunea de „hacker etic” a fost întotdeauna una ironică. Tendințele în curs de dezvoltare ale hacking-ului etic și securității ofensive au transformat industria securității informațiilor într-una dintre cele mai Auto-perpetuante industrii din lume.
software-ul și instrumentele care sunt utilizate pentru a securiza activele informaționale vulnerabile sunt aceleași instrumente care pot fi utilizate pentru a le exploata. Poate că e invers. Poate că instrumentele care au fost create cu singurul scop de exploatare a activelor informaționale sunt acum utilizate pentru a le proteja. Presupun că aceasta este o dezbatere care ar putea continua pentru totdeauna și este într-adevăr doar un alt exemplu de „ce a venit mai întâi…Puiul sau oul?”
scopul acestui eseu nu este de a discuta problema filosofică a intenției. Intențiile mele sunt mai modeste. Încerc doar să justific importanța unui instrument care a fost etichetat în mod constant ca software de hacking rău intenționat. Instrumentul la care mă refer este Network Mapper sau nmap pe scurt. Fie ca sunteti un agent nebun care incita la revolutia globala sau un profesionist in securitatea retelei (speram ca acesta din urma, mai degraba decat primul), nmap ar trebui sa aiba un loc permanent in toolkit-ul dumneavoastra. Poate că, în loc să aruncăm critici asupra unui instrument de rețea extrem de funcțional, ar trebui să-i responsabilizăm pe indivizi pentru acțiunile lor și să reflectăm asupra binecunoscutului avertisment Benjamin Parker…”cu o mare putere, vine o mare responsabilitate.”În ciuda unor afirmații contrare, nmap nu este un software rău intenționat. Și cred că singurul motiv pentru care este adesea etichetat ca atare este datorită listei sale impresionante de capabilități. In ciuda potentialului sau de a face rau, nmap poate juca cu siguranta un rol important in securizarea unei infrastructuri de retea intr-un mediu profesional.
Nmap a evoluat constant de-a lungul anilor dintr-un utilitar simplu de scanare intr-o platforma completa de testare a penetrarii. Poate fi utilizat în fiecare etapă a procesului de audit de securitate, pentru a include descoperirea rețelei, scanarea porturilor, enumerarea serviciilor, cartografierea vulnerabilităților și chiar exploatarea. De-a lungul acestui articol, voi discuta despre capabilitățile nmap, deoarece acestea se referă la fiecare pas în procesul de testare a penetrării.
instalare și pregătire
evident, înainte de a utiliza nmap, este important să aveți o versiune funcțională instalată pe sistemul pe care îl utilizați. În mod implicit, nmap este deja instalat pe majoritatea sistemelor de operare de testare a penetrării și de securitate a rețelei, cum ar fi Kali-Linux, Backtrack, abil, Node-Zero, Security Onion și NST. Cu toate acestea, poate fi încărcat și pe aproape orice platformă la alegere. Nmap poate fi instalat cu ușurință pe toate sistemele de operare utilizate în mod obișnuit pentru a include Windows, Linux și OSX. Există, de asemenea, documentație disponibilă pentru instalarea pe platforme mai obscure pentru a include BSD, Solaris, AIX și AmigaOS. Pachetele de instalare și instrucțiunile privind modul de efectuare a instalării pe oricare dintre aceste sisteme pot fi găsite la http://nmap.org/book/install.html.
Zenmap – interfață grafică
în plus față de interfața tradițională de linie de comandă pentru Nmap, există și o interfață grafică front-end numită Zenmap. Zenmap este, de asemenea, integrat în multe dintre diferitele platforme de testare a penetrării discutate anterior. Cu toate acestea, nu este instalat implicit în Kali-Linux (platforma pe care o voi folosi pentru acest tutorial). Din fericire, se află în depozitul de instalare și poate fi ușor instalat cu o singură comandă:
apt-get install zenmap
interfața point-and-click a Zenmap nu numai că eficientizează ceea ce altfel ar necesita comenzi complicate, dar poate fi și un instrument extrem de util pentru a învăța cum să folosești nmap. Folosește ‘profiluri’ pentru a salva configurațiile de scanare utilizate în mod obișnuit pentru modificări și/sau utilizare ulterioară. Aruncați o privire la imaginea interfeței Zenmap care este furnizată în Figura 1 și vom aborda pe scurt fiecare dintre componente.
Figura 1. Interfață grafică Zenmap
prima componentă este câmpul țintă (Figura 1. A). Acest câmp este locul în care puteți specifica sistemele la distanță împotriva cărora doriți să rulați o Scanare. Puteți introduce o singură adresă IP (de exemplu, 192.168.1.1), puteți introduce o gamă secvențială de adrese IP (de exemplu, 192.168.1.0-255) sau puteți utiliza notația CIDR pentru a specifica o subrețea dorită (de exemplu, 192.168.1.0/24). A doua componentă este câmpul profil (Figura 1. B). Puteți face clic pe săgeata derulantă din dreapta acestui câmp pentru a vedea mai multe profiluri preconfigurate pentru scanare. Profilurile vă permit să Salvați configurațiile de scanare utilizate în mod obișnuit pentru utilizare ulterioară. De asemenea, puteți crea profiluri proprii și acestea vor apărea apoi în această listă (vom discuta cum să facem acest lucru mai târziu în acest articol). A treia componentă este câmpul de comandă (Figura 1. C). Acest câmp va indica comanda care va fi trimisă în backend. Pentru a lansa comanda care apare în acest câmp, trebuie doar să faceți clic pe butonul Scanare. Puteți modifica direct valoarea din acest câmp; cu toate acestea, va fi populată automat pe baza valorilor câmpului țintă și a profilului selectat. Dacă sunteți nou în nmap, ar trebui să acordați o atenție deosebită acestui câmp, deoarece vă va oferi o mai bună înțelegere a sintaxei adecvate și a utilizării diferitelor comenzi Nmap. A patra componentă este lista gazdă / serviciu (Figura 1. D). După ce ați efectuat scanări, informațiile vor fi populate în această listă. Dacă aveți selectat butonul Hosts, vor fi listate toate adresele IP gazdă descoperite. Și dacă aveți selectat butonul servicii, toate serviciile de rețea descoperite vor fi listate. Componenta finală (Figura 1. E) este locul în care puteți sorta toate informațiile care au fost produse de toate scanările pe care le-ați efectuat. Fila ieșire Nmap va afișa ieșirea exactă care ar fi furnizată dacă comanda ar fi fost introdusă din interfața liniei de comandă. Conținutul filei porturi / gazde va varia în funcție de dacă aveți selectat butonul gazde sau servicii pentru lista dvs. Dacă este selectat butonul Hosts, atunci informațiile din fila Ports/Hosts vor reflecta serviciile identificate pe adresa IP evidențiată activ din listă. În caz contrar, dacă este selectat butonul Servicii, informațiile de sub fila porturi/gazde vor identifica toate gazdele care s-au dovedit a avea serviciul special care este evidențiat în listă. Fila topologie va oferi o reprezentare grafică a topologiei logice a rețelei, pentru a include toate gazdele care au fost descoperite prin scanare. Acesta va folosi valorile TTL (Time-to-Live) returnate pentru a afișa orientarea logică a gazdelor, una față de cealaltă. Fila Detalii gazdă este locul unde veți găsi cea mai mare parte a informațiilor care au fost descoperite despre o gazdă selectată. Aceste informații includ adrese MAC, adrese IP, porturi deschise, servicii identificate, informații despre sistemul de operare și orice informații suplimentare care au fost colectate. În cele din urmă, fila Scanări va oferi un istoric al scanărilor care au fost efectuate în timpul sesiunii.
în partea de sus a ecranului veți vedea mai multe meniuri derulante diferite pentru a include Scanare, instrumente, profil și ajutor. Meniul de ajutor este auto-explicativ. Meniul Scanare conține opțiuni pentru a crea scanări noi, pentru a salva scanări sau pentru a deschide scanări salvate anterior. Meniul Instrumente oferă câteva funcții suplimentare care pot fi utilizate pentru a sorta și organiza informațiile colectate în timpul scanărilor. Și meniul Profil oferă opțiuni pentru a crea noi profiluri de scanare sau pentru a edita profilurile existente.
acum vom discuta pe scurt cum să creați un profil nou și apoi să lansați o scanare folosind acel profil. Pentru a începe, selectați meniul derulant profil și apoi selectați „Profil nou sau Comandă.”Aceasta va deschide o interfață de configurare a profilului care poate fi văzută în Figura 2.
Figura 2. Zenmap Profile Editor
prima filă (fila Profil) vă permite să creați un nume și o descriere unice pentru profil. Toate celelalte file sunt locul în care veți specifica diferite configurații care vor fi utilizate în Scanare. După cum puteți vedea în fila Scanare afișată în Figura 2, crearea unui profil de scanare este la fel de simplă ca bifarea casetelor pentru opțiunile pe care doriți să le activați, introducerea valorilor astfel încât aceste opțiuni să poată fi utilizate eficient sau selectarea din opțiunile predefinite din meniul derulant. Dacă nu sunteți sigur cu privire la funcția sau utilizarea adecvată a oricărei opțiuni aici, puteți trece peste ea cu mouse-ul și coloana de ajutor din partea dreaptă a ecranului va fi populată automat cu informații despre ceea ce face opțiunea specifică și valori și sintaxă adecvate pentru orice câmpuri de introducere solicitate. Cu fiecare ajustare minoră pe care o faceți configurației de scanare, câmpul de comandă din partea de sus este ajustat corespunzător. Această caracteristică face din Zenmap un instrument extrem de eficient în învățarea modului de utilizare corectă a comenzilor Nmap. După ce ați configurat opțiunile de scanare după bunul plac, puteți selecta butonul Scanare din partea dreaptă sus a ecranului pentru o singură utilizare sau puteți selecta Salvați modificările în partea dreaptă jos. Butonul Salvați modificările va salva profilul cu numele furnizat în prima filă configurații și poate fi apoi utilizat imediat sau ulterior, selectându-l după nume din meniul derulant profil de pe interfața principală Zenmap. Deși Zenmap este foarte puternic, nu ar trebui să-i permiteți să devină o cârjă care vă împiedică să învățați funcțiile liniei de comandă ale nmap. Deși Zenmap poate îndeplini multe dintre aceleași funcții, are totuși limitările sale și nu este la fel de puternic ca nmap. Pentru a utiliza Nmap eficient și la potențialul său maxim, este important să vă familiarizați la fel cu interfața liniei de comandă.
descoperirea rețelei
primul pas în procesul de testare a penetrării pe care îl vom discuta este descoperirea rețelei. Înainte de a evalua securitatea sistemelor informatice dintr-o rețea, trebuie mai întâi să identificați ceea ce evaluați. Există o serie de moduri diferite prin care puteți descoperi gazde într-o rețea utilizând nmap. In aceasta sectiune, vom discuta despre modul de utilizare a nmap pentru a efectua descoperirea gazdei la straturile 2, 3 si 4 ale modelului OSI si vom discuta, De asemenea, avantajele si dezavantajele fiecaruia. Un exemplu de comandă pentru a efectua descoperirea stratului 2 poate fi văzut aici:
nmap-PR-SN 192.168.1.0-255
comutatorul -PR
specifică un ping ARP. Aceasta utilizează pachetele layer 2 Arp (Address Resolution Protocol) pentru a identifica gazdele live în intervalul specificat. Ea face acest lucru prin trimiterea unei cereri de difuzare ARP pentru fiecare dintre adresele IP identificate. Dacă există o gazdă live în rețea cu una dintre acele adrese IP, acea gazdă va trimite un răspuns ARP la sistemul de scanare cu adresa IP și adresa MAC corespunzătoare layer 2. Nmap va colecta raspunsuri de la toate gazdele live si apoi va returna o lista de gazde care au fost descoperite. Comutatorul -sn
este utilizat pentru a solicita nmap să nu efectueze nicio scanare de porturi. Acest lucru împiedică transmiterea oricărui trafic suplimentar, dincolo de ceea ce este necesar pentru a efectua Layer 2 host discovery sweep. Descoperirea stratului 2 este eficientă deoarece este cea mai rapidă dintre toate cele trei opțiuni. Cu toate acestea, este limitat de faptul că poate fi efectuat numai împotriva gazdelor care se află în aceeași rețea locală ca și sistemul care efectuează scanarea.
pentru gazdele la distanță, va trebui să utilizați fie Layer 3, fie layer 4 discovery. Un exemplu de comandă care ar putea fi utilizată pentru a efectua descoperirea stratului 3 este:
nmap-pe-SN 109.74.11.0-255
această comandă va trimite o serie de Cereri ecou ICMP la fiecare adresă IP a stratului 3 din listă. Nmap va colecta toate raspunsurile ICMP echo primite si va returna o lista cu toate gazdele live. Această scanare de descoperire este mai lentă decât efectuarea unui ping ARP, dar va returna rezultate pentru gazdele din rețelele la distanță.
în cele din urmă, să presupunem că încercați să descoperiți sisteme la distanță (deci nu puteți utiliza stratul 2) care se află în spatele unui firewall care scade tot traficul ICMP primit (deci nu puteți utiliza stratul 3). Pentru a rezolva această problemă, va trebui să efectuați descoperirea la stratul de transport (stratul 4). Există mai multe moduri diferite în care puteți utiliza scanările layer 4 pentru a efectua descoperirea. O metodă eficientă este utilizarea unui ping UDP. Un exemplu de comandă UDP ping este:
nmap-PU53-sn 109.74.11.0-255
această comandă generează o serie de solicitări de stare a serverului DNS pentru fiecare dintre adresele IP țintă. O serie de raspunsuri la interogari DNS vor fi primite de la gazde live, iar nmap va returna aceste rezultate. Deoarece DNS este un serviciu utilizat în mod obișnuit pe portul UDP 53, este posibil să se identifice gazde live suplimentare utilizând această tehnică care ar fi putut fi configurată să nu răspundă la traficul ICMP. O altă alternativă eficientă layer 4 la ICMP ping sweeps este utilizarea unui ping TCP ACK. Un exemplu în acest sens poate fi văzut mai jos:
nmap-PA80-SN 109.74.11.0-255
această comandă va trimite o serie de răspunsuri ACK nesolicitate la portul specificat pentru toate gazdele din intervalul IP. Deoarece aceste pachete ACK au fost în afara contextului oricărei linii de comunicare stabilite, gazdele live vor răspunde cu un pachet TCP RST pentru a indica faptul că comunicarea ar trebui întreruptă. Nmap va colecta aceste raspunsuri ca indicatie a gazdelor live si apoi va returna o lista a acestora.
scanarea porturilor și enumerarea serviciilor
acum că am descoperit adresele IP active din rețeaua împotriva căreia efectuăm un test de penetrare, trebuie să identificăm porturile deschise pe fiecare sistem și serviciile care rulează pe acele porturi. Scanarea porturilor TCP pe sisteme la distanță este cea mai de bază funcție a nmap. Pentru a efectua o Scanare TCP a unui sistem țintă, utilizați comanda de bază:
nmap 109.74.11.34
ca și alte comenzi Nmap, aceasta poate fi utilizată și pentru a efectua scanări împotriva mai multor gazde utilizând o serie secvențială (192.168.1-255) sau CIDR notație (192.168.1.0/24). Această comandă standard Nmap efectuează o scanare pe 1000 de porturi TCP utilizate în mod obișnuit. Alternativ, puteți specifica un singur port de scanat utilizând comutatorul-p urmat de numărul portului pe care doriți să îl scanați.
nmap 109.74.11.34-p 21
această comandă de mai sus va scana portul TCP 21 pe sistemul specificat. De asemenea, puteți scana o serie de porturi utilizând comutatorul-p și apoi listați porturile dorite, separându-le cu virgule.
nmap 109.74.11.34-p 80,443
această comandă va scana porturile 80 și 443 pe sistemul țintă. Puteți scana un interval secvențial de porturi utilizând comutatorul -p
urmat de prima valoare din interval, o liniuță și apoi ultima valoare din interval.
nmap 109.74.11.34-p 0-100
comanda de mai sus scanează primele 100 de porturi. Pentru a scana toate cele 65.536 porturi TCP de pe o țintă, utilizați următoarea comandă:
nmap 109.74.11.34-p 0-65535
puteți utiliza o Scanare TCP ACK pentru a identifica porturile care sunt filtrate. Pentru a face acest lucru, utilizați comutatorul-sA. Apoi puteți specifica un port sau o serie de porturi. Nicio specificație a portului nu va scana cele 1.000 de porturi standard. Aceasta va returna apoi o listă de porturi filtrate. Un exemplu al acestei comenzi poate fi văzut mai jos:
nmap 109.74.11.34-sa
testerii de penetrare și profesioniștii în securitate vor scana uneori doar porturile TCP deschise pe sistemele țintă. Cu vedere la serviciile UDP poate provoca o pentru a trece cu vederea complet vulnerabilități evidente, care ar putea duce cu ușurință la un compromis. Pentru a scana serviciile UDP pe un sistem țintă, utilizați următoarea comandă:
nmap 109.74.11.34-sU
deoarece serviciile UDP nu sunt orientate spre conexiune în același mod în care sunt serviciile TCP, aceasta va dura mai mult decât o Scanare TCP tipică. Timpul necesar pentru a finaliza scanările UDP poate fi redus prin scanarea anumitor porturi. Puteți specifica porturile la fel cum ați avut cu scanările TCP.
nmap 109.74.11.34-sU-p 69
comanda de mai sus efectuează o scanare a portului UDP 69, un port utilizat în mod obișnuit pentru TFTP (Trivial File Transport Protocol). De asemenea, este posibil să se identifice versiunea și numărul versiunii pentru fiecare serviciu particular. Pentru a face acest lucru, utilizați comutatorul-sv.
nmap 109.74.11.34-sV
aceasta comanda va folosi o combinatie de captare banner si analiza probe-raspuns pentru a incerca sa identifice serviciul si numarul versiunii acelui serviciu pentru fiecare port scanat. Folosind tehnici similare, este de asemenea posibil ca Nmap să încerce să determine sistemul de operare care rulează pe țintă. Pentru aceasta, utilizați comutatorul -O
.
nmap 109.74.11.34-O
odată finalizat, va returna fie o identificare pozitivă a sistemului de operare, fie va da cea mai bună presupunere și apoi o listă a altor sisteme de operare posibile.
Tehnici Avansate de scanare
există o problemă comună pe care o veți întâlni frecvent atunci când efectuați un test de penetrare împotriva rețelelor de întreprinderi de dimensiuni medii și mari. Cele mai multe companii și organizații aceste zile au devenit mai mult de securitate-minded și va avea probabil firewall-uri sau sisteme de detectare a intruziunilor în picioare între tine și sistemele pe care încercați să scanați. Pentru a scana astfel de sisteme, va trebui să folosim câteva tehnici de scanare mai avansate. O modalitate de a ocoli firewall-urile și/sau sistemele de detectare a intruziunilor este utilizarea unor tehnici tradiționale de scanare stealth care sunt integrate în nmap. O metodă care poate fi utilizată este utilizarea unui șablon de sincronizare mai lent. Șabloanele de sincronizare variază de la -T0
(scanare paranoidă) până la -T5
(Scanare nebună). Cu cât valoarea șablonului de sincronizare este mai mică, cu atât scanarea va fi mai lentă. Scanările mai lente sunt mai puțin susceptibile de a fi marcate de sistemele de detectare a intruziunilor. Un exemplu de scanare paranoică ar fi:
nmap 109.74.11.0-255-T0
o altă tehnică care poate fi utilizată pentru a masca Scanarea dvs. este de a inunda rețeaua cu trafic suplimentar de momeală folosind comutatorul -D
. Această funcție vă va permite să specificați mai multe adrese pentru a falsifica traficul sau puteți utiliza opțiunea RND pentru a falsifica traficul de la adrese aleatorii.
nmap 109.74.11.0 – 255-D RND:5
pe lângă efectuarea scanării tradiționale a portului TCP a sistemelor țintă, comanda de mai sus va falsifica și traficul de la 5 adrese aleatorii pentru a umbri traficul real de scanare. O altă tehnică care poate fi utilizată este de a varia lungimea pachetului solicitărilor transmise. Unele sisteme de detectare a intruziunilor și firewall-uri va scadea pachete bazate pe lungimi de pachete de semnătură. Pentru a preveni acest lucru, puteți specifica lungimea datelor utilizând comutatorul --data-length
urmat de dimensiunea pachetului în număr de octeți.
nmap 109.74.11.0-255 — data-length 15
această comandă va trimite tot traficul de scanare în pachete care au o lungime de 15 octeți. În timp ce acest lucru ar putea fi util pentru a evita unele sisteme de detectare a intruziunilor bazate pe semnătură, trimiterea în mod constant a pachetelor cu o lungime de pachet specificată neobișnuită ar putea semnala un sistem de detectare a intruziunilor bazat pe anomalie. Sistemele de detectare a intruziunilor în rețea vor semnaliza, de asemenea, traficul dacă începeți să vă conectați secvențial la sisteme dintr-un interval de rețea specificat. Pentru a evita efectuarea scanărilor în ordine, puteți utiliza comutatorul --randomize-hosts
.
nmap 109.74.11.0-255 — randomize-hosts
această comandă de mai sus va scana aleatoriu fiecare gazdă din interval în loc să le efectueze în secvență (109.74.11.0, apoi 109.74.11.1, apoi 109.74.11.2, etc…). Deși nu vă puteți falsifica adresa IP (deoarece nu veți primi răspunsurile necesare pentru a determina porturile deschise), vă puteți falsifica adresa MAC. Pentru a face acest lucru, puteți utiliza comutatorul –spoof-mac, urmat de un ID de furnizor, o anumită adresă MAC sau 0.
nmap 109.74.11.0-255 –spoof-mac 0
folosind 0 ca argument se va aplica o adresă MAC aleatoare pentru traficul de scanare. O tehnică finală care merită menționată este utilizarea comutatorului-f pentru a fragmenta pachetele.
Nmap 109.74.11.0-255-f
fragmentarea pachetelor va separa sarcinile utile de date ale traficului dvs. de scanare în mai multe pachete, permițându-i să ocolească mai ușor sistemele de detectare a intruziunilor de inspecție a conținutului sau firewall-urile. Deși toate aceste tehnici pot fi eficiente pentru scanarea serverelor accesibile publicului în spatele unui firewall, acestea nu sunt de obicei suficiente pentru scanarea gazdelor dintr-o rețea internă. În timp ce anumite servere accesibile publicului vor fi disponibile pentru scanare, o mare parte din infrastructura internă va fi mai profundă în rețea și nu va fi atât de ușor accesibilă. Luați în considerare diagrama din Figura 3. Acesta este un exemplu simplu de configurație comună în rețelele întreprinderii.
Figura 3. Configurarea comună a rețelei
problema pe care o întâlnim aici este că rețeaua internă se află în spatele unui firewall intern, care are reguli mai stricte despre traficul de intrare, în comparație cu firewall-ul extern. Acest firewall intern blochează probabil traficul de intrare de la adresele de la distanță de pe web; cu toate acestea, este posibil ca sistemele din DMZ să poată comunica cu sistemele interne. Pentru a putea scana aceste sisteme interne, trebuie să facem ca sistemele din DMZ să funcționeze în numele nostru. Vom discuta mai multe moduri diferite de a face acest lucru, pentru a include scanarea proxy, scanarea zombie și scanarea FTP bounce.
probabil cel mai simplu mod de a scana sistemele interne este folosind un lanț proxy. Să presupunem că am obținut acces la un serviciu proxy în cadrul DMZ prin localizarea unui serviciu proxy cu acces deschis, forțarea brută a unui serviciu proxy cu hydra sau prin instalarea unui serviciu proxy pe o mașină deja compromisă. După ce ați configurat sistemul pentru a direcționa traficul prin acel proxy, puteți efectua scanări nmap utilizând o Scanare completă a conexiunii (-sT
).
nmap 10.1.1.0-255-sT
dacă nu există niciun serviciu proxy disponibil, există câteva modalități inteligente prin care puteți utiliza mașinile din DMZ pentru a obține rezultatele scanării pe sistemele interne. O modalitate de a face acest lucru este să utilizați scanarea zombie, denumită și scanare inactivă. Pentru a efectua o Scanare zombie împotriva sistemelor de pe LAN-ul intern, trebuie să găsim o gazdă zombie viabilă în DMZ. O gazdă zombie este orice sistem relativ inactiv care utilizează secvențierea IPID incrementală. Pentru a localiza o gazdă zombie, putem folosi un script nmap pentru a scana DMZ pentru un sistem care se potrivește acestei descrieri.
Nmap –script ipidseq 109.74.11.0-255
acest script va trimite o serie de pachete către fiecare gazdă și va urmări numerele IPID pentru toate răspunsurile primite. Apoi va analiza aceste numere IPID pentru a clasifica fiecare sistem fie ca secvență aleatorie, toate zerourile, fie incrementale. A se vedea Figura 4 pentru un exemplu de ieșire pentru un sistem incremental.
Figura 4. Gazdă Zombie situat cu Script secvență IPID
odată ce am dobândit o adresă IP pentru sistemul nostru zombie, suntem gata să încerce scanare nostru zombie. Înainte de a aborda modul de efectuare a scanării, voi discuta pe scurt cum funcționează scanarea. Consultați figura 5 pentru o diagramă a ceea ce are loc atunci când se efectuează o Scanare zombie împotriva unui port deschis.
Figura 5. Scanare Zombie împotriva portului deschis
în primul rând, scanerul nostru Nmap determină valoarea IPID curentă a sistemului zombie prin trimiterea unui pachet SYN/ACK nesolicitat. Deoarece niciun pachet SYN nu a fost trimis inițial de sistemul zombie pentru a stabili o conexiune, zombie răspunde apoi scanerului nostru cu un pachet RST. Sistemul nostru de scanare va folosi apoi IPID-ul primului pachet ca punct de referință. Apoi, sistemul nostru de scanare va urmări imediat acest lucru cu un pachet SYN falsificat trimis la sistemul țintă folosind o adresă IP sursă a sistemului zombie. Deoarece adresa IP sursă este una din DMZ, această solicitare de conexiune este mai probabil să poată trece prin firewall. Dacă ținta primește pachetul și portul de destinație este deschis, ținta va returna apoi un pachet SYN/ACK către sistemul zombie (care crede că a trimis pachetul SYN original). Deoarece acest pachet SYN / ACK este primit în afara contextului, sistemul zombie va răspunde apoi la sistemul țintă cu un pachet RST, incrementând astfel valoarea IPID cu unul. În cele din urmă, scanerul nostru va trimite un ultim pachet SYN/ACK către sistemul zombie. Primul răspuns ulterior de la zombie va crește IPID-ul încă o dată. Deci, dacă portul vizat de pe sistemul de la distanță este deschis, valoarea IPID finală returnată va fi cu două numere mai mare decât valoarea inițială. Alternativ, Figura 6 ilustrează ceea ce are loc atunci când portul sistemului țintă este închis.
Figura 6. Scanare Zombie împotriva portului închis
dacă portul din sistemul țintă este închis, sistemul zombie nu primește niciun răspuns nesolicitat de la țintă și, prin urmare, nu este instigat să trimită un prim pachet către țintă. Deci, dacă valoarea IPID a răspunsului final RST a crescut doar cu unul, putem deduce că portul este închis deoarece niciun răspuns SYN / ACK nu a fost trimis sistemului zombie pentru a instiga un răspuns RST. În caz contrar, dacă valoarea IPID finală a incrementat cu două din valoarea inițială, atunci putem deduce că portul de pe sistemul țintă trebuie să fie deschis, deoarece trebuie să fi răspuns la zombie care a instigat răspunsul care a incrementat valoarea IPID a sistemului zombie.
în timp ce acest lucru poate suna extrem de complicat; nu va lasati intimidati de descriere, deoarece nmap face aproape toata munca pentru voi. Pentru a efectua efectiv o Scanare zombie, trebuie doar să introduceți o comandă simplă.
Nmap-sI 192.168.199.132-Pn 192.168.199.130
comutatorul -sI
spune nmap să efectueze o Scanare zombie folosind următoarea adresă IP ca gazdă zombie (192.168.199.132). Comutatorul -Pn
împiedică Nmap să efectueze un ping ICMP inițial pe sistemul țintă înainte de a încerca scanarea. Deci, adresa IP finală din comandă identifică sistemul țintă. Rezultatul pentru această comandă poate fi văzut în Figura 7.
Figura 7. Scanare Zombie împotriva portului închis
trebuie remarcat faptul că intervalul IP pe care l-am folosit pentru a demonstra această scanare zombie este un interval privat în rețeaua mea internă. Pentru ca aceasta să funcționeze eficient împotriva unei rețele la distanță, așa cum este descris în scenariul original, sistemele din DMZ și din rețeaua internă trebuie să fie pe intervale IP rutabile public. Dacă rețeaua internă este configurată pe un interval privat în spatele unui server Nat (Network Address Translation), atunci scanerul Nmap nu va putea trimite pachetul syn falsificat la adresa internă din locația sa la distanță.
o altă modalitate de a utiliza sistemele din DMZ pentru a încerca să scaneze gazdele din rețeaua internă este utilizarea FTP bounce. Unele servere FTP vechi acceptă capacitatea de a transmite fișiere către un sistem terț. Dacă ați descoperit un server FTP în DMZ care permite conectarea anonimă sau că aveți brute forced cu hydra, puteți testa serverul FTP pentru a determina dacă acceptă FTP bounce. Pentru a face acest lucru, utilizați scriptul ftp-bounce.
Nmap –script ftp-bounce –script-args
ftp-bounce.username = anonymous,
aceasta comanda foloseste scriptul nmap cu argumente username si password impotriva serverului FTP. Odată finalizată, această scanare va indica dacă bounce FTP este posibil sau nu. Dacă scriptul indică faptul că FTP bounce funcționează, puteți utiliza serverul FTP pentru a efectua o scanare a portului împotriva altor sisteme din rețea. Figura 8 ilustrează modul în care funcționează acest lucru.
figura 8. FTP bounce scan
scanerul va încerca să trimită date binare, prin intermediul funcției FTP bounce, către sistemul țintă la un port desemnat. Dacă datele sunt transmise, serverul FTP va raporta apoi acest lucru înapoi la scaner, indicând faptul că portul sistemului țintă este deschis. Pentru a efectua o scanare de respingere FTP, utilizați comutatorul -b
.
Nmap-B ftpuser::21 10.1.1.128-255
în această comandă, funcția -b
este utilizată pentru a efectua o scanare de respingere ftp folosind numele de utilizator „ftpuser” și parola PassW0rd
, împotriva serverului FTP la 192.168.11.201 găzduit pe portul TCP 21. Acțiunile descrise în diagrama de mai sus vor fi apoi efectuate împotriva fiecăruia dintre porturile comune 1000s pe fiecare dintre gazdele țintă de la 10.1.1.128 la 10.1.1.255.
maparea și exploatarea vulnerabilităților cu NSE
după ce ați descoperit gazde live în rețeaua țintă și ați reușit să enumerați porturi deschise și/sau servicii care rulează pe acele gazde, puteți începe testarea și exploatarea vulnerabilităților. Cu noul NSE integrat (Nmap Scripting Engine), există o serie de scripturi preîncărcate care vin cu instalarea standard Nmap. Aceste scripturi au o gamă largă de funcții diferite de la colectarea de informații de bază (cum ar fi cele două pe care le-am discutat deja), cartografierea vulnerabilității, forțarea brută, refuzul serviciului și chiar exploatarea la distanță. Toate aceste scripturi sunt localizate în directorul de instalare nmap. În Kali-Linux, acestea pot fi găsite la /usr/share/nmap/scripts/
. Pentru a naviga la aceste Scripturi și a începe să lucrați cu ele, utilizați următoarele comenzi:
cd /usr/share/Nmap/scripts/
ls
comanda cd
va schimba directorul în locația scripturilor NSE, iar comanda ls
va afișa conținutul directorului. Apoi puteți vizualiza oricare dintre Scripturi utilizând comanda cat
, urmată de numele scriptului pe care doriți să îl vizualizați. În scopul acestei demonstrații, vom folosi ftp-vuln-cve2010-4221.nse
. Pentru a vizualiza conținutul acestui script, utilizați următoarea comandă:
cat ftp-vuln-cve2010-4221.nse
Figura 9. Conținutul scriptului NSE
Figura 9 Afișează conținutul acestui script. Dacă navigați în partea de sus a conținutului scriptului, veți vedea mai multe informații utile pentru a include o descriere a scriptului, o listă de resurse suplimentare pentru referință și utilizarea și sintaxa corespunzătoare a scriptului. Cu toate acestea, sortarea acestor scripturi în director și localizarea unui script care îndeplinește o funcție specifică poate fi foarte obositoare. În opinia mea, aici strălucește Zenmap (interfața grafică despre care am discutat anterior). Pentru a demonstra cât de utilă poate fi interfața Zenmap atunci când lucrați cu scripturi NSE, deschideți-o din nou din linia de comandă cu comanda:
zenmap
apoi selectați meniul derulant profil și faceți clic pe „profil nou sau Comandă.”După ce se deschide Editorul de profil, alegeți fila Scripting din partea de sus a ecranului. Figura 10 afișează o imagine a interfeței de script Zenmap.
Figura 10. Zenmap Scripting Interface
o listă a tuturor scripturilor Nmap disponibile se află în partea stângă a ecranului. Puteți selecta oricare dintre acestea pentru a le include în comanda nmap. Unele scripturi vor necesita argumente pentru a putea rula corect. Scripturile de autentificare Post vor necesita adesea un nume de utilizator și o parolă pentru anumite servicii de rețea. În exemplul din Figura 10, pot fi furnizate argumente pentru a configura atacul de forță brută care urmează să fie efectuat împotriva serviciului MySQL. De asemenea, puteți trece cu ușurință argumentele scriptului introducând valorile în fereastra argumente. Aceste argumente vor fi populate automat în comanda Nmap generată. Fereastra din Centrul de sus oferă o descriere a scriptului selectat, utilizarea și sintaxa corespunzătoare și chiar categorii pentru a descrie funcțiile scriptului. Aceste categorii pot fi utile în special dacă încercați să efectuați un anumit tip de activitate, cum ar fi analiza vulnerabilității. După lansarea unui script NSE cu o comandă nmap, veți vedea rezultatele în ieșirea standard Nmap. În cazul scripturilor de forță brută, ieșirea va arăta dacă atacul de forță brută a avut succes și, dacă da, va afișa numele de utilizator și parola descoperite. În cazul scripturilor de vulnerabilitate, rezultatul va indica dacă vulnerabilitatea este prezentă pe sistemul(sistemele) țintă. Și în cazul scripturilor de exploatare, ieșirea va furniza informații despre sarcina utilă care a fost livrată ulterior sistemului țintă.
Scripting cu Nmap
în plus față de propriul motor de scripting integrat, nmap acceptă, de asemenea, mai multe opțiuni de ieșire care facilitează utilizarea limbajelor tradiționale de scripting pentru efectuarea analizei de ieșire. Două formate de ieșire care pot fi utile pentru scripting includ ieșire greppable (-oG
) și ieșire XML (-oX
). XML poate fi eficient pentru limbaje de scripting de nivel superior, care au module care pot fi importate pentru parsarea XML și ieșire greppable pot fi utilizate împreună cu bash shell scripting pentru a simplifica analiza rezultatelor nmap. Pentru a demonstra modul în care această caracteristică de ieșire ar putea fi utilizată împreună cu scripting-ul, vom revizui un script bash shell simplu cu 4 linii, afișat în Figura 11 pentru a analiza rezultatele unei scanări nmap.
Figura 11. Nmap Result Analysis Bash Script
luați în considerare un scenariu în care o Scanare Nmap a fost deja efectuată împotriva unei rețele foarte mari și ieșirea scanării a fost salvată în format greppabil într-un networkscan.fișier txt. Și să presupunem că vrem să folosim hydra pentru a efectua un atac de forță brută împotriva tuturor serviciilor FTP din rețea, dar nu vrem să pierdem timpul necesar pentru a scana din nou portul 21 din întreaga rețea. Acest script simplu va extrage toate sistemele care au un port specificat deschis. Prima linie solicită utilizatorului un număr de port. A doua linie atribuie apoi valoarea intrării utilizatorului variabilei ‘port’. A treia linie indică utilizatorului că toate sistemele cu acel port deschis vor fi listate. Și, în sfârșit, ultima comandă este locul unde vom grep rezultatele de ieșire greppable nmap. Scriptul utilizează comanda grep pentru a extrage toate liniile din fișierul de ieșire care face referire la portul specificat. Aceasta va include linii care enumeră fiecare instanță a locului în care portul este deschis, închis sau filtrat. Apoi, conductele care ies la o altă funcție grep care extrage numai instanțele în care portul specificat este deschis. Această ieșire este apoi direcționată către funcția de tăiere, care specifică un caracter spațial ca delimitator și apoi scoate al doilea câmp. Procedând astfel, scriptul nostru scoate apoi adresa IP pentru fiecare sistem care are portul specificat deschis. Figura 12 afișează ieșirea scriptului.
Figura 12. Nmap Result Analysis Script Output
deși acesta este un script foarte simplu, demonstrează cât de ușor poate fi extragerea informațiilor din formatul de ieșire greppable. Odată achiziționate, aceste informații colectate ar putea fi utilizate cu ușurință pentru scripturi suplimentare. Ar putea fi folosit ca punct de plecare pentru a efectua o altă sarcină ulterioară împotriva fiecărui sistem care a fost identificat ca având un port specific deschis.
un instrument All-In-One de testare a penetrarii
prin combinarea diferitelor sale capabilitati, se poate efectua cu usurinta un test complet de penetrare folosind doar nmap. Nu se poate nega faptul că nmap, cu lista sa impresionantă de funcții și capabilități, este un instrument cu adevărat puternic. Și pe măsură ce anii progresează, va deveni probabil și mai puternic, pe măsură ce mai mulți oameni continuă să contribuie la acest proiect. Ca un copil cu arma tatălui său, nmap poate fi un instrument periculos în mâini greșite. Dar dacă este utilizat corect, poate fi un atu neprețuit pentru asigurarea securității infrastructurii de rețea. Deci, amintiți-vă întotdeauna să-l utilizați cu înțelepciune și să-l utilizați bine.
despre autor
Justin Hutchens face în prezent analiza vulnerabilității rețelei, detectarea intruziunilor și criminalistica digitală pentru o rețea mare de întreprinderi cu peste 33.000 de sisteme în rețea. El a ocupat numeroase roluri diferite în domeniul Tehnologiei Informației pentru a include proiectarea rețelei, dezvoltarea sistemului, Administrarea Bazelor de date și securitatea rețelei. De asemenea, în prezent predă cursuri de testare a penetrării cu sistemele de operare Backtrack și Kali-Linux. În prezent deține o diplomă de licență în Tehnologia Informației și mai multe certificări profesionale pentru a include CISSP (Certified Information System Security Professional), ceh (Certified Ethical Hacker), ECSA (EC-Council Certified Security Analyst) și CHFI (computer Hacking Forensic Investigator).