Brooklyn 99 - TryHackMe

xhetic

xhetic

@xhetic

TryHackMeLinuxEasy
Brooklyn 99 - TryHackMe

📚 Esta publicación pertenece a la colección:

Brooklyn 99 - TryHackMe Walkthrough

Bienvenido a mi writeup de la máquina Brooklyn 99 de TryHackMe. Una room muy educativa donde la estenografía juega un papel importante en la cadena de ataque.

Room: Brooklyn 99
Dificultad: Easy
OS: Linux
Objetivo: Capturar la flag de usuario y la flag de root

🎯 Información del Objetivo

IP Target: 10.114.174.114

🔍 Fase 1: Reconocimiento (RECON)

Comprobación de Conectividad

Empiezo verificando que la máquina está activa:

ping -c1 10.114.174.114
  • -c1 → Envía solo 1 paquete ICMP y para
▶ output
64 bytes from 10.114.174.114: icmp_seq=1 ttl=62 time=42.4 ms

Recibo respuesta. El TTL es 62, lo que indica que posiblemente estamos ante una máquina Linux (TTL nativo 64, decrementado por el salto de red).

💡 Referencia rápida de TTL:

  • TTL ≈ 64 → Linux/Unix
  • TTL ≈ 128 → Windows

Escaneo de Puertos

Hago un primer escaneo rápido para descubrir los puertos abiertos:

nmap -p- --open -sS --min-rate 5000 -n -Pn 10.114.174.114
  • -p- → Escanea todos los 65535 puertos
  • --open → Muestra solo puertos abiertos
  • -sS → SYN scan (half-open)
  • --min-rate 5000 → Mínimo 5000 paquetes por segundo
  • -n → Sin resolución DNS
  • -Pn → Sin ping previo
▶ output
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
80/tcp open  http

Tengo tres puertos abiertos: FTP (21), SSH (22) e HTTP (80).

Con los puertos identificados, lanzo un escaneo de versiones:

nmap -p21,22,80 -sCV 10.114.174.114
  • -sC → Scripts NSE por defecto
  • -sV → Detección de versiones de los servicios
▶ output
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3
80/tcp open  http    Apache httpd 2.4.29

Sabiendo los servicios y versiones, comienzo a enumerar.

📁 Fase 2: Enumeración

Enumeración FTP Anónimo

El nmap detecta que FTP permite conexión anónima. Accedo con credenciales Anonymous:

ftp 10.114.174.114

Conectar a FTP como usuario anónimo (user: anonymous, pass: vacío)

Dentro del servidor FTP encuentro un archivo denominado note_to_jake.txt. Lo descargo:

get note_to_jake.txt

Contenido de la nota:

From Amy,
Jake please change your password. It is too weak and holt will be mad if someone hacks into the nine nine

Interesante. Amy advierte a Jake de que su contraseña es muy débil. Anotamos este detalle para más adelante.

Además, ya tengo enumerado dos posibles usuarios.

Enumeración Web

Accedo a http://10.114.174.114:

Página web de Brooklyn 99

La página tiene un mensaje de bienvenida y una imagen de fondo. Veo que el creador está orgulloso de su imagen de fondo responsive.

Reviso el código fuente HTML y encuentro un comentario interesante:

<!-- Have you ever heard of steganography? -->

Un comentario sugiriendo estenografía. Esto no es casualidad.

Extracción de Estenografía

Descargo la imagen de fondo para investigarla:

wget http://10.114.174.114/brooklyn99.jpg

Primero intento herramientas convencionales como exiftool y strings, pero no encuentro nada útil.

Ahora pruebo con steghide para extraer archivos ocultos:

steghide extract -sf brooklyn99.jpg

Intento extraer contenido sin contraseña

Sin contraseña no funciona. Voy a usar stegseek con wordlist:

stegseek brooklyn99.jpg /usr/share/wordlists/rockyou.txt

Ataque de diccionario contra archivo estenografiado

Estenografía extraída con éxito

Excelente. La herramienta encuentra algo usando la contraseña: admin

Se extrae un archivo note.txt. Su contenido es:

Holts Password:
fluffydog12@ninenine

Enjoy!!

Perfecto. Tengo las credenciales del usuario Holt: holt:fluffydog12@ninenine

🚀 Fase 3: Explotación

Uso de credenciales obtenidas

Dado que tenemos credenciales para usuario Holt, intento usar las credeniales para entrar por SSH.

Credenciales inválidas. Pruebo misma contraseña para usuario Amy o Jake pero nada.

Quizás esta contraseña no me es util ahora mismo, pero sí mas adelante.

Ataque de Fuerza Bruta SSH contra Jake

Recordando la nota de Amy sobre la contraseña débil de Jake, intento un ataque de fuerza bruta con hydra:

hydra -l jake -P /usr/share/wordlists/rockyou.txt 10.114.174.114 ssh

Ataque de diccionario contra SSH para usuario jake

De forma casi instantánea encuentro las credenciales:

▶ output
[22][ssh] host: 10.114.174.114   login: jake   password: 987654321

Credenciales obtenidas: jake:987654321

Acceso SSH

Me conecto por SSH como usuario Jake:

ssh jake@10.114.174.114

Acceso obtenido como usuario jake. Enumero el directorio pero no encuentro nada interesante.

Cambio a Usuario Holt

Intento cambiar a usuario Holt con las credenciales encontradas en la imagen:

su holt

Ingreso la contraseña fluffydog12@ninenine y accedo correctamente como usuario holt.

🚩 Flag de Usuario

Busco el archivo de la flag de usuario:

cat /home/holt/user.txt

🚩 Flag de usuario capturada!

⬆️ Fase 4: Escalada de Privilegios

Enumero los permisos de sudo para el usuario Holt:

sudo -l
▶ output
User holt may run the following commands on brooklyn_nine_nine:
  (ALL) NOPASSWD: /bin/nano

Excelente. Holt puede ejecutar nano como root sin proporcionar contraseña.

Escalada con Nano

Consulto GTFOBins para obtener el método de escalada con nano. El procedimiento es:

  1. Ejecutar nano como root:
sudo /bin/nano
  1. Dentro de nano, presionar Ctrl+R para abrir lectura de archivos
  2. Presionar Ctrl+X para ejecutar comandos
  3. Escribir /bin/bash para obtener shell

Ejecuto los pasos y obtengo una terminal como usuario root.

🚩 Flag de Root

Busco la flag de root:

cat /root/root.txt

🚩 Flag de root capturada!

📊 Resumen

Cadena de Ataque

Nmap → FTP Anónimo + Nota de Amy → Estenografía en imagen → Credenciales Holt → Fuerza Bruta SSH Jake → SSH como Jake → Su Holt → Sudo Nano Exploit → Root

Puntos clave:

  • El FTP anónimo proporcionó una pista sobre la debilidad de contraseña de Jake
  • La estenografía fue la clave para obtener credenciales de Holt
  • La contraseña débil de Jake fue vulnerable a diccionario
  • Nano con permisos NOPASSWD permitió escalada directa a root

Herramientas Utilizadas

  • nmap — Reconocimiento de puertos y servicios
  • ftp — Enumeración de FTP anónimo
  • wget — Descarga de imagen web
  • stegseek — Extracción de estenografía con diccionario
  • hydra — Ataque de fuerza bruta SSH
  • ssh — Acceso remoto
  • nano — Escalada de privilegios con GTFOBins

🛡️ Vulnerabilidades y Mitigaciones

VulnerabilidadSeveridadMitigación
FTP anónimo permitidoMEDIADesactivar acceso anónimo a FTP, o permitir solo acceso autenticado
Información Leak en FTP públicoALTANo almacenar notas o secretos en el frontend
Estenografía en imagen HTMLMEDIANo embeber credenciales en archivos cliente-side (imágenes, JS, etc.)
Contraseña débil de usuario JakeALTAImplementar política de contraseñas fuertes; usar autenticación multi-factor
Credenciales en imagen estenografiadaALTANunca almacenar credenciales en archivos, usar gestores de secretos
Permisos Sudo NOPASSWD para nanoCRÍTICARestringir permisos sudo; evitar NOPASSWD en comandos interactivos

⚠️ La escalada fue posible por un control de permisos sudo mal configurado. Usar GTFOBins para identificar vectores de escalada me ha ayudado mucho.

📚 Referencias


🔗 Si quieres seguir aprendiendo y mejorando tus habilidades, explora mis writeups paso a paso en Shadows y mis apuntes y guías técnicas en Shards.

Happy Hacking! 🎩🔐

Sigueme en TryHackMe :

Writeup realizado con fines educativos. Recuerda solo realizar pentesting en entornos autorizados.