Mostrando entradas con la etiqueta nmap. Mostrar todas las entradas
Mostrando entradas con la etiqueta nmap. Mostrar todas las entradas

domingo, 20 de marzo de 2011

Mezclando nmap con metasploit


Coincidiendo con la idea, indicada en Bruteforceando con metasploit y en bruteforceando, de que es mejor tener pocas herramientas que hagan muchas cosas, que no un catálogo enorme y heterogéneo de soluciones que vengan de las fuentes más diversas, leo en Nmap? In my Metasploit? It's more likely than you'd think! que Metasploit puede usar el motor NSE de Nmap dentro de sus propios módulos, y aprovechar la sinergia entre ambos proyectos para conseguir algo mejor.

Aún cuando ya usaba los resultados del análisis de puertos hecho por nmap como mapa (es un decir) para el lanzamiento de exploits, ahora dispondrá de funciones específicas para invocar a un script nse dentro de un módulo de metasploit. El módulo de Metasploit se encargará de cuantas tareas sean necesarias para construir los argumentos con los que invocar al script, y de procesar después los resultados del mismo.

De momento, si descargamos el código fuente de su repositorio svn (tengo la revisión r12033), podemos ver un ejemplo de código hecho en ./msf3/modules/auxiliary/scanner/oracle/oracle_login.rb, que utiliza el script nse de ataques por diccionario contra bases de datos Oracle realizado por Patrik
Karlsson. Para ello se sirve del módulo Msf::Auxiliary::Nmap. Con unas pocas funciones del módulo tenemos la invocación al script nse hecha, en líneas generales viene a ser así:
  1. limpiar el almacén de parámetros pasados a nmap, mediante la función nmap_reset_args
  2. pasar sus parámetros al script nse, mediante la función nmap_append_arg
  3. lanzar nmap: función nmap_run
  4. procesar la salida xml de nmap: función nmap_hosts. Como argumento, esta función debe recibir un puntero a una función nuestra, que se encargará de procesar cada máquina detectada por nmap (en el ejemplo, es la función process_host).
Analizando únicamente el ejemplo, parece una forma sencilla de reutilizar el trabajo hecho en nmap en nuestra solución de explotación favorita, pero quizás no la más eficiente: si queremos usar dos o más módulos de metasploit que llamen a nmap, tendremos que lanzar dos escaneos, (con lo que pueden llegar a tardar). En cualquier caso, es muy de agradecer que esté ahí.

Si te gustó esta entrada, quizás quieras suscribirte al blog por RSS, seguirlo en Twitter, o

sábado, 26 de febrero de 2011

bruteforceando


"Bruteforceando" es una bonita palabra que he escuchado muchas veces, para hablar de ataques por fuerza bruta, es decir, el método que consiste en probar todas las combinaciones posibles de aquello que queramos crackear, para ver con qué combinación acertamos. Lo usaremos normalmente para obtener el usuario y password con el que entrar a un sistema. Pues de esto va esta entrada: de una herramienta de toda la vida que ahora tiene esta posibilidad, Nmap.

En la versión 5.50, anunciada hace un mes más o menos, se incluye una buena cantidad de scripts para hacer este tipo de ataques contra sistemas y protocolos variados (ssh, http, oracle, ms-sql, mysql, svn, vnc, apple filing protocol y muchos otros). NOTA: Siendo estrictos, realmente lo que hacen son ataques por diccionario, y no un ataque por fuerza bruta, pero bueno, la categoría establecida para este tipo de scripts se llama "brute"...

Se puede obtener el listado completo de scripts que implementan esta funcionalidad con el comando nmap --script-help "*-brute" :

Listado de scripts de la categoría "brute"

Y podemos ver que efectivamente funcionan (prueba de ataque por diccionario contra un servidor telnet en mi red):

Un ataque sencillo parece que funciona

Para hacer esto dispone de dos bibliotecas sencillas (brute y unpwdb), que nos permiten hacernos nuestros propios scripts para bruteforcear sin tener ni idea de programación en Lua (el lenguaje con que están implementados los scripts de nmap). La documentación de ambas bibliotecas explican de forma sencilla cómo hacer un script que las utilice. Y si no se entiende, pues basta con echar un vistazo a cualquier script que las utilice, por ejemplo http-brute o http-form-brute. Por no necesitar, ni tenemos que buscar un diccionario de passwords, ya que dispone de un diccionario con los 5000 usuarios y passwords más utilizados, actualizado recientemente por cortesía (es un decir) de Gawker.com.

Si te gustó esta entrada, quizás quieras suscribirte al blog por RSS, o seguirlo en Twitter