Recientemente ha sido publicada Nmap 6 tras tres años de trabajo. Una de las mejoras más importantes ha sido la incorporación de nuevas opciones para Web Scanning aumentando de 6 a 54 el número de scripts NSE para el análisis de servidores Web. Algunos de esos nuevos scripts son los siguientes:
- http-title: determina el título de la página por defecto de cualquier servidor web detectado durante el escaneo, información que puede ser muy valiosa. Veamos un ejemplo de funcionamiento (las pruebas las he realizado con owaspbwa):
nmap -sV --script=http-title 172.16.94.129 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu4 (protocol 2.0) 80/tcp open http Apache httpd 2.2.14 ((Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.5 with Suhosin-Patch mod_python/3.3.1 Python/2.6.5 mod_perl/2.0.4 Perl/v5.10.1) |_http-title: OWASP Broken Web Applications 139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) 143/tcp open imap Courier Imapd (released 2008) 445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) 5001/tcp open ovm-manager Oracle OVM Manager 8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1 |_http-title: Apache Tomcat/6.0.24 - Error report
- http-enum: te muestra los directorios utilizados por las aplicaciones y servidores Web más usados comprobando más de 2000 URI paths. Un ejemplo usando Zenmap también usando owaspbwa:
- http-grep: busca en un sitio Web las páginas o urls que se ajustan a un patrón determinado. Por ejemplo, podemos buscar las páginas en las que aparecen direcciones de correo:
nmap 172.16.94.129 --script http-grep --script-args='http-grep.match=" [A-Za-z0-9%.%%%+%-]+@[A-Za-z0-9%.%%%+%-]+%.%w%w%w?%w?"' PORT STATE SERVICE 22/tcp open ssh 80/tcp open http | http-grep: | (1) http://172.16.94.129/zapwave/ | + psiinon@gmail.com | (1) http://172.16.94.129/WackoPicko/ | + contact@wackopicko.com | (1) http://172.16.94.129/AppSensorDemo/login.jsp |_ + michael.coates@owasp.org ...
O buscar páginas en las que aparecen patrones más interesantes como ‘username’,’admin’ o ‘password’, buscar direcciones IP, números de teléfono, números de tarjetas de crédito, posibles nombres de usuarios o contraseñas, etc.
También podemos usarlo para búsqueda de cadenas para encontrar código malicioso en nuestras páginas como ‘src=’ o ’http://’ (asegurarnos de que todas sus instancias siempre referencien a archivos de tu sitio o sitios externos confiables), ‘unescape’ o ‘eval’ (funciones JavaScript que habitualmente se hallan en el código malicioso, por ejemplo “eval(function(p,a,c,k,e,r))” ) etc.
En definitiva podemos hacer que nos busque cualquier expresión regular o patrón que queramos que encuentre:
nmap 172.16.94.129 --script http-grep --script-args='http-grep.match=password' PORT STATE SERVICE 22/tcp open ssh 80/tcp open http | http-grep: | (46) http://172.16.94.129:80/ | + password | (4) http://172.16.94.129/jquery.min.js | + password | (2) http://172.16.94.129/AppSensorDemo/login.jsp | + password ...
En este ejemplo vemos que en la primera página que nos muestra la cadena ‘password’ aparece 46 veces (lo podemos comprobar mirando el código fuente de la página). Nos puede ser útil para encontrar usuarios/contraseñas fijadas en el código fuente de la página aunque concretamente esta cadena podría darnos muchos falsos positivos.
- http-email-harvest: busca en un sitio Web las direcciones de correo. Siguiendo con los ejemplos:
nmap --script=http-email-harvest 172.16.94.129 PORT STATE SERVICE 22/tcp open ssh 80/tcp open http | http-email-harvest: | Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=172.16.94.129 | contact@wackopicko.com | michael.coates@owasp.org |_ psiinon@gmail.com 139/tcp open netbios-ssn ...
Es importante destacar la incorporación de la librería httpspider que permite hacer crawling de manera recursiva en los sitios Web que se escanean. Por ejemplo los scripts anteriormente mencionados, http-email-harvest y http-grep la utilizan.
- http-chrono: script que mide el tiempo que tarda una sitio Web en ofrecernos una página y devuelve el tiempo máximo, mínimo y tiempo medio que tarda en recuperar una página. Páginas Web que tarden más tiempo en cargarse pueden ser objeto de ataques de DoS o DDoS debido al hecho de que son propensos a consumir más recursos en el servidor objetivo. Este script nos ayudaría a la identificación de esas páginas Web con algún tipo de problema de carga.
Veamos un ejemplo con nuestra owaspbw:
Los tiempos de respuesta inicialmente son los siguientes:
nmap -p80 --script http-chrono 172.16.94.129 PORT STATE SERVICE 80/tcp open http |_http-chrono: Request times for /; avg: 5.30ms; min: 2.87ms; max: 8.70ms
Ahora, utilizando la herramienta hping3 intentaré provocar un DoS a través de un SYN Flood Attack y monitorizaré con http-chrono los tiempos de respuesta del sitio Web.
Para lanzar el SYN Flood Attack:
hping3 -p 80 -S --flood 172.16.94.129
Observamos ahora que los tiempos de respuesta ofrecidos son considerablemente más elevados:
nmap -p80 --script http-chrono 172.16.94.129 PORT STATE SERVICE 80/tcp open http |_http-chrono: Request times for /; avg: 610.54ms; min: 8.79ms; max: 3016.61ms
Otros scripts interesantes (ya que detectan vulnerabilidades recientemente publicadas) añadidos son:
- http-vuln-cve2012-1823: detecta si nuestro sitio Web es vulnerable a la vulnerabilidad CVE-2012-183 (sobre PHP-CGI) y de la que ya hablamos en esta entrada y de cómo registrarla y filtrarla en esta otra.
- rdp-vuln-ms12-020: evalúa si un equipo es vulnerable a las vulnerabilidades de Escritorio remoto en Microsoft Windows (RDP) MS12-020. Un ejemplo de uso:
nmap -sV --script=rdp-ms12-020 -p 3389 <target>
Solo obtendremos respuesta a la salida del script cuando es vulnerable, en caso de que no lo sea no nos diría que no lo es.
Por último comentar que la nueva versión de Nmap nos proporciona un soporte completo para IPv6, podéis consultar las mejoras al respecto en este enlace.
Estas han sido algunas de las nuevas de las muchas funcionalidades que nos ha traido Nmap 6. Esperamos seguir probándolas y escribiendo sobre ello.
Muy interesante:
http://blog.spiderlabs.com/2012/06/using-nmap-to-screenshot-web-services.html
una gran mejora a esta gran herramienta, ahora se ha vuelto mucho mas interesante de lo que ha sido.
Si, la verdad es que ha incorporado muchas cosas nuevas e interesantes. Intentaremos seguir contando poco a poco todas estas novedades :)
Un saludo y gracias por comentar