Nmap, the free scanner
-
Upload
dani-gutierrez-porset -
Category
Technology
-
view
2.695 -
download
2
Transcript of Nmap, the free scanner
Dani Gutié[email protected] apirilak 25
¿Por qué esta presentación?¿Por qué esta presentación?
¿Por qué esta presentación?¿Por qué esta presentación?
1ª edic. Dic-20081ª edic. Dic-2008
Software libre con 12 añosSoftware libre con 12 años● 1-sep-97: sin versión, sólo para GNU/Linux, 1-sep-97: sin versión, sólo para GNU/Linux,
creada por Gordon “Fyodor” Lyoncreada por Gordon “Fyodor” Lyon● Feb-04: v3.50 denegada a SCO Caldera por no Feb-04: v3.50 denegada a SCO Caldera por no
adhesión a la GPL. Le obliga a rehacer la ISO.adhesión a la GPL. Le obliga a rehacer la ISO.● Dic-06: v4.21ALPHA1 NSEDic-06: v4.21ALPHA1 NSE● Ago-08: v4.68 presentada en la Blackhat Ago-08: v4.68 presentada en la Blackhat
DefconDefcon● Mar-09: v4.85BETA7 ConfickerMar-09: v4.85BETA7 Conficker
Software libre con 12 añosSoftware libre con 12 años● Nuevas contribuciones:Nuevas contribuciones:
● Funcionalidades, algoritmos, huellasFuncionalidades, algoritmos, huellas● Google SoC: 2005, 2006, 2007, 2008Google SoC: 2005, 2006, 2007, 2008
Software libre con 12 añosSoftware libre con 12 años● Películas:Películas:
● The Matrix Reloaded (may-03),...The Matrix Reloaded (may-03),...
● Otras: 13 Game of death, The listening, ...Otras: 13 Game of death, The listening, ...
UsosUsosDescubrimiento
de equipos online
Información de estadode puertos tcp/udp, etc.
Reconoc. de versionesservicios de red y S.O.
Detección de agujerosde seg. y malware
Resolución inversade nombres
Trazado de rutas
Resolución de nombres:●Servidores DNS preestablecidos (resolv.conf)●Otros servidores DNS●S.O. (hosts,nsswitch.conf)
En otros software's
Nessus, metasploit,...
ncat, ndiff
Cuestiones éticas y legalesCuestiones éticas y legales● No hay una respuesta sencillaNo hay una respuesta sencilla
● En general no problemático, pero a veces sí En general no problemático, pero a veces sí (políticas, dañar equipos)(políticas, dañar equipos)
Cuestiones éticas y legalesCuestiones éticas y legales● Consejos:Consejos:
● Focalizar el objetivo: nº IPs y puertos, timingFocalizar el objetivo: nº IPs y puertos, timing● Respetar las políticas establecidas, si existenRespetar las políticas establecidas, si existen● Avisar de antemanoAvisar de antemano● O... stealthinessO... stealthiness
Versión actual: 4.85BETA7Versión actual: 4.85BETA7● Licencia GPL v2Licencia GPL v2● Corre en GNU/linux, *BSD, Windows, Mac OS Corre en GNU/linux, *BSD, Windows, Mac OS
X,...X,...● 1760 huellas de S.O.1760 huellas de S.O.● 4805 huellas de servicios tcp/udp4805 huellas de servicios tcp/udp● 55 scripts NSE y 26 librerías LUA55 scripts NSE y 26 librerías LUA● Ejecutables: ncat, ndiff, nmap, zenmapEjecutables: ncat, ndiff, nmap, zenmap● Otros ficheros: 140 protocolos, 2124 servicios Otros ficheros: 140 protocolos, 2124 servicios
tcp/udp, 8406 fabricantes de MACs, Servicios tcp/udp, 8406 fabricantes de MACs, Servicios RPCRPC
InstalaciónInstalación
ubuntu 9.04 jaunty: 4.76
debian 5.0 lenny: 4.62-1
(abierto a lectura desde dic-06)(abierto a lectura desde dic-06)
tar.bz2 (v4.85BETA7: 6.2 Mb)./configure && make && sudo make install
Descubrimiento equipos Descubrimiento equipos onlineonline
● Técnicas:Técnicas:● (ping [-b] xxx.yyy.zzz[.255])(ping [-b] xxx.yyy.zzz[.255])● Ping ICMP echo request, timestamp, Ping ICMP echo request, timestamp,
netmasknetmask● TCP SYN, mejor contra FW statefulTCP SYN, mejor contra FW stateful● TCP ACK, mejor contra FW statelessTCP ACK, mejor contra FW stateless● Ping UDP (por defecto a udp/31338)Ping UDP (por defecto a udp/31338)● Otros protocolos IP: ICMP, IGMP, IP-in-IPOtros protocolos IP: ICMP, IGMP, IP-in-IP● ARP scan. Más rápido en LANsARP scan. Más rápido en LANs
Descubrimiento equipos Descubrimiento equipos onlineonline
● Por defecto:Por defecto:● Superusuario: ICMP y ACK a tcp/80Superusuario: ICMP y ACK a tcp/80● No superusuario: SYN a tcp/80 a través del No superusuario: SYN a tcp/80 a través del
stack TCP/IP del S.O. (connect syscall). Más stack TCP/IP del S.O. (connect syscall). Más lenta.lenta.
● Si se está en red local: ARPSi se está en red local: ARP● A veces por defecto no se descubreA veces por defecto no se descubre
● Interesante nombres resueltosInteresante nombres resueltos● Entidad versus Proveedor servicioEntidad versus Proveedor servicio
Escaneo de puertosEscaneo de puertos
SYN
SYN/ACKRST
SYN
RST
SYN
SYN/ACK
ACKDatosRST
SYN
SYNSYN
filtered
closedopen
Según RFCs e implement. stacks protocolos.Según RFCs e implement. stacks protocolos.Ej tcp:Ej tcp:
Escaneo de puertosEscaneo de puertos
closed|filtered open|filtered unfiltered
open closed filtered (*)
UDP,IP,
FIN,NULL,Xmas
ACK Idle
nmap define 6 estadosnmap define 6 estados
(*)No depende sólodel puerto, tambiéndel tipo de prueba
Escaneo de puertosEscaneo de puertos
Motorultra_scan
MotorespropiosSin nmap
Detecciónversión del
servicio
●netstat encada equipo●nc -z
●Varios TCP,UDP (ver tabla)●TCP con flags ad-hoc●TCP idle●IP protocol
●TCP idle●FTP bounce
UDP
TCP SYN/ACK OUDP OICMP error (tipo 3, cód. 3) F C F F F FICMP error (tipo 3, cód. 1, 2, 9, 10, 13) F F F F F F(nada) F O | F O | F F F O | FTCP RST non-zero window field C C U O CTCP RST zero window field C C U C C
TCPSYN,
Connect
TCPNULL, FIN,
Xmas
TCPACK
TCP Window
TCP Maimon
Escaneo de puertosEscaneo de puertos
● TCP Connect: no requiere privilegios, pero TCP Connect: no requiere privilegios, pero menos eficiente que SYN (gestión por S.O. y menos eficiente que SYN (gestión por S.O. y no nmap)no nmap)
● UDP: más lento que TCP. A veces funciona UDP: más lento que TCP. A veces funciona enviando contenido adecuadoenviando contenido adecuado
● TCP ACK: apto para diferenciar firewall TCP ACK: apto para diferenciar firewall statefull/statelessstatefull/stateless
Escaneo de puertosEscaneo de puertos
● Menos eficientes y más dependientes de S.O.:Menos eficientes y más dependientes de S.O.:● TCP FIN, NULL, Xmas: aptos para algunos TCP FIN, NULL, Xmas: aptos para algunos
firewall stateless y filtros de paquetesfirewall stateless y filtros de paquetes● TCP Window: apto para diferenciar firewall TCP Window: apto para diferenciar firewall
statefull/stateless.statefull/stateless.
Escaneo de puertosEscaneo de puertos● Fichero Fichero nmap-servicesnmap-services::
servicio, protocolo, puerto, frecuencia de servicio, protocolo, puerto, frecuencia de estado abierto.estado abierto.
● Ej. Puertos tcp más populares:Ej. Puertos tcp más populares:80, 23, 443, 21, 22, 25,...80, 23, 443, 21, 22, 25,...
F=/usr/share/nmap/nmap-servicesgrep -v ^# $F | sort -t. -k 2 -r -n | grep tcp
Escaneo de puertosEscaneo de puertos● Router/Firewall reenviando a otros equipos:Router/Firewall reenviando a otros equipos:
#PUERTOS=”P_FW1,P_FW2,...,P_REENV1,P_REENV2,...”#nmap -PN -n -p $PUERTOS --packet-trace IPDESTINO | grep “ SA “
RCVD (0.3800s) TCP IPDESTINO:P_REENV1 > IPORIGEN:57233 SA ttl=55 …RCVD (0.3800s) TCP IPDESTINO:P_REENV2 > IPORIGEN:57233 SA ttl=55 …...RCVD (0.3800s) TCP IPDESTINO:P_FW1 > IPORIGEN:57233 SA ttl=56 …RCVD (0.3800s) TCP IPDESTINO:P_FW2 > IPORIGEN:57233 SA ttl=56 …...
Fingerprinting de serviciosFingerprinting de servicios● Resultado: servicio, aplicación y versiónResultado: servicio, aplicación y versión● Soporta SSL (mediante OpenSSL) y IPv6Soporta SSL (mediante OpenSSL) y IPv6● Caso de servicio SunRPC: se lanza un ataque Caso de servicio SunRPC: se lanza un ataque
por fuerza bruta para encontrar programa, por fuerza bruta para encontrar programa, nombre y versión.nombre y versión.
Fingerprinting de serviciosFingerprinting de servicios● Técnica: Gramática de pruebas extensible:Técnica: Gramática de pruebas extensible:
● Probe: Nombre de la prueba y bytes a enviarProbe: Nombre de la prueba y bytes a enviar● ports, sslports: puertos para los que enviar ports, sslports: puertos para los que enviar
un probeun probe● match, softmatch: patrón a comparar y match, softmatch: patrón a comparar y
servicio/versión asociadaservicio/versión asociada● Otras: Exclude, totalwaitms, rarity, fallbackOtras: Exclude, totalwaitms, rarity, fallback
● Fichero Fichero nmap-service-probesnmap-service-probes
Fingerprinting de S.O.Fingerprinting de S.O.● Resultado:Resultado:
● Tipo de dispositivoTipo de dispositivo● Detalles: versión, fabricante, MAC, hostnameDetalles: versión, fabricante, MAC, hostname● Uptime estimadoUptime estimado● Distancia de redDistancia de red● Predicción de secuencia TCP e IPPredicción de secuencia TCP e IP
grep ^Class nmap-os-db | cut -f 4 -d \| | sort -u
general purposeweb server
load balancerproxy serverprint server
remote managementterminal server
game consolemedia devicepower-devicestorage-miscspecialized
printerterminalwebcam
telecom-miscPBX
VoIP adapterVoIP gatewayVoIP phone
phonePDA
routerswitchbridge
broadband routerWAP
encryption acceleratorfirewall
security-misc
Fingerprinting de S.O.Fingerprinting de S.O.
Fingerprinting de S.O.Fingerprinting de S.O.● Técnica:Técnica:
● Interpretación de respuestas a 13 pruebas Interpretación de respuestas a 13 pruebas (ECN, IE, OPS, SEQ, T1,..., T7, U1, WIN) (ECN, IE, OPS, SEQ, T1,..., T7, U1, WIN) mediante envío de 2 paq. ICMP, 13 paq. mediante envío de 2 paq. ICMP, 13 paq. TCP, 1 paq. UDP a puertos abiertos / TCP, 1 paq. UDP a puertos abiertos / cerrados.cerrados.
● Ej. ttl por defecto:Ej. ttl por defecto:/proc/sys/net/ipv4/ip_default_ttl/proc/sys/net/ipv4/ip_default_ttl
● Fichero Fichero nmap-os-dbnmap-os-db
Fingerprinting de S.O.Fingerprinting de S.O.● Otras técnicas no empleadas:Otras técnicas no empleadas:
● Fingerprinting pasivo: nmap es activoFingerprinting pasivo: nmap es activo● Exploits de versiones específicasExploits de versiones específicas● Tiempos de retransmisión de paquetes: lentoTiempos de retransmisión de paquetes: lento● Fragmentación IP: algunos fw Fragmentación IP: algunos fw
(de)fragmentan(de)fragmentan● Qué puertos están abiertos: poco fiableQué puertos están abiertos: poco fiable
Parámetros de calidadParámetros de calidad● Fiabilidad:Fiabilidad:
● Cantidad de informaciónCantidad de información● No falsos positivos/negativosNo falsos positivos/negativos
● Velocidad: Tiempo / Cantidad de infoVelocidad: Tiempo / Cantidad de info● Rendimiento en contextos no favorables (ej. Rendimiento en contextos no favorables (ej.
firewalls)firewalls)● Ocultación o discreción (stealthiness)Ocultación o discreción (stealthiness)● Recursos (RAM, ancho de banda)Recursos (RAM, ancho de banda)
FiabilidadFiabilidad● ¡No siempre acierta!¡No siempre acierta!
● Escanear más puertosEscanear más puertos● Escanear de forma más agresivaEscanear de forma más agresiva● Escanear desde otra ubicaciónEscanear desde otra ubicación
VelocidadVelocidad
● Paquetes y tiempos (1)Paquetes y tiempos (1)● Nº pruebas / segundo (min/máx).Nº pruebas / segundo (min/máx).● Paralelismo:Paralelismo:
– Nº hosts (mín/máx) en paraleloNº hosts (mín/máx) en paralelo– Nº pruebas simultáneas entre todos los Nº pruebas simultáneas entre todos los
hosts (mín/máx).hosts (mín/máx).– Múltiples instancias de nmap no siempre Múltiples instancias de nmap no siempre
aconsejableaconsejable
VelocidadVelocidad
● Paquetes y tiempos (2)Paquetes y tiempos (2)● Timeouts: estimables ej. con hping2Timeouts: estimables ej. con hping2
– RTT (mín/máx): tiempo de espera a una RTT (mín/máx): tiempo de espera a una pruebaprueba
– Por host: tiempo máximo para descartarloPor host: tiempo máximo para descartarlo● Máximo nº de reintentos para retransmitir un Máximo nº de reintentos para retransmitir un
paquetepaquete● Retardo para envío de paquetes a un hostRetardo para envío de paquetes a un host
VelocidadVelocidad● No solicitar servicios innecesarios:No solicitar servicios innecesarios:
● Para ver los equipos online no es necesaria Para ver los equipos online no es necesaria la fase de escaneo de puertosla fase de escaneo de puertos
● Resolución de nombresResolución de nombres● Detección de versiones de S.O. y serviciosDetección de versiones de S.O. y servicios● Trazado de rutasTrazado de rutas
● Qué puertos escanear: los N más típicos (por Qué puertos escanear: los N más típicos (por defecto 1000), el objetivo,...defecto 1000), el objetivo,...
● Intensidad de pruebas de detección de versiónIntensidad de pruebas de detección de versión
VelocidadVelocidad● Escanear desde puntos con velocidad rápida al Escanear desde puntos con velocidad rápida al
objetivo:objetivo:● Desde la red local o detrás del firewallDesde la red local o detrás del firewall● Desde puntos adecuados ej. en conexiones Desde puntos adecuados ej. en conexiones
internacionalesinternacionales● Hacer nmaps por fases: 1) detección rápida de Hacer nmaps por fases: 1) detección rápida de
hosts online, 2) escaneo de puertos,...hosts online, 2) escaneo de puertos,...● Tiempo estimado a priori/duranteTiempo estimado a priori/durante
OcultaciónOcultación● Características de paquetes: tamaño no nulo (--data-Características de paquetes: tamaño no nulo (--data-
length), TTL, fragmentación, MTU, opciones de length), TTL, fragmentación, MTU, opciones de paquetes IP, checksum TCP/UDP inválido, paquetes IP, checksum TCP/UDP inválido, enrutamiento en origenenrutamiento en origen
● Envío de paquetes intermedios con otras IPs origen Envío de paquetes intermedios con otras IPs origen (“señuelos”)(“señuelos”)
● Spoofing de MAC, IP, puerto origenSpoofing de MAC, IP, puerto origen
● Proxies abiertosProxies abiertos
● Orden aleatorio de hosts y puertos destinosOrden aleatorio de hosts y puertos destinos
● Nº de hosts, nº de puertos y frecuencia de envíoNº de hosts, nº de puertos y frecuencia de envío
● Técnica o tipo de probeTécnica o tipo de probe
Firewalls / IDs / IPsFirewalls / IDs / IPs● Firewalls stateless/statefull, con/sin NATFirewalls stateless/statefull, con/sin NAT● IDSs: detección, ej. alarmaIDSs: detección, ej. alarma● IPSs: prevención, ej. bloqueoIPSs: prevención, ej. bloqueo● Honeypots / HoneynetsHoneypots / Honeynets
Denfensas contra nmapDenfensas contra nmap● Cerrar puertosCerrar puertos● drop vs rejectdrop vs reject● IDSs/ Seguimiento de logs (scanlogd,...)IDSs/ Seguimiento de logs (scanlogd,...)● Servicios en puertos no típicosServicios en puertos no típicos● Port knockingPort knocking● Honeypots / honeynetsHoneypots / honeynets● OS SpoofingOS Spoofing● Retardos en respuestas (“tar pitting”)Retardos en respuestas (“tar pitting”)● Bloqueo de puertosBloqueo de puertos
Formatos de salidaFormatos de salida● Fichero:Fichero:
● NormalNormal● XMLXML● GrepableGrepable● ““Hack3r”Hack3r”
● Se puede continuar uno ya comenzadoSe puede continuar uno ya comenzado
NSENSE● Nmap Scripting EngineNmap Scripting Engine● Por qué:Por qué:
● Detección más sofisticada de S.O. y Detección más sofisticada de S.O. y servicios, ej. skype v2servicios, ej. skype v2
● Deteccion de vulnerabilidades y malwareDeteccion de vulnerabilidades y malware● Scripts clasificados en categoríasScripts clasificados en categorías
NSENSE● NSE = intérprete LUA + biblioteca NSENSE = intérprete LUA + biblioteca NSE● LUA:LUA:
● Razones: diseñado para ser embebido de Razones: diseñado para ser embebido de forma eficiente, lic. MIT, paralelizable.forma eficiente, lic. MIT, paralelizable.
● Lenguaje interpretado.Lenguaje interpretado.● Utilizado en wireshark/tshark, snort, Utilizado en wireshark/tshark, snort,
OpenWRT, VLC, lighttpd, juegos,...OpenWRT, VLC, lighttpd, juegos,...
NSENSE● Librería NSE: conexión Nmap y LUA:Librería NSE: conexión Nmap y LUA:
● Paso de parámetrosPaso de parámetros● API de red (connect I/O, raw packet I/O)API de red (connect I/O, raw packet I/O)● Ejecución de scripts en paralelo (thread Ejecución de scripts en paralelo (thread
mutexes)mutexes)● Gestión de ExcepcionesGestión de Excepciones● Registro de estadoRegistro de estado
NSENSE● Ejemplo: showSMTPVersion.nseEjemplo: showSMTPVersion.nse--- Queries the version of an SMTP server.--@output-- 25/tcp open smtp\n-- |_ SMTP version: 220 mail.foo.com mx-2.bar.com ESMTP Exim 4.64\nid = "SMTP version"description = "Simple script which queries and prints the version of an SMTP server."author = "Diman Todorov <[email protected]>"license = "Same as Nmap--See http://nmap.org/book/man-legal.html"categories = {"demo"}
require "comm"require "shortport"
portrule = shortport.port_or_service(25, "smtp")action = function(host, port) local status, result = comm.get_banner(host, port, {lines=1})
if not status then return end
return (string.gsub(result, "\n", ""))end
NSENSE
● ConfickerConficker
nmap -PN -d -p445 --script=smb-check-vulns --script-args=safe=1 RangoIPsnmap -PN -d -p445 --script=smb-check-vulns --script-args=safe=1 RangoIPs
Host script results:Host script results:
| smb-check-vulns:| smb-check-vulns:
| MS08-067: FIXED| MS08-067: FIXED
| Conficker: Likely INFECTED| Conficker: Likely INFECTED
|_ regsvc DoS: VULNERABLE |_ regsvc DoS: VULNERABLE
zenmapzenmap● GUI GTK. Otras Qt: knmap, nmapsi4GUI GTK. Otras Qt: knmap, nmapsi4● Qué aporta:Qué aporta:
● Ayuda en introducción de opcionesAyuda en introducción de opciones● Usabilidad en presentación de resultados,Usabilidad en presentación de resultados,
especialmente representación de topologíaespecialmente representación de topología
zenmapzenmap
Otras herramientasOtras herramientas● Libres / Privativas. Gratis / Comerciales.Libres / Privativas. Gratis / Comerciales.● Ej. en Ubuntu jaunty 9.04:Ej. en Ubuntu jaunty 9.04:
arp-scan, doscan, ike-scan, knocker, nast, arp-scan, doscan, ike-scan, knocker, nast, nessus, netdiscover, nwatch, openvas*, p0f, nessus, netdiscover, nwatch, openvas*, p0f, paketto, php-net-portscan, pnscan, python-paketto, php-net-portscan, pnscan, python-scapy, scanssh, sslscan, irpas, nikto, xprobescapy, scanssh, sslscan, irpas, nikto, xprobe
● Otras, ej. unicornscanOtras, ej. unicornscan
Agur eta Ondo eskaneatu!Agur eta Ondo eskaneatu!● Eskerrik asko: Gordon “Fyodor” Lyon & team, blindsecEskerrik asko: Gordon “Fyodor” Lyon & team, blindsec
● Licencia de uso de este documento: CC 3.0 by-saLicencia de uso de este documento: CC 3.0 by-sa
( ) /\ _ ( ( ) /\ _ ( \ | ( \ ( \.( ) _____\ | ( \ ( \.( ) _____ \ \ \ ` ` ) \ ( ___ / _ \\ \ \ ` ` ) \ ( ___ / _ \ (_` \+ . x ( .\ \/ \____-----------/ (o) \_(_` \+ . x ( .\ \/ \____-----------/ (o) \_
- .- \+ ; ( O \____- .- \+ ; ( O \____ ) \_____________ ` \ /) \_____________ ` \ /(__ +- .( -'.- <. - _ VVVVVVV VV V\ \/(__ +- .( -'.- <. - _ VVVVVVV VV V\ \/(_____ ._._: <_ - <- _ (--_AAAAAAA__A_/ |(_____ ._._: <_ - <- _ (--_AAAAAAA__A_/ |
. /./.+- . .- / +-- - . \______________//_ \_______. /./.+- . .- / +-- - . \______________//_ \_______ (__ ' /x / x _/ ( \___' \ /(__ ' /x / x _/ ( \___' \ / , x / ( ' . / . / | \ /, x / ( ' . / . / | \ / / / _/ / + / \// / _/ / + / \/ ' (__/ / \' (__/ / \
NMAP IS A POWERFUL TOOL -- USE CAREFULLY AND RESPONSIBLYNMAP IS A POWERFUL TOOL -- USE CAREFULLY AND RESPONSIBLY