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:
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í:
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:
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:
Ahora instalamos lo necesario para compilar,en ubuntu:
Abrimos una terminal:
Escribimos
Ahora descomprimimos el tar donde viene crunch:
Entramos al directorio:
Creamos el ejecutable:
Lo movemos a /usr/bin:
Eso es todo con respecto a la instalación,ahora vamos a usarlo en el ejemplo anterior:
Asi se usa:
Por ejemplo
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:
Ahora por ejemplo lo queremos usar en hexadecimal:
Como vemos podemos usar muy bien los estándares de unix,ahora en un pipe seria así:
Si tuviéramos una opción de parámetros seria así:
Pero como esta entrada se trata sin diccionario,seria así directamente:
O así:
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:
Luego recorrermos el archivo con un bucle y usamos la iteracion como paso por parámetro al programa en java:
Como vemos es muy tardado esto y eso que esta entra muestra como reducir el tiempo usando alguna practica
Eso es todo :D
Leer más...
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 maxcaracteres
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