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 <danvasile [AT] danvasile.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] .
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
sequentially -
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
<size>:
Parallel host scan group sizes
--min-parallelism/max-parallelism
<numprobes>: 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)
Citeste specificarile tintelor din fisierdeintrare. Preluarea unei liste mari de calculatoare este un lucru greu de facut din linia de comanda, desi acest lucru este de preferat. De exemplu, serverul DHCP poate exporta o lista de 10.000 de IP pe care le-a atribuit si pe care noi dorim sa le scanam. Sau poate dorim sa scanam toate adresele cu exceptiacelor generate de DHCP pentru a monitoriza adresele statice neautorizate. Generati lista de IPuri si plasati numele fisierului ca argument al optiunii -iLIntrarile din fisier pot fi in orice format acceptat de Nmap in linia d ecomanda (adrese IP, nume, CIDR, IPv6 sau domenii pe octeti). Fiecare intrare trebuie separata prin unul sau mai multe spatii libere sau prin linie noua. Puteti specifica caracterul -ca nume de fisier daca vreti ca Nmap sa citeasca de la intrarea standard in locul unui fisier.
-iR <numar de tinte>(Alegere de tinte aleatoare)
Pentru sondaje asupra Internetului sau alte cercetari, puteti alege tinte aleator. Numarul de tintecomunica Nmapului cate tinte aleatoare sa genereze. Adrese nedorite cum ar fi IPurile private, cele de multicast sau cele nealocate sunt sarite in mod automat la generarea listei. Argumentul 0poate specifica o scanare fara sfarsit. Tineti minte ca unii administratori de retea sunt deranjati de scanarile neautorizate asupra retelei lor si pot depune plangeri. Folositi aceasta optiune asumandu-va riscurile! Daca sunteti cu adevarat plictisit intr-o dupa-amiaza ploioasa incercati comanda nmap -sS -PS80 -iR 0 -p 80pentru a localiza aleator servere care gazduiesc pagini web si incepeti sa faceti brosing.
--exclude<host1[,host2][,host3],...>(Se exclud de la scanare calculatoarele/retelele specificate ca argument)
Specifica o lista separata prin virgula de tinte excluse de la scanare chiar daca ele se afla in domeniul specificat. Lista foloseste sintaxa normala a Nmap, asa ca poate include nume, specificatori CIDR, domenii pe octeti, etc. Aceasta optiune poate fi folositoare cand reteaua pe care dorim sa o scanam include servere ce ruleaza aplicatii critice, sisteme care reactioneaza la scanari sau subretele administrate de alte persoane.
--excludefile <fisier_de_excludere>(Lista de excludere dintr-un fisier)
Aceasta ofera aceeasi functionalitate ca si optiunea --exclude, cu exceptia ca ca tintele excluse sunt furnizate intr-un format delimitat prin linie noua, spatiu sau tab din fisierul_de_excluderein loc sa fie furnizate din linia de comanda.
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)
Scanarea de tip lista este o forma degenerata de descoperire a hosturilor care listeaza fiecare host al retelei specificate, fara a trimite nici un pachet tintelor. In mod implicit, Nmap realizeaza totusi o rezolutie inversa DNS pentru a afla si numele tintelor. Adesea este surprinzator cate informatii utile ne pot oferi simplele nume ale hosturilor. De exemplu, fw.chi.playboy.comeste firewallul biroului din Chicago al Playboy Enterprises. Nmap raporteaza numarul total de adrese IP la sfarsit. Scanarea de tip lista este o buna verificare a faptului ca aveti adresele IP corecte pentru tinte. Daca hosturile au nume pe care nu le recunoasteti, este bine sa investigati in profunzime pentru a nu scana reteaua unei alte companii.
Din moment ce ideea este de afisa o lista cu tinte, optiunile pentru un nivel mai inalt de functionalitate cum ar fi scanare de porturi, detectia sistemului de operare sau scanarea ping nu pot fi combinate cu aceasta. Daca doriti dezactivarea scanarea ping si in acelasi timp sa executati tehnicile corespunzatoare nivelului inalt de functionalitate, cititi paragraful destinat optiunii -P0.
-sP(Scanare ping)
Aceasta optiune spune Nmapului sa realizeze numaio scanare ping (descoperirea hosturilor) si apoi sa afiseze hosturile disponibile care raspund la scanare. Nici un alt fel de test (cum ar fi scanarea de porturi sau detectia sistemului de operare) nu va fi realizat. Acest pas este mai intruziv decat scanarea de tip lista si poate fi folosita adesea in acelasi scop. Permite o descoperire a tintelor din retea fara a atrage prea mult atentia. Cunoscand cate hosturi sunt active este o informatie mult mai valoroasa unui atacator decat simpla lista furizata de scanarea de tip lista a fiecarei adrese IP si a numelor hosturilor.
Administratorii de sistem gasesc adesea aceasta optiune pretioasa ca atare. Poate fi usor utilizat pentru numararea masinilor disponibile intr-o retea sau pentru monitorizarea disponibilitatii serverelor. Adesea este denumita maturare ping si este mai de incredere decat pingul asupra adresei de broadcast deoarece multe hosturi nu raspund la solicitarile de broadcast.
Optiunea -sPtrimite un pachet ICMP cu solicitare de raspuns si un pachet TCP la portul 80 in mod implicit. Cand se executa de catre un utilizator neprivilegiat, un pachet SYN este trimis (folosin apelul connect()) la portul 80 al tintei. Cand un utilizator privilegiat incearca sa scaneze tinte dintr-o retea locala, solicitari ARP ( -PR) sunt utilizate, doar daca --send-ip(adresa IP de expediere) a fost specificat. Optiunea -sPpoate fi combinata cu oricare dintre tipurile de probe de descoperire (optiunile -P*, exluzand -P0) pentru o mai mare flexibilitate. Daca oricare dintre tipurile de probe si optiuni de porturi sunt utilizate, se renunta la probele implicite (ACK si ICMP cu solicitare de raspuns). Cand firewalluri stricte sunt plasate intre calculatorul sursa care ruleaza Nmap si reteaua tinta, folosirea acelor tehnici avansate este recomandata. Altfel, hosturi pot ramane nedescoperite cand firewallul executa comanda drop (pur si simplu ignora pachetele) la probe sau la raspunsuri.
-P0(Fara ping)
Aceasta optiune sare complet peste faza de descoperire. In mod normal, Nmap foloseste aceasta faza pentru a determina masinile active pentru scanarea avansata. Implicit, Nmap realizeaza scanarea avansata cum ar fi scanarea de porturi, detectia versiunii si a sistemului de operare doar pentru hosturile gasite active. Dezactivarea descoperirii hosturilor cu -P0face ca Nmap sa incerce tehnicile avansate de scanare pentru fiecareadresa IP specificata ca tinta. Asadar, daca spatiul unei clase B (/16) este specificata in linia de comanda, toate cele 65,536 de IP vor fi scanate cu tehnicile avansate. Cel de-al doilea caracter din optiunea -P0este un zero si nu litera O. Descoperirea obisnuita a hosturilor este sarita execucandu-se o scanare de tip lista, dar in loc sa se opreasca si sa afiseze lista de tinte, Nmap continua sa realizeze cererile din linia de comanda ca si cum fiecare adresa IP ar fi activa.
-PS [listadeporturi](Ping TCP SYN)
Aceasta optiune trimite un pachet TCP gol cu flagul SYN setat. Portul de destinatie implicit este 80 (configurabil la compilare prin schimbarea DEFAULT_TCP_PROBE_PORT in nmap.h), dar un alt port poate fi specificat ca parametru. Chiar o lista separata prin virgula de porturi poate fi specificata (de exemplu -PS22,23,25,80,113,1050,35000),caz in care probele vor fi trimise la fiecare port in paralel.
Flagul SYN sugereaza tintei ca dorim sa stabilim o conexiune. In mod normal portul destinatie va fi inchis si un pachet RST (de resetare) este trimis inapoi. Daca se intampla ca portul sa fie deschis, tinta va face cel de-al doilea pas dintr-un 3-way-handshake (stabilirea unei conexiuni in trei pasi) raspunzand cu un pachet TCP SYN/ACK. Masina care ruleaza nmap va inchide apoi conexiunea raspunzand cu un pachet RST in loc sa trimita pachetul ACK care ar completa 3-way-handshakeul si ar stabili o conexiune completa. Pachetul RST este trimis de kernelul sistemului de operare al masinii care ruleaza Nmap ca raspuns la pachetul SYN/ACK neasteptat, si nu de catre Nmap ca atare.
Nmapului nu ii pasa daca portul este deschis sau inchis. Fie ca este RST sau SYN/ACK dupa cum s-a vazut anterior, raspunsul anunta Nmapul ca hostul este activ si raspunde la probe
Pe masinile UNIX, numai utilizatorii privilegiati rootsunt capabili sa trimita si sa primeasca pachete TCP in forma bruta. Pentru utilizatorii neprivilegiati, un ocolis este automat pus in functiune si implica apelul de sistem connect() initiat impotriva fiecarui port tinta. Acesta are ca efect trimiterea unui pachet SYN catre tinta, intr-o incercare de a stabili conexiunea. Daca connect() returneaza o valoare care indica succesul operatiunii sau un raspuns ECONNREFUSED (conexiune refuzata), inseamna ca nivelele inferioare ale stivei TCP au primit un SYN/ACK sau RST iar hostul este marcat ca fiind disponibil. Daca tentativa de conexiune este lasata sa astepte un timp mai mare decat timeoutul (timpul maxim in care se asteapta un raspuns), hostul este marcat ca indisponibil. Acest ocolis este utilizat si pentru conexiunile IPv6, deoarece constructia pachetelor brute IPv6 nu este inca suportata de Nmap.
-PA [lista_de_porturi](Ping TCP ACK)
Pingul TCP ACK este similar cu proaspat discutatul ping SYN. Diferenta, dupa cum probabil ati ghicit, este ca flagul TCP ACK este setat in locul celui SYN. Un astfel de pachet ACK pretinde ca transporta date in cadrul unei conexiuni ACK deja stabilite, dar nu exista nici o astfel de conexiune. Asadar tintele trebuie sa raspunda intotdeauna cu un pachet RST, dezvaluindu-si existenta in cadrul acestui proces.
Optiunea -PAfoloseste acelasi port implicit ca probele SYN si de asemenea poate prelua o lista de porturi destinatie in acelasi format. Daca un utilizator neprivilegiat incearca aceasta optiune, sau o tinta IPv6 este specificata, ocolisul connect() discutat anterior este utilizat. Acest ocolis este imperfect deoarece connect() trimite de fapt un pachet SYN in locul unuia ACK.
Motivul oferirii ambelor probe de ping SYN si ACK este de a maximiza sansele de trecere printr-un firewall. Multi administratori configureaza routerele si alte firewalluri simple pentru a bloca pachetele SYN cu exceptia acelora destinate serviciilor publice cum ar fi serverul web sau serverul de mail al companiei. Acest lucru previne realizarea altor conexiuni catre reteaua organizatiei, in timp ce permite utilizatorilor sa realizeze neobstructionati conexiuni catre Internet. Aceasta abordare non-statefull sau stateless (nu se analizeaza ACK) utilizeaza putine resurse ale firewallului sau routerului si este suportata intr-un procent mare de filtrele hardware sau software. Firewallul software din Linux Netfilter/iptables ofera o optiune convenabila --synpentru implementarea acestei abordari stateless. Cand firewalluri stateless ca acestea sunt in functiune, probele ping SYN ( -PS) vor fi mai mult ca sigur blocate in drumul lor catre porturi tinta inchise. In aceste cazuri, probele ACK stralucesc deoarece trec cu usurinta de aceste reguli.
Alt tip comun de firewalluri folosesc reguli statefull care ignora pachetele ce nu sunt asteptate. Aceasta optiune a fost initial gasita doar in firewallurile high-end, dar a devenit mult mai comuna de-a lungul timpului. In linux, sistemul Netfilter/iptables suporta aceasta abordare prin optiunea --state, care catalogheaza pachetele in functie de starea conexiunii. O proba SYN este mai probabil sa functioneze impotriva unui astfel de sistem din moment ce pachetele neasteptate sunt in general recunoscute ca fiind simulate si ignorate. O solutie la aceasta dilema este trimiterea ambelor probe, SYN si ACK, specificand -PSsi -PA.
-PU [lista_de_porturi](Ping UDP)
Alta optiune de descoperire a hosturilor este pingul UDP, care trimite un pachet gol (doar daca optiunea --data-lengthnu este specificata) UDP la portul specificat. Lista de porturi are acelasi format cu cel discutat anterior la optiunile -PSsi -PA. daca nici un port nu este specificat, implicit este utilizat 31338. Aceasta valoare implicita poate fi configurata la compilare schimband DEFAULT_PROBE_PORT in nmap.h. Un port necomun este folosit implicit deoarece trimiterea unui pachet la un port deschis nu este de dorit pentru acest tip de scanare.
Dupa trimiterea probei catre un port inchis al tintei, proba UDP trebuie sa obtina un pachet ICMP de port indisponibil. Acest lucru semnalizeaza Nmapul ca masina este activa si disponibila. Multe alte tipuri de erori ICMP, cum ar fi cele de host/retea ce nu pot fi contactate sau TTL (time to live = timp de viata; timpul maxim admis pentru asteptarea raspunsului) depasit sunt indicatori al unui host inactiv sau care nu poate fi contactat. Lipsa unui raspuns este interpretata la fel. Daca un port deschis este nimerit de pachetul de proba, multe servicii vor ignora pachetul si nu vor returna nici un raspuns. De aceea portul de proba este 31338, care are o probabilitate mare sa nu fie utilizat. Cateva servicii vor raspunde totusi la un pachet UDP gol, dezvaluind in acest fel Nmapului faptul ca masina este disponibila.
Principalul avantaj al acestui tip de scanare este ca poate trece de firewallurile si filtrele care monitorizeaza doar traficul TCP. De exemplu, am avut o data un router wireless Linksys BEFW11S4. Interfata externa a acestui dispozitiv filtra in mod implicit toate porturile TCP, dar probele UDP puteau totusi sa obtina mesajele de port indisponibil si in felul acesta sa arate starea hostului.
-PE; -PP; -PM(Tipuri de ping ICMP)
Pe langa tipurile de descoperire TCP si UDP uzuale discutate anterior, Nmap poate trimite pachete standard prin intermediul omniprezentului ping. Nmap un pachet ICMP de tipul 8 (solicitare de raspuns) catre adresa IP tinta, asteptand un pachet de tip 0 (raspuns) in schimb de la hosturile disponibile. Din pacate pentru exploratorii de retele, in zilele noastre multe hosturi si firewalluri blocheaza aceste pachete, in loc sa raspunda in conformitate cu RFC1122 [3] . Din acest motiv scanarile ICMP simple sau rareori de incredere impotriva unor tinte necunoscute din Internet. Dar pentru administratorii de sistem care monitorizeaza o retea interna, ea poate fi o abordare practica si eficienta. Folositi optiunea -PEpentru a activa acest comportament de solicitare a raspunsului.
Cu toate ca cererile de raspuns ICMP sunt standard, Nmap nu se opreste aici. Standardul ICMP ( RFC792 [4] ) specifica de asemenea solicitarea amprentei de timp, a informatiilor si a mastii de retea corespunzatoare codurilor 13,15 si 17. Aceste solicitari au ca scop aflarea de informatii precum amprenta de timp sau masca de retea dar pot fi usor folosite si la descoperirea hosturilor. Un sistem care raspunde este disponibil. Nmap nu implementeaza inca solicitarea de informatii (15) deoarece acestea nu beneficiaza de o implementare la nivel larg. RFC 1122 insista ca „un host NU TREBUIE sa implmenteze aceste mesaje”. Solicitarile de amprenta de timp si masca de retea pot fi trimise cu ajutorul optiunilor -PP, respectiv -PM. Un raspuns amprenta de timp (ICMP cod 14) sau un raspuns masca de retea (cod 18) dezvaluie un host disponibil. Aceste doua interogari pot fi de folos cand administratorul de retea blocheaza pingul ICMP standard uitand faptul ca si celelalte solicitari ICMP pot fi folosite in acelasi scop.
-PR(Ping ARP)
Unul dintre cele mai comune scenarii de utilizare ale Nmapului o reprezinta scanarea unei intregi retele locale (LAN). In multe LANuri, in special in cele care folosesc spatiul privat de adrese specificat in RFC1918, mare majoritate a adreselor IP nu sunt utilizate la un moment dat. Cand Nmap incearca sa trimita un pachet ICMP solicitand un raspuns, sistemul de operare trebuie sa determine adresa de destinatie hardware (ARP) corespunzatoare adresei tinta IP astfel incat sa poata adresa in mod corect frameul ethernet. Este adesea un proces lent, din moment ce sistemele de operare nu au fost proiectate sa realizeze milioane de solicitari ARP catre hosturi indisponibile intr-o peioada foarte scurta de timp.
Scanarea ARP pune Nmapul si algoritmii lui optimizati in functiune pentru a realiza solicitarile ARP. Si daca primeste un raspuns, Nmap nici nu mai ia in in considerare pingurile bazate pe IP din moment ce stie deja ca hostul este activ. Acest lucru face scanarea ARP mult mai rapida si mai corecta decat scanarile bazate pe IP. Asadar este realizata implicit cand Nmapul detecteaza faptul ca adresele scanate fac parte dintr-un LAN. Chiar daca tipuri diferite de ping (cum ar fi optiunea -PEsau -PS) sunt specificate, Nmap foloseste ARP in locul lor pentru orice adresa din acelasi LAN cu masina care ruleaza Nmap. Daca sunteti sigur ca nu doriti scanare ARP, specificati --send-ip.
-n(Nu se realizeaza rezolutia DNS)
Transmite Nmapului ca niciodatasa nu realizeze rezolutia inversa DNS pentru IPurile active gasite. Din moment ce DNS este adesea lent, aceasta optiune poate mari viteza de scanare.
-R(Rezolutie DNS pentru toate tintele)
Transmite Nmapului ca intotdeaunasa realizeze rezolutia DNS pentru IPurile tinta. In mod normal acest lucru este realizat cand o masina este gasita activa.
--system-dns(Foloseste DNSul sistemului de operare)
Implicit, Nmap rezolva adresele IP prin trimiterea de cereri la DNSurile configurate pe sistem si asteapta apoi raspunsuri. Multe solicitari (adesea foarte multe) sunt realizate in paralel pentru o performanta crescuta. Specificati aceasta optiune daca doriti sa folositi DNSul sistemului de operare (cate un IP o data prin intermediul apelului getnameinfo()). Aceasta optiune este lenta si rareori folositoare. O putei folosi in cazul in care exista o problema in codul DNS al Nmapului – va rugam sa ne contactati in acest caz. DNSul sistemului este intotdeauna folosit pentru scanarile IPv6.
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)
O aplicatie accepta in mod activ conexiuni TCP sau pachete UDP la respectivul port. Gasirea acestora este adesea scopul principal al scanarii de porturi. Oamenii preocupati de securitate stiu ca fiecare port deschis reprezinta o cale de acces pentru un atac. Atacatorii si pen-testerii doresc exploatarea porturilor deschise, in timp ce administratorii incearca sa le inchida sau sa le protejeze prin firewalluri fara a incurca planurile utilizatorilor legitimi. Porturile deschise sunt interesante si pentru scanarile ce nu urmaresc stabilirea securitatii deoarece ele arata serviciile disponibile pentru retea de la respectivul host.
closed (inchis)
Un port inchis este accesibil (primeste si raspunde la un pachet de proba trimis de Nmap), dar nu exista nici o aplicatie care sa asculte la el. Pot fi folositoare in dezvaluirea starii hostului sau ca parte a detectiei sistemului de operare. Deoarece cu porturile inchise se pote comunica, ele merita scanate si mai tarziu in caz ca vreunul dintre ele se deschide. Administratorii pot lua in considerare blocarea unor astfel de porturi cu ajutorul unui firewall. Astfel ele vor aparea avand starea filtrat, discutata mai departe
filtered (filtrat)
Nmap nu poate determina daca portul este deschis datorita unui filtru de pachete care impiedica pachetele sa ajunga la portul destinatie. Filtrarea poate proveni de la un firewall dedicat, din regulile unui router sau dintr-un firewall software al tintei. Aceste porturi frustreaza atacatorii deoarece furnizeaza foarte putine informatii. Uneori raspund cu un mesaj de eroare ICMP cum ar fi tipul 3 codul 13 (destinatie care nu a putu fi atinsa: comunicatia interzisa administrativ), dar filtrele care executa operatia drop (ignora pachetul) fara sa raspunda sunt mult mai comune. Acest lucru forteaza Nmap sa retrimita de cateva ori probele pentru cazul in care pachetul s-a pierdut din cauza congestionarii retelei si nu din cauza filtrarii. Acest lucru incetineste viteza de scanare dramatic.
unfiltered (nefiltrat)
Starea nefiltrata inseamna ca portul este accesibil, dar Nmap nu poate determina daca portul este inchis sau deschis. Numai scanarea ACK, folosita pentru maparea regulilor din firewall, clasifica portul in aceasta stare. Scanarea porturilor nefiltrate cu alte tipuri de optiuni cum ar fi scanarea Window(fereastra), scanarea SYN sau scanarea FIN poate stabili daca portul este deschis.
open|filtered (deschis|filtrat)
Nmap plaseaza porturi in aceasta categorie cand nu poate determina daca portul este deschis sau filtrat. Acestea apar pentru tipurile de scanari in care porturile deschise nu ofera nici un raspuns. Lipsa raspunsului poate sa mai insemne si ca un filtru de pachete a ignorat pachetul de proba sau orice raspuns aferent. Asadar Nmap nu poate stii sigur daca portul este deschis sau filtrat. Scanarile UDP, IP, FIN, Null sau Xmas clasifica porturile in aceasta stare.
closed|filtered (inchis|filtrat)
Aceasta stare este folosita cand Nmap este in imposibilitatea de a determina daca portul este inchis sau filtrat. Este folosit doar de scanarea IPID Idle.
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)
Scanarea SYN este implicita si cea mai populara metoda pentru motive bine intemeiate. Poate fi executata rapid, scanand mii de porturi pe secunda intr-o retea rapida neobstructionata de un firewall deranjant. Scanarile SYN sunt relativ invizibile, din moment ce nu stabilesc niciodata o conexiune TCP. Functioneaza impotriva oricarei implementari conforma cu standardul de stiva TCP in loc sa depinda de platforma asa cum o fac scanarile Fin/Null/Xmas, Maimon si Idle. Ofera de asemenea o diferenta clara si precisa intre starile open (deschisa), closed (inchisa), si filtered (filtrata).
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())
Scanarea TCP Connect() este implicita cand SYN nu reprezinta o optiune viabila. Acesta este cazul in care utilizatorul nu beneficiaza de posibilitatea de trimitere a pachetelor brute sau scaneaza retele IPv6. In locul scrierii pachetelor brute asa cum o fac majoritatea tipurilor de scanare, Nmap cere nivelelor inferioare ale sistemului de operare sa stabileasca o conexiune cu masina tinta si portul dorit realizand un apel de sistem connect(). Acesta este acelasi apel de sistem prin care aplicatiile de nivel inalt cum ar fi browserele, clientii P2P si in general aplicatiile cu functii de retea le folosesc pentru stabilirea conexiunii. Este o parte a interfetei de programare cunoscuta ca Berkley Sockets API. In loc sa citeasca pachete brute ca raspuns, Nmap foloseste API pentru a obtine informatii despre starea fiecarei conexiuni incercate.
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)
In tim ce multe servicii in Internet ruleaza prin protocolul TCP, serviciile UDP [5] sunt si ele raspandite. DNS, SNMP si DHCP (porturile inregistrate 53, 161/162 si 67/68) sunt trei dintre cele mai comune. Deoarece scanarea UDP este in general lenta si mai dificila decat TCP, unii auditori de securitate ignora aceste porturi. Aceasta este o greseala, deoarece serviciile UDP exploatabile sunt destul de cunoscute si atacatorii cu siguranta nu vor ignora un intreg protocol. Din fericire, Nmap poate ajuta la inventarierea porturilor 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)
Aceste trei tipuri de scanare (chiar si mai multe posibile folosind optiunea --scanflagsdescrisa in aceasta sectiune) exploateaza o portita din TCP RFC [6] pentru a diferentia intre porturile deschise (open)si cele inchise (closed). Pagina 65 spune ca „daca starea portului [destinatie] este INCHIS ... un segment de intrare care nu contine un RST face ca un raspuns RST sa fie trimis inapoi”In urmatoarea pagina se discuta pachetele trimise catre porturile deschise fara bitii SYN, RST sau ACK setati, specificand ca: „este putin probabil sa ajungeti intr-o asemenea situatie, dar daca o faceti, ignorati segmentul si reveniti”
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)
Nu seteaza nici un bit (flagul header tcp este 0)
Scanare FIN ( -sF)
Seteaza doar bitul TCP FIN.
Scanare Xmas ( -sX)
Seteaza flagurile FIN, PSH si URG, luminand pachetul ca pe un pom de Craciun.
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)
Aceasta scanare e diferita de celelalte discutate pana acum in sensul in care nu poate determina niciodata un port deschis (open)(sau chiar deschis|filtrat (open|filtered)). Este folosita pentru a mapa regulile firewallului, determinand daca acestea sunt statefull sau nu si ce porturi sunt filtrate.
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 Window (fereastra) este asemanatoare cu scanarea ACK, cu exceptia ca exploateaza un detaliu de implementare a anumitor sisteme pentru a diferentia porturile deschise de cele inchise, in loc sa aiseze nefiltrat (unfiltered)cand un RST este returnat. Realizeaza acest lucru prin examinarea campului TCP Window din pachetul RST returnat. Pe unele sisteme, porturile deschise folosesc o valoare pozitiva in timp ce porturile inchise au valoarea 0. Astfel ca in loc sa afiseze o lista de porturi nefiltrate (unfiltered)cand primeste un RST, scanrea TCP Window marcheaza porturile ca deschise (open)sau inchise (closed)daca valoarea TCP Window este pozitiva sau 0, dupa caz.
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)
Scanarea TCP Maimon este denumita astfel dupa descoperitorul ei, Uriel Maimon. El descrie aceasta tehnica in Magazinul Phrak editia 49 (noiembrie 1996). Nmap, care include aceasta tehnica, a fost lansat doua editii mai tarziu. Tehnica este similara cu scanarile Null, FIN si Xmas cu exceptia ca proba este FIN/ACK. In conformitate cu RFC 793, un pachet RST trebuie generat ca raspuns la o astfel de proba indiferent daca portul este inchis sau deschis. Oricum, Uriel a remarcat faptul ca multe sisteme derivate din BSD ignora pachetul daca portul este deschis.
--scanflags(Scanare TCP personalizata)
Utilizatorii avansati de Nmap nu trebuie sa se limiteze la tipurile de scanare generale oferite Optiunea --scanflagsva permite sa creati propriile tipuri de scanare prin specificarea flagurilor TCP. Lasati spiritul creativ sa lucreze, penetrand IDSurile ale caror producatori se multumesc sa adauge reguli specifice doar pentru tipurile clasice de scanare.
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)
Aceasta metoda avansata de scanare permite o scanare TCP complet oarba a tintei (insemnand ca nici un pachet nu este trimis tintei de la adresa IP reala). In loc, un canal derivat de atac exploateaza o secventa de fragmentare IPID predictibila a hostului zombie pentru a culege informatii despre porturile deschise pe masina tinta. Sistemele IDS vor indica scanarea ca venind de la hostul zombie specificat (care trebuie sa fie functional si sa indeplineasca anumite criterii). Acest tip fascinant de scanare este prea complex pentru a fi descris in acest ghid de referinta, astfel ca am scris un document informativ cu detalii complete disponibil la https://nmap.org/book/idlescan.html.
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)
Scanarea protocolului IP permite determinarea protocoalelor (TCP, ICMP, IGMP, etc.) suportate de masina tinta. Aceasta nu reprezinta din punct de vedere tehnic o scanare de porturi, din moment ce trece prin numarul protocoalelor IP in loc de numarul porturilor TCP sau UDP. Totusi foloseste optiunea -ppentru selectarea numerelor de protocol, raporteaza rezultatele in formatul de tabel specific scanriif de porturi, si chiar foloseste acelasi motor de scanare ca la scanarea de porturi. Este strans legata asadar de scanarea de porturi asa ca apartine acestei categorii.
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)
Un aspect interesant al protocolului FTP ( RFC 959 [7] ) este suportul pentru asa numitele conexiuni proxy ftp. Acesta permite utilizatorului conectarea la un server FTP si apoi solicitarea ca anumite fisiere sa fie trimise pe un al alt server. O astfel de functionalitate poate fi folosita pentru abuzuri asa ca multe servere au incetat sa o mai suporte. Unul dintre aceste abuzuri face ca serverul FTP sa scaneze alte hosturi. Cereti serverului sa trimita un fisier la fiecare port al masinii tinta. Mesajul de eroare va descrie daca portul este inchis sau deschis. Este o buna modalitate de a sari un firewall deoarece FTPurile sunt adesea plasate in zone cu acces la reteaua interna. Nmap suporta scanarea ftp sarita prin optiunea -b. Preia un argument de forma numeutilizator: parola@ server: port. Servereste numele sau adresa IP a serverului FTP vulnerabil. La fel ca la URLul normal puteti omite numeutilizator: parola, caz in care sunt folosite valorile implicite (numeutilizator: anonymousparola: -wwwuser@). Numarul portului (si caracterul doua puncte “:” care il precede) pot fi omise de asemenea, caz in care portul implicit FTP (21) al serveruluieste utilizat.
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)
Aceasta optiune specifica porturile pe care doriti sa le scanati, trecand peste valorile implicite. Numere de porturi individuale reprezinta o optiune valida, precum si domenii separate prin cratima (de exemplu 1-1023). Valorile de inceput si/sau sfarsit ale domeniului pot fi omise, Nmap inlocuindu-le cu 1, respectiv 65535. Specificand optiunea -p-se vor scana porturile de la 1 la 65535. Scanarea portului 0 este permisa daca specificati acest lucru explicit. Pentru scanarea protocolului IP ( -sO), aceasta optiune specifica numarul protocolului pe care doriti sa-l scanati (0-255).
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)
Specifica faptul ca doriti sa scanati doar porturile listate in nmap-services, fisier care vine cu nmap (sau fisierul de protocoale pentru -sO). Este mult mai rapida decat scanarea tuturor celor 65535 porturi de pe un host. Deoarece lista contine atat de multe porturi TCP (mai mult de 1200), diferenta de viteza fata de o scanare implicita TCP (aproximativ 1650 de porturi) este dramatica. Diferenta poate fi enorma daca specificati propriul fisier minimizat in functie de nevoi nmap-servicesutilizand optiunea --datadir.
-r(Nu se scaneaza porturile in ordine aleatoare)
Implicit, Nmap scaneaaz porturile intr-o ordine aleatoare (cu exceptia faptului ca anumite porturi uzuale sunt mutate la inceputul scanarii din motive de eficienta). Aceasta ordine aleatoare este in mod normal de dorit, dar puteti specifica -rpentru scanarea secventiala.
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)
Activeaza detectia versiunii, dupa cum s-a discutat anterior. Alternativ, puteti folosi -Apentru activarea detectiei versiunii si a sistemului de operare simultan.
--allports(Nu se exclude nici un port de la detectia versiunii)
Implicit, detectia versiunii din Nmap sare peste portul TCP 9100, deoarece unele imprimante imprima orice data trimisa la acel port, ducand la o multime de pagini pline de cererei HTTP, sesiuni SSL, etc. Acest comportament poate fi schimbat prin modificarea sau stergerea directivei Excludedin nmap-service-probes, sau prin specificarea --allportspentru scanarea tuturor porturilor in ciuda directivei Exclude.
--version-intensity <intensitate>(Seteaza intensitatea detectiei versiunii)
Cand realizam o detectie a versiunii ( -sV), nmap trimite o serie de probe, fiecare cu o valoare atasata, intre 1 si 9, care reprezinta raritatea. Probele cu numere mici sunt eficiente impotriva unei arii largi a serviciilor comune, in timp ce acelea cu numere mari sunt mai rar folosite. Nivelul de intensitate specifica ce probe trebuie aplicate. Cu cat mai mare este numarul, cu atat mai precisa este detectarea versiunii. Oricum, scanarea cu intensitate mare dureaza mai mult. Intensitatea trebuie sa fie intre 0 si 9. Implicit este 7. Cand o proba este gasita ca o legatura intre nmap-service-probes si numarul portului, atunci proba este incercata indiferent de nivelul de intensitate. Acest lucru asigura faptul ca probele DNS vor fi incercate pentru fiecare port 53 gasit deschis, probele SSL pentru portl 443, etc.
--version-light(Activeaza modul delicat)
Este o notare convenabila pentru --version-intensity 2. Acest mod delicat face scanarea versiunii mult mai rapida, dar si mai putin precisa in identificarea serviciilor.
--version-all(Incearca toate probele)
Un sinonim pentru --version-intensity 9, asigurandu-se ca toate probele vor fi incercate impotriva fiecarui port.
--version-trace(Urmareste activitatea scanarii vesiunii)
Acest lucru face ca Nmap sa afiseze informatii detaliate despre ce face detectarea versiunii. Este un subset al informatiilor obtinute cu --packet-trace.
-sR(Scanare RPC)
Aceasta metoda functioneaza in combinatie cu multimea de metode de scanare de porturi a Nmapului. Ia toate porturile TCP/UDP deschise si le inunda cu pachete de comanda SunRPC nule in incercarea de a determina daca sunt porturi RPC si, daca e asa, ce program si ce versiune servesc. Puteti obtine aceleasi informatii cu rpcinfo -pchiar daca portmapperul tintei se afla in spatele unui firewall (sau este protejat de TCP wrapper). Momelile nu functioneaza cu scanarea RPC. Este activat automat ca parte a scanarii versiunii ( -sV) daca solicitati asa ceva. Deoarece detectia versiunii include si rezultatele acestei scanari fiind mult mai larga in acoperire, -sReste rareori necesara.
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)
Activeaza detectia sistemului de operare, dupa cum s-a discutat inainte. Alternativ, se poate folosi -Apentru activarea atat a detectiei sistemului de operare cat si a detectiei versiunii.
--osscan-limit(Limiteaza detectarea sistemului de operare la tintele promitatoare)
Detectia sistemului de operare este mult mai eficienta daca sunt gasite cel putin un port TCP inchis si unul deschis. Setati aceasta optiune si Nmap nici nu va mai incerca detectarea sistemului de operare pentru hosturile care nu indeplinesc aceste criterii. Acest lucru poate salva timp substantial, in special in scanarile mai multor hosturi cu optiunea -P0. Optiunea are valoare atunci cand detectia sistemului de operare a fost solicitata prin -Osau -A.
--osscan-guess; --fuzzy(Ghiceste sistemul de operare pe baza rezultatelor)
Cand Nmap nu poate determina cu exactitate un sistem de operare, poate oferi un raspuns bazat pe asemanare. Asemanarea trebuie sa fie foarte apropiata in mod implicit. Oricare dintre aceste optiuni fac Nmapul sa adopte o atitudine mai agresiva in gasirea similitudinilor.
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 <dimensiune>; --max-hostgroup<dimensiune>(Ajusteaza dimensiunea grupurilor pentru scanari paralele)
Nmap are capacitatea de a scana porturi sau versiuni pe mai multe hosturi in paralel. Nmap realizeaza acest lucru prin divizarea spatiului de adrese IP tinta in grupuri si scanand fiecare grup pe rand. In general, grupurile mari sunt mult mai eficiente. Aspectul negativ este ca rezultatul scanarii pentru fiecare host nu poate fi furnizat pana ce nu e terminata scanarea pentru intregul grup. Daca Nmap porneste scanarea unui grup de 50 de hosturi, utilizatorul nu va primi nici un raport (cu exceptia updateurilor oferite de modul vizualizare detaliata) pana ce primele nu s-a terminat scanarea pentru aceste hosturi.
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)
Aceste optiuni controleaza numarul de probe in asteptare pentru un host. Sunt folosite la scanarea de porturi si la descoperirea hosturilor. Implicit, Nmap calculeaza un numar ideal pentru paralelism, mereu variabil, in baza performantelor retelei. Daca unele pachete sunt ignorate, Nmap incetineste ritmul si permite un numar mai mic de probe in asteptare. Numarul ideal de probe creste incet pe masura ce reteaua este mai rapida. Aceste optiuni stabilesc limitele minima si maxima ale acestei variabile. Implicit, paralelismul ideal poate scadea la 1 daca reteaua raspunde greu si se ridica pana la cateva sute in conditii perfecte.
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)
Nmap mentine un timp de viata pentru determinarea timpului maxim asteptat pentru ca o proba sa genereze un raspuns, inainte sa se renunte la ea sau sa fie retransmisa. Este calculata pe baza timpilor de raspuns a probelor anterioare. Daca latenta retelei are o valoare mare si variabila, atunci timpul de viata poate creste pana la cateva secunde. Porneste de la o valoare mare si poate ramane asa un timp pana cand Nmap scaneaza hosturi care nu raspund.
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)
Unele hosturi iau un timp prea lungde scanare. Se poate datora unor performante proaste ale retelei hardware si software, limitarii a ratei de pachete sau firewallurilor restrictive. Cele mai lente cateva hosturi pot manca majoritata timpului de scanare. Cateodata este bine sa scapam de aceste pierderi si sa sarim aceste hosturi. Acest lucru poate fi realizat prin specificarea --host-timeoutcu un numar de milisecunde in care sunteti disponibili sa asteptati. De obicei specific 1800000 pentru a ma asigura ca Nmap nu va pierde mai mult de o jumatate de ora pentru un singur host. De notat ca Nmap poate scana si alte hosturi in acelasi timp, deci nu reprezinta o pierdere totala acest timp. Un host care depaseste aceasta perioada este sarit. Tabela de porturi, detectia sistemului de operare sau detectia versiunii nu sunt afisate pentru acel host.
--scan-delay <milisecunde>; --max-scan-delay<milisecunde>(Ajusteaza pauza dintre probe)
Aceasta optiune face ca Nmap sa astepte cel putin un numar dat de milisecunde intre probele trimise la un host. Este folositoare in particular in cazul in care exista o rata de limitare. Masinile Solaris (printre multe altele) vor raspunde scanarii UDP cu un singur mesaj ICMP pe secunda. Orice alta proba trimisa de Nmap in acest interval va fi irosita. O optiune --scan-delaycu valoarea 1000 va mentine Nmap la acea rata lenta. Nmap incearca detectarea ratei de limitare si ajusteaza scanarea in functie de aceasta, dar nu face rau sa specificati explicit daca stiti deja ce rata functioneaza cel mai bine.
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)
Desi optiunile detaliate de control al timpilor discutate mai sus sunt puternice si eficiente, unii oameni le gasesc confuze. Mai mult, alegerea valorilor corecte poate dura uneori mai mult decat scanarea in sine. Asadar Nmap ofera o abordare mai simpla, cu sase modele de timp. Le puteti specifica cu optiunea -Tsi numarul (0-5) sau numele. Numele modelelor sunt paranoid (paranoic - 0), sneaky (siret - 1), polite (politicos -2), aggresive (agresiv - 4) si insane (nebun - 5). Primele doua sunt folosite pentru ascunderea de IDS. Modul politicos incetineste ritmul scanarii pentru a utiliza mai putina latime de banda a masinii tinta. Modul normal este implicit asa ca -T3nu face nimic. Modul agresiv accelereaza scanarea presupunand ca va aflati intr-o retea rapida. In fine, modul nebun presupune ca va aflati intr-o retea extrem de rapida sau ca sunteti dispus sa sacrificati acuratetea rezultatelor in favoarea vitezei.
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)
Optiunea -fface ca scanarea ceruta (incluzand scanarea ping) sa foloseasa fragmente mici de pachete IP. Ideea este impartirea headerului TCP in mai multe pachete pentru a ingreuna misiunea filtrelor de pachete, sistemelor de detectare a intruziunilor si a altor elemente de detectare a activitatii. Atentie cu aceasta optiune! Unele programe au probleme in manevrarea acestor pachete mici. De exemplu Sniffit esua dupa primirea primului fragment. Specificati aceasta optiune o data si Nmap va imparti pachetul in fragmente de opt bytes sau mai putin dupa headerul IP. Astfel, un header TCP de 20 bytes va fi impartit in 3 pachete. Doua de opt bytes si unul cu ultimii patru. Desigur, fiecare fragment are propriul header TCP. Specificati -finca o data pentru folosirea a 16 bytes pe fragment (reducand numarul de fragmente). Sau puteti specifica propriile dimensiuni cu optiunea --mtu. Nu specificati si -fdaca folositi --mtu. Dimensiunea trebuie sa fie un multiplu de 8. Pachetele fragmentate nu vor trece de filtrele de pachete si firewallurile care interogheaza toate fragmentele IP, cum ar fi optiunea CONFIG_IP_ALWAYS_DEFRAG din kernelul Linuxului, unele retele nu-si pot permite pierderea de performanta cauzata de aceste configurari si le dezactiveaza. Altele nu pot activa configurarile de acest gen deoarece fragmentele pot intra pe rute diferite in retea. Unele sisteme defragmenteaza pachetele de iesire in kernel. Linux cu modulul de urmarire a conexiunii din iptables este un exemplu. Realizati o scanare si rulati in acelasi timp un sniffer de genul Ethereal pentru a va asigura ca pachetele sunt fragmentate. Daca sistemul de operare va creaza probleme, incercati optiunea --send-ethde sarire a nivelului IP si de trimitere de cadre ethernet brute.
-D <momeala1 [,momeala2][,ME (EU)],...>(Scanare acoperita de momeli)
Face ca o scanare acoperita de momeli sa fie executata, ceea ce face ca tinta sa creada ca momelile specificate ca argument scaneaza si ele reteaua. Astfel IDS poate raporta 5-10 scanari de porturi de la adrese IP unice, dar nu va stii care adresa scaneaza cu adevarat si care sunt momeli inocente. Cu toate ca aceasta tehnica poate fi contrata prin urmarirea caii prin routere, ignorarea raspunsului si alte mecanisme active, ea reprezinta o tehnica eficienta de ascundere a adresei IP.
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)
In anumite circumstante, Nmap se poate afla in imposibilitatea determinarii adresei sursa (Nmap va anunta daca acest lucru se intampla). In aceasta situatie, folositi -Scu adresa IP a interfetei pe care doriti sa trimiteti pachetele.
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)
Spune Nmapului ce interfata sa foloseasca pentru trimiterea si primirea pachetelor. Nmap ar trebui sa poata determina automat acest lucru, dar va va anunta daca nu poate.
--source-port <numarul_portului>; -g <numarul_portului>(Seteaza portul sursa)
O greseala surprinzator de des intalnita o reprezinta configurarea relatiilor de incredere in functie de numaul portului sursa. Este usor de inteles cum stau lucrurile. Un administrator instaleaza un nou firewall si este apoi ingropat in plangeri din partea utilizatorilor nemultumiti ale caror aplicatii nu mai functioneaza. In particular, DNSul poate fi blocat deoarece raspunsurile UDP DNS de la serverele externe nu mai pot intra in retea. FTP este un alt exemplu. In transferurile FTP active, serverul incearca sa stabileasca o conexiune inapoi la client pentru transferarea fisierului solicitat.
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)
In mod normal Nmap trimite pachete minimaliste continand doar headerul. Astfel pachetele TCP au in general 40 bytes si cererile de raspuns ICMP doar 28. Aceasta optiune adauga un numarul dat ca argument de bytes, generati aleator, la majoritatea pachetelor trimise. Pachetele pentru detectia sistemului de operare ( -O) nu sunt afectate, dar majoritatea pingurilor si scanarilor de porturi sunt. Acest lucru incetineste viteza de scanare, dar pachetele pot fi mai putin suspicioase.
--ttl <valoare>(Seteaza campul IP time-to-live – timp de viata)
Seteaza campul IP time-to-live – timp de viata – la valoarea specificata.
--randomize-hosts(Scaneaza hosturile in ordine aleatoare)
Spune Nmapului sa aranjeze aleator grupuri de 8096 hosturi inainte de scanare. Aceasta optiune poate face scanarea mai putin vizibila pentru anumite sisteme de monitorizare a retelei, in special cand e combina cu un specificator mic de timp. Daca vreti ca aranjarea aleatoare sa se realizeze pentru grupuri mai mari, cresteti valoarea PING_GROUP_SZ din nmap.hsi recompilati. O solutie alternativa o reprezinta generarea listei de IPuri ce urmeaza a fi scanata cu o scanre de tip lista ( -sL -n -oN numefisier), si sa realizati aranjarea aleatoare a lor cu un script Perl, apoi sa furnizati intreaga lista Nmapului cu optiunea -iL.
--spoof-mac <adresa mac, prefix, numele vanzatorului >(Falsifica adresa MAC)
Cere Nmapului sa foloseasca adresa MAC furnizata pentru toate cadrele ethernet pe care le trimite. Aceata optiune implica --send-ethpentru a se asigura ca Nmap trimite pachetele la nivelul retea. MACul specificat poate avea cateva formate. Daca spcificati sirul „0”, Nmap alege un MAC complet aleator pentru sesiunea respectiva. Daca sirul furnizat este un numar par de digiti hexa (cu perechile separate prin caracterul “:”), Nmap va folosi respectuva adresa MAC. Daca mai putin de 12 digiti sunt furnizati, Nmap umple 6 bytes cu valori aleatoare. Daca argumentul nu este nici 0, nici sir hexa, Nmap cauta in nmap-mac-prefixespentru a gasi un producator care sa contina sirul dat (cautare insenzitiva). Daca o asemanare este gasita, Nmap foloseste identificatorul unic al vanzatorului (3 bytes) si completeaza cu 3 bytes alesi aleator. Argumentele valide ale optiunii --spoof-macsunt Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, si Cisco.
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)
Cere ca formatul normalsau fie directionat catre fisierul specificat. Asa cum s-a discutat mai sus, exista o mica diferenta fata de formatul interactiv.
-oX <specificator_fisier>(Formatul XML)
Cere ca formatul XMLsa fie directionat catre fisierul specificat. Nmap include o definitie a tipului de document (DTD) care permite analizatoarelor XML sa valideze fisierele cu rezultate in format XML. Desi este in principal folosit in programare, el poate ajuta si oamenii sa interpreteze rezultatele. DTD defineste elementele legale ale formatului si adesea enumera atributele si valorile pe care le pot lua. Ultima versiune este intotdeauna disponibila la [8] .
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 [9] si Nmap::Parser [10] 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)
Formatul script kiddie este asemanator cu formatul interactiv, cu exceptia faptului ca sirul de iesire este post-procesat pentru a se potrivi mai bine cu stilul HaXXorZ care au neglijat in trecut Nmapul datorita formatului corect gramatical si ortografic de afisare a rezultatelor. Cei fara umor ar trebui sa noteze faptul ca eu iau peste picior script kiddie, inainte de a ma blama pentru presupusul „ajutor acordat”.
-oG <specificator_fisier>(Formatul pentru comanda grep)
Acest format este lasat la urma deoarece este invechit. Formatul XML este mult mai puternic si este aproape la fel de convenabil pentru utilizatorii experimentati. XML este un standar pentru care exista o multime de interpretoare, in vreme ce formatul grep reprezinta solutia doar pentru probleme punctuale. XML este extensibil pentru a prelua noi functionalitati ale Nmap in versiunile urmatoare in vreme ce sunt nevoit adeseori sa omit aceste optiuni din formatul greu din cauza lipsei de spatiu.
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 [11] .
-oA <nume_de_baza>(Scrie in toate formatele)
Pentru usurinta, puteti specifica -oA nume_de_bazapentru stocarea rezultatelor in formatele normal, XML si pentru comanda grep, toate odata. Ele sunt stocate in nume_de_baza.nmap, nume_de_baza.xml, si nume_de_baza.gnmap. La fel ca in majoritatea programelor puteti adauga si calea inaintea numelor fisierelor, ca in exemplele ~/logurinmap/foocorp/sub UNIX sau c:\hacking\scosub Windows.
Optiuni
privind cantitatea de informatii afisate si
depanare
-v(Creste cantitatea de informatii afisate)
Creste cantitatea de informatii afisate, facand ca Nmap sa afiseze mai multe date despre scanarea in curs. Porturile deschise sunt afisate pe masura ce sunt descoperite si un timp estimat al terminarii este furnizat atunci cand Nmap constata ca scanarea va dura mai mult decat cateva minute. Folositi de doua ori optiunea pentru un efect si mai puternic. Folosirea mai mult de doua ori nu are nici un efect.
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)
Cand modul afisare detaliata nu va ofera suficiente informatii, modul depanare este disponibil pentru a va inunda cu si mai multa informatie! La fel ca si cu optiunea de vizualizare detaliata ( -v), modul depanare este activat printr-un specificator ( -d) si nivelul de depanare poate fi crescut prin specificarea lui de mai multe ori. Alternativ, se poate seta un nivel de depanare prin specificarea unui argument la -d. De exemplu, -d9seteaza nivelul 9. Acesta este cel mai mare nivel efectiv si va produce mii de linii, doar daca nu realizati o scanare simpla cu cateva porturi si hosturi.
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)
Face ca Nmap sa afiseze un sumar cu toate pachetele trimise sau primite. Este adesea folositoare pentru depanare, dar este si o sursa pretioasa pentru noii utilizatori de a intelege exact ce face Nmap. Pentru a evita printarea de mii de linii, puteti dori specificarea unui numar limitat de porturi in vederea scanarii, cum ar fi -p20-30. Daca va intereseaza doar ce se intampla in timpul detectarii versiunii, folositi in schimb --version-trace.
--iflist(Listeaza interfetele si caiule de rutare)
Afiseaza interfetele si caile de rutare ale sistemului asa cum sunt ele detectate de Nmap. Este folositor pentru depanarea cailor de rutare sau interpretarea gresita a dispozitivelor (cum ar fi tratarea de catre Nmap a unei conexiuni PPP ca una Ethernet).
Optiuni pentru afisare unor informatii diverse
--append-output(Adauga la fisierul de rezultate in loc sa il inlocuiasca)
Cand specificati un nume de fisier la optiuni cum ar fi -oXsau -oN, acel fisier este suprascris implicit. Daca prefereati pastrarea continutului si adaugarea la sfarsitul lui de noi informatii, specificati optiunea --append-output. Toate fisierele de rezultate specificate la executia Nmap vor fi deschise in modul adaugare in loc sa fie suprascrise. Acest lucru nu functioneaza bine cu formatul XML ( -oX) deoarece rezultatul nu va fi interpretat corect pana nu aranjati fisierul manual.
--resume <nume_fisier>(Reia o scanare intrerupta)
Unele scanari Nmap pot lua un timp foarte mare – de ordinul zilelor. Asemenea scanari nu ruleaza pana la sfarsit. Anumite restrictii pot face Nmapul sa nu ruleze in orele cu trafic intens, reteaua poate fi cazuta, masina pe care ruleaza Nmap poate suferii o restartare planificata sau neplanificata, sau Nmap poate sa se blocheze. Administratorul care ruleaza Nmap poate opri scanarea pentru orice alt motiv, apasand ctrl-C. Refacerea intregii scanari de la inceput nu este de dorit. Din fericire, in modul normal ( -oN) sau cel pentru comanda grep ( -oG) logurile sunt pastrate, utilizatorul poate solicita Nmap reluarea scanarii de la ultima tinta care era scanata in momentul intreruperii. Specificati optiunea --resumesi furnizati ca argument fisierul de rezultate in formatul normal sau grep. Nici un alt argument nu este permis, pentru ca Nmap citeste fisierul de rezultate si foloseste aceleasi optiuni specificate. Rulati Nmap cu nmap --resume numele_fisierului_log. Nmap va adauga la fisier noile rezultate. Reluarea nu este suportata de formatul XML deoarece combinarea a doua rulari succesive intr-un singur fisier XML valid este dificila.
--stylesheet <cale sau URL>(Seteaza formatul XSL pentru transformarea rezultatului XML)
Nmap este
furnizat cu un format XSL numit nmap.xslpentru vizualizarea
sau traducerea rezultatelor XML in HTML. Rezultatele in
formatul XML includ o directiva xml-stylesheetdirective care
indica fisierul nmap.xmldin locatia in care a fost instalat
Nmap (sau din directorul curent in Windows). Incarcati
rezultatul scanarii cu Nmap in format XML intr-un browser si
acesta ar trebui sa aleaga nmap.xsldin sistemul de fisiere
si sa-l foloseasca pentru afisarea rezultatelor. Daca doriti
specificarea unui alt format de afisare, specificati-l ca
argument pentru --stylesheet. Trebuie sa furnizati
calea completa sau URLul. O apelare uzuala este
--stylesheethttps://nmap.org/data/nmap.xsl. Aceasta
aplelare spune browserului sa incarce cel mai nou format de
afisare de la Insecure.Org. Optiunea
--webxmlrealizeaza acelasi lucru cu mai putine
lucruri de tastat si memorat. Incarcand fisierul XSL de la
Insecure.Org face vizualizarea mai facila pentru un
calculator care nu are Nmap instalat (si implicit nici
nmap.xsl) Astfel URLul este adesea mult mai folositor, dar
fisierul local nmap.xsl este utilizat implicit din motive de
securitate.
--webxml(Incarca formatul stylesheet de la Insecure.Org)
Este un sinonim covenabil pentru --stylesheet https://nmap.org/data/nmap.xsl.
--no-stylesheet(Se omite declaratia stylesheetului XSL din XML)
Specificati aceasta optiune daca vreti sa preveniti Nmapul sa asocieze vreun format XSL cu fisierul XML. Directiva xml-stylesheeteste omisa.
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)
Din 2002, Nmap ofera suport IPv6 pentru majoritatea functionalitatilor sale. In particular, scanarea ping (doar TCP), scanarea connect() si detectarea versiunii suporta toate IPv6. Sintaxa comenzii este aceeasi cu exceptia adaugarii optiunii -6. Desigur, trebuie sa folositi sintaxa IPv6 daca specificati o adresa in locul unui hostname. O adresa poate arata 3ffe:7501:4819:2000:210:f3ff:fe03:14d0, asa ca hostnameurile sunt recomandate. Rezultatul arata in mod normal, cu adresa IPv6 pe linia „porturi_interesante”ca singura adresa.
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)
Aceasta optiune activeaza alte optiuni avansate si agresive. Nu m-am decis inca de la ce vine litera de specificare. In prezent activeaza detectia sistemului de operare ( -O) si scanarea versiunii ( -sV). Mai multe functionalitati pot fi inglobate pe viitor. Ideea este de a activa un set cuprinzator de optiuni de scanare fara ca oamenii sa fie nevoiti sa tina minte un set intreg de optiuni. Aceasta optiune activeaza functionalitatile, nu si optiunile de timp (cum ar fi -T4) sau nivelul de informatii afisat ( -v) pe care le-ati dori.
--datadir <nume_director>(Specifica un anumit director pentru localizarea fisierelor Nmap)
Nmap obtine anumite date in momentul rularii in fisierele numite nmap-service-probes, nmap-services, nmap-protocols, nmap-rpc, nmap-mac-prefixes, si nmap-os-fingerprints. Nmap incearca intai sa caute aceste fisiere in directorul specificat cu optiunea --datadir(daca exista). Orice fisier negasit aici este cautat in directorul specificat de directiva NMAPDIR. La rand vin apoi ~/.nmappentru sisteme POSIX sau locatia executabilului Nmap (pe sistemele Win32), si apoi o locatie precompilata cum ar fi /usr/local/share/nmapsau /usr/share/nmap. Ca o ultima optiune, Nmap va cauta in directorul curent.
--send-eth(Foloseste trimiterea bruta ethernet)
Cere Nmapului sa trimita pachete brute ethernet (la nivelul legaturii de date) in locul trimiterii de la nivelul IP superior. Implicit, Nmap alege pe cel care este in general potrivit pentru platforma de rulare. Socketuri brute (nivelul IP) sunt in general mult mai eficiente pe masinile UNIX, in timp ce cadre ethernet sunt necesare pentru operatii sub Windows, din moment ce Microsoft a dezactivat suportul pentru suport de socketuri brute. Nmap foloseste pachete IP brute pe UNIX in ciuda acestei optiunii cand nu exista nici o alta alegere (conexiuni non-ethernet).
--send-ip(Trimite pachete brute la nivelul IP)
Cere Nmapului sa trimita pachete brute prin socketuri IP in locul trimiterii lor la nivelul cadrelor ethernet. Este complementul optiunii --send-ethdiscutata anterior.
--privileged(Se presupune ca utilizatorul are privilegii depline)
Spune Nmapului sa presupuna ca are privilegii suficiente pentru a trimite pachete brute, sa intercepteze pachete si alte operatii similare care in general necesita privilegii de root pe sisteme UNIX. Implicit Nmap renunta la astfel de operatii daca getuid() nu este zero. --privilegedeste o optiune folositoare impreuna cu capacitatea kernelului de Linux de a permite utilizatorilor neprivilegiati sa realizeze scanari cu pachete brute. Asigurativa ca ati mentionat aceasta optiune inaintea oricarei optiuni care necesita privilegii (scanare SYN, detectia sistemului de operare, etc.). Variabila NMAP_PRIVILEGED poate fi setata ca o alternativa la --privileged.
-V; --version(Afiseaza numarul versiunii)
Afiseaza versiunea de Nmap si iese.
-h; --help(Afiseaza o pagina sumara de ajutor)
Afiseaza un ecran de ajutor cu principalele optiuni. Rularea Nmap fara nici un argument face exact acelasi lucru.
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
Cresc / Descresc cantitatea de informatii afisate
d/ D
Cresc /Descresc cantitatea de informatii de depanare
p/ P
Activeaza / Dezactiveaza urmarirea pachetelor
Anything else (Orice altceva)
Afiseaza un mesaj de genul:
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 https://seclists.org/. Cititi acest manual in intregime de asemenea. Daca nimic nu se rezolva, trimiteti un mail la <dev [AT] 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 [AT] 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 [AT] 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 [12] .
ASPECTE LEGALE
Unofficial
Translation Disclaimer / Disculparea fata de traducerea
neoficiala
This is an unnofficial translation of the
Nmap license details
[13]
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 [13] 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 [AT] 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:
• Integreaza cod sursa din Nmap
• Citeste sau include fisiere Nmap proteja de drepturi de autor, cum ar fi nmap-os-fingerprintssau nmap-service-probes.
• Executa Nmap si interpreteaza rezultatele (spre deosebire de aplicatiile shell care afiseaza outputul brut al Nmapului si nu reprezinta produse derivate).
• Integreaza/include/agregheaza Nmap intr-un executabil de instalare proprietar, cum sunt cele produse de InstallShield.
• Face legatura la o biblioteca sau executa un program care realizeaza oricare dintre cele enumerate.
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 [AT] 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 [AT] 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
[14]
. O versiune modificata a
bibliotecii de captura a pachetelor
Libpcapportable
[15]
este distribuita impreuna cu Nmap.
Versiunea de Windows a Nmap utilizeaza biblioteca derivata
din libpcap,
WinPcap
[16]
. Suportul pentru expresiile regulate
este furnizat de PCRE
library
[17]
, software open source, scris de
Philip Hazel. Anumite functii brute de retea folosesc
biblioteca
Libdnet
[18]
, scrisa de Dug Song. O versiune
modificata este distribuita cu Nmap. Optional Nmap se poate
lega de Trusa criptografica
OpenSSL
[19]
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 |
http://creativecommons.org/licenses/by/2.5/
3. |
RFC1122 |
http://www.rfc-editor.org/rfc/rfc1122.txt
4. |
RFC792 |
http://www.rfc-editor.org/rfc/rfc792.txt
5. |
UDP |
http://www.rfc-editor.org/rfc/rfc768.txt
6. |
TCP RFC |
http://www.rfc-editor.org/rfc/rfc793.txt
7. |
RFC 959 |
http://www.rfc-editor.org/rfc/rfc959.txt
8. |
||||
9. |
Nmap::Scanner |
http://sourceforge.net/projects/nmap-scanner/
10. |
Nmap::Parser |
11. |
||||
12. |
||||
13. |
Nmap license details |
https://nmap.org/man/man-legal.html
14. |
Apache Software Foundation |
15. |
bibliotecii de captura a pachetelor Libpcapportable |
16. |
WinPcap |
17. |
PCRE library |
18. |
Libdnet |
http://libdnet.sourceforge.net
19. |
Trusa criptografica OpenSSL |