Ataques contra credenciales de usuario
En esta sección vamos a ver como se pueden realizar ataques contra cuentas de usuario y contraseña para intentar obtener unas credenciales válidas que o bien nos faciliten el acceso a un sistema remoto o bien que nos proporcionen acceso a una cuenta con más privilegios en el sistema o servicio que estemos auditando.
Metodología
Se recomienda seguir usando cherrytree para ir guardando las evidencias.
- Breve introducción informal a los ataques contra credenciales de usuario
- Tipos de ataques
- Diccionarios
- Credenciales por defecto
- Ataques contra servicios online de forma activa
- Ataque de diccionario contra SSH usando patator
- Ataque de diccionario contra SSH usando hydra
- Ataque de diccionario contra FTP usando patator
- Ataque de diccionario contra FTP usando hydra
- Ataque de diccionario contra formularios web usando Burp Suite
- Almacenamiento de credenciales
- Breve introducción informal al almacenamiento de credenciales en sistemas GNU/Linux
- Obteniendo las credenciales en sistemas GNU/Linux (/etc/shadow)
- Breve introducción informal al almacenamiento de credenciales en sistemas Windows
- Breve introducción al framework Empire
- Tomando el control de una máquina con Empire
- Obteniendo los hashes de las contraseñas con el módulo credentials/powerdump de Empire
- Obteniendo las credenciales en sistemas windows usando Empire
- Obteniendo las contraseñas de memoria con mimikatz desde Empire
- Ataques offline - Cracking de contraseñas
- Identificar el algoritmo de hash usado para almacenar la contraseña
- hash-identifier
- hashid
- Cracking de contraseñas con John The Ripper
- Cracking de contraseñas con Hashcat
- Identificar el algoritmo de hash usado para almacenar la contraseña
Referencias usadas
- Páginas web
Breve introducción informal a los ataques contra credenciales de usuario
Como las credenciales de usuario nos permiten acceder a un sistema, suelen ser un objetivo potencial para todas aquellas personas que deseen tener acceso, autorizado o no, al sistema. Por eso es importante que las credenciales de acceso y, específicamente, las contraseñas sean robustas. Es decir que, entre otros requisitos, cumplan:
- Que combinen letras mayúsculas y minúsculas, números y símbolos como por ejemplo: .,:@/|-_+*
- Tener una longitud mínima de 24 caracteres unicode
- Tener una política de cambio de contraseña cada cierto tiempo
- Asegurarse que no se utiliza una contraseña que ya haya sido utilizada anteriormente
- Que sea una secuencia lo más aleatoria posible
- Si no se utilizase una secuencia aleatoria -lo más recomendable-, pueden seguirse estrategias como utilizar la segunda letra de cada palabra de una frase intercalando números, letras mayúsculas, minúsculas y símbolos.
Tipos de ataques
Existen distintos tipos de ataques que podemos realizar para conseguir las credenciales de un usuario. En muchas ocasiones, el usuario lo hemos conseguido en la fase de recopilación de información y sólo nos queda conseguir la contraseña. El temario especifíca 4 tipos de ataques que podemos realizar:
- Ataques que no requieren conocimientos técnicos
- Ingeniería social
- Ataques a servicios online de forma activa
- Ataques de diccionario
- Ataques por fuerza bruta
- Ataques a servicios online de forma pasiva
- Realizando capturas de tráfico de red
- Ataques offline
- Cracking de contraseñas
Diccionarios
Si recordamos del tema de recopilación de información, en Kali Linux, por defecto, los diccionarios se guardan en la siguiente ruta:
Uno de los más conocidos es rockyou.txt. Primero tenemos que descomprimirlo usando el comando gzip:
gzip -d rockyou.txt.gz
para poder usarlo:
Aparte de los que vienen incluidos en Kali, podemos encontrar otros en internet como los que proporciona SecList:
Credenciales por defecto
Muchas empresas dejan configuradas credenciales por defecto en sus productos. Existen páginas que guardan estas credenciales por defecto como, por ejemplo, CIRT:
Este tipo de páginas pueden ser muy útiles cuando se realiza un ataque de diccionario.
Ataques contra servicios online de forma activa
En los ataques contra servicios que esten online vamos a ir probando credenciales hasta que demos con una que sea válida. Normalmente intentaremos conseguir algún usuario en la fase de recopilación de información y después intentar adivinar la contraseña usando un diccionario o por fuerza bruta. Aunque no se recomienda, si no encontrasemos un usuario válido, también podríamos realizar un ataque de diccionario o fuerza bruta para averiguar el usuario. Como vemos los modos de atacar son:
- Fuerza bruta
- Diccionario
El ataque por fuerza bruta prueba todas las permutaciones posibles de los símbolos que le indiquemos hasta que de con el usuario o contraseña. Es un método muy lento a no ser que la contraseña sea muy corta. En un ataque de diccionario creamos una lista (diccionario) de palabras que creemos que pueden ser la contraseña. Existen muchos servicios online contra los que podemos lanzar un ataque. Algunos de ellos son:
- SSH
- FTP
- Aplicaciones Web
Ataque de diccionario contra SSH usando patator
Tras descubrir un servicio SSH en la fase de recopilación de información:
Vamos a ver como realizar un ataque de diccionario con el programa patator. Este programa ya le utilizamos para lanzar ataques de diccionario con el fin de enumerar los usuarios a través de SMTP. Para saber el módulo de patator que debemos utilizar, escribimos patator para listar los módulos y ver cuál es el módulo para ssh:
y una vez localizado el módulo, para saber como usarlo, escribimos patator seguido del nombre del módulo. En ese caso patator ssh_login:
Vemos que para poder lanzar el ataque debemos indicarle:
- host => máquina a la que queremos atacar
- user => el usuario para el que vamos a intentar adivinar la contraseña
- password => para indicarle el listado (diccionario) de posibles contraseñas
Creamos una lista (diccionario) de posibles contraseñas usando cualquier editor de texto. En este caso usamos el editor vim:
para crear la lista:
y lanzamos patator usando el usuario msfadmin que descubrimos en la fase de recopilación de información. Sabiendo que la máquina metasploitable 2 esta en la dirección (192.168.119.8), el commando es:
patator ssh_login host=192.168.119.8 user=msfadmin password=FILE0 0=contraseñas_a_comprobar.txt
Vemos que patator va comprobando todas las contraseñas y nos informa de la que funciona. En este caso msfadmin. Como hicimos al enumerar a través del protocolo SMTP, podemos ignorar las contraseñas no válidas usar la opción -x ignore:. En este caso usariamos -x ignore:mesg='Authentication failed.'. El comando completo es:
patator ssh_login host=192.168.119.8 user=msfadmin password=FILE0 0=contraseñas_a_comprobar.txt -x ignore:mesg='Authentication failed.'
y como vemos sólo nos mostraría la contraseña válida. Podemos comprobar que la contraseña es válida conectandonos por ssh a la máquina usando el usuario msfadmin:
y la contraseña msfadmin:
Una vez conectados podemos ejecutar algún comando como whoami:
Ataque de diccionario contra SSH usando hydra
Vamos a ver como realizar el mismo ataque usando el programa hydra. Para saber cómo utilizarlo, hacemos lo mismo que hicimos con el programa patator. Tecleamos hydra y pulsamos intro para que nos muestre algún ejemplo:
vemos que algunas de las opciones interesantes son:
- -l {username} para pasarle el usuario
- -L {ficheroConUsuariosAProbar} para pasarle un diccionario (fichero) con los usuarios que queramos comprobar
- -p {contraseña} para pasarle el usuario
- -P {ficheroConContraseñasAProbar} para pasarle un diccionario (fichero) con las contraseñas que queramos comprobar
- -s {NúmeroDePuerto} para indicarle el puerto en el que esta el servicio contra el que queremos lanzar el ataque
En este caso, realizaremos un ataque de diccionario contra el servicio ssh. Usaremos el usuario msfadmin y le pasaremos un fichero con las posibles contraseñas:
hydra -l msfadmin -P contraseñas_a_comprobar.txt ssh://192.168.119.8
Vemos que nos muestra el usuario y contraseña correcta.
Ataque de diccionario contra FTP usando patator
Patator puede usarse para lanzar ataques de diccionario contra multiples servicios. En la fase de recopilación de información también encontramos 2 servidores FTP:
Vamos a realizar un ataque de diccionario contra el servicio FTP en el puerto 21. En este caso vamos a usar 2 diccionarios:
- uno para los usuarios
- otro para las contraseñas
El diccionario (fichero) de contraseñas ya lo tenemos creado. Creamos uno de usuarios usando cualquier editor de texto:
y añadimos los usuarios que queramos comprobar:
Una vez creados el diccionario, para saber el módulo de patator que debemos utilizar, escribimos patator para listar los módulos y ver cuál es el módulo para ftp:
y una vez localizado el módulo, para saber como usarlo, escribimos patator seguido del nombre del módulo. En ese caso patator ftp_login:
Vemos que el modo de uso es, prácticamente, igual al del módulo de ssh. Para poder lanzar el ataque debemos indicarle:
- host => máquina a la que queremos atacar
- user => para indicarle el listado (diccionario) de posibles usuarios
- password => para indicarle el listado (diccionario) de posibles contraseñas
El comando es:
patator ftp_login host=192.168.119.8 user=FILE0 password=FILE1 0=users.txt 1=contraseñas_a_comprobar.txt
Vemos como patator va comprobando cada una de las contraseñas para cada usuario y vemos que, el usuario msfadmin y la contraseña msfadmin son credenciales válidas para acceder al servidor FTP. Como en ejemplo anteriores, para filtrar los resultados de patator podemos usar la opción -x ignore. Por ejemplo, le podemos decir que ignore los códigos 530 ya que son intentos de login fallidos:
patator ftp_login host=192.168.119.8 user=FILE0 password=FILE1 0=users.txt 1=contraseñas_a_comprobar.txt -x ignore:code=530
Una vez obtenidas las credenciales podemos comprobar que tenemos acceso al servicio. Para ello, por ejemplo, podemos usar el programa telnet:
Le indicamos nuestro usuario con el comando USER:
A continuación le indicamos la contraseña con el comando PASS:
y ya estamos dentro:
Ataque de diccionario contra FTP usando hydra
También podemos realizar el mismo ataque usando hydra. En este caso, también le pasamos a hydra el fichero de usuarios (users.txt) y fichero de contraseñas (contraseñas_a_comprobar.txt):
hydra -L users.txt -P contraseñas_a_comprobar.txt ftp://192.168.119.8
En el resultado vemos que nos vuelve a encontrar al usuario msfadmin y la contraseña msfadmin.
Ataque de diccionario contra formularios web usando Burp Suite
Tras descubrir un servidor web en la fase de recopilación de información:
Accedemos a el servicio usando un navegador web como Firefox y hacemos click sobre DVWA:
Nos logamos en la aplicación con las siguientes credenciales:
- Username: admin
- Password: password
A continuación hacemos click en el botón DVWA Security de la barra lateral izquierda:
Seleccionamos Low en el desplegable:
y pulsamos el botón Submit:
Ahora hacemos click en el botón Brute Force en la barra lateral izquierda:
Para ver el formulario sobre el que haremos el ataque de diccionario:
Una vez en la página del formulario, vamos a seguir los mismos pasos que en el capítulo de recopilación de información para activar Burp Suite, para ello, desplegamos el menú de opciones en Firefox y seleccionamos Preferences:
A continuación pulsamos el botón Settings... dentro de la pestaña Network de la sección Advanced:
Cumplimentamos las opciones como se ve en la siguiente imagen y pulsamos el botón OK:
Después ejecutamos burp:
Pulsamos el botón Next para continuar:
Finalmente pulsamos el botón Start Burp para iniciar Burp Suite:
Cuando se inicie burp, pulsamos en la pestaña Proxy y después en la pestaña Options. En las opciones activamos "Incercept responses based on the following rules" para que que el proxy de burp intercepte las respuestas http del servidor antes de mostrarlas en el navegador:
Después hacemos click en la pestaña Intercept y nos aseguramos que el botón tiene el texto:
Intercept is on
Volvemos a Firefox. Metemos el usuario y contraseña que queramos en formulario y pulsamos el botón Login:
Volvemos a burp y veremos que la petición http que ha hecho el navegador ha sido capturada. Pulsamos el botón Forward para continuar:
Volvemos a hacer click en el botón Forward:
para que la respuesta del servidor llegue a nuestro navegador:
Vemos que las credenciales no existen -a no ser que hayamos tenido mucha suerte- y nos aparece el mensaje de login failed. Vamos a usar burp intruder para lanzar un ataque de diccionario contra el usuario y la contraseña. Para ello, seleccionamos la petición HTTP que nos ha dado la respuesta del servidor en la pestaña HTTP history y hacemos click con el botón derecho del ratón para desplegar el menú de opciones. Seleccionamos la opción Send to Intruder:
Hacemos click en la Pestaña Intruder y después en la pestaña Positions:
Seleccionamos Cluster bomb en el menú desplegable Attack Type:
Pulsamos el botón Clear:
para desmarcar todos los valores de los parámetros marcados en naranja:
Ahora seleccionaremos los valores de los parámetros sobre los que queremos hacer fuerza bruta. Hacemos doble click sobre el valor del parámetro username y pulsamos el botón Add:
A continuación, hacemos doble click en el parámetro password y colvemos a pulsar el botón Add:
Una vez añadidos los parámetros, pulsamos el botón Payloads:
Dejamos las opciones que vienen por defecto en la sección Payload Sets:
- Payload set: 1
- Payload type: Simple list
y en la sección Payload Options [Simple list] vamos añadiendo usuarios a la lista. Escribimos un usuario y hacemos click en el botón Add:
Hacemos lo mismo por cada usuario que queramos añadir. Por ejemplo, añadimos otro usuario que se llame admin:
Una vez especificados los usuarios que queremos probar, seleccionamos el número 2 en el menú desplegable Payload type: para indicar las contraseñas que queremos probar para cada usuario que hemos definido en el punto anterior:
En este caso, en vez ir añadiendo las contraseñas que queremos probar una a una, utilizaremos un fichero (diccionario) con las contraseñas a probar. Para ello, seleccionamos Runtime file del menú desplegable Payload type:
Ahora pulsaremos el botón Select File... para seleccionar el fichero (diccionario) donde tenemos la lista de contraseñas:
Seleccionamos el fichero y pulsamos el botón Open:
Una vez seleccionado el fichero, pulsamos sobre la pestaña Options:
y en la sección Grep - Extract activamos la opción Extract the following from responses: y pulsamos el botón Add:
Seleccionamos el texto de error que muestra cuando las credenciales son incorrectas y pulsamos el botón OK:
Ya podemos lanzar el ataque de diccionario contra el usuario y la contraseña pulsando el botón Start Attack:
Si tenemos la versión gratuita de burp nos aparecerá el siguiente mensaje. Pulsamos el botón OK:
y vemos como va probando todas las contraseñas para cada uno de los usuarios y, en la única donde no hay mensaje de error, es la que nos indica el usuario y contraseña correcto:
Almacenamiento de credenciales
En esta sección vamos a coger las credenciales para poder en la siguiente sección crackearlas. A no ser qué tengamos mucha suerte y podamos obtener las contraseñas por medios públicos o mediante ingeniería social, en la mayoría de las ocasiones, podremos obtener las contraseñas de todos los usuarios de un sistema cuando hayamos accedido al sistema y hayamos escalado privilegios. En esta sección se supone que ya hemos accedido al sistema y tenemos el máximo privilegio. Vamos a ver cómo obtener las contraseñas en sistemas GNU/Linux y en sistemas Windows.
Breve introducción informal al almacenamiento de credenciales en sistemas GNU/Linux
Aunque en algún sistema GNU/Linux antiguo, las contraseñas se guardasen en texto plano en el fichero passwd que podemos encontrar en la ruta: /etc/passwd. En los sistemas GNU/Linux actuales, los usuarios se guardan en ese fichero passwd (/etc/passwd) y los hashes de las contraseñas se guardan en un fichero que se llama shadow que podemos encontrar en la siguiente ruta: /etc/shadow. Para leer el fichero shadow (/etc/shadow) se necesitan permisos de superusuario.
Obteniendo las credenciales en sistemas GNU/Linux (/etc/shadow)
Como no podemos copiarnos directamente el fichero /etc/shadow, vamos a realizar una copia de ese fichero y después nos lo descargaremos. Primero lo descargaremos de la máquina metasploitable 2 que es una distribución de GNU/Linux antigua y después los descargaremos de la máquina virtual de ubuntu server 16.04.3 LTS. Ya que tenemos las claves de acceso para la máquina metasploitable, nos conectamos por ssh:
Una vez dentro, copiamos el contenido a un fichero para poder descargarnoslo desde Kali Linux. Para ello ejecutamos el comando sudo para lanzar el comando cat con privilegios de superusuario y poder leer el fichero /etc/shadow. El contenido del fichero lo guardamos en un fichero de texto:
sudo cat /etc/shadow > contraseñas_metasploitable2
Una vez creado el fichero, salimos de la sesión ssh usando el comando exit:
Ahora podremos descargar el fichero usando, por ejemplo, el programa scp. Para ello debemos indicarle como primer argumento la ruta donde está el fichero que queremos descargar. En este caso queremos el fichero contraseñas_metasploitable2 que está en la carpeta home del usuario msfadmin. Como segundo argumento debemos indicar dónde queremos copiarlo. En este caso la carpeta actual. Por lo que ejecutaríamos el comando de la siguiente forma:
scp [email protected]:~/contraseñas_metasploitable2 .
Comprobamos que se ha descargado correctamente, leyendo las primeras 13 líneas del archivo:
Una vez descargado el fichero, podemos borrarlo de metasploitable:
Para descargar los hashes de la máquina virtual de ubuntu server, creamos un fichero con el contenido del fichero /etc/shadow:
Copiamos ese fichero a la máquina metasploitable 2 usando scp (secure copy):
Finalmente, descargamos el fichero en Kali Linux:
y, como en el caso anterior, una vez descargado el fichero, lo borramos de metasploitable:
Breve introducción informal al almacenamiento de credenciales en sistemas Windows
Pendiente de desarrollar Las constraseñas en windows se almacenan en el fichero (base de datos) SAM.
Breve introducción al framework Empire
Empire es un framework, que usa python y powershell, que nos va a ser útil tras haber ganado acceso a un sistema. Algunas partes importantes del framework son:
- listeners Nos van a permitir poner un servicio a la escucha en un puerto determinado para que otro equipo (víctima) se conecte a él. Por ejemplo, en un sistema windows que hayamos comprometido ejecutamos un comando en powershell (launcher/stager) para que se conecte al listener que hemos dejado a la escucha.
- stagers Son un conjunto de macros, librerias dinámicas y scripts que podemos utilizar para establecer conexión con el equipo comprometido. Por ejemplo, un script de powershell que conecte la máquina en la que se ejecute a un listener
- agents Son las máquinas comprometidas de las que tenemos el control
- modules Son todos los comandos y scripts que se pueden ejecutar en la máquina comprometida. Por ejemplo hay scripts que realizan capturas de pantalla o que pueden encender una cámara web.
- scripts Son los scripts que podemos crear nosotros para expandir el framework
El primer paso es instalarlo en Kali Linux. Para ello accedemos al repositorio del framework Empire en github. Pulsamos sobre el botón verde con letras blancas Clone or download y copiamos la url:
Clonamos el repositorio:
Accedemos a la carpeta Empire:
Después accedemos a la carpeta setup:
y lo instalamos ejecutando el fichero install.sh:
La instalación se pausará cuando llegue a la frase en amarillo. Pulsamo intro para continuar:
Una vez instalado, volvemos un directorio atrás:
Ejecutamos empire:
Tras iniciarse, veremos el promtp de Empire:
Para ver la lista de comandos que podemos ejecutar, podemos usar el comando help:
Tomando el control de una máquina con Empire
Lo primero que vamos a hacer es crear un listener para crear un servicio que este a la escucha para que la máquina que comprometamos se pueda conectar a ese servicio. Para ello, ejecutamos el comando listeners. Veremos que el prompt cambia y entramos en las opciones para listeners:
Si quisieramos volver al menú anterior, podemos ejecutar el comando back en cualquier momento. Desde el prompt de listeners, ejecutamos tecleamos help y pulsamos intro para ver todos los comandos que podemos ejecutar relativos a los listeners:
Para crear un listener (servicio a la escucha), usamos el comando uselistener. Vamos a crear un servicio web a la escucha a través del protocolo http. Para ello, usamos el comando:
uselistener http
Vemos que el promtp cambia de nuevo. Para ver las opciones que podemos configurar del servicio que pondremos a la escucha, podemos ejecutar el comando info para que nos muestre la información:
Para cambiar las opciones, usaremos el comando set. Por ejemplo, cambiamos de nombre al listener usando:
set Name credencialesWindows
Si volvemos a ejecutar info veremos que el nombre ha cambiado:
Una vez que hemos configurado las opciones que queramos, lo ejecutamos con el comando execute. En este caso, salvo el nombre del servicio, hemos dejado todo por defecto:
Podemos ver que el listener esta a la escucha ejecutando el comando listeners:
Una vez que tenemos el listener (servicio) a la escucha, tenemos que crear un launcher. Un launcher es un script que vamos a crear para ejecutarlo en la máquina que queremos que se conecte al servicio (listener) que tenemos a la escucha. Los launchers podemos crearlos en python o en powershell. En este caso, como vamos a usarlo en una máquina windows, usamos powershell. Para crear el launcher debemos usar el comando launcher seguido del lenguaje de scripting (python o powershell) y el nombre del servicio al que queremos que se conecte. En este caso:
launcher powershell credencialesWindows
Copiamos el script y, por ejemplo, en la máquina de windows 10 abrimos el interprete de comandos con permisos de administrador:
Aceptamos la advertencia:
Ejecutamos el comando de powershell:
y en Kali Linux veremos que se conecta a nuestro listener (servicio):
Pulsamos intro y ejecutamos el comando back para volver al menú principal:
para volver a la pantalla principal donde podremos ver que tenemos un agent activo:
Si recordáis de la introducción un agent es una máquina que esta bajo control. El script de powershell ejecutado en la máquina windows 10, está en memoria, lo que lo hace mucho más difícil de detectar que si hubiese creado algún fichero. Ahora que hemos tomado el control de la máquina (agent), vamos a ver cómo interactuar con ella y ejecutar comandos
Obteniendo los hashes de las contraseñas con el módulo credentials/powerdump de Empire
Ejecutamos el comando agents para ver los agentes (máquinas bajo nuestro control) que tenemos y poder acceder a interactuar con ellos. Vemos que aparte de mostrarnos la información, el prompt cambia:
El número de proceso (5724) de powershell es todo lo que el usuario verá si lista las tareas en el equipo. Podemos cambiar el nombre que asigna automáticamente al agente por otro que nos sea más fácil recordar usando el comando rename:
rename GEU9T3MP win10creds
Para interactuar con la máquina comprometida (agente), utilizamos el comando interact seguido del nombre del agente:
Para ver todos los comandos que podemos ejecutar en el agente, usamos el comando help:
Para extraer los hashes de las contraseñas vamos a usar el modulo de powershell credentials/powerdump. Si recordáis de la introducción, los modules son todos los comandos y scripts -en este caso vamos a usar uno de powershell- que podemos utilizar en el agente (máquina comprometida). Para usar un módulo, tecleamos el comando usemodule seguido del nombre del módulo que queramos usar. En este caso:
usemodule credentials/powerdump
Podemos ver la información del módulo usando el comando info. Entre las opciones hay una a la que debemos prestar atención que es OpsecSafe. Si el valor de esta opción es True, significa que el usuario no tendrá constancia que hemos ejecutado el comando:
Para ejecutar el módulo, teclamos execute y pulsamos intro. Vemos que nos muestra los hashes de todos los usuarios:
Estos hashes son los que en la siguiente sección crackearemos.
Obteniendo las contraseñas de memoria con mimikatz desde Empire
En vez hashes, lo que se suele intentar es extraer de memoria las contraseñas usando mimikatz desde Empire. En sistemas operativos anteriores a windows 10, en muchas ocasiones podremos extraer las contraseñas en texto plano, pero en windows 10, sólo obtendremos los hashes. ·Ejecutamos el comando back para salir del módulo en el que estamos:
Tecleamos el comando mimikatz para ejecutarlo:
Una vez hayamos terminado de interactuar con el agente (máquina comprometida), podemos ejecutar el comando back para volver al prompt de agents:
Cuando queramos liberar un agente (máquina comprometida), desde el prompt usaremos el comando remove seguido del nombre del agente a borrar:
Una vez borrado, veremos que si listamos los agentes con el comando list ha desaparecido:
Una vez liberados todos agents (máquinas comprometidas) conectados al servicio (listener) http que creamos, podemos también eliminar el listener (servicio). Para ello ejcutamos el comando back para ir al menú principal:
Desde el menú principal podemos acceder a los listeners:
Para eliminarlo, usaremos el comando kill seguido del nombre del listener (servicio):
Si ejecutamos el comando list, comprobaremos que se ha borrado:
Ataques offline - Cracking de contraseñas
Identificar el algoritmo de hash usado para almacenar la contraseña
Existen programas que nos pueden ayudar a identificar el tipo de hash que se está usando para almacenar una contraseña. Esto puede ser muy útil para cuando más adelante intentemos crackearla. Vamos a ver dos programas:
- hash-identifier
- hashid
Yo recomiendo usar hashid porque, en mi experiencia, los resultados han sido más fiables.
hash-identifier
El programa hash-identifier nos puede ayudar a saber qué algoritmo de hashing, probablemente, se esté usando. No es 100% fiable pero es bastante aproximado. Para utilizarlo, primero copiamos el hash. En este primer ejemplo copiamos el hash del usuario msfadmin de la máquina metasploitable (distribución antigua):
después tecleamos hash-identifier y pulsamos intro. Pegamos el hash y pulsamos intro para que nos indique el tipo de hash:
en este caso, al ser una distribución antigua de GNU/Linux, vemos que se está usando MD5 que muy inseguro. Si probamos con la máquina de ubuntu server, veremos que nos indica que se esta usando SHA256 cuando no es cierto porque usa SHA512 pero, aunque menos seguro, es aproximado:
hashid
Es otro programa que podemos utilizar para saber qué tipo de hash se está usando. El modo de uso es practicamente igual. Listamos los hashes, tecleamos hashid y pulsamos intro:
Ahora pegamos el hash del usuario msfadmin de la máquina metasploitable 2 y pulsamos intro para ver que es un MD5:
A continuación hacemos lo mismo para el usuario user de la máquina ubuntu server para ver que es SHA512:
Cracking de contraseñas con John The Ripper
Uno de los programas clásicos que podemos usar para crackear contraseñas es John the ripper. Ejecutamos el comando john para ver como utilizarlo:
Como vemos, el formato de uso es:
john {opciones} archivo_contraseñas
La forma más sencilla de usarlo es teclear john y pasarle como argumento el archivo de contraseñas:
Para ver las contraseñas una vez crackeadas, podemos pasarle a john la opción --show:
Para ver los formatos que john puede crackear podemos usar la opción --list con el valor formats:
Si sabemos el formato del hash, el crackeo será más eficiente. Podemos indicarle a john en qué formato están los hashes usando la opción --format:
No tenemos que esperar a qué john termine de crackear todas las contraseñas para ver los resultados. Podemos ver los que ya ha crackeado, leyendo el archivo john.pot que se encuentra en la ruta ~/.john/john.pot: