Dani Gutiérrez
jdanitxu@gmail.com
2009ko apirilak 25
¿Por qué esta presentación?
¿Por qué esta presentación?




1ª edic. Dic-2008
Software libre con 12 años
    1-sep-97: sin versión, sólo para GNU/Linux,
●


    creada por Gordon “Fyodor” Lyon
    Feb...
Software libre con 12 años
    Nuevas contribuciones:
●



        Funcionalidades, algoritmos, huellas
    ●


        Go...
Software libre con 12 años
    Películas:
●



        The Matrix Reloaded (may-03),...
    ●




        Otras: 13 Game o...
Usos
   Descubrimiento
                                 Resolución inversa
  de equipos online
                           ...
Cuestiones éticas y legales
    No hay una respuesta sencilla
●




    En general no problemático, pero a veces sí
●


  ...
Cuestiones éticas y legales
    Consejos:
●



        Focalizar el objetivo: nº IPs y puertos, timing
    ●


        Res...
Versión actual: 4.85BETA7
    Licencia GPL v2
●



    Corre en GNU/linux, *BSD, Windows, Mac OS
●


    X,...
    1760 hu...
Instalación
debian 5.0 lenny: 4.62-1



ubuntu 9.04 jaunty: 4.76



tar.bz2 (v4.85BETA7: 6.2 Mb)
./configure && make && su...
Descubrimiento equipos
                online
    Técnicas:
●



        (ping [-b] xxx.yyy.zzz[.255])
    ●


        Pin...
Descubrimiento equipos
                online
    Por defecto:
●



        Superusuario: ICMP y ACK a tcp/80
    ●


    ...
Escaneo de puertos
Según RFCs e implement. stacks protocolos.
Ej tcp:

                                closed
         ope...
Escaneo de puertos
nmap define 6 estados

             open             closed       filtered (*)


         closed|filter...
Escaneo de puertos
                                                                             Detección
                ...
Escaneo de puertos
    TCP Connect: no requiere privilegios, pero
●


    menos eficiente que SYN (gestión por S.O. y
    ...
Escaneo de puertos
    Menos eficientes y más dependientes de S.O.:
●



        TCP FIN, NULL, Xmas: aptos para algunos
 ...
Escaneo de puertos
    Fichero nmap-services:
●


    servicio, protocolo, puerto, frecuencia de
    estado abierto.
F=/us...
Escaneo de puertos
    Router/Firewall reenviando a otros equipos:
●




#PUERTOS=”P_FW1,P_FW2,...,P_REENV1,P_REENV2,...”
...
Fingerprinting de servicios
    Resultado: servicio, aplicación y versión
●



    Soporta SSL (mediante OpenSSL) y IPv6
●...
Fingerprinting de servicios
    Técnica: Gramática de pruebas extensible:
●



        Probe: Nombre de la prueba y bytes ...
Fingerprinting de S.O.
    Resultado:
●



        Tipo de dispositivo
    ●


        Detalles: versión, fabricante, MAC,...
Fingerprinting de S.O.
grep ^Class nmap-os-db             |   cut -f 4 -d | | sort -u


            general purpose       ...
Fingerprinting de S.O.
    Técnica:
●



        Interpretación de respuestas a 13 pruebas
    ●


        (ECN, IE, OPS, ...
Fingerprinting de S.O.
    Otras técnicas no empleadas:
●



        Fingerprinting pasivo: nmap es activo
    ●


       ...
Parámetros de calidad
    Fiabilidad:
●



        Cantidad de información
    ●


        No falsos positivos/negativos
 ...
Fiabilidad
    ¡No siempre acierta!
●




    Escanear más puertos
●



    Escanear de forma más agresiva
●



    Escane...
Velocidad
    Paquetes y tiempos (1)
●



        Nº pruebas / segundo (min/máx).
    ●


        Paralelismo:
    ●


   ...
Velocidad
    Paquetes y tiempos (2)
●



        Timeouts: estimables ej. con hping2
    ●


           RTT (mín/máx): ti...
Velocidad
    No solicitar servicios innecesarios:
●



        Para ver los equipos online no es necesaria
    ●


      ...
Velocidad
    Escanear desde puntos con velocidad rápida al
●


    objetivo:
        Desde la red local o detrás del fire...
Ocultación
    Características de paquetes: tamaño no nulo (--data-
●


    length), TTL, fragmentación, MTU, opciones de
...
Firewalls / IDs / IPs
    Firewalls stateless/statefull, con/sin NAT
●



    IDSs: detección, ej. alarma
●



    IPSs: p...
Denfensas contra nmap
    Cerrar puertos
●



    drop vs reject
●



    IDSs/ Seguimiento de logs (scanlogd,...)
●



  ...
Formatos de salida
    Fichero:
●



        Normal
    ●


        XML
    ●


        Grepable
    ●


        “Hack3r”
...
NSE
    Nmap Scripting Engine
●



    Por qué:
●



        Detección más sofisticada de S.O. y
    ●


        servicios...
NSE
    NSE = intérprete LUA + biblioteca NSE
●



    LUA:
●



        Razones: diseñado para ser embebido de
    ●


  ...
NSE
    Librería NSE: conexión Nmap y LUA:
●



        Paso de parámetros
    ●


        API de red (connect I/O, raw pa...
NSE
      Ejemplo: showSMTPVersion.nse
●


--- Queries the version of an SMTP server.
--@output
-- 25/tcp open smtpn
-- |_...
NSE
    Conficker
●




nmap -PN -d -p445 --script=smb-check-vulns --script-args=safe=1 RangoIPs


    Host script results...
zenmap
    GUI GTK. Otras Qt: knmap, nmapsi4
●



    Qué aporta:
●



        Ayuda en introducción de opciones
    ●


 ...
zenmap
Otras herramientas
    Libres / Privativas. Gratis / Comerciales.
●



    Ej. en Ubuntu jaunty 9.04:
●


    arp-scan, do...
Agur eta Ondo eskaneatu!
    Eskerrik asko: Gordon “Fyodor” Lyon & team, blindsec
●



    Licencia de uso de este documen...
Upcoming SlideShare
Loading in …5
×

Nmap, the free scanner

2,938 views
2,746 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,938
On SlideShare
0
From Embeds
0
Number of Embeds
21
Actions
Shares
0
Downloads
95
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Nmap, the free scanner

  1. 1. Dani Gutiérrez jdanitxu@gmail.com 2009ko apirilak 25
  2. 2. ¿Por qué esta presentación?
  3. 3. ¿Por qué esta presentación? 1ª edic. Dic-2008
  4. 4. Software libre con 12 años 1-sep-97: sin versión, sólo para GNU/Linux, ● creada por Gordon “Fyodor” Lyon Feb-04: v3.50 denegada a SCO Caldera por no ● adhesión a la GPL. Le obliga a rehacer la ISO. Dic-06: v4.21ALPHA1 NSE ● Ago-08: v4.68 presentada en la Blackhat ● Defcon Mar-09: v4.85BETA7 Conficker ●
  5. 5. Software libre con 12 años Nuevas contribuciones: ● Funcionalidades, algoritmos, huellas ● Google SoC: 2005, 2006, 2007, 2008 ●
  6. 6. Software libre con 12 años Películas: ● The Matrix Reloaded (may-03),... ● Otras: 13 Game of death, The listening, ... ●
  7. 7. Usos Descubrimiento Resolución inversa de equipos online de nombres Resolución de nombres: ●Servidores DNS preestablecidos (resolv.conf) Información de estado ●Otros servidores DNS de puertos tcp/udp, etc. ●S.O. (hosts,nsswitch.conf) Trazado de rutas Reconoc. de versiones servicios de red y S.O. ncat, ndiff Detección de agujeros de seg. y malware En otros software's Nessus, metasploit,...
  8. 8. Cuestiones éticas y legales No hay una respuesta sencilla ● En general no problemático, pero a veces sí ● (políticas, dañar equipos)
  9. 9. Cuestiones éticas y legales Consejos: ● Focalizar el objetivo: nº IPs y puertos, timing ● Respetar las políticas establecidas, si existen ● Avisar de antemano ● O... stealthiness ●
  10. 10. Versión actual: 4.85BETA7 Licencia GPL v2 ● Corre en GNU/linux, *BSD, Windows, Mac OS ● X,... 1760 huellas de S.O. ● 4805 huellas de servicios tcp/udp ● 55 scripts NSE y 26 librerías LUA ● Ejecutables: ncat, ndiff, nmap, zenmap ● Otros ficheros: 140 protocolos, 2124 servicios ● tcp/udp, 8406 fabricantes de MACs, Servicios RPC
  11. 11. Instalación debian 5.0 lenny: 4.62-1 ubuntu 9.04 jaunty: 4.76 tar.bz2 (v4.85BETA7: 6.2 Mb) ./configure && make && sudo make install (abierto a lectura desde dic-06)
  12. 12. Descubrimiento equipos online Técnicas: ● (ping [-b] xxx.yyy.zzz[.255]) ● Ping ICMP echo request, timestamp, ● netmask TCP SYN, mejor contra FW stateful ● TCP ACK, mejor contra FW stateless ● Ping UDP (por defecto a udp/31338) ● Otros protocolos IP: ICMP, IGMP, IP-in-IP ● ARP scan. Más rápido en LANs ●
  13. 13. Descubrimiento equipos online Por defecto: ● Superusuario: ICMP y ACK a tcp/80 ● No superusuario: SYN a tcp/80 a través del ● stack TCP/IP del S.O. (connect syscall). Más lenta. Si se está en red local: ARP ● A veces por defecto no se descubre ● Interesante nombres resueltos ● Entidad versus Proveedor servicio ●
  14. 14. Escaneo de puertos Según RFCs e implement. stacks protocolos. Ej tcp: closed open SYN SYN RST SYN/ACK RST filtered SYN SYN/ACK ACK SYN Datos SYN RST SYN
  15. 15. Escaneo de puertos nmap define 6 estados open closed filtered (*) closed|filtered open|filtered unfiltered UDP, IP, FIN, ACK Idle NULL, Xmas (*)No depende sólo del puerto, también del tipo de prueba
  16. 16. Escaneo de puertos Detección Motor Motores Sin nmap versión del ultra_scan propios servicio Varios TCP,UDP (ver tabla) TCP idle netstat en ● ● ● ●TCP con flags ad-hoc ●FTP bounce cada equipo ●TCP idle ●nc -z ●IP protocol TCP TCP NULL, TCP TCP TCP SYN, UDP FIN, ACK Window Maimon Connect Xmas TCP SYN/ACK O UDP O ICMP error (tipo 3, cód. 3) F C F F F F ICMP 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|F TCP RST non-zero window field C C U O C TCP RST zero window field C C U C C
  17. 17. Escaneo de puertos TCP Connect: no requiere privilegios, pero ● menos eficiente que SYN (gestión por S.O. y no nmap) UDP: más lento que TCP. A veces funciona ● enviando contenido adecuado TCP ACK: apto para diferenciar firewall ● statefull/stateless
  18. 18. Escaneo de puertos Menos eficientes y más dependientes de S.O.: ● TCP FIN, NULL, Xmas: aptos para algunos ● firewall stateless y filtros de paquetes TCP Window: apto para diferenciar firewall ● statefull/stateless.
  19. 19. Escaneo de puertos Fichero nmap-services: ● servicio, protocolo, puerto, frecuencia de estado abierto. F=/usr/share/nmap/nmap-services grep -v ^# $F | sort -t. -k 2 -r -n | grep tcp Ej. Puertos tcp más populares: ● 80, 23, 443, 21, 22, 25,...
  20. 20. Escaneo de puertos 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 … ...
  21. 21. Fingerprinting de servicios Resultado: servicio, aplicación y versión ● Soporta SSL (mediante OpenSSL) y IPv6 ● Caso de servicio SunRPC: se lanza un ataque ● por fuerza bruta para encontrar programa, nombre y versión.
  22. 22. Fingerprinting de servicios Técnica: Gramática de pruebas extensible: ● Probe: Nombre de la prueba y bytes a enviar ● ports, sslports: puertos para los que enviar ● un probe match, softmatch: patrón a comparar y ● servicio/versión asociada Otras: Exclude, totalwaitms, rarity, fallback ● Fichero nmap-service-probes ●
  23. 23. Fingerprinting de S.O. Resultado: ● Tipo de dispositivo ● Detalles: versión, fabricante, MAC, hostname ● Uptime estimado ● Distancia de red ● Predicción de secuencia TCP e IP ●
  24. 24. Fingerprinting de S.O. grep ^Class nmap-os-db | cut -f 4 -d | | sort -u general purpose telecom-misc web server PBX load balancer VoIP adapter proxy server VoIP gateway print server VoIP phone remote management phone terminal server PDA router game console switch media device bridge power-device broadband router storage-misc WAP specialized encryption accelerator printer firewall terminal security-misc webcam
  25. 25. Fingerprinting de S.O. Técnica: ● Interpretación de respuestas a 13 pruebas ● (ECN, IE, OPS, SEQ, T1,..., T7, U1, WIN) mediante envío de 2 paq. ICMP, 13 paq. TCP, 1 paq. UDP a puertos abiertos / cerrados. Ej. ttl por defecto: ● /proc/sys/net/ipv4/ip_default_ttl Fichero nmap-os-db ●
  26. 26. Fingerprinting de S.O. Otras técnicas no empleadas: ● Fingerprinting pasivo: nmap es activo ● Exploits de versiones específicas ● Tiempos de retransmisión de paquetes: lento ● Fragmentación IP: algunos fw ● (de)fragmentan Qué puertos están abiertos: poco fiable ●
  27. 27. Parámetros de calidad Fiabilidad: ● Cantidad de información ● No falsos positivos/negativos ● Velocidad: Tiempo / Cantidad de info ● Rendimiento en contextos no favorables (ej. ● firewalls) Ocultación o discreción (stealthiness) ● Recursos (RAM, ancho de banda) ●
  28. 28. Fiabilidad ¡No siempre acierta! ● Escanear más puertos ● Escanear de forma más agresiva ● Escanear desde otra ubicación ●
  29. 29. Velocidad Paquetes y tiempos (1) ● Nº pruebas / segundo (min/máx). ● Paralelismo: ● Nº hosts (mín/máx) en paralelo – – Nº pruebas simultáneas entre todos los hosts (mín/máx). – Múltiples instancias de nmap no siempre aconsejable
  30. 30. Velocidad Paquetes y tiempos (2) ● Timeouts: estimables ej. con hping2 ● RTT (mín/máx): tiempo de espera a una – prueba – Por host: tiempo máximo para descartarlo Máximo nº de reintentos para retransmitir un ● paquete Retardo para envío de paquetes a un host ●
  31. 31. Velocidad No solicitar servicios innecesarios: ● Para ver los equipos online no es necesaria ● la fase de escaneo de puertos Resolución de nombres ● Detección de versiones de S.O. y servicios ● Trazado de rutas ● Qué puertos escanear: los N más típicos (por ● defecto 1000), el objetivo,... Intensidad de pruebas de detección de versión ●
  32. 32. Velocidad Escanear desde puntos con velocidad rápida al ● objetivo: Desde la red local o detrás del firewall ● Desde puntos adecuados ej. en conexiones ● internacionales Hacer nmaps por fases: 1) detección rápida de ● hosts online, 2) escaneo de puertos,... Tiempo estimado a priori/durante ●
  33. 33. Ocultación Características de paquetes: tamaño no nulo (--data- ● length), TTL, fragmentación, MTU, opciones de paquetes IP, checksum TCP/UDP inválido, enrutamiento en origen Envío de paquetes intermedios con otras IPs origen ● (“señuelos”) Spoofing de MAC, IP, puerto origen ● Proxies abiertos ● Orden aleatorio de hosts y puertos destinos ● Nº de hosts, nº de puertos y frecuencia de envío ● Técnica o tipo de probe ●
  34. 34. Firewalls / IDs / IPs Firewalls stateless/statefull, con/sin NAT ● IDSs: detección, ej. alarma ● IPSs: prevención, ej. bloqueo ● Honeypots / Honeynets ●
  35. 35. Denfensas contra nmap Cerrar puertos ● drop vs reject ● IDSs/ Seguimiento de logs (scanlogd,...) ● Servicios en puertos no típicos ● Port knocking ● Honeypots / honeynets ● OS Spoofing ● Retardos en respuestas (“tar pitting”) ● Bloqueo de puertos ●
  36. 36. Formatos de salida Fichero: ● Normal ● XML ● Grepable ● “Hack3r” ● Se puede continuar uno ya comenzado ●
  37. 37. NSE Nmap Scripting Engine ● Por qué: ● Detección más sofisticada de S.O. y ● servicios, ej. skype v2 Deteccion de vulnerabilidades y malware ● Scripts clasificados en categorías ●
  38. 38. NSE NSE = intérprete LUA + biblioteca NSE ● LUA: ● Razones: diseñado para ser embebido de ● forma eficiente, lic. MIT, paralelizable. Lenguaje interpretado. ● Utilizado en wireshark/tshark, snort, ● OpenWRT, VLC, lighttpd, juegos,...
  39. 39. NSE Librería NSE: conexión Nmap y LUA: ● Paso de parámetros ● API de red (connect I/O, raw packet I/O) ● Ejecución de scripts en paralelo (thread ● mutexes) Gestión de Excepciones ● Registro de estado ●
  40. 40. NSE Ejemplo: showSMTPVersion.nse ● --- Queries the version of an SMTP server. --@output -- 25/tcp open smtpn -- |_ SMTP version: 220 mail.foo.com mx-2.bar.com ESMTP Exim 4.64n id = quot;SMTP versionquot; description = quot;Simple script which queries and prints the version of an SMTP server.quot; author = quot;Diman Todorov <diman.todorov@gmail.com>quot; license = quot;Same as Nmap--See http://nmap.org/book/man-legal.htmlquot; categories = {quot;demoquot;} require quot;commquot; require quot;shortportquot; portrule = shortport.port_or_service(25, quot;smtpquot;) action = function(host, port) local status, result = comm.get_banner(host, port, {lines=1}) if not status then return end return (string.gsub(result, quot;nquot;, quot;quot;)) end
  41. 41. NSE Conficker ● nmap -PN -d -p445 --script=smb-check-vulns --script-args=safe=1 RangoIPs Host script results: | smb-check-vulns: | MS08-067: FIXED | Conficker: Likely INFECTED |_ regsvc DoS: VULNERABLE
  42. 42. zenmap GUI GTK. Otras Qt: knmap, nmapsi4 ● Qué aporta: ● Ayuda en introducción de opciones ● Usabilidad en presentación de resultados, ● especialmente representación de topología
  43. 43. zenmap
  44. 44. Otras herramientas Libres / Privativas. Gratis / Comerciales. ● Ej. en Ubuntu jaunty 9.04: ● arp-scan, doscan, ike-scan, knocker, nast, nessus, netdiscover, nwatch, openvas*, p0f, paketto, php-net-portscan, pnscan, python- scapy, scanssh, sslscan, irpas, nikto, xprobe Otras, ej. unicornscan ●
  45. 45. Agur eta Ondo eskaneatu! Eskerrik asko: Gordon “Fyodor” Lyon & team, blindsec ● Licencia de uso de este documento: CC 3.0 by-sa ● () / _ ( | ( ( .( ) _____ ` ` ) ( ___ /_ (_` + . x ( . / ____-----------/ (o) _ - .- + ; (O ____ ) _____________ ` / (__ +- .( -'.- <. - _ VVVVVVV VV V / (_____ ._._: <_ - <- _ (--_AAAAAAA__A_/ | . /./.+- . .- / +-- - . ______________//_ _______ (__ ' /x / x _/ ( ___' / ,x/(' ./. / | / / / _/ / + / / ' (__/ / NMAP IS A POWERFUL TOOL -- USE CAREFULLY AND RESPONSIBLY

×