jueves, 30 de enero de 2014

Fuerza bruta sin diccionarios en Linux

Una de las practicas mas conocidas en el mundo del pentest es la brute force o fuerza bruta en español,no soy muy fan de esta practica ya que el tiempo que requiere es mucho,dependiendo de la longitud de la contraseña que queramos forzar,pero aun así lo podemos hacer con estilo,por ejemplo hay algoritmos que comienzan desde un carácter hasta los que queramos haciendo esto ascendentemente,por ejemplo:

1
2
3
4
5
6
7
...
12
...
1a
1b
1c
1d
...
9d
9f
..
ddddea
ddddeb
...etc

Esto seria muy poco usual comenzar desde un carácter,lo mas común es desde 4,pero bueno a lo que me refiero es que podemos ahorrarnos tiempo haciendo uso de la ingeniería social,por ejemplo la contraseña es una banda de música(ya que muchos usan contraseñas de cosas que les gustan),por ejemplo Metallica,pero también supongamos que tiene números,por ejemplo esta seria una contraseña:

metallica123

Si investigamos un poco sabemos que esa banda de música podría ser una posible contraseña,ahora si investigamos el sitio que pide las contraseñas podemos saber las reglas,por ejemplo Apple pide una letra mayúscula por lo menos y un numero,así que podría ser así:

Metallica3

Bien,si quisiéramos brutear eso como mencione arriba perderíamos horas en llegar a ese numero de caracteres y que comience con M,ahora como disminuimos el tiempo?

Fácil podemos usar una solución que le asignemos los caracteres que queremos usar y el numero de ellos,por ejemplo seria así:

La M

la e

la t

la a

la l

la i

la c

y los números del 0 al 4

Esto aun así es muy tardado ya que son 10 caracteres (mil millones),pero reduciremos el tiempo bastante,ya que no perderemos el tiempo en contraseñas como:

abcw

Bien como se hace esto en linux?

Existen varios programas,pero ami el lo particular me gusta crunch,ya que es literal y facil lo que acabo de mencionar :D

Primero lo instalamos:

Para ello lo descargamos:

Enlace

Ahora instalamos lo necesario para compilar,en ubuntu:

Abrimos una terminal:

Escribimos

sudo apt-get install build-essential

Ahora descomprimimos el tar donde viene crunch:

tar xvfz crunch-*.tgz 

Entramos al directorio:

cd crunch-*

Creamos el ejecutable:

make

Lo movemos a /usr/bin:

sudo cp crunch /usr/bin/

Eso es todo con respecto a la instalación,ahora vamos a usarlo en el ejemplo anterior:

Asi se usa:

crunch min max caracteres

Por ejemplo

crunch 10 10 Metalic01234




Y esto nos muestra en la pantalla (stdout) las palabras,ese no es el mejor ejemplo porque como vemos nos genera 634 gb de puras contraseñas(lo cual es poco ya que hasta tiene una linea que marca los Petabytes),lo cual serian hasta meses de crackeo en una Pc con pocos recursos,pero veamos un ejemplo de como crear un diccionario a base de esto,no tiene mucho sentido ya que la entrada se trata de no usar diccionarios,pero podemos crear uno a base de esto:

Creamos una contraseña de 2 a 4 caracteres con los mas sencillos caracteres:

Usamos estándares de Unix y tuberias:

crunch 2 4 1234a >> diccionario

Ahora por ejemplo lo queremos usar en hexadecimal:

hexdump <<< cat diccionario



Como vemos podemos usar muy bien los estándares de unix,ahora en un pipe seria así:

cat diccionario | hexdump



Si tuviéramos una opción de parámetros seria así:

cat diccionario | script -opcion -

Pero como esta entrada se trata sin diccionario,seria así directamente:

crunch 2 4 1234a | hexdump

O así:

crunch 2 4 1234a | script -opcion -

Siempre y cuando pueda manejar pipes el programa con el que estamos usando crunch.

Si no es asi y por ejemplo usamos paso por parámetro,como en el programa que hicimos para usar sha con java.

Primero metemos las palabras en un archivo:

crunch 1 3 123a >> dic


Luego recorrermos el archivo con un bucle y usamos la iteracion como paso por parámetro al programa en java:

while read i; do java Ejemplo $i; done < dic




Como vemos es muy tardado esto y eso que esta entra muestra como reducir el tiempo usando alguna practica

Eso es todo :D


No hay comentarios.:

Publicar un comentario

Los comentarios serán revisados antes de ser publicados.