
Laboratorio de Blue Team enfocado en analizar logs de acceso web de Apache para detectar fuerza bruta de directorios y actividad de escaneo web.
Laboratorio del Equipo Azul enfocado en analizar registros del servidor HTTP Apache para detectar actividad de escaneo web, enumeración de directorios e intentos de path traversal.
Instalar y exponer un servidor web Apache en un entorno de laboratorio aislado, simular escaneo web automatizado utilizando herramientas estándar de la industria, y analizar los registros generados desde la perspectiva del Equipo Azul — identificando patrones de ataque, firmas de herramientas e indicadores de actividad de reconocimiento malicioso.
| Componente | Detalles |
|---|---|
| VM atacante | Kali Linux |
| VM objetivo | Debian 13 |
| Red | Red NAT (VirtualBox) |
| IP atacante | 10.0.2.5 |
| IP objetivo | 10.0.2.15 |
| Servidor web | Apache 2.4.67 |
| Fuentes de registro | /var/log/apache2/access.log, /var/log/apache2/error.log |
| Puerto HTTP | 80 |
Se confirmó que el servidor HTTP Apache estaba activo y en ejecución en la máquina objetivo.```bash sudo systemctl status apache2 --no-pager
Resultado: `active (running)` since Wed 2026-05-06 21:09:17. Apache 2.4.67 (Debian), Main PID 3164, 55 tasks active.
---
### 2. Identificación de la IP del objetivo
Se identificó la dirección IP de la máquina Debian objetivo.```bash
ip a
IP objetivo: 10.0.2.15/24 — interfaz enp0s3
Se verificó la conectividad de red entre la máquina atacante Kali y el objetivo Debian.```bash ping -c 4 10.0.2.15
**Resultado:** 4 paquetes transmitidos, 4 recibidos, 0% de pérdida. RTT min/avg/max: 0.495/1.288/2.139ms.
---
### 4. Prueba de Apache desde el navegador
Se accedió al servidor Apache desde el navegador de Kali para confirmar la disponibilidad del servicio HTTP.```
http://10.0.2.15
Resultado: Página predeterminada de Apache2 Debian cargada exitosamente — confirmando que el servidor web era accesible y respondía a solicitudes HTTP.
Se crearon directorios y páginas de prueba en el servidor objetivo para simular una estructura de aplicación web realista.```bash sudo mkdir -p /var/www/html/admin sudo mkdir -p /var/www/html/backup sudo mkdir -p /var/www/html/login echo "
Directorios creados: `/admin`, `/backup`, `/login`
---
### 6. Escaneo Nikto
Se ejecutó Nikto contra el servidor web objetivo para simular un escaneo automatizado de vulnerabilidades.```bash
nikto -h http://10.0.2.15
Nikto v2.5.0 — Hora de inicio: 2026-05-06 20:16:56 — Hora de finalización: 20:17:13 (17 segundos)
Hallazgos reportados por Nikto:
X-Frame-Options — protección contra clickjacking ausenteX-Content-Type-Options — protección contra MIME sniffing ausente/admin/, /backup/, /login//admin/index.html — Página de inicio de sesión de administración accesibleEjecutó Dirb para realizar fuerza bruta de directorios contra el servidor web objetivo.```bash dirb http://10.0.2.15
**DIRB v2.22 — Inicio: Wed May 6 20:19:50 2026 — Fin: 20:19:59 2026 (9 segundos)**
Wordlist utilizada: `/usr/share/dirb/wordlists/common.txt` — 4612 palabras probadas
Directorios y archivos encontrados:
| URL | Código | Tamaño |
| --------------------------------- | ------ | ------ |
| http://10.0.2.15/index.html | 200 | 10703 |
| http://10.0.2.15/server-status | 403 | 314 |
| http://10.0.2.15/admin/ | 200 | — |
| http://10.0.2.15/admin/index.html | 200 | 21 |
| http://10.0.2.15/backup/ | 200 | — |
| http://10.0.2.15/login/ | 200 | — |
| http://10.0.2.15/login/index.html | 200 | 20 |
**Advertencia:** el listado del directorio `/backup/` está habilitado — no hay archivo de índice presente, el contenido del directorio es directamente navegable.
**Total descargado:** 13836 bytes — **Encontrados:** 4 recursos
---
### 8. Análisis del Registro de Acceso
Se inspeccionaron las entradas del registro de acceso en bruto para identificar el patrón de ataque.```bash
sudo cat /var/log/apache2/access.log
Ejemplos de entradas de la fase de escaneo Nikto (21:18:32):``` 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10.0.2.15.tar.bz2 HTTP/1.1" 404 527 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10_0_2_15.gz HTTP/1.1" 404 527 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10.0.2.15.sql HTTP/1.1" 404 527 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10.0.2.15.zip HTTP/1.1" 404 527
Entradas de muestra de la fase de escaneo de Dirb (21:21:34):```
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/xsql HTTP/1.1" 404 472
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/xxx HTTP/1.1" 404 472
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/zimbra HTTP/1.1" 404 472
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/zoom HTTP/1.1" 404 472
Patrón observado: Cientos de solicitudes secuenciales dentro del mismo segundo, todas apuntando a rutas inexistentes — consistente con comportamiento de escaneo automatizado.
Se filtraron todas las entradas del registro de acceso que se originaban desde la IP del atacante.```bash sudo grep "10.0.2.5" /var/log/apache2/access.log | head -30
Patrones adicionales observados:
- Nikto intentó acceder a archivos de respaldo usando la IP del servidor como nombre de archivo (p. ej., `10.0.2.15.tar.bz2`, `10.0.2.15.sql`, `10.0.2.15.zip`)
- Dirb iteró a través de listas de palabras ordenadas alfabéticamente apuntando a cada directorio descubierto
- Ambas herramientas generaron solicitudes a velocidad de máquina — múltiples entradas por segundo desde el mismo rango de puertos de origen
---
### 10. Distribución de Códigos de Estado HTTP
Contó las solicitudes por código de respuesta HTTP para cuantificar la superficie de ataque.```bash
sudo grep " 200 " /var/log/apache2/access.log | wc -l
sudo grep " 403 " /var/log/apache2/access.log | wc -l
sudo grep " 404 " /var/log/apache2/access.log | wc -l
| HTTP Code | Significado | Count |
|---|---|---|
| 200 | OK — recurso encontrado y servido | 177 |
| 403 | Prohibido — el recurso existe pero acceso denegado | 26 |
| 404 | No encontrado — el recurso no existe | 21740 |
Total de errores 404: 21,740 — la abrumadora mayoría de las solicitudes apuntaban a rutas que no existen, lo cual es la característica definitoria del forzado bruto automatizado de directorios.
Se contaron todas las entradas del registro de acceso que se originan del atacante.```bash sudo grep "10.0.2.5" /var/log/apache2/access.log | wc -l
**Solicitudes totales desde 10.0.2.5: 21,962**
---
### 12. Identificación de firmas de herramientas