08 marzo 2011

Ataques de fuerza bruta online con Nmap

Hace aproximadamente un año los creadores de nmap lanzaban ncrack, un programa para hacer fuerza bruta online a varios servicios. Hoy todavía se encuentra en versión Alpha 0.3.

En la última versión de Nmap, anunciada en nmap-hackers hace poco más de un mes, han incluido en la instalación por defecto un puñado de scripts para su motor NSE (Nmap Scripting Engine) que nos permiten hacer fuerza bruta a un buen número de servicios. En la documentación de NSE podéis encontrar todos los scripts, los *-brute son los de bruteforcing.

Hay que remarcar que, en este caso, cuando decimos ataques por fuerza bruta estamos refiriéndonos a ataques mediante diccionario, los más utilizados cuando se trata de fuerza bruta de credenciales online.

Por el momento se encuentran protocolos muy comunes, junto con otros más inusuales. Por otro lado se echa en falta, por ejemplo, SSH.

Los protocolos incluidos a día de hoy son:

afp-brute
domcon-brute
drda-brute
ftp-brute
http-brute
http-form-brute
informix-brute
iscsi-brute
ldap-brute
ms-sql-brute
mysql-brute
netbus-brute
oracle-brute
oracle-sid-brute
pgsql-brute
pop3-brute
smb-brute
snmp-brute
svn-brute
telnet-brute
vnc-brute

El uso de los scripts es especialmente amigable. Solamente con indicarle a nmap el script que queremos utilizar, intentará realizar el ataque cuando encuentre el o los servicios activos en un escaneo.

nmap --script vnc-brute 127.0.0.1

Para afinar un poco más, si solo queremos realizar el ataque y sabemos de antemano el puerto y el servicio sería conveniente indicarlo.

nmap -p 5900 --script vnc-brute 127.0.0.1

Por supuesto, podemos hacer escaneos a rangos de IPs y nmap lanzará el script solo a los hosts que coincidan con el protocolo.

nmap --script mysql-brute 192.168.1.1-255

Respecto a los diccionarios que se utilizan, nmap incluye los suyos propios (tanto de usuarios como de contraseñas) a través de su librería unpwdb. Podemos cambiar cualquiera de los dos mediante los parámetros userdb y passdb.

nmap --script ftp-brute --script-args userdb=/tmp/users 127.0.0.1
nmap --script ftp-brute --script-args userdb=/tmp/users,passdb=/tmp/passwds 127.0.0.1

Ejemplo de uso contra un host que tiene VNC escuchando:

alberto@asdfqwerty:~$ nmap --script vnc-brute localhost

Starting Nmap 5.51 ( http://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00056s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 995 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
631/tcp  open  ipp
3306/tcp open  mysql
5900/tcp open  vnc
| vnc-brute:
|   Accounts
|     1234 => Login correct
|   Statistics
|_    Perfomed 609 guesses in 369 seconds, average tps: 1

Nmap done: 1 IP address (1 host up) scanned in 374.46 seconds

8 comments :

Madrikeka dijo...

alaaaaa....no sabía yo que con nmap se podían hacer estas cosas!!

Estoy emocionada!! ando probando la versión para windows, que no tengo ningún linux a mano!!

Es un poco cacao en modo gráfico..por que tiene mogollon de opciones pero está gracioso!! (también estoy probano con el modo consola!)

a ver si consigo hacerlo funcionar!!

Muchas gracias!!

Becario dijo...

Pues yo me he montado un PoC en casa y
$ nmap --script http-brute -p 80 192.168.0.1

Starting Nmap 5.51 ( http://nmap.org ) at 2011-03-08 11:22 CET
Nmap scan report for 192.168.0.1
Host is up (0.0038s latency).
PORT STATE SERVICE
80/tcp open http
| http-brute:
|_ ERROR: No path was specified (see http-brute.path)

No se a qué se debe el error este :(

Beatriz dijo...

@Becario, he estado echando un vistazo. No sé si lo que has montado requiere de autenticación "básica" (emergente, no de formulario). En http://seclists.org/nmap-dev/2010/q3/346 se indica este dato: "http-brute - performs password guessing against basic authentication".

He estado probando y a mi sí me funciona cuando le especificas el parámetro del path donde se requiere la autenticación (--script-args http-brute.path=).

Beatriz dijo...

Por cierto, ojo, que yo he tenido que indicar el path porque la petición de autenticación no estaba en raiz sino en otro directorio.

Sursum Corda dijo...

En cuanto llegue a casa lo pruebo!!!...

Gracias, como decía en otro comentario, aqui cada día se aprende más...

richard estallman dijo...

Dale un vistazo a /usr/local/share/nmap/scripts, tienes 179 a tu disposición... y están los referentes a ssh...

# nmap --script ssh-hostkey host -p 22

Para usarlos sólo quita la extensión (.nse)

car dijo...

Hola que tal, quería haceros una pregunta ¿Que herramienta me podríais aconsejar para poder buscar vulnerabilidades en un sistema?. Por supuesto se que están las super conocidas... Metasploit y Nessus, sin embargo me gustaría saber de alguna mas las cuales su proyecto estén activos y que no sean tan complejas como lo son las antes mencionadas, saludos.

richard estallman dijo...

Dale un vistazo a /usr/local/share/nmap/scripts, tienes 179 a tu disposición... y están los referentes a ssh...

# nmap --script ssh-hostkey host -p 22

Para usarlos sólo quita la extensión (.nse)