table of contents
- NUME
- REZUMAT
- DESCRIERE
- TRADUCERE
- SUMARUL OPTIUNILOR
- SPECIFICAREA TINTELOR
- DESCOPERIREA HOSTURILOR
- BAZELE SCANARII DE PORTURI
- TEHNICI DE SCANARE DE PORTURI
- SPECIFICAREA PORTURILOR SI A ORDINII DE SCANARE
- DETECTIA SERVICIILOR SI A VERSIUNILOR
- DETECTIA SISTEMULUI DE OPERARE
- OPTIUNI DE TIMP SI PERFORMANTA
- PACALIREA FIREWALL/IDSURILOR SI ASCUNDEREA IDENTITATII
- AFISAREA REZULTATELOR
- OPTIUNI DIVERSE
- INTERACTIUNE IN TIMPUL RULARII
- EXEMPLE
- PROBLEME
- AUTOR
- ASPECTE LEGALE
- NOTE
NMAP(1) | [FIXME: manual] | NMAP(1) |
NUME¶
nmap - Instrument de explorare a retelei si scaner de securitate / porturi
REZUMAT¶
nmap[Tip de scanare...][Optiuni]{specificarea tintei}
DESCRIERE¶
Nmap ( „Network Mapper”) este un instrument open source pentru explorarea retelei si audit de securitate A fost proiectat sa scaneze repede retele mari, cu toate ca functioneaza bine si la scanarea unui singur host. Nmap foloseste pachete IP in forma bruta intr-un mod inovator pentru a determina ce calculatoare sunt disponibile in retea, ce servicii (numele aplicatiei si versiunea) ofera acestea, ce sistem de operare (si versiune) ruleaza, ce tipuri de filtre de pachete/firewall sunt utilizate si o multime de alte caracteristici. Nmap este folosit in mod curent in procesul de audit al securitatii, dar este folosit si de administratorii de retea pentru rutinele de inventariere a retelei, managementul upgradeurilor si monitorizarea calculatoarelor sau a perioadelor de uptime pentru servicii.
Rezultatul generat de Nmap este o lista de tinte scanate, cu informatii secventiale despre fiecare in functie de optiunile utilizate. O parte cheie a informatiilor furnizate este „tabela de porturi interesante”. Aceasta tabela contine numarul portului si protocolul, numele serviciului si starea. Starea poate fi open (deschis), filtered (filtrat), closed (inchis), sau unfiltered (nefiltrat). Deschis (open) inseamna ca aplicatia de pe masina tinta asculta la portul respectiv, asteptand conexiuni. Filtered (filtrat)inseamna ca un firewall, filtru sau alt obstacol in retea blocheaza respectivul port astfel incat Nmap nu poate spune daca este deschissau inchis. Porturile inchisenu au nici o aplicatie care sa astepte conexiuni, cu toate ca ele se pot deschide in orice moment. Porturile sunt clasificate ca nefiltratecand ele raspund la probele Nmap, dar Nmap nu poate determina daca sunt inchise sau deschise. Nmap raporteaza combinatia de stari open|filtered (deschis|filtrat)si closed|filtered (inchis|filtrat)cand nu poate determina care din cele doua stari este cea corecta. Tabela de porturi mai poate include versiuni ale softwareului cand detectia versiunii a fost solicitata. Cand un protocol de scanare IP este solicitat ( -sO), Nmap furnizeaza informatii despre protocoalele IP suportate in locul listei de porturi.
In plus fata de lista de porturi interesante, Nmap poate furniza si alte informatii despre tinte, incluzand aici nume obtinute prin reverse DNS, poate ghici sistemul de operare, tipul hardwareului si adresele MAC.
O scanare tipica cu Nmap este exemplificata in Exemplu 1, „O scanare reprezentativa cu Nmap”. Singurele argumente folosite in aceste exemplu sunt -A, pentru a activa detectia versiunii si a sistemului de operare, -T4pentru executia mai rapida a scanarii, si apoi specificatiile pentru cele doua tinte.
Exemplu 1. O scanare reprezentativa cu Nmap
# nmap -A -T4 scanme.nmap.org playground
Starting nmap ( https://nmap.org/ ) Interesting ports on
scanme.nmap.org (205.217.153.62): (The 1663 ports scanned but not shown
below are in state: filtered) PORT STATE SERVICE VERSION 22/tcp open
ssh OpenSSH 3.9p1 (protocol 1.99) 53/tcp open domain 70/tcp closed
gopher 80/tcp open http Apache httpd 2.0.52 ((Fedora)) 113/tcp closed
auth Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS
details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Uptime 33.908 days
(since Thu Jul 21 03:38:03 2005) Interesting ports on
playground.nmap.org (192.168.0.40): (The 1659 ports scanned but not
shown below are in state: closed) PORT STATE SERVICE VERSION 135/tcp
open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 389/tcp open
ldap? 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
1002/tcp open windows-icfw? 1025/tcp open msrpc Microsoft Windows RPC
1720/tcp open H.323/Q.931 CompTek AquaGateKeeper 5800/tcp open vnc-http
RealVNC 4.0 (Resolution 400x250; VNC TCP port: 5900) 5900/tcp open vnc
VNC (protocol 3.8) MAC Address: 00:A0:CC:63:85:4B (Lite-on
Communications) Device type: general purpose Running: Microsoft Windows
NT/2K/XP OS details: Microsoft Windows XP Pro RC1+ through final
release Service Info: OSs: Windows, Windows XP Nmap finished: 2 IP
addresses (2 hosts up) scanned in 88.392 seconds
Cea mai noua versiune de Nmap poate fi obtinuta de la https://nmap.org/. Cea mai noua versiune a paginii man poate fi vizualizata la https://nmap.org/man/.
TRADUCERE¶
Aceasta editie inlimba romana a Ghidului de referinta Nmap a fost tradus din versiunea 2991 a textului original aflat la original English version[1]de Dan Catalin Vasile <hardware_cta@yahoo.com>. Traducerea a fost facuta cu scopul de a asigura o intelegere mai buna a functionalitatilor Nmap intai pentru autor si mai apoi pentru toti vorbitorii nativi de limba romana. Autorul traducerii nu va poate garanta faptul ca traducerea este la fel de completa cu versiunea actualizata in limba engleza. Acest produs poate fi modificat si redistribuit in conditiile stipulate de Creative Commons Attribution License[2]. Autorul traducerii va invita de asemenea pe primul site dedicat profesionistilor in securitate informatica din Romania: ITSecure[3].
SUMARUL OPTIUNILOR¶
Acest sumar al optiunilor este printat cand Nmap este rulat fara nici un argument si ultima versiune este disponibila la https://nmap.org/data/nmap.usage.txt. Ajuta oamenii sa isi aduca aminte de cele mai comune optiuni, dar nu reprezinta un substitut pentru documentatia in profunzime din restul acestui manual. Unele optiuni obscure nici nu sunt incluse aici.
Usage: nmap [Scan
Type(s)] [Options] {target specification} TARGET SPECIFICATION: Can
pass hostnames, IP addresses, networks, etc. Ex: scanme.nmap.org,
microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 -iL
<inputfilename>: Input from list of hosts/networks -iR <num
hosts>: Choose random targets --exclude
<host1[,host2][,host3],...>: Exclude hosts/networks --excludefile
<exclude_file>: Exclude list from file HOST DISCOVERY: -sL: List
Scan - simply list targets to scan -sP: Ping Scan - go no further than
determining if host is online -P0: Treat all hosts as online -- skip
host discovery -PS/PA/PU [portlist]: TCP SYN/ACK or UDP discovery to
given ports -PE/PP/PM: ICMP echo, timestamp, and netmask request
discovery probes -n/-R: Never do DNS resolution/Always resolve
[default: sometimes] SCAN TECHNIQUES: -sS/sT/sA/sW/sM: TCP
SYN/Connect()/ACK/Window/Maimon scans -sN/sF/sX: TCP Null, FIN, and
Xmas scans --scanflags <flags>: Customize TCP scan flags -sI
<zombie host[:probeport]>: Idlescan -sO: IP protocol scan -b
<ftp relay host>: FTP bounce scan PORT SPECIFICATION AND SCAN
ORDER: -p <port ranges>: Only scan specified ports Ex: -p22;
-p1-65535; -p U:53,111,137,T:21-25,80,139,8080 -F: Fast - Scan only the
ports listed in the nmap-services file) -r: Scan ports consecutively -
don't randomize SERVICE/VERSION DETECTION: -sV: Probe open ports to
determine service/version info --version-light: Limit to most likely
probes for faster identification --version-all: Try every single probe
for version detection --version-trace: Show detailed version scan
activity (for debugging) OS DETECTION: -O: Enable OS detection
--osscan-limit: Limit OS detection to promising targets --osscan-guess:
Guess OS more aggressively TIMING AND PERFORMANCE: -T[0-5]: Set timing
template (higher is faster) --min-hostgroup/max-hostgroup <msec>:
Parallel host scan group sizes --min-parallelism/max-parallelism
<msec>: Probe parallelization
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <msec>:
Specifies probe round trip time. --host-timeout <msec>: Give up
on target after this long --scan-delay/--max-scan-delay <msec>:
Adjust delay between probes FIREWALL/IDS EVASION AND SPOOFING: -f;
--mtu <val>: fragment packets (optionally w/given MTU) -D
<decoy1,decoy2[,ME],...>: Cloak a scan with decoys -S
<IP_Address>: Spoof source address -e <iface>: Use
specified interface -g/--source-port <portnum>: Use given port
number --data-length <num>: Append random data to sent packets
--ttl <val>: Set IP time-to-live field --spoof-mac <mac
address/prefix/vendor name>: Spoof your MAC address OUTPUT:
-oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt
kIddi3, and Grepable format, respectively, to the given filename. -oA
<basename>: Output in the three major formats at once -v:
Increase verbosity level (use twice for more effect) -d[level]: Set or
increase debugging level (Up to 9 is meaningful) --packet-trace: Show
all packets sent and received --iflist: Print host interfaces and
routes (for debugging) --append-output: Append to rather than clobber
specified output files --resume <filename>: Resume an aborted
scan --stylesheet <path/URL>: XSL stylesheet to transform XML
output to HTML --webxml: Reference stylesheet from Insecure.Org for
more portable XML --no-stylesheet: Prevent associating of XSL
stylesheet w/XML output MISC: -6: Enable IPv6 scanning -A: Enables OS
detection and Version detection --datadir <dirname>: Specify
custom Nmap data file location --send-eth/--send-ip: Send using raw
ethernet frames or IP packets --privileged: Assume that the user is
fully privileged -V: Print version number -h: Print this help summary
page. EXAMPLES: nmap -v -A scanme.nmap.org nmap -v -sP 192.168.0.0/16
10.0.0.0/8 nmap -v -iR 10000 -P0 -p 80
SPECIFICAREA TINTELOR¶
Tot ceea ce in lina de comanda a Nmap nu este optiune (sau argument al unei optiuni) este tratat ca specificare a unei tinte. Cel mai simplu caz este specificarea adresei IP sau a numelui calculatorului ce urmeaza a fi scanat.
Cateodata se doreste scanarea unei intregi retele pentru calculatoare adiacente. Pentru asta, Nmap suporta stilul de adresare CIDR. Se poate adauga / numarul de bitila o adresa IP sau nume si Nmap va scana toate adresele IP pentru care primii bitisunt aceeasi cu IP sau numele de referinta. De exemplu, 192.168.10.0/24 va scana cele 256 de calculatoare intre 192.168.10.0 (binar: 11000000 10101000 00001010 00000000) si 192.168.10.255 (binar: 11000000 10101000 00001010 11111111), inclusiv. 192.168.10.40/24 va realiza exact acelasi lucru. Dat fiind numele scanme.nmap.org cu adresa IP 205.217.153.62, specificatia scanme.nmap.org/16 va scana cele 65.536 adrese IP intre 205.217.0.0 si 205.217.255.255. Cea mai mica valoare permisa este /1, care va scana jumatate de Internet. Cea mai mare este 32, care va scana doar calculatorul specificat prin nume sau IP deoarece toti bitii sunt fixati.
Natatia CIDR este scurta dar nu intotdeauna suficient de flexibila. De exemplu, puteti dori scanarea 192.168.0.0/16 dar fara adresele care se termina in .0 sau .255, deoarece ele sunt in general adrese de broadcast. Nmap suporta acest lucru prin adresarea unei anumite limite pentru fiecare octet in parte. In locul specificarii adresei IP normale, puteti specifica o lista de numere separate prin virgula sau un domeniu pentru fiecare octet. De exemplu, 192.168.0-255.1-254 va sari toate adresele din acest domeniu care se termina in .0 si .255. Domeniile nu se limiteaza la ultimii octeti: specificatorul 0-255.0-255.13.37 va scana Internetul dupa toate IPurile care se termina in .13.37. Acest tip de scanare poate fi folositor pentru inspectarea si cercetarea Internetului.
Adresele IPv6 pot fi specificate doar prin adresa completa sau nume. CIDR si domeniile pe octeti nu sunt suportate pentru IPv6 deoarece sunt rareori folositoare.
Nmap accepta specificarea mai multor adrese in linia de comanda si nici nu este necesar ca ele sa fie de acelasi tip. Comnda nmapscanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.0-255realizeaza exact ceea ce asteptati.
Desi tintele sunt specificate in mod uzual in linia de comanda, exista si urmatoarele optiuni pentru selectia tintelor
-iL <fisierdeintrare>(Preluare dintr-un fisier)
-iR <numar de tinte>(Alegere de tinte aleatoare)
--exclude<host1[,host2][,host3],...>(Se exclud de la scanare calculatoarele/retelele specificate ca argument)
--excludefile <fisier_de_excludere>(Lista de excludere dintr-un fisier)
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)
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)
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)
-PS [listadeporturi](Ping TCP SYN)
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)
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)
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)
Cu toate ca cererile de raspuns ICMP sunt standard, Nmap nu se opreste aici. Standardul ICMP ( RFC792[5]) 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)
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)
-R(Rezolutie DNS pentru toate tintele)
--system-dns(Foloseste DNSul sistemului de operare)
BAZELE SCANARII DE PORTURI¶
Cu toate ca functiile Nmap au crescut ca numar in timp, el a inceput ca un scaner de porturi eficient si acesasta ramane fuctia lui de baza. Simpla comanda nmap tintascaneaza mai mult de 1660 de porturi TCP ale tintei. In timp ce multe scanere de porturi traditionale catalogheaza porturile in deschise si inchise, Nmap este mult mai avansat. El imparte porturile in sase stari: open (deschis), closed (inchis), filtered (filtrat), unfiltered (nefiltrat), open|filtered (deschis|filtrat), or closed|filtered (inchis|filtrat).
Aceste stari nu sunt proprietati intrinsece ale porturilor, dar descriu modul in care sunt vazute de Nmap. De exemplu, o scanare Nmap din aceeasi retea ca si tinta poate arata portul tcp 135 ca deschis, in timp ce o scanare realizata simultan din Internet cu aceleasi optiuni poate arata portul ca filtered (filtrat).
Cele sase stari ale porturilor recunoscute de Nmap
open (deschis)
closed (inchis)
filtered (filtrat)
unfiltered (nefiltrat)
open|filtered (deschis|filtrat)
closed|filtered (inchis|filtrat)
TEHNICI DE SCANARE DE PORTURI¶
Ca un incepator care incearca sa repare un motor, ma pot stradui ore intregi sa gasesc ustensile rudimentare (ciocan, banda adeziva, etc.) potrivite pentru operatia propusa. Cand esuez lamentabil si imi las rabla pe mana unui mecanic adevarat, invariabil el gaseste in marea de unelte ustensila potrivita care face treaba sa para una fara efort. Arta scanarii de porturi este similara. Expertii inteleg multitudinea de tehnici de scanare si o aleg pe cea potrivita (sau combinatia potrivita) pentru o anumita misiune. Pe de alta parte, utilizatorii neexperimentati si script kiddies incearca sa rezolve problema prin scanarea SYN implicita. Din moment ce Nmap este gratuit, singura bariera in arta scanarii de porturi o reprezinta cunostintele. Acest fapt bate lucrurile din viata reala, unde cu multa pricepere poti determina ca ai nevoie de un arc nou pentru compresor, dar totusi esti nevoit sa platesti si bani buni pe el.
Multe dintre tipurile de scanare sunt disponibile doar utilizatorilor privilegiati. Aceasta datorita faptului ca trimit si primesc pachete brute, care necesita acces root pe sistemele UNIX. Folosirea unui cont de administrator sub Windows este recomandata, cu toate ca Nmap functioneaza cateodata si pentru utilizatorii neprivilegiati pe platformele pe care WinPcap a fost deja incarcat de sistemul de operare. Necesitatea privilegiilor root au reprezentat o problema serioasa la lansarea Nmapului in 1997, deoarece multi utilizatori beneficiau doar de conturi limitate. Acum lumea e diferita. Calculatoarele sunt ieftine, multi oameni au acces direct si permanent la Internet iar sistemele UNIX (incluzand Linux si MAC OS X) sunt raspandite. O versiune de Windows a Nmap este acum disponibila, permitand rularea acestuia pe si mai multe calculatoare. Oricare ar fi motivul, utilizatorii au o nevoie mai mica de a rula Nmap de pe conturi limitate. Acesta este un lucru bun, deoarece optiunile privilegiate sunt mult mai puternice si mai flexibile.
Chiar daca Nmap incearca sa produca cele mai precise rezultate, tineti minte intotdeauna ca el se bazeaza pe pachetele returnate de masina tinta (sau firewallul din fata lui). Asemenea hosturi pot sa nu fie de incredere iar raspunsurile trimise pot fi menite sa incurce sau sa duca pe o pista gresita Nmapul. Comune sunt hosturile neconcordante cu standardele RFC care nu raspund cum ar trebui probelor Nmap. Scanarile Fin, Null si Xmas sunt in mod particular susceptibile de asa ceva. Astfele de probleme sunt specifice anumitor tipuri de scanari si sunt discutate individual la fiecare tip de scanare in parte.
Aceasta sectiune documenteaza multitudinea de tehnici de scanare de porturi suportate de Nmap. O singura metoda poate fi folosita la o scanare (nu pot fi combinate mai multe tipuri), cu exceptia scanarii UDP ( -sU) care poate fi combinata cu unul din tipurile de scanare TCP. Cu un ajutor la memorare, tipurile de scanare de porturi sunt de forma -s C, unde Ceste caracterul principal al numelui scanarii, in general primul. Singura exceptie o reprezinta scanarea sarita FTP (metoda depasita moral) ( -b). Implicit, Nmap executa o scanare SYN, cu toate ca o poate inlocui cu una Connect() daca utilizatorul nu are privilegii pentru a trimite pachete brute (acces root pe sisteme UNIX) sau daca tinte IPv6 au fost specificate. Dintre scanarile mentionate in aceasta sectiune, utilizatorii neprivilegiati le pot executa doar pe cele de tipul connect() si ftp sarit.
-sS(Scanare TCP SYN)
Aceasta tehnica este adesea denumita ca o scanare jumatate deschisa, deoarece nu deschideti o conexiune completa TCP. Trimiteti un pachet SYN, ca si cum ati deschide o conexiune si asteptati un raspuns. Un pachet SYN/ACK indica faptul ca portul este deschis, in timp ce un RST (reset) este indicatorul unui port inchis. Daca nici un raspuns nu este primit dupa mai multe retransmiteri, portul este marcat ca fiind filtrat. Portul este de asemena marcat filtrat daca un mesaj de eroare ICMP negasit (tipul 3, codurile 1,2,3,9,10 sau 13) este receptionat.
-sT(Scanare TCP connect())
Cand scanarea SYN este disponibila, ea reprezinta in general alegerea mai buna. Nmap are un control mai restrans asupra nivelului inalt al apelului connect()cu pachete brute, facandu-l mai putin eficient. Apelul de sistem completeaza conexiunea pentru a deschide conexiunea in loc sa efectueze o jumatate de conexiune asa cum scanarea SYN o face. Nu numai ca acest lucru dureaza mai mult si necesita mai multe pachete pentru a obtine aceeasi informatie, dar exista sanse mai mari ca masinile tinta sa logheze conexiunea. Un IDS decent va prinde si el conexiunea, dar multe masinii nu au astfel de sisteme de alarma. Multe servicii ale unui sistem uzual UNIX vor adauga o nota la syslog si cateodata si un mesaj criptic de eroare cand Nmap se conecteaza si apoi inchide conexiunea fara a trimite date. Servicii patetice se pot bloca in acest caz, dar nu este un lucru comun. Un administrator care vede o multime de tentative de conexiune in loguri venind de la o singura sursa trebuie sa stie ca a fost scanat prin metoda connect.
-sU(Scanare UDP)
Scanarea UDP este acivata cu optiunea -sU. Poate fi combinata cu o scanare TCP cum ar fi scanrea SYN ( -sS) pentru a verifica ambele protocoale in timpul aceleiasi scanari.
Scanarea UDP functioneaza prin trimiterea de headere UDP goale (fara date) la fiecare port specificat al masinii tinta. Daca un mesaj ICMP de port inaccesibil (tipul 3, codul 3) este returnat, portul este closed (inchis). Alte mesaje ICMP de port care nu poate fi atins (tipul 3, codurile 1, 2, 9, 10 sau 13) marcheaza portul ca filtered (filtrat). Ocazional, un serviciu poate raspunde cu un pachet UDP, demonstrand faptul ca este open (deschis). Daca nici un raspuns nu este primit dupa mai multe retransmisii atunci portul este catalogat ca open|filtered (deschis|filtrat). Asta inseamna ca portul poate fi deschis sau poate un filtru de pachete blocheaza comunicatia. Scanarile de versiune ( -sV) pot fi folosite pentru a ne ajuta sa diferentiem porturile cu adevarat deschise de cele filtrate.
O mare incercare in scanarea UDP o reprezinta realizarea acesteia rapid. Porturile deschise si filtrate rareori trimit raspuns, lasand Nmapul sa astepte si apoi sa retrimita pachetul pentru situatia in care proba sau raspunsul s-au pierdut. Porturile inchise reprezinta adesea o problema si mai mare. In mod uzual trimit inapoi un mesaj de eroare ICMP inaccesibil. Dar spre deosebire de de pachetele RST trimise de porturile TCP inchise ca raspuns la scanarile SYN sau connect, multe hosturi limiteaza rata de mesaje ICMP port inaccesibil. Linux si Solaris sunt foarte stricte in aceasta privinta. De exemplu, kernelul Linux 2.4.20 limiteaza aceste mesaje la unul pe secunda (din net/ipv4/icmp.c).
Nmap detecteaza rata de limitare si incetineste scanarea in conformitate cu aceasta pentru a preveni inundarea retelei cu pachete inutile pe care masina tinta le va ignora. Din pacate, o limitare de genul Linuxului de un pachet la o secunda face ca o scanare de 65.536 de porturi sa dureze mai mult de 18 ore. Ideile de accelerare a scanarii UDP includ scanarea in paralel a mai multor hosturi, scanarea doar a porturilor cunoscute, scanarea din spatele firewallului si folosind optiunea --host-timeoutpentru a sari peste hosturile lente.
-sN; -sF; -sX(Scanari TCP Null, FIN, si Xmas)
Cand scanam un sistem compatibil cu textul RFC, orice pachet care nu contine bitii SYN, RST sau ACK va genera un raspuns RST daca portul este inchis si nici un raspuns daca portul este deschis. De vreme ce nici unul dintre acesti biti nu este inclus, orice combinatie a celorlalti trei (FIN, PSH si URG) este buna. Nmap exploateaza aceasta problema cu trei tipuri de scanari:
Scanare Null ( -sN)
Scanare FIN ( -sF)
Scanare Xmas ( -sX)
Aceste trei tipuri de scanare sunt identice in comportament exceptand flagurile TCP setate in pachetele de proba. Daca un pachet RST este primit, portul este considerat closed (inchis), in vreme ce nici un raspuns inseamna un port open|filtered (deschis|filtrat). Portul este marcat ca filtered (filtrat)daca un mesaj de eroare ICMP de port indisponibil (tipul 3, codurile 1, 2, 3, 9, 10 sau 13) este receptionat.
Principalul avantaj al acestor tipuri de scanare este acela ca se pot strecura prin anumite firewalluri non-statefull si routere cu filtrare de pachete. Alt avantaj al acestor tipuri de scanare este ca sunt si mai discrete decat o scanare SYN. Nu va bazati pe asta – multe IDSuri moderne pot fi configurate sa le detecteze. Marea problema este ca nu toate sistemele urmeaza RFC 793 litera cu litera. Un numar de sisteme trimit un raspuns RST la probe indiferent daca portul este deschis sau nu. Acest lucru face ca porturile sa fie marcate ca fiind inchise (closed). Majoritatea sistemelor care fac acest lucru sunt Microsoft Windows, multe dispozitive Cisco, BSDI si IBM OS/400. Acest tip de scanare functioneaza impotriva celor mai multe sisteme bazate pe UNIX. Alta problema este ca aceste tipuri de scanari nu pot face diferenta intre porturile deschise (open)de cele filtrate (filtered), lasand un raspuns de tipul deschis|filtrat (open|filtered).
-sA(Scanare TCP ACK)
Packetul de proba la scanrea ACK are doar bitul ACK setat (doar daca nu se specifica altceva cu --scanflags). Cand scanam sisteme nefiltrate porturile, deschise (open)si inchise (closed)vor returna un pachet RST. Nmap le eticheteaza ca nefiltrate (unfiltered), ceea ce inseamna ca sunt disponibile pentru pachetul ACK dar nu se poate determina daca sunt deschise (open)sau inchise (closed). Porturile care nu raspuns, sau trimit inapoi anumite mesaje de eroare ICMP (tipul 3, codurile 1, 2, 3, 9, 10 sau 13) sunt etichetate ca filtrate (filtered).
-sW(Scanare TCP Window)
Scanarea se bazeaza pe detalii de implementare a unei minoritati de sisteme din Internet, deci nu va bazati intotdeauna pe ea. Sistemele care nu suporta aceasta implementare returneaza de obicei toate porturile inchise (closed). Desigur, este posibil ca respectiva masina sa nu aiba porturi deschise. Daca majoritatea porturilor sunt inchise (closed)dar cateva numere comune cum ar fi (22, 25, 53) sunt filtrate (filtered), sistemul este unul compatibil cu scanarea. Ocazional, sistemul va raporta un comportament inversat. Daca scanarea returneaza 1000 de porturi deschise si 3 inchise sau filtrate, atunci acele trei pot fi adevaratele porturi deschise.
-sM(Scanarea TCP Maimon)
--scanflags(Scanare TCP personalizata)
Argumentul pentru --scanflagspoate fi o valoare numerica cum ar fi 9 (PSH si FIN), dar folosirea numelor simbolice este mult mai comoda. Puneti alaturi orice combinatie dintre URG, ACK, PSH, RST, SYN, and FIN. De exemplu, --scanflagsURGACKPSHRSTSYNFINsetaza toti bitii, desi nu este foarte folositor pentru scanare. Ordinea in care se fac specificarile este irelevanta.
In plus fata de specificarea flagurilor, puteti specifica si tipul de scanare TCP (cum ar fi -sAsau -sF). Aceasta spune Nmapului cum sa interpreteze raspunsurile. De exemplu, o scanare SYN considera ca lipsa unui raspuns indica un port filtrat (filtered), in timp ce o scanare FIN trateaza acelasi raspuns ca deschis|filtrat (open|filtered). Nmap se va comporta in acelasi fel in care o face pentru scanarile de baza, cu exceptia faptului ca va folosi flagurile TCP specificate. Daca nu specificati o scanare de baza, SYN va fi utilizata.
-sI <host zombie [:port_de_proba]>(Scanare Idle)
In afara faptului ca este extrem de discreta (datorita naturii oarbe), acest tip de scanare permite maparea relatiilor de incredere bazate pe IP intre masini. Lista de porturi arata porturile deschise din perspectiva hostului zombie.Asa ca puteti incerca scanarea tintei folosind diferiti zombie despre care credeti ca ar putea avea relatii de incredere cu tinta (prin router/filtru de pachete).
Puteti adauga doua puncte (“:”) urmate de numarul portului de pe calculatorul zombie daca vreti sa probati un port particular al zombieului pentru modificari IPID. Altfel Nmap va folosi portul utilizat implicit pentru pinguri tcp (80).
-sO(Scanarea protocolului IP)
Pe langa faptul ca este folositoare in sine, scanarea protocoalelor demonstreaza puterea softwareului open source. In vreme ce ideea fundamentala este destul de simpla, nu m-am gandit sa adaug sau sa primesc solicitari pentru o astfel de functionalitate. Apoi in vara lui 2000, Gerhard Rieger a intuit aceasta necesitate, a scris un patch excelent implementand-o si a trimis-o la lista de discutii nmap-hackers. Am incorporat patchul in distributia Nmap si am lansat o noua versiune in ziua urmatoare. Putine softwareuri comerciale au utilizatori suficient de entuziasti sa realizeze si sa contribuie cu propriile imbunatatiri.
Scanarea protocoalelor functioneaza intr-un mod similar cu scanarea UDP. In locul iterarii numerelor de porturi ale unui pachet UDP, se trimite un pachet IP si se itereaza cei 8 biti ai ai campului destinat protocolului din headerul pachetului IP. Headerele sunt de obicei goale, necontinand date si nici macar headerul potrivit pentru protocolul pretins. Cele trei exceptii sunt TCP, UDP si ICMP. Un header potrivit pentru acestea este inclus din moment ce unele sisteme nu le vor trimite altfel si pentru ca Nmap are deja functiile sa le creeze. In loc sa primeasca mesaje ICMP de port indisponibil, scanarea de protocoale cauta aceste mesaje de protocolICMP port indiponibil. Daca Nmap primeste orice raspuns de la tinta, Nmap marcheaza protocolul ca deschis (open). Un mesaj ICMP de protocol indisponibil (tip 2, cod 3) face ca protocolul sa fie marcat inchis (closed). Alte erori ICMP de indisponibilitate (tipul 3, codurile 1, 3, 9, 10 sau 13) duc la marcarea protocolului ca filtrat (filtered)(cu toate ca ele dovedesc ca ICMP este deschis (open)in acelasi timp). Daca nici un mesaj nu este primit dupa retransmisie, protocolul este marcat ca deschis|filtrat (open|filtered)
-b <host ftp de intermediere>(Scanare FTP sarita)
Aceasta vulnerabilitate era raspandita in 1997 cand Nmap a fost lansat, dar in mare parte a fost rezolvata. Servere vulnerabile exista inca, deci merita sa le cautati cand orice alta optiune a picat. Daca trecerea de un firewall reprezinta tinta dumneavoastra, scanati reteaua dupa portul 21 (sau orice alt serviciu ftp pe care il detectati cu ajutorul optiunii de identificare a versiunii), apoi incercati un atac sarit prin respectivul server. Nmap va va anunta daca serverul este vulnerabil sau nu. Daca incercati doar sa va acoperiti urmele, nu aveti nevoie (de fapt nici nu trebuie) sa va limitati la hosturile din reteaua tinta. Inainte sa scanati aleator prin Internet dupa servere FTP vulnerabile, luati in considerare faptul ca administratorii de sistem pot sa nu aprecieze faptul ca abuzati de serverele lor in acest mod.
SPECIFICAREA PORTURILOR SI A ORDINII DE SCANARE¶
In plus fata de toate metodele discutate anterior, Nmap ofera optiuni pentru specificarea porturilor ce urmeaza a fi scanate si daca scanarea se va realiza intr-o ordine aleatoare sau secventiala. Implicit, Nmap scanaeaza toate porturile pana la 1024 inclusiv, precum si porturile mai mari aflate in fisierul nmap-servicespentru protocolul/protocoalele scanate.
-p <domeniu de porturi>(Se scaneaza doar porturile specificate aici)
Cand scanati atat porturi TCP cat si UDP, puteti specifica un protocol particular precedand numarul portului cu T:sau U:. Identificatorul are domeniu de actiune pana la aparitia altui identificator. De exemplu, argumentul -pU:53,111,137,T:21-25,80,139,8080va scana porturile UDP 53, 111 si 137 precum si porturile TCP listate. De notat ca pentru scanarea simultana de porturi UDP si TCP, trebuie sa specificati -sUsi cel putin un tip de scanare TCP (cum ar fi -sS, -sF, sau -sT). Daca nici un calificator nu a fost furnizat, numerele de porturi sunt adaugate fiecarui protocol in parte.
-F(Scanare rapida (numar limitat de porturi)
-r(Nu se scaneaza porturile in ordine aleatoare)
DETECTIA SERVICIILOR SI A VERSIUNILOR¶
Rulati nmap pe o masina si el ar putea sa va spuna ca porturile 25/tcp, 80/tcp si 53/udp sunt deschise. Folosind baza de date nmap-servicesde aproximativ 2.200 servicii cunoscute, Nmap va raporta ca respectivele porturi corespund unui server de mail (SMTP), unui server web (HTTP) si respectiv unui server DNS (53). Aceasta recunoastere este de obicei corecta – majoritatea serviciilor care asculta la portul TCP 25 sunt servere de mail. Totusi, nu trebuie sa va bazati pe asta! Oamenii pot si chiar ruleaza servicii pe porturi ciudate.
Chiar daca Nmap realizeaza recunoasterea corect, si ipoteticul server de mai sus ruleaza SMTP, HTTP si DNS, tot nu este suficienta informatie. Cand se realizeaza o evaluare a vulnerabilitatilor (sau chiar o simpla inventariere a retelei) a companiilor sau clientilor dumneavoastra, vreti sa stiti ce server de mail, ce server DNS si in ce versiuni ruleaza acestea. Avand un numar corect de versiune ne ajuta foarte mult sa determinam la ce exploituri este serverul vulnerabil. Detectia versiunilor ne ajuta sa obtinem aceste informatii.
Dupa ce porturile TCP si/sau UDP sunt descoperite folosind una dintre metodele de scanare, detectia versiunii interogheaza acele porturi pentru a determina mai multe despre ce se ruleaza la ele de fapt. Baza de date nmap-service-probescontine probe pentru interogarea diferitelor servicii si compara expresiile pentru a recunoaste si procesa raspunsurile. Nmap incearca sa determine protocolul serviciului (ex: ftp, ssh, telnet, http), numele aplicatiei (ex: ISC Bind, Apache httpd, Solaris telnetd), numarul versiunii, numele hostului, tipul masinii (ex: printer, router), familia de sisteme de operare (ex: Windows, Linux) si cateodata si alte informatii diverse cum ar fi daca exista un server X deschis la conexiuni. Daca Nmap a fost compilat cu suport OpenSSL, se va conecta la servere SSL pentru a deduce serviciile care asculta in spatele acelui nivel de criptare. Cand servicii RPC sunt descoperite, evaluatorul RPC din Nmap ( -sR) este automat folosit pentru a determina programul RPC si numarul versiunii. Unele porturi UDP sunt lasate in starea deschis|filtrat (open|filtered)dupa o scanare UDP care nu a putut determina daca porturile sunt deschise sau filtrate. Detectia versiunii va incerca sa smulga un raspuns de la aceste porturi (asa cum o face cu porturile deschise), si sa sa le schimbe starea in deschis daca reuseste. Porturile TCP deschis|filtrat (open|filtered)sunt tratate in aceeasi maniera. Notati ca optiunea -Aactiveaza detectia versiunii printre altele. Un document care explica aceste lucruri, utilizarea lor si rafinarea detectiei versiunii este disponibila la https://nmap.org/vscan/.
Cand Nmap primeste raspunsuri de la un serviciu dar nu gaseste ceva corespunzator in baza de date, afiseaza o amprenta si un URL pentru a o putea trimite daca stiti cu exactitate ce ruleaza la respectivul port. Va rog sa va rupeti cateva minute pentru a face acest lucru, astfel incat de descoperirea dumneavoastra sa poata beneficia toata lumea. Datorita amprentelor trimise de utilizatori, Nmap are aproximativ 3.000 de modele pentru 350 de protocoale cum ar fi smtp, ftp, http, etc.
Detectia versiunii este activata si controlata de urmatoarele optiuni:
-sV(Detectia versiunii)
--allports(Nu se exclude nici un port de la detectia versiunii)
--version-intensity <intensitate>(Seteaza intensitatea detectiei versiunii)
--version-light(Activeaza modul delicat)
--version-all(Incearca toate probele)
--version-trace(Urmareste activitatea scanarii vesiunii)
-sR(Scanare RPC)
DETECTIA SISTEMULUI DE OPERARE¶
Una dintre cele mai cunoscute facilitati ale Nmap o reprezinta detectarea de la distanta a sistemului de operare folosind amprentele stivei TCP/IP. Nmap trimite o serie de pachete TCP si UDP la calculatorul tinta si examineaza practic bit cu bit raspunsul. Dupa ce ruleaza o multime de teste ce includ crearea de modele TCP ISN, suportul si ordonarea optiunilor TCP, crearea de modele IPID si verificarea dimensiunii intiale a cadrului, Nmap compare rezultatul cu baza de date nmap-os-fingerprintsce contine mai mult de 1500 de amprente de sisteme de operare, si afiseaza detaliile acestuia daca este gasita o similitudine. Fiecare amprenta include o descriere textuala a sistemului de operare si o clasificare ce furnizeaza numele producatorului (ex: Sun), sistemul de operare (ex: Solaris), versiunea (ex: 10) si tipul masinii (scop general, router, switch, consola de jocuri, etc.)
Daca Nmap este in imposibilitatea de a ghici sistemul de operare al unei masini iar conditiile sunt favorabile (ex: cel putin un port deschis si unul inchis au fost gasite), Nmap va furniza un URL pe care il puteti folosi pentru a trimite, daca stiti cu siguranta, ce sistem de operare ruleaza. Prin acest lucru contribuiti la baza de sisteme cunoscute de Nmap, facand identificarea sistemului de operare mai precisa si pentru ceilalti.
Detectia sistemului de operare activeaza alte cateva teste care folosesc oricum informatia obtinuta in acest proces. Unul dintre acestea este masurarea timpului de activitate (uptime), care foloseste optiunea de amprenta de timp din pachetele TCP (RFC 1323) si ghiceste cand a fost ultima oara rebutata masina. Acest lucru este raportat doar pentru masinile care furnizeaza aceasta informatie. Alt test este cel de clasificare al predictibilitatii secventei TCP. Acesta masoara cu aproximatie cat de greu este sa stabilesti o conexiune falsificata TCP cu tinta. Este folositoare pentru exploatarea relatiilor de incredere bazate pe IP (rlogin, filtre firewall, etc.) sau pentru ascunderea sursei unui atac. Acest tip de ascundere a identitatii este rar intalnita in zilele noastre, dar multe masini sunt inca vulnerabile. Numarul ce reprezinta dificultatea este bazat pe modelarea statistica si poate fluctua. In general este mai bine daca se foloseste clasificarea textuala, cum ar fi „worthy challenge (merita incercat)”sau „trivial joke (gluma banala)”. Acestea sunt raportate doar in modul afisare detaliata ( -v). Cand modul afisare detaliata este activat alaturi de -O, generarea secventei IPID este si ea raportata. Cele mai multe masini sunt in clasa „incrementala”, ceea ce inseamna ca incrementeaza campul ID din headerul fiecarui pachet pe care il trimit. Acest lucru le face vulnerabile la cateva tehnici avansate de culegere a informatiilor si la atacuri simulate.
Un articol ce documenteaza aceste aspecte, precum si personalizarea detectiei versiunii este disponibil in mai multe limbi la https://nmap.org/osdetect/.
Detectarea sistemului de operare este activata si controlata prin urmatoarele optiuni:
-O(Activeaza detectia sistemului de operare)
--osscan-limit(Limiteaza detectarea sistemului de operare la tintele promitatoare)
--osscan-guess; --fuzzy(Ghiceste sistemul de operare pe baza rezultatelor)
OPTIUNI DE TIMP SI PERFORMANTA¶
Una dintre prioritatile principale in dezvoltarea Nmapului a fost performanta. O scanare implicita ( nmap nume_host) de pe un calculator din reteaua locala ia mai putin de o cincime de secunda. Cu greu ai timp sa clipesti, dar timpul creste o data cu numarul hosturilor. Mai mult, anumite optiuni cum ar fi scanarea UDP si detectia versiunii pot mari substantial timpul de scanare. Acelasi lucru il pot face si anumite configuratii firewall, in special cele care limiteaza rata de raspuns. Cu toate ca Nmap utilizeaza paralelismul si algoritmi avansati de accelerare a scanarilor, controlul final asupra a cum ruleaza Nmap revine utilizatorului. Expertii compun cu atentie comenzile Nmap pentru a obtine numai informatia de care au nevoie incadrandu-se si in perioada de timp.
Tehnicile pentru imbunatatirea vitezei de scanare includ omiterea testelor ne-critice si upgradeul la ultima versiune de Nmap (imbunatatiri de performanta se realizeaza frecvent). Optimizarea parametrilor de timp poate aduce de asemenea un spor substantial. Aceste optuni sunt prezentate in cele ce urmeaza.
--min-hostgroup <milisecunde>; --max-hostgroup<milisecunde>(Ajusteaza dimensiunea grupurilor pentru scanari paralele)
Implicit, Nmap adopta o abordare de compromis in acest conflict. Porneste cu un grup mic de cinci pentru a afisa rapid primele rezultate si apoi creste dimensiunea grupului pana la 1024. Numarul exact depinde de optiunea data. Din motive de eficienta, Nmap utilizeaza grupuri mai mari pentru scanarile UDP si pentru cateva din porturile TCP.
Cand o dimensiune maxima este specificata cu --max-hostgroup, Nmap nu va depasi niciodata aceasta valoare. Specificati o dimensiune minima cu --min-hostgroupsi Nmap va incerca sa mentina dimensiunile grupurilor peste acel nivel. Nmap se poate vedea nevoit sa foloseasca grupuri mai mici daca nu mai sunt suficiente tinte ramase pentru a completa nivelul minim. Amandoua pot fi folosite pentru a mentine dimensiunea grupului intre anumite limite, desi acest lucru este in putine cazuri unul de dorit.
Principala utilizare a acestei optiuni este specificarea dimensiunii minime a unui grup astfel incat scanarea sa ruleze mai rapid. O alegere uzuala este 256 pentru scanarea unei retele in bucati egale cu o clasa C. Pentru o scanare cu multe porturi, depasirea acestui numar este improbabil sa ajute la ceva. Pentru o scanare cu doar cateva porturi, grupurile de 2048 sau mai multe hosturi pot fi folositoare.
--min-parallelism <milisecunde>; --max-parallelism<milisecunde>(Seteaza paralelizarea probelor)
Cea mai comuna utilizare o reprezinta setarea --min-parallelismla o valoare mai mare de unu pentru a mari viteza de scanare pentru hosturi si retele cu performante slabe. Aceasta este o optiune riscanta, deoarece setarea ei la o valoare prea mare poate influenta calitatea rezultatului. Setarea acesteia reduce de asemenea capacitatea Nmap de a controla paralelismul in mod dinamic pe baza conditiilor intalnite in retea. O valoare de zece poate fi una rezonabila, cu toate ca eu ajustez aceasta valoare doar ca o ultima optiune.
Optiunea --max-parallelismeste setata cateodata pentru a preveni Nmap sa trimita mai mult de o proba o data catre un host. Poate fi folositoare in combinatie cu --scan-delay(ce va fi discutata mai tarziu), cu toate ca cea de-a doua face acest lucru destul de bine si singura.
--min-rtt-timeout <milisecunde>, --max-rtt-timeout <milisecunde>, --initial-rtt-timeout<milisecunde>(Seteaza timpul de viata al probelor)
Aceasta optiune preia o valoare in milisecunde. Specificand o valoare mica pentru --max-rtt-timeoutsi --initial-rtt-timeout, in scanarile default se pot obtine reduceri de timp semnificative. Acest lucru este in particular adevarat pentru hosturile care nu raspund la ping ( -P0) si a celor impotriva retelelor masiv filtrate. nu deveniti insa prea agresiv. Scanarea poate sfarsi intr-un timp mare daca valorile sunt prea mici si probele expira repede, fiind necesara retransmiterea lor in timp ce probabil raspunsul este pe drum.
Daca hosturile fac parte din reteaua interna, o valoare de 100 milisecunde este una suficient de agresiva pentru --max-rtt-timeout. Daca routarea intra in joc, executati un ping la un host din respectiva retea folosind utilitarul PING din sistemul de operare, sau cu un utilitar de construit pachete cum ar fi hping2 ce are mai multe sanse de a trece prin firewall. Analizati timpul maxim dintr-un grup de zece pachete. Il puteti dubla pentru --initial-rtt-timeoutsi tripla pentru --max-rtt-timeout. In general, nu setati timpul maxim rtt sub 100 milisecunde., indiferent de ce raporteaza pingurile. Si nici nu depasiti 1000 milisecunde.
--min-rtt-timeouteste rar folosita si nu este folositoare intr-o retea pentru care valoarea implicita a Nmap este prea agresiva. Din moment ce Nmap reduce timpul de viata al pachetelor pana la minim pentru o retea eficienta, nevoia acestei optiuni nu este uzuala si ar trebui raporta ca o problema in lista de discutii nmap-dev.
--host-timeout <milisecunde>(Se renunta la tintele lente in raspuns)
--scan-delay <milisecunde>; --max-scan-delay<milisecunde>(Ajusteaza pauza dintre probe)
Alta utilizare a --scan-delayeste ascunderea scanarii in fata IDS/IPSurilor bazate pe un anumit prag de raspuns.
-T<Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>(Seteaza optiunile de timp)
Aceste modele permit utilizatorului sa specifice cat de agresiva sa fie scanarea, lasand totusi Nmapul sa aleaga valorile exacte. Modelele realizeaza uneori mici reglaje pentru care inca nu exista optiuni de control. De exemplu, -T4interzice scanarii dinamice sa depaseasca 10 milisecunde pentru porturile TCP si -T5reduce aceasta valoare la 5 milisecunde. Modelele pot fi folosite in combinatie cu controalele fine de timp, atat timp cat modelul este specificat mai intai. Altfel valorile standard ale modelului pot suprascrie valorile specificate. Se recomanda folosirea -T4cand se scaneaza retele moderne rapide. Pastrati aceasta optiune la inceputul liniei de comanda chiar si cand adaugati optiuni de control fin pentru a beneficia de micile ajustari oferite.
Daca folositi o conexiune broadband sau ethernet, recomand folosirea intotdeauna a optiunii -T4. Unii oameni adora -T5cu toate ca este prea agresiva pentru gustul meu. Altii specifica -T2deoarece cred ca scanarea va bloca hosturile si se considere pe ei politicosi in general. De obicei nu realizeaza cat de inceata este optiunea -TPolite. Scanarile lor pot lua de zece ori mai mult timp decat unele implicite. Blocarile masinilor si probleme legate de banda sunt rare cu modelul implicit ( -T3) asa ca in mod normal este recomandat pentru scanere precaute. Omiterea detectiei versiunii este mult mai eficienta decat jocul cu optiunile de timp.
Desi -T0si -T1pot fi folosite pentru pacalirea IDSurilor, ele pot lua un timp extrem de mare pentru a scana mii de masini sau porturi. Pentru o astfel de scanare lunga, puteti prefera setarea exacta a optiunilor de timp decat sa va bazati pe cele inglobate in optiunile -T0si -T1.
Principalul efect al T0este serializarea scanarii astfel incat un singur port este scanat o data, si se asteapta cinci minute intre trimiterea probelor. T1si T2sunt similare dar asteapta doar 15 secunde, respectiv 0,4 secunde intre probe. T3este comportamentul implicit al Nmapului ce include si paralelizarea. T4realizeaza echivalentul --max-rtt-timeout 1250 --initial-rtt-timeout 500si seteaza intarzierea maxima pentru scanarea TCP la 10 milisecunde. T5realizeaza echivalentul la --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --host-timeout 900000si seteaza intarzierea maxima pentru scanarea TCP la 5 milisecunde.
PACALIREA FIREWALL/IDSURILOR SI ASCUNDEREA IDENTITATII¶
Multi pionieri ai internetului au prevazut o retea globala deschisa cu un spatiu universal de adrese IP permitand conexiuni virtuale intre oricare doua noduri. Acest lucru permite hosturilor sa actioneze ca parteneri in comunicatie, sa serveasca si sa obtina informatii unul de la celalalt. Oamenii pot accesa sistemele de acasa, sa schimbe temperatura in casa sau sa deschida usa pentru oaspetii grabiti. Viziunea conectivitatii universale a fost inabusita de micsorarea spatiului de adrese si de problemele de securitate. La inceputul anilor 90, organizatiile au inceput implementarea firewallurilor cu scopul precis de reducere a conectivitatii. Retele uriase au fost separate de Internetul nefiltrat prin aplicatii proxy, traduceri de adrese de retea (NAT) si filtre de pachete. Fluxul nerestrictionat de informatii a facut loc canalelor de comunicatie aprobate si supuse unor anumite reguli, precum si controlului datelor ce trece prin ele.
Obstacolele din retea cum ar fi firewallurile pot face din maparea retelei o operatie extrem de dificila. Nu va deveni mai usor din moment ce constrangerile aplicate retelei reprezinta adesea un scop al implementarii noilor echipamente in retea. Nu e mai putin adevarat ca Nmap ofera multe optiuni pentru intelegerea acestor retele complexe si sa verifice daca filtrele functioneaza asa cum trebuie. Chiar suporta mecanisme de depasire a sistemelor de aparare prost implementate. Punetiva in pielea unui atacator si aplicati tehnici din aceasta sectiune in reteaua dumneavoastra. Lansati un atac sarit FTP, o scanare Idle, o fragmentare a atacului sau incercati realizarea unui tunel printr-un proxy de-al dumneavoastra.
In plus fata restrictiile retelelor, companiile au inceput sa monitorizeze traficul cu sisteme de detectie a intruziunilor (IDS). Toate IDSurile cunoscute sunt livrate cu reguli care sa detecteze scanarile Nmap deoarece acestea preced de obicei un atac. Multe dintre acestea sau transformat in sisteme de prevenirea intruziunilor (IPS) care blocheaza in mod activ traficul presupus malitios. Din pacate pentru administratorii de retea si vanzatorii IDSurilor, detectarea in mod corect a relelor intentii prin analizarea pachetelor este o problema dificila. Atacatorii cu rabdare, indemanare si ajutor din partea anumitor optiuni Nmap pot in mod normal sa treaca de IDS nedetectati. Intre timp, administratorii au de a face cu o multime de alerte false cand trafic inocent este gresit diagnosticat si se emite o atentionare sau este chiar blocat.
Cateodata oamenii sugereaza ca Nmap nu ar trebui sa ofere functii de pacalire a regulilor firewallurilor sau de trecerea nedetectata de IDS. Argumeenteaza prin faptul ca pot fi folosite de atacatori. Problema in acest rationament este ca atacatorii tot vor gasi instrumente sau patchuri pentru Nmap pentru a realiza acest lucru. Intre timp, administratorii pot descoperii ca munca lor este mult mai dificila. Instalarea numai a serverelor FTP moderne, cu patchurile aplicate la zi este o metoda mult mai buna de protectie decat prevenirea distribuirii instrumentelor ce implementeaza atacurile sarite FTP.
Nu exista nici o optiune magica in Nmap pentru detectarea si pacalirea firewallurilor si a sistemelor IDS. Acest lucru ia indemanare si experienta. O prezentare detaliata este dincolo de scopul acestui ghid de referinta, care listeaza doar optiunile relevante si descrie ce fac ele.
-f(fragmenteaza pachetele); --mtu(foloseste MTU specificat – Unitatea Maxima de Transmitere)
-D <momeala1 [,momeala2][,ME (EU)],...>(Scanare acoperita de momeli)
Separati fiecare momeala prin virgule si folositi optional ME(adica propria adresa IP) ca una dintre momeli pentru a reprezenta adevarata pozitie a adresei IP reale. Daca puneti MEin a sasea pozitie sau mai tarziu, unele detectoare de scanari de porturi (cum ar fi Solar Design) pot sa nici nu afiseze adresa IP reala. Daca nu folositi ME, nmap il va pune intr-o pozitie aleatoare.
Retineti faptul ca tintele pe care le folositi ca momeli trebuie sa fie active sau altfel riscati sa inundati cu pachete SYN tinta. In aceeasi ordine de idei, este usor de determina cine face scanarea daca o singura adresa IP este activa. E de preferat sa utilizati adrese IP in loc de nume (astfel incat numele hostului dumneavoastra sa nu apara in logurile DNSului tinta).
Momelile sunt folosite atat in pingul initial (folosind ICMP, SYN, ACK sau orice altceva) si in timpul scanarii efective de porturi. Momelile sunt de asemenea folosite la detectarea sistemului de operare ( -O). Momelile nu functioneaza cu detectia versiunii sau scanarea TCP connect().
Nu folositi prea multe momeli deoarece pot incetini scanarea si o pot face mai putin corecta. De asemena, unii ISP vor filtra pachetele false, dar multi nu restrictioneaza pachetele IP de loc.
-S <Adresa_IP>(Seteaza adresa IP sursa)
Alta posibila utilizare a acestei optiuni este sa faceti tinta sa creada ca este scanata de altcineva. Imaginativa o companie permananent scanata de un competitor! Optiunea -eva fi in general necesara pentru astfel de utilizare si -P0este de asemenea recomanda.
-e <interfata>(Foloseste interfata specificata)
--source-port <numarul_portului>; -g <numarul_portului>(Seteaza portul sursa)
Solutii securizate la aceste probleme exista, de obicei sub forma de proxiuri la nivelul aplicatie sau module firewall care analizeaza protocoalele. Din pacate exista si solutii mai simple si mai nesigure. Notand faptul ca raspunsurile DNS vin de la portul 53 si cele de la conexiunile FTP de la portul 20, multi administratori au cazut in capcana permiterii neconditionate a traficului de la aceste porturi. Adesea ei presupun ca nici un atacator nu va observa si exploata astfel de gauri in firewall. In alte cazuri, administratorii considera aceasta rezolvare ca una pe termen scurt pana cand vor implementa o solutie mai sigura. Apoi ei uita sa mai faca upgradeul de securitate.
Administratorii retelelor supraincarcate nu sunt singurii care cad in aceasta capcana. Numeroase produse au fost livrate cu aceste reguli nesigure. Chiar si Microsoft are partea ei de vina. Filtrele IPsec livrate cu Windows 2000 si Windows XP contin o regula implicita care permite traficul oricarui pachet UDP cu portul sursa 53 (DNS) sau 67 (DHCP).
Nmap ofera optiunile -gsi --source-port(care sunt echivalente) pentru exploatarea acestei slabiciuni. Specificati un numar ca argument si Nmap va trimite pachete de la acel port oricand acest lucru este posibil. Nmap trebuie sa foloseasca porturi diferite pentru anumite teste de detectare a sistemului de operare si cererile DNS ignora optiunea --source-portdeoarece Nmap se bazeaza pe librariile sistemului pentru a le manevra. Multe scanari TCP, incluzand-o pe cea SYN, suporta aceasta optiune, la fel ca si scanarea UDP.
--data-length <numar>(Adauga un numar aleator de date la pachetul trimis)
--ttl <valoare>(Seteaza campul IP time-to-live – timp de viata)
--randomize-hosts(Scaneaza hosturile in ordine aleatoare)
--spoof-mac <adresa mac, prefix, numele vanzatorului >(Falsifica adresa MAC)
AFISAREA REZULTATELOR¶
Orice instrument de securitate este bun in masura rezultatelor generate. Teste complexe si algoritmi nu au nici o valoare daca nu sunt prezentate intr-un mod organizat si inteligibil. Dat fiind numarul de moduri in care Nmap este folosit de oamenii sau programe, nu exista un format unic care sa ii multumeasca pe toti. Asadar, Nmap ofera mai multe formate, incluzandu-l pe cel interactiv pentru citirea uzuala si XML pentru interpretarea rezultatelor de catre software.
In plus fata de oferirea diferitelor formate de afisare, Nmap furnizeaza si optiuni de control al cantitatii de informatii si al mesajelor de eroare. Tipurile de afisare a rezultatelor sunt trimise la iesirea standard sau in fisiere, unde Nmap poate adauga sau rescrie. Fisierele cu rezultate pot fi de asemenea folosite pentru reluarea scanarilor intrerupte.
Nmap face rezultatele disponibile in cinci formate. Cel implicit este numit afisare interactiva, si este trimis la iesirea standard (stdout). Exista si un mod de afisare normala, care este similar cu cel interactivcu exceptia faptului ca afiseaza mai putine informatii si avertizari in timpul rularii din moment ce se asteapta analizarea rezultatelor dupa ce scanarea s-a incheiat.
Formatul XML este unul dintre cele mai importante tipuri, deoarece poate fi convertit in HTML, prelucrat de programe cum ar fi interfata grafica a Nmap sau importat in baze de date.
Celelalte doua tipuri sunt mai simple formatul pentru comanda grepcare include majoritatea informatiilor despre un host pe o singura linie si f0rm4Tu1 sCRiPt KiDDi3pentru utilizatorii care se considera |<-r4d.
In vreme ce afisarea interactiva este formatul implicit si nu are asociat o optiune pentru linia de comanda, celelalte patru formate folosesc aceeasi sintaxa. Ele iau un argument, care este numele fisierului in care se stocheaza rezultatele. Formate multiple pot fi specificate, dar fiecare format poate fi specificat cel mult o data. De exemplu, puteti dori salvarea in formatul normal pentru citirea ulterioara si in formatul XML pentru analiza software. Puteti realiza acestea cu optiunea -oX scanarea_mea.xml -oN scanarea_mea.nmap. Desi in acest capitol numele folosite sunt simple, precum scanarea_mea.xmlpentru simplitate, nume mai descriptive sunt recomandate. Numele alese sunt o chestie de preferinta, iar eu folosesc nume lungi care incorporeaza data scanarii si un cuvant doua pentru descriere si sunt plasate in directoare numite in functie de companiile scanate.
Desi aceste optiuni salveaza rezultatele in fisiere, Nmap afiseaza totusi in modul interactiv la iesirea standard rezultatele. De exemplu, comanda nmap -oX scanarea_mea.xml tintascrie in format XML in scanarea_mea.xmlsi afiseaza la iesirea standard rezultatele in modul interactiv ca si cum optiunea -oXnu a fost specificata. Puteti modifica acest lucru furnizand ca argument al optiunii caracterul cratima (“-”) la unul din tipurile de formate de afisare. Acest lucru face ca Nmap sa dezactiveze formatul interactiv, si sa afiseze in schimb rezultatele in formatul specificat la iesirea standard. Comanda nmap -oX - tintava trimite rezultatele in format XML la iesirea standard. Erorile mari pot fi scrise in mod normal in sirul de erori, stderr.
Spre deosebire de argumentele Nmap, spatiul dintre optiune (cum este -oX) si numele fisierului sau cratima este obligatoriu. In caz contrar, in situatii ca -oG-sau -oXscan.xml, o functie de compatibilitate cu versiunile anterioare va face ca Nmap sa creeze in formatul normalfisiere de iesire cu numele G-si Xscan.xml.
Nmap ofera optiuni de control al nivelului de informatii afisate si daca la fisiere se va face adaugare de informatie sau vor fi suprascrise. Toate optiunile sunt descrise mai jos
Formate de afisare a rezultatelor
-oN <specificator_fisier>(Afisare normala)
-oX <specificator_fisier>(Formatul XML)
XML ofera un format stabil care este usor interpretat de software. Analizatoare XML sunt disponibile pentru majoritate limbajelor de programare, incluzand C/C++, Perl, Python si Java. Oamenii au scris programe pentru majoritatea acestor limbaje care interpreteaza direct rezultatele Nmap. Exemplele sunt Nmap::Scanner[10]si Nmap::Parser[11]in Perl CPAN. In majoritatea cazurilor in care o aplicatie interfereaza cu Nmap, XML este formatul preferat.
Formatul XML referentiaza un format de pagina XSL care poate fi folosit pentru convertirea rezultatelor in HTML. Cea mai usoara cale de a realiza acest lucru o reprezinta simpla incarcare a fisierului XML intr-un browser cum ar fi Firefox sau IE. Implicit, acest lucru functioneaza doar pe masinile pe care rulati Nmap (sau pe cele configurate similar) din cauza caii fisierului nmap.xsl. Folositi optiunile --webxmlsau --stylesheetpentru crearea de fisiere XML portabile care sunt randate ca HTML pe orice masina conectata la web.
-oS <specificator de fisier>(f0rm4u1 ScRipT KIdd|3)
-oG <specificator_fisier>(Formatul pentru comanda grep)
Nu e mai putin adevarat ca formatul grep este inca destul de popular. Este un format simplu care listeaza fiecare host pe cate o linie si poate fi usor interpretat cu instrumente standard UNIX cum ar fi grep, awk, cut, sed, diff si Perl. Chiar si eu il folosesc pentru unul din testele realizate in linie de comanda. Gasirea tuturor hosturilor cu portul ssh deschis si care ruleaza Solaris presupune o simpla comanda grep pentru identificarea hosturilor, imbinata cu awk sau cut pentru afisarea campurilor dorite.
Formatul grep consta in comentarii (linii care incep cu diez (#)) si linii cu tinte. O linie cu tinta include o combinatie de 6 campuri etichetate, separate prin taburi si urmate de doua puncte (“:”). Campurile sunt Host, Porturi, Protocoale, Status ignorat, Sistem de operare, Index Seq, IPID, si Status.
Cele mai importante dintre aceste campuri sunt in general Porturile, care ofera detalii despre fiecare port interesant. Este o lista separata prin virgule de porturi. Fiecare port reprezinta un port interesant, si ia forma unui subcamp separat in sapte de caracterul slash (/). Subcampurile sunt: Numarul portului, Status, Protocol, Detinator, Serviciu, informatii SunRPC, si Informatii despre versiune.
Ca si pentru formaul XML, aceasta pagina man nu permite documentarea intregului format. O detaliere a formatului pentru comanda grep este disponibila la [12].
-oA <nume_de_baza>(Scrie in toate formatele)
Optiuni privind cantitatea de informatii afisate si
depanare
-v(Creste cantitatea de informatii afisate)
Majoritatea modificarilor vor afecta doar afisarea interactiva si unele mai pot afecta formatul script kiddie. Celelalte formate sunt concepute pentru a fi procesate de masini, asa ca Nmap ofera implicit un nivel detaliat de informatii fara a obosi utilizatorul. Totusi, exista cateva schimbari in celelalte moduri unde dimensiunea rezultatelor poate fi redusa substantial prin omiterea unor detalii. De exemplu, o linie ce contine comentarii in formatul pentru comanda grep care furnizeaza o lista cu toate porturile scanate este furnizata doar in modul de afisare cu informatii detaliate (-v) dearece poate fi destul de lunga.
-d [nivel](Creste sau seteaza nivelul de depanare)
Modul depanare este folositor cand se suspecteaza o problema in Nmap, sau daca esti pur si simplu incurcat de ce si ce face Nmap. Cum aceasta functionalitate este in general destinata dezvoltatorilor, mesajele de depanare nu sunt intotdeauna clare. Puteti vedea ceva de genul: Timeoutvals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000. Daca nu intelegeti o linie, singurele lucruri de facut este sa o ignorati, sa cautati in codul sursa sau sa solicitati ajutor in lista de dezvoltare (nmap-dev). Unele linii sunt explicite, dar mesajele devin mai obscure pe masura ce nivelul de depanare creste.
--packet-trace(Urmareste pachetele si datele trimise si primite)
--iflist(Listeaza interfetele si caiule de rutare)
Optiuni pentru afisare unor informatii diverse
--append-output(Adauga la fisierul de rezultate in loc sa il inlocuiasca)
--resume <nume_fisier>(Reia o scanare intrerupta)
--stylesheet <cale sau URL>(Seteaza formatul XSL pentru transformarea rezultatului XML)
--webxml(Incarca formatul stylesheet de la Insecure.Org)
--no-stylesheet(Se omite declaratia stylesheetului XSL din XML)
OPTIUNI DIVERSE¶
Aceasta sectiune descrie cateva optiuni importante (si mai putin importante) care nu si-au gasit locul in nici o alta sectiune
-6(Activeaza scanarea IPv6)
Desi IPv6 nu a revolutionat lumea, are parte de o folosire semnificativa in unele tari (in special in Asia) si majoritatea sistemelor moderne de operare ofera suport. Pentru folosirea Nmap cu IPv6, atat sursa cat si tinta scanarii trebuie sa fie configurate in IPv6. Daca ISPul dumneavoastra nu aloca o adresa IPv6 (multi nu o fac), tunele de trecere sunt disponibile gratuit si functioneaza bine cu Nmap. Unul dintre cele mai bune este cel rulat de BT Exact. Am folosit si cel furnizat de Hurricane Electric la http://ipv6tb.he.net/. Tunelele 6la4 sunt de asemenea folosite, existand si optiuni gratuite.
-A(Optiuni de scanare agresive)
--datadir <nume_director>(Specifica un anumit director pentru localizarea fisierelor Nmap)
--send-eth(Foloseste trimiterea bruta ethernet)
--send-ip(Trimite pachete brute la nivelul IP)
--privileged(Se presupune ca utilizatorul are privilegii depline)
-V; --version(Afiseaza numarul versiunii)
-h; --help(Afiseaza o pagina sumara de ajutor)
INTERACTIUNE IN TIMPUL RULARII¶
In timpul executiei Nmap, toate tastele apasate sunt inregistrate. Acest lucru va perite interactiunea cu programul fara oprirea si restartarea lui. Anumite taste vor schimba optiuni in vreme ce altele vor afisa mesaje despre scanarea in curs. Conventia este ca literele mici crescnivelul de afisare si literele mari scadacest nivel.
v/ V
d/ D
p/ P
Anything else (Orice altceva)
Stats: 0:00:08 elapsed; 111 hosts completed (5 up), 5 undergoing Service Scan
Service scan Timing: About 28.00% done; ETC: 16:18 (0:00:15 remaining)
EXEMPLE¶
Aici sunt cateva exemple de utilizare a Nmap, de la unele simple si de rutina pana la altele mai complexe si ezoterice. Unele adrese IP si nume de domenii sunt folosite pentru a face lucrurile mai concrete. In locul lor trebuie sa puneti adresele/numele din reteaua dumneavoastra.. Desi nu cred ca scanarea de porturi a altor retele este sau ar trebui sa fie ilegala, unii administratori de retea nu apreciaza scanari nesolicitate ale retelelor lor si pot depune plangere. Obtinerea mai intai a permisiunii este cea mai buna abordare.
Pentru testare, aveti permisiunea sa scanati hostul scanme.nmap.org. Aceasta permisiune include doar scanarea cu Nmap si nu testarea gaurilor de securitate sau atacuri de tip DOS. Pentru conservarea latimii de banda, va rog sa nu initiati mai multe scanari zilnic. Daca aceasta tinta este abuzata, va fi indisponibila in retea si Nmap va raporta imposibilitatea de a gasi hostul Failed to resolve given hostname/IP: scanme.nmap.org. Aceasta permisiune se aplica si hosturilor scanme2.nmap.org, scanme3.nmap.org, si asa mai departe, desi acestea nu exista inca.
nmap -v scanme.nmap.org
Aceasta linie de comanda scaneaza toate porturile TCP rezervate de pe masina scanme.nmap.org. Optiunea -vactiveaza modul de afisare in timp real a rezultateor.
nmap -sS -O scanme.nmap.org/24
Lanseaza o scanare SYN impotriva tuturor celor 255 masini din reteaua de „clasa C”unde isi are locul hostul scanme. De asemenea incearca determinarea sistemului de operare a fiecarui host activ. Acesta lansare necesita privilegii root din cauza scanarii SYN si a detectarii sistemului de operare.
nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127
Lanseaza enumerarea hosturilor si o scanare TCP in prima jumatate a celor 255 de subretele 198.116 de clasa B. Testeaza daca sistemul ruleaza sshd, DNS, pop3d, imapd sau portul 4546. Pentru fiecare dintre porturile gasite deschise, detectia versiunii este pusa in functiune pentru a se determina aplicatia care ruleaza.
nmap -v -iR 100000 -P0 -p 80
Cere Nmapului sa aleaga aleator 100.000 tinte si sa le scaneze in cautarea serverelor web (portul 80). Enumerarea hosturilor este dezactivata cu -P0din moment ce trimiterea unui cuplu de probe pentru a determina daca hostul este activ este o pierdere de timp atata vreme cat se cauta un singur port al fiecarei tinte.
nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20
Scaneaza cele 4096 IPuri dupa servere web (fara ping) si salveaza rezultatele in formatul pentru comanda grep si in formatul XML.
host -l company.com | cut -d -f 4 | nmap -v -iL -
Realizeaza un transfer de zona DNS pentru a gasi toate hosturile din company.com si apoi furnizeaza adresele Nmapului. Comanda de mai sus este valabila pentru un sistem Linux – alte sisteme beneficiaza de comenzi diferite pentru realizarea transferului DNS.
PROBLEME¶
Asemeni autorului, Nmap nu este perfect. Dar ilputeti face mai bun trimitand rapoarte despre problemele aparute si chiar scriind patchuri. daca Nmap nu se comporta in modul in care va asteptati, faceti upgradeul la ultima versiune disponibila la https://nmap.org/. Daca problema persista, faceti munca de cercetare pentru a vedea daca problema a fost descoperita si discutata. Incercati cautarea in Google a mesajului de eroare sau navigand prin arhivele Nmap-dev la http://seclists.org/. Cititi acest manual in intregime de asemenea. Daca nimic nu se rezolva, trimiteti un mail la <dev@nmap.org>. Va rog sa includeti tot ce ati aflat despre problema, precum si versiunea de Nmap pe care o folositi si sistemul de operare. Problemele si intrebarile legate de utilizarea Nmapului trimise la dev@nmap.org au sanse mult mai mari de a li se raspunde decat cele trimise direct la Fyodor.
Patchurile de rezolvare a problemelor sunt si mai bune decat rapoartele despre problema in sine. Instructiuni de baza pentru crearea patchurilor sunt disponibile la https://nmap.org/data/HACKING. Patchurile pot fi trimise la nmap-dev (recomandat) sau direct la Fyodor.
AUTOR¶
Fyodor <fyodor@nmap.org>( http://www.insecure.org)
Sute de oameni au facut contributii importante la Nmap de-a lungul timpului. Ei sunt mentionati in fisierul CHANGELOGdistribuit cu Nmap si disponibil la [13].
ASPECTE LEGALE¶
Unofficial Translation Disclaimer / Disculparea fata de traducerea neoficiala¶
This is an unnofficial translation of the Nmap license details[14]into Romanian. It was not written by Insecure.Com LLC, and does not legally state the distribution terms for Nmap -- only the original English text does that. However, we hope that this translation helps Romanian speakers understand the Nmap license better.
Aceasta este traducerea neoficiala a detaliilor de licenta ale Nmap[14]in limba romana. Nu a fost scrisa de Insecure.Com LLC si nu statueaza in mod legal termenii distributiei Nmap – numai textul original in limba engleza realizeaza acest lucru. Oricum speram ca aceasta traducere sa ajute vorbitorii de limba romana sa inteleaga termenii licentei Nmap mai bine.
Dreptul de autor si licentiere¶
Scanerul de securitate Nmap este (C) 1996-2005 a Insecure.Com LLC. Nmap este marca inregistrata a Insecure.Com LLC. Acest program este software liber; il puteti redistribui si/sau modifica sub termenii Licentei Publice Generale (GNU General Public License) asa cum este publicata de Free Software Foundation; Versiunea 2. Aceasta va garanteaza dreptul de folosire, modificare si redistribuire sub anumite conditii. Daca doriti sa incorporati tehnologie Nmap in software proprietar, suntem dispusi sa vindem licente alternative (contact <sales@insecure.com>). Multi producatori de scanere de securitate au licentiat deja tehnologie Nmap cum ar fi descoperirea hosturilor, scanare de porturi, detectia sistemului de operare si detectia serviciului/versiunii.
Notati ca GPL pune restrictii importante asupra „produselor derivate”, desi nu furnizeaza o definitie detaliata a termenului. Pentru a evita neintelegerile, consideram ca o aplicatie este „produs derivat”in termenii licentei daca realizeaza unul din urmatoarele lucruri:
Termenul „Nmap”include si portiuni din produse derivate din Nmap. Lista nu este exclusiva, dar este menita a clarifica interpretarea noastra a produselor derivate cu exemple comune. Aceste restrictii se aplica doar pentru cazul in care redistribuiti Nmap. De exemplu, nimic nu va impiedica sa scrieti interfete grafice proprietare pentru Nmap. Distribuiti-o independent si invitati oamenii la https://nmap.org/pentru a descarca Nmap.
Nu consideram aceste ca restrictii adugate peste GPL ci doar o clarificare a modului in care interpretam termenul de „produs derivat”asa cum se aplica el la produsul Nmap licentiat GPL. Este similar modului in care Linus Torvalds a anuntat interpretarea sa asupra a cum se aplica termenul de „produs derivat”la modulele kernellului Linux. Interpretarea noastra se refera doar la Nmap – nu vorbim in numele nici unui alt produs GPL.
Daca aveti intrebari despre restrictiile licentei GPL in ceea ce priveste folosirea Nmap in produse non-GPL, sunt bucurosi sa va ajutam. Asa cum am mentionat, oferim licente alternative pentru integrarea Nmap in aplicatii si aplicari proprietare. Astfel de contracte au fost vandute majoritatii producatorilor de software de securitate si in general includ o licenta perpetua precum si furnizarea prioritara de suport si actualizari, dupa cum ne si ajuta sa finantam dezvoltarea tehnologiei Nmap. Va rugam sa trimiteti un email la <sales@insecure.com>pentru mai multe informatii.
Ca o exceptie speciala de la termenii GPL, Insecure.Com LLC permite legarea acestui cod cu orice versiune de biblioteca OpenSSL distribuita sub o licenta identica cu cea din fiserul Copying.OpenSSL si distribuirea codului legat a celor doua. Trebuie sa va supuneti GNU GPL pentru orice cod in afara de OpenSSL. Daca modificati acest fisier, puteti extinde aceasta exceptie si asupra fisierului dumneavoastra, desi nu sunteti obligati sa o faceti.
Daca primiti aceste fisiere cu o alta licenta scrisa sau contract care specifica alti termeni decat cei precizati aici, atunci licenta alternativa ia locul celei de fata.
Disponibilitatea codului sursa si contributiile comunitatii¶
Sursa este furnizata cu acest software deoarece consideram ca utilizatorii au dreptul de a stii exact ce face un program inainte de a-l rula. Acest lucru permite si auditul softwareului in vederea descoperirii gaurilor de securitate (nici una nu a fost descoperita pana acum).
Codul sursa permite portarea Nmap pe noi platforme, rezolvarea problemelor si adaugarea de noi functionalitati. Sunteti incurajati sa trimiteti modificarile dumneavoastra la <fyodor@nmap.org>pentru o posibila incorporare in distributia principala. Prin trimiterea acestor modificari catre Fyodor sau la una din listele de dezvoltare de la Insecure.Org, se presupune ca oferiti lui Fyodor si Insecure.Com LLC dreptul neliitat, neexclusiv de reutilizare, modificare si relicentiere a codului. Nmap va fi intotdeauna disponibil ca software cu sursa disponibila, dar acest lucru este important din cauza imposibilitatii relicentierii ce a creat probleme devastatoare pentru alte proiecte cu software liber (cum sunt KDE si NASM). Ocazional relicentiam codul catre terti asa cum s-a discutat mai devreme. Daca doriti sa specificati conditii speciale de licentiere a contributiei dumneavoastra, precizati acest lucru cand o trimiteti.
Nici o garantie¶
Acest program este distribuit in speranta ca va fi folositor, dar FARA NICI O GARANTIE; fara macar a garantiei de COMERCIABILITATE sau POTRIVIRE PENTRU UN SCOP PARTICULAR. Vezi GNU GPL pentru mai multe detalii la http://www.gnu.org/copyleft/gpl.html, sau in fisierul COPYING inclus in Nmap.
Notati si faptul ca Nmap, ocazional, blocheaza aplicatii prost scrise, stive TCP/IP si chiar sisteme de operare. Desi este un lucru extrem de rar, este important sa tinteti minte ca Nmap nu trebuie niciodata rulat impotriva sistemelor cu aplicatii criticedecat daca sunteti pregatit sa suferiti eventuale blocari. Statuam aici faptul ca Nmap poate bloca sistemele sau retelele dumneavoastra si ne disculpam de orice paguba sau problema pe care Nmap o poate cauza.
Utilizare inadecvata¶
Datorita micului risc de blocare si pentru ca unele personaje negative folosesc Nmap in cunoasterea tintelor premergator atacului, exista administratori care devin suparati si pot depune plangere daca sistemele lor sunt scanate. Asadar, este recomandata solicitarea permisiunii chiar si inaintea unei scanari superficiale a retelei.
Din ratiuni de securitate Nmap nu ar trebui instalat niciodata cu privilegii speciale (ex: suid root)
Software de la terti¶
Acest produs iclude software dezvoltat de Apache Software Foundation[15]. O versiune modificata a bibliotecii de captura a pachetelor Libpcapportable[16]este distribuita impreuna cu Nmap. Versiunea de Windows a Nmap utilizeaza biblioteca derivata din libpcap, WinPcap[17]. Suportul pentru expresiile regulate este furnizat de PCRE library[18], software open source, scris de Philip Hazel. Anumite functii brute de retea folosesc biblioteca Libdnet[19], scrisa de Dug Song. O versiune modificata este distribuita cu Nmap. Optional Nmap se poate lega de Trusa criptografica OpenSSL[20]pentru suportul de detectare a versiunii SSL. Toate softurile de la terti descrise in acest paragraf sunt redistribuibile gratuit sub licente de tipul BSD.
Clasificarea de control al exportului din SUA¶
Clasificarea de control al exportului din SUA: Insecure.Com LLC considera ca Nmap cade sub incidenta US ECCN (numarul de control al clasificarii de export) 5D992. Aceasta categorie este denumita „Software de securitate a informatiilor necontrolat de 5D002”. Singurele restrictii ale acestei clasificari sunt AT (anti-terrorism) care se aplica aproape tuturor bunurilor si interzic exportul catre cateva natiuni ca Iranul si Coreea de Nord. Asadar exportul Nmapului nu necesita licente speciale, permisiuni sau autorizari guvernamentale.
NOTE¶
- 1.
- original English version
- 2.
- Creative Commons Attribution License
- 3.
- ITSecure
- 4.
- RFC1122
- 5.
- RFC792
- 6.
- UDP
- 7.
- TCP RFC
- 8.
- RFC 959
- 9.
- 10.
- Nmap::Scanner
- 11.
- Nmap::Parser
- 12.
- 13.
- 14.
- Nmap license details
- 15.
- Apache Software Foundation
- 16.
- bibliotecii de captura a pachetelor Libpcapportable
- 17.
- WinPcap
- 18.
- PCRE library
- 19.
- Libdnet
- 20.
- Trusa criptografica OpenSSL
09/28/2018 | [FIXME: source] |