PRESENTACIÓ -Nmap (Network Mapper): escàner de ports amb estat que es va llançar en Novembre de 1997. Té més de 100 opcions en CLI. ENUMERACIÓ IPs -sL: enumera IPs del rang i fa consultes DNS inverses. -n: si no volem fer consultes DNS inverses. # nmap -n -sL 192.168.1.0/24 # nmap -n -sL 192.168.1.0/24 --exclude 192.168.1.0,192.168.1.255 -iR: genera IPs aleatòries (exclou privades, multicast, ...) # nmap -n -sL -iR 0 HOST DISCOVERY ********************************************** host discovery == ping scan == sweep ping ********************************************** -L'objectiu és descobrir màquines actives i es fa per defecte seguit d'un escaneig. -sP: sols host discovery (no escaneig): -root: ICMP echo request | ACK 80 # nmap -n -sP scanme.nmap.org --packet-trace --reason -usuari: connect TCP 80 $ nmap -n -sP scanme.nmap.org --packet-trace --reason -PN: sols escaneig o el que s'especifique (no host discovery) -Formats suportats per Nmap: IPv4-6, nom domini, CIDR, rangs: # nmap -sP 192.168.0-255.1-254 -Tipus de host discovery: -PR: s'empra en LANs per defecte. Petició ARP (ignora cau ARP del SO). # nmap -n -sP -PR --send-ip 192.168.0.254 --packet-trace --reason # nmap -n -sP -PR --send-ip 192.168.0.254 --packet-trace --reason -PS: SYN-ACK, RST: màquina activa root: SYN 80 (per defecte) usuari: connect TCP 80 (per defecte) # nmap -n -sP -PS110-143,443 scanme.nmap.org --packet-trace --reason -PA: RST: màquina online root: ACK 80 (per defecte) usuari: connect TCP 80 (per defecte) # nmap -n -sP -PA110-143,443 scanme.nmap.org --packet-trace --reason NOTA: per a detectar FW sense estat. -PU: UDP 31338 (per defecte) -obert|filtrat: màquina no activa? -ICMP unreachable: màquina online -PE: ICMP echo request. -PP: ICMP timestamp. -PM: ICMP address mask reply. -PO: ICMP, IGMP i IP-IP. -Exemple complet: # nmap -n -sP -PS22 -PA80,443 -PU10000-10010 -PE -PO scanme.nmap.org ******************** -sP == -PE -PA (mode privilegiat) ************************ ESCANEIG PORTS scanme.nmap.org: màquina per llançar escanejos, __no exploits ni DoS__ -Existeixen 65536 ports (port 0): # nmap -n -PN -p- scanme.nmap.org # nmap -n -PN -p0- scanme.nmap.org # nmap -n -PN -F scanme.nmap.org # nmap -n -PN --top-ports 10 scanme.nmap.org --packet-trace NOTA: per defecte s'escanegen els 1000 ports més relevants. -Estat ports Nmap: open: servei escoltant. close: servei NO escoltant. filtered: drop o ICMP unreachable. unfiltered: obert | tancat? [ACK scan] open|filtered: [UDP, IP protocol, FIN, NULL i Xmas scan] close|filtered: [Idle scan] -Tipus escaneig: -sS: SYN obert: SYN-ACK, i *el SO* respon amb RST. tancat: RST filtrat: FW|ICMP unreachable -sT: TCP connect (no cal privilegis) obert: SYN-ACK, ACK ___ RST (mitjançant SO) -sU: lent. obert: resposta. obert|filtrat: no resposta (envia un paquet buit *). tancat: ICMP unreachable. * provar amb escaneig de versions o amb hping per detectar diferències entre la quantitat de bots (problema si el FW està en la pròpia màquina). -sA: FW amb o sense estat? obert|tancat (unfiltered): RST filtrat: ICMP unreachable | no resposta. -sF: FIN flag. -sN: NULL flag. -sX: FIN, PSH i URG flags. útils per a la detecció de FW sense estat. segons RFC, els paquets que no contenen SYN, RST o ACK: tancat: contesten RST obert | filtrat: no contesten. filtrat: ICMP unreachable. -sW: == ACK scan, però diferència entre obert i tancat: obert: RST (finestra != 0) tancat: RST (finestra == 0) filtrat: ICMP unreachable | no resposta. NOTA: els valors de la finestra depenen de la implementació del SO, per tant no es guaranteix la fiabilitat de l'escaneig. -sM: FIN-ACK obert|filtrat: no resposta. tancat: RST. filtrat: ICMP unreachable. -sI zombie: atacant no detectable. -sO: no escaneja ports, sino protocols emprats [TCP, ICMP, IGMP, ...] obert: resposta. tancat: ICMP unreachable (3,2). -b FTP_bounce (no cal privilegis) --scanflags: flags personalitzats # nmap -n -PN -p22-25 --scanflags URGACKPSH -sS scanme.nmap.org -Exemple escaneig TCP-UPD: # nmap -n -PN -sSU -pT:22-25,U:10000 scanme.nmap.org --reason TIMING -Monitorització dinàmica del timing (rtt probes, rate-limiting del FW, fiabilitat de la xarxa, ..) i adapta la velocitat de l'escaneig. -Optimització: -T0 - -T5 --min-rtt-timeout, --max-rtt-timeout, --initial-rtt-timeout --host-timeout --min-rate, --max-rate --max-retries --min-host-group, --max-hostgroup --min-parallelism, --max-parallelism --scan-delay, --max-scan-delay DETECCIÓ VERSIONS -Avarigua el servei que hi ha darrere d'un port obert, i també el SO i tipus de dispositiu: # nmap -n -PN -sV scanme.nmap.org # nmap -n -PN -A scanme.nmap.org * * -A == detecta versions i SO, executa scripts NSE i traceroute. -Característiques: -identifica el nom de l'aplicació i el número de versió. -servei amb SSL: empra OpenSSL. -servei SunRPC: executa un script RPC de força bruta. -Es pot indicar un número (rarity) en base al qual s'empren sols proves que solen retornar dades o s'inclouen més: --version-intensity <0-9> --version-light: 2 --version-all: 9 -Post-processors: per a fer proves més intrussives -scripts NSE -RCP grinding (-sR) -SSL tunneling -Des de'l punt de vista de l'admin, es pot emprar per buscar serveis amb versions vulnerables. DETECCIÓ SO -Escaneig actiu per determinar el SO (p0f en canvi és passiu). Envia 15 paquets TCP, UDP i ICMP a ports oberts i tancats: # nmap -O scanme.nmap.org # nmap -A scanme.nmap.org * # nmap -O -v scanme.nmap.org * -A == detecta versions i SO, executa scripts NSE i traceroute. -Informació que mostra: -tipus de dispositiu (router, impressora, fw, consola, ...) -SO i versió -uptime -distància -predicció de seqüència TCP (IP spoofing) -generació IP ID -Si es detecten diferents SO, és possible que existeisca una dispositiu fent NAT. -Afinar detecció SO: --osscan-limit: sols quan hi ha _almenys_ un port obert i tancat. --osscan-guess: més agressiu. -Escaneig més precís (tots els ports [menys el 0], TCP i UDP): # nmap -sSU -O -p- -v --osscan-guess scanme.nmap.org NSE -Scripts LUA (s'executen en parallel) per aconseguir més informació sobre sistemes: -network discovery (whois, consultes SNMP, NFS/SMB/RPC -deteccció de backdoors i cucs. -explotar vulnerabilitats. # nmap -p22,80 -sC scanme.nmap.org # nmap -A -p22,80 scanme.nmap.org * # nmap -p22,80 -sC --script --script-args scanme.nmap.org * -A == detecta versions i SO, executa scripts NSE i traceroute. -Els scripts s'agrupen en categories: discovery malware vuln auth default (-sC, -A) ... EVITAR FW/IDS -Avariguar regles del FW *: SYN scan: es sol fer drop dels paquets o enviar ICMP unreachable. També envien RST suplantant al host destinació. ACK scan: no els bloquegen els FW sense estat. IP ID scan: per avariguar IPs origen que poden travessar el FW (NFS, TCP wrappers, ...). Si s'incrementa el ID, és perque els paquets travessen el FW i una màquina de la LAN interna contesta. * preguntar a l'admin és una opció que no es contempla :) -Escanejos útils: FIN Maimon Window SYN/FIN NULL -La manipulació de la fragmentació per part del FW depén de la implementació; pot ser els deixe passar tots. O sols bloquege el primer: # nmap -f -sS -v scanme.nmap.org -Spoofing: -port oritge: hi ha FW que permeten tràfic entrant basant-se en el port oritge (53 DNS, 20 FTP actiu) # nmap -sS -g 53 scanme.nmap.org -MAC: # nmap -sS --spoof-mac 192.168.0.16 -En els IDS es detecten els escanejos basant-se en un umbral. Per tal d'evitar-ho: # nmap -sS -T paranoid scanme.nmap.org o jugar més amb el timing: --max-parallelism --min-rtt-timeout --scan-delay -Per tal de confundir la IP de l'atacant quan s'anlitzen els logs: # nmap -sS -D # nmap -sS -S -sS scanme.nmap.org NOTA: en el IP spoofing _NO_ obtenim informació resultant. IMPORTANT: cap d'estes tècniques és infalible. És conveniente comprendre amb major detall el funcionament de FW i IDS per saber la seua possible reacció. EIXIDA (OUTPUT) -interactiva -normal (-oN): bàsicament el mateix que interactiva però en fitxer. -XML (-oX): recomanada per a treballar amb un parser XML. -grepable (-oG): llista informació d'un host per línia (grep, awk, cut, sed, ...) -kiddie (-oS) -normal, grepable i XML (-oA) COSES CURIOSES -implementa resolver en paral.lel. -implementa traceroute en paralel: # nmap --traceroute -sP scanme.nmap.org -interacció durant execució escaneig: Return: mostra % completat. d/D: activa/desactiva debugging. v/V: activa/desactiva verbose. p/P: activa/desactiva packet tracing. FERRAMENTES COMPLEMENTÀRIES http://unspecific.com/nmap/ ferramentes llibre Syngress URL http://radajo.blogspot.com/2009/01/nmap-trivia-answers-mastering-network.html http://nmap-online.com/ BIBLIOGRAFÍA NMAP Network Sanning * Nmap in the Enterprise (Your Guide to Network Scanning) * és el llibre oficial i el recomane molt. El llibre de Syngress és més antic i sols aporta com extra algunes ferramentes complementàries. La resta està comentat de forma molt més extensa en el llibre oficial. NOTES IMPORTANTS: no tinc pensat ampliar el document, ni maquetar-lo amb LaTeX, ni res per l'estil. De moment esta és la informació que conté, i si en un futur ho ampliara, el primer sorprés seria jo :) És important remarcar que este text és un guió per a poder donar la xarrada d'Nmap, per tant és MOLT esquemàtic. En cap moment es considera una explicació detallada. Si algú té molt d'interés en la matèria, aconselle que llisca el llibre oficial d'Nmap. En estar traduït el text tant a valencià com castellà, és molt probable que m'haja colat amb algunes paraules. Si algú llegint-lo troba errors, agrairia que ho remitira a: sor.sorzitroen _me cago en los spammers_ gmail.com