Key Findings
Durante el análisis de seguridad de la máquina Artificial se identificaron las
siguientes vulnerabilidades críticas:
- Aplicación web que permite la carga de modelos AI personalizados (formato .h5)
- Modelo malicioso de Keras con código Python embebido para ejecución remota
- Base de datos SQLite con credenciales de usuario hasheadas en MD5
- Servicio Backrest de respaldos ejecutándose en localhost:9898
- Escalada de privilegios mediante funcionalidad de restauración de backups
- Archivos de configuración expuestos con hashes bcrypt codificados en base64
Key Learning Objectives
Los objetivos de aprendizaje clave en esta máquina incluyen:
- ✅ Web Application Reconnaissance
- ✅ Docker Container Usage for AI Model Creation
- ✅ Keras/TensorFlow Model Poisoning Attack
- ✅ SQLite Database Analysis & Credential Extraction
- ✅ Password Hash Cracking (MD5 & bcrypt)
- ✅ SSH Local Port Forwarding Techniques
- ✅ Backrest Backup Service Exploitation
- ✅ File Restoration Privilege Escalation
Reconnaissance & Enumeration
El reconocimiento inicial se realizó utilizando Nmap para identificar puertos abiertos y
servicios en ejecución.
❯ sudo nmap -p- --open -n -Pn -vvv -oG ports
❯ sudo nmap -p 22,80,8000 -sCV -oN services 10.10.11.74
Resultados:
- Puerto 22/tcp: Servicio SSH
- Puerto 80/tcp: Servidor Apache HTTP
- Puerto 8000/tcp: Servicio web adicional
Web Application Assessment
Al acceder al servicio web se reveló una plataforma de alojamiento de modelos AI. El
fuzzing inicial de directorios no arrojó resultados significativos, por lo que procedimos con el registro de
usuario.
Después del registro y autenticación, descubrimos funcionalidad para cargar modelos AI
en formato .h5 (Keras/HDF5).
AI Model Upload Requirements Analysis
La aplicación proporcionó las especificaciones requirements.txt y Dockerfile para la creación de modelos AI. El análisis
reveló que los modelos deben estar en formato HDF5 (.h5) como se indica en la interfaz del dashboard.
Malicious Model Creation & Exploitation
Utilizando Docker para compatibilidad, construimos un entorno de contenedor para el
desarrollo del exploit. Se creó un script de Python para generar un modelo malicioso de Keras que ejecuta
una reverse shell al ser cargado.
❯ docker build -t artificial-exploit .
El contenedor fue ejecutado con un volumen compartido para acceder a nuestro script
malicioso de Python:
❯ docker run -it -v $(pwd):/app artificial-exploit
Ejecutamos nuestro script de exploit dentro del contenedor para generar el modelo
malicioso .h5:
Model Upload & Code Execution
El modelo malicioso generado fue cargado a la aplicación web:
Al hacer clic en "View Predictions", el modelo malicioso fue cargado, activando nuestro
payload de reverse shell y estableciendo acceso inicial:
System Enumeration & Data Discovery
La enumeración post-explotación reveló un archivo de backup Backrest en directorios
comunes del sistema. Sin embargo, el acceso estuvo inicialmente restringido debido a permisos insuficientes.
La enumeración adicional reveló un archivo de base de datos SQLite que era accesible:
Database Analysis & Credential Extraction
La enumeración de la base de datos reveló una tabla user que contenía información de nombre de usuario,
email y hash de contraseña para el usuario gael:
El hash de contraseña MD5 fue crackeado exitosamente usando crackstation.net, revelando
la contraseña: mattp005numbertwo
User Privilege Escalation
Con las credenciales obtenidas, escalamos al usuario gael y obtuvimos acceso al archivo de backup
previamente restringido. El backup fue copiado a /tmp para su análisis:
Configuration File Analysis & Additional Credentials
El backup extraído contenía un archivo de configuración JSON con credenciales del
servicio Backrest:
La contraseña estaba codificada en base64 y contenía un hash bcrypt:
El hash bcrypt fue crackeado exitosamente usando John the Ripper:
Service Discovery & Port Forwarding
La enumeración adicional reveló que el puerto 9898 se estaba ejecutando localmente. Se
estableció reenvío de puerto local SSH para acceder a este servicio interno:
❯ ssh gael@artificial.htb -L 9898:localhost:9898
Backrest Service Access
El servicio local fue identificado como Backrest versión 1.7.2, una herramienta de
gestión de backups. La autenticación fue exitosa usando las credenciales descubiertas anteriormente:
Backup Configuration & Exploitation
Repository Configuration
Se configuró un nuevo repositorio de backup haciendo clic en "Add Repo" y completando
los campos requeridos:
Los cronogramas de Prune Policy fueron deshabilitados para prevenir limpieza automática:
Backup Plan Creation
Se creó un plan de backup haciendo clic en "Add Plan" y configurando los parámetros
necesarios para respaldar el directorio root:
Root Flag Extraction
El plan de backup fue ejecutado haciendo clic en "Backup Now":
Usando el "Snapshot Browser", navegamos a root/root.txt y seleccionamos "Restore Path":
Finalmente, la flag de root fue descargada usando "Download File(s)":
Recommendations
Immediate Actions
1. AI Model Upload Security
- Implementar validación estricta de modelos y sandboxing
- Deshabilitar ejecución de código durante la carga de modelos
- Aplicar sanitización comprehensiva de entrada para archivos cargados
- Usar entornos contenedorizados para procesamiento de modelos
2. Database Security
- Asegurar archivos de base de datos SQLite con permisos de archivo apropiados
- Implementar encriptación de base de datos para datos sensibles
- Usar algoritmos de hashing de contraseñas más fuertes con salt
3. Service Hardening
- Restringir acceso al servicio Backrest solo a usuarios autorizados
- Actualizar Backrest a la última versión con parches de seguridad
- Implementar segmentación de red para servicios internos
- Deshabilitar capacidades de restauración de backup innecesarias para usuarios no administrativos
Long-term Security Improvements
1. Access Controls
- Implementar el principio de mínimo privilegio en todos los servicios
- Revisión regular de permisos de usuario y derechos de acceso a servicios
- Autenticación multifactor para servicios sensibles y funciones administrativas
2. Monitoring
- Desplegar monitoreo comprehensivo de integridad de archivos
- Implementar logging centralizado para cargas de modelos y operaciones de backup
- Monitorear patrones de acceso sospechosos a la base de datos y acceso no autorizado a archivos
3. Regular Security Assessments
- Realizar pruebas de penetración periódicas enfocadas en aplicaciones AI/ML
- Implementar prácticas de desarrollo seguro para flujos de trabajo de machine learning
- Procedimientos regulares de pruebas de backup y restauración con validación de seguridad