27 enero 2010

ncrack ALPHA, fuerza bruta multiprotocolo


Hasta ahora THC-Hydra o medusa eran las herramientas más comunes para hacer ataques de fuerza bruta contra protocolos comunes. Pero con la prematura llegada de  ncrack, de los mismos autores que nmap, parece que nuevas posibilidades se abren.

Su desarrollo ha sido intensivo, ya que nace en el  Google Summer Of Code del año pasado. Pese a que actualmente es versión 0.01ALPHA, no hemos querido dejar escapar la oportunidad para ver qué pinta tiene.

Por el momento solo soporta Telnet, FTP, SSH y HTTP, muy lejos aún otras opciones como las de medusa, aunque el dinamismo del grupo de Fyodor seguramente añada nuevas características pronto.

Las opciones son amplias y parecen algo complejas, aunque después de leer tranquilamente no tiene mayor dificultad:
Ncrack 0.01ALPHA ( http://ncrack.org )
Usage: ncrack [Options] {target specification}
TARGET SPECIFICATION:
Can pass hostnames, IP addresses, networks, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <inputfilename>: Input from list of hosts/networks
--exclude <host1[,host2][,host3],...>: Exclude hosts/networks
--excludefile <exclude_file>: Exclude list from file
SERVICE SPECIFICATION:
Can pass target specific services in <service>://target (standard) notation or
using -p which will be applied to all hosts in non-standard notation.
Service arguments can be specified to be host-specific, type of service-specific
(-m) or global (-g). Ex: ssh://10.0.0.10,at=10,cl=30 -m ssh:at=50 -g cd=3000
Ex2: ncrack -p ssh,ftp:3500,25 10.0.0.10 scanme.nmap.org google.com:80,ssl
-p <service-list>: services will be applied to all non-standard notation hosts
-m <service>:<options>: options will be applied to all services of this type
-g <options>: options will be applied to every service globally
Misc options:
ssl: enable SSL over this service
path <name>: used in modules like HTTP ('=' needs escaping if used)
TIMING AND PERFORMANCE:
Options which take <time> are in milliseconds, unless you append 's'
(seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
Service-specific options:
cl (min connection limit): minimum number of concurrent parallel connections
CL (max connection limit): maximum number of concurrent parallel connections
at (authentication tries): authentication attempts per connection
cd (connection delay): delay <time> between each connection initiation
cr (connection retries): caps number of service connection attempts
to (time-out): maximum cracking <time> for service, regardless of success so far
-T<0-5>: Set timing template (higher is faster)
--connection-limit <number>: threshold for total concurrent connections
AUTHENTICATION:
-U <filename>: username file
-P <filename>: password file
--passwords-first: Iterate password list for each username. Default is opposite.
OUTPUT:
-oN/-oX <file>: Output scan in normal and XML format, respectively, to the given filename.
-oA <basename>: Output in the two major formats at once
-v: Increase verbosity level (use twice or more for greater effect)
-d[level]: Set or increase debugging level (Up to 10 is meaningful)
--nsock-trace <level>: Set nsock trace level (Valid range: 0 - 10)
--log-errors: Log errors/warnings to the normal-format output file
--append-output: Append to rather than clobber specified output files
MISC:
-6: Enable IPv6 cracking
-sL or --list: only list hosts and services
--datadir <dirname>: Specify custom Ncrack data file location
-V: Print version number
-h: Print this help summary page.
Llama la atención que dentro del directorio de diccionarios (denominado lists) se encuentran los usuarios y contraseñas  más típicas de webs de las que se han filtrado, como el de myspace o phpbb.

Las opciones de tiempos aseguran que se pueda especificar la mejor configuración para cada caso particular.


También se observa que el parámetro para definir el alcance está orientado a host o rangos de IPs, como ocurre con Nmap. Esto facilitará el trabajo en auditorías y ataques masivos en Internet.

El siguiente ejemplo se muestra la salida (con un resultado positivo) de la aplicación contra un servidor SSH en el puerto 444 de la dirección 192.168.0.3:
[aramosf@sbd ncrack]$ ./ncrack  ssh://192.168.0.3:444 -U usuarios -P pass
Warning: File ./usuarios exists, but Ncrack is using usuarios for security and consistency reasons. Set NCRACKDIR=. to give priority to files in your local directory (may affect the other data files too).

Starting Ncrack 0.01ALPHA ( http://ncrack.org ) at 2010-01-26 02:50 CET
Discovered credentials for ssh on 192.168.0.3 444/tcp:
192.168.0.3 444/tcp ssh: root Gold3nC4too

Ncrack done: 1 service scanned in 30.05 seconds.

Ncrack finished.

12 comments :

svoboda dijo...

Puede estar interesante probarlo, aunque de momento, el funcionamiento de "Hydra" o "Medusa" es bastante bueno. Una razón para probarlo, quizás sea ver si se obtiene más rendimiento.

Lo único que echo en falta en ambas aplicaciones y que tampoco he leido en las opciones del "Ncrack", puede ser despiste mio en ambos casos, es no poder realizar ataques por fuerza bruta de modo incremental, no solo de diccionario sin emplear programas externos. Como digo, probablemente sea mi ignorancia, pero no he encontrado la opción o combinación de opciones adecuadas para hacer esto.

Seifreed dijo...

Hola

Buena herramienta, habrá que probarla

des dijo...

Muy buena opción para realizar estos ataques. Además, con lo extendido que está el uso de nmap entre el personal de IT dedicado a seguridad y administración de sistemas, tiene el éxito asegurado.

Jose Selvi dijo...

De todas maneras, un ataque de fuerza bruta incremental on-line... es un poco una locura, la latencia de la red lo haría desesperante. Si ya lo es a veces siendo off-line...

Saludos!

Anónimo dijo...

Estoi intentando compilar ncrack y cuando lanzo el make tanto como usuario normal como root se me produce el siguiente error
ncrack.cc:(.text+0x167): undefined reference to `ncrack_ssh(void*, Connection*)'

tengo debian squeeze 64, no he encontrado ninguna referencia al problema en google.

¿Os ha pasado?

Alejandro Ramos dijo...

@Anubys: nope, pero imagino que será que no tienes openssl-dev metido o algo por el estilo...

¿el ./configure no da errores?

Anónimo dijo...

Solucionado

Gracias Alejandro, el configure me daba un warning pero no me habia dado cuenta.

Ahora a trastear con la herramienta.

muchas gracias

Anónimo dijo...

Imagino que sí le irán añadiendo cosas, no se puede sacar un coche que es una carretilla cuandoo ya se fabrican ferraris!

Unknown dijo...

La contraseña que te saco estaba en la lista de contraseñas? Sino si que es rápido, tardó 30.5 segundos.

NaCl u2

Alejandro Ramos dijo...

@Rigolox, sisi, estaba en una lista, era una prueba con trampa!

Un saludo.

Román Ramírez dijo...

Yo nunca he entendido porque todo este tipo de herramientas no tienen un modelo con un proceso proveedor de contraseñas y usuarios con unix-socket, o la posibilidad de recibirlo mediante un pipe, stdin etc.

Es lo evidente para poder encadenarlo con un generador, con el incremental etc.

Son muy buenas ideas que puliéndolas un poco, pues eso, serían mejores :)

Alejandro Ramos dijo...

@Roman Ramirez: tienes razón, te invito a que te inscribas en la lista de nmap-dev y preguntes, es posible que ellos tengan la respuesta o acepten tu idea!

Un saludo