Contenido
El Centro Faro estrena una pequeña web de avisos. El equipo de seguridad sospecha que se ha publicado un documento interno y que alguien ha cambiado la página de inicio.
Tu misión consiste en crear un pequeño laboratorio en Kali Linux, investigarlo, guardar pruebas y corregir los problemas encontrados. Todos los archivos y datos de esta práctica son ficticios.
Duración: dos sesiones de 60–75 minutos.
Modalidad: individual o en pareja.
Entrega: carpeta del proyecto comprimida en ZIP, con un README.md y las evidencias solicitadas.
Qué aprenderás
- Descubrir un servicio con Nmap.
- Examinar respuestas HTTP con
curl. - Observar tu propio tráfico con Wireshark.
- Comprobar cambios en archivos mediante SHA-256.
- Documentar un hallazgo y verificar su corrección.
Reglas del laboratorio
Todas las pruebas de red se realizan exclusivamente contra 127.0.0.1 en tu propio Kali. No sustituyas esta dirección por la IP de un compañero, de la red del centro o de una web pública.
Cuando se indique «terminal 2», abre otra pestaña o ventana. Mantén abierta la terminal del servidor hasta que se te indique detenerlo.
Fase 0. Preparar el laboratorio
Paso 1. Identifica tu sistema
cat /etc/os-release | head -n 5
whoami
pwd
Anota en tu README.md qué sistema utilizas y cuál es tu nombre de usuario.
Paso 2. Comprueba las herramientas
command -v python3
command -v nmap
command -v curl
command -v wireshark
command -v sha256sum
Si falta nmap, curl o wireshark, instala la herramienta que necesites. Por ejemplo:
sudo apt update
sudo apt install nmap curl wireshark
Si falta python3 o sha256sum, consulta con el profesor antes de continuar.
Paso 3. Crea las carpetas
mkdir -p ~/operacion-faro/{publico,evidencias,privado}
cd ~/operacion-faro
Importante: ejecuta los siguientes comandos desde ~/operacion-faro, salvo que se indique otra cosa.
Paso 4. Crea la página web pública
Copia el bloque completo, incluidas las dos líneas que contienen EOF:
cat > publico/index.html <<'EOF'
<!doctype html>
<html lang="es">
<meta charset="utf-8">
<title>Centro Faro</title>
<h1>Centro Faro</h1>
<p>Avisos públicos del centro.</p>
EOF
Paso 5. Crea un documento interno ficticio
Por error, este archivo quedará dentro de la carpeta publicada:
cat > publico/inventario_interno.txt <<'EOF'
CENTRO FARO - INVENTARIO FICTICIO
Equipo: faro-lab-01
Responsable: Equipo de pruebas
Sala: Laboratorio A
Nota: estos datos han sido inventados para esta práctica.
EOF
Comprueba los archivos:
ls -l publico
Evidencia 0: indica en el README.md para qué crees que sirven Nmap, curl, Wireshark y sha256sum.
Misión 1. Descubrir la puerta abierta
Paso 1. Arranca el servidor
En la terminal 1, dentro de ~/operacion-faro, ejecuta:
python3 -m http.server 8765 --bind 127.0.0.1 --directory publico
Deja abierta esa terminal. El servidor debe indicar que escucha en 127.0.0.1, puerto 8765.
Paso 2. Abre otra terminal
En la terminal 2, entra en el proyecto:
cd ~/operacion-faro
Comprueba que puedes leer la página:
curl http://127.0.0.1:8765/
Resultado esperado: aparece el HTML de «Centro Faro».
Paso 3. Examina los puertos
nmap -sT -p 8765,8766 127.0.0.1 | tee evidencias/puertos.txt
Resultado esperado: el puerto 8765 aparece como open. El 8766 normalmente aparecerá como closed; si está abierto, puede estar utilizándolo otro programa.
Responde en el README.md:
- ¿Qué significa que el puerto
8765esté abierto? - ¿Qué programa lo está utilizando?
- ¿Qué representa la dirección
127.0.0.1?
Evidencia 1: archivo evidencias/puertos.txt y una captura del resultado.
Misión 2. Encontrar un archivo publicado por error
Paso 1. Consulta las cabeceras HTTP
curl -I http://127.0.0.1:8765/
Localiza el código de estado y el campo Content-Type.
Paso 2. Solicita el documento interno
curl -i http://127.0.0.1:8765/inventario_interno.txt | tee evidencias/exposicion.txt
Resultado esperado: 200 OK y el contenido del inventario ficticio.
El código 200 indica que el servidor ha entregado el archivo. No significa que publicarlo haya sido una buena decisión.
Paso 3. Busca la causa
ls -l publico/inventario_interno.txt
Observa que el documento está dentro de publico, la carpeta desde la que sirve archivos el servidor.
Escribe en el README.md una explicación con este esquema:
Hallazgo → prueba → posible consecuencia → corrección propuesta.
Evidencia 2: archivo evidencias/exposicion.txt y tu explicación. Guarda esta prueba antes de corregir el problema.
Misión 3. Observar una petición con Wireshark
Vas a capturar tu propia comunicación local, entre Kali y el servidor que acabas de iniciar.
Paso 1. Abre Wireshark
Ábrelo desde el menú de Kali o ejecuta wireshark en otra terminal. Selecciona la interfaz lo o Loopback e inicia la captura.
Si no tienes permiso para capturar, comunica el mensaje al profesor. No cambies los permisos del sistema por tu cuenta.
Paso 2. Genera una petición
En la terminal 2, ejecuta:
curl http://127.0.0.1:8765/index.html
Paso 3. Filtra la captura
Detén la captura. En el campo de filtro de visualización de Wireshark escribe:
tcp.port == 8765
Localiza la petición GET /index.html y la respuesta 200 OK. Si aparecen demasiados paquetes, prueba también este filtro:
http
Guarda la captura como evidencias/trafico-local.pcapng y haz una captura de pantalla donde se vean la petición y la respuesta. Antes de entregarla, comprueba que contiene únicamente el tráfico de esta prueba.
Responde en el README.md:
- ¿Qué archivo se pidió?
- ¿Qué respondió el servidor?
- ¿Por qué puedes leer el nombre del archivo solicitado en esta comunicación HTTP?
Evidencia 3: archivo .pcapng, captura de pantalla y respuestas.
Misión 4. Detectar un cambio en la web
Una huella SHA-256 permite comprobar si los bytes de un archivo siguen siendo los mismos.
Paso 1. Guarda una copia y calcula la huella
En la terminal 2, ejecuta:
cd ~/operacion-faro
cp publico/index.html privado/index_original.html
sha256sum publico/index.html | tee evidencias/huella_original.txt
sha256sum publico/index.html > comprobacion.sha256
sha256sum -c comprobacion.sha256
Resultado esperado: publico/index.html: OK.
Paso 2. Simula una modificación
printf '\n<!-- Cambio de prueba realizado en clase -->\n' >> publico/index.html
sha256sum -c comprobacion.sha256 | tee evidencias/comprobacion_cambio.txt
Resultado esperado: FAILED. El archivo ya no coincide con la huella guardada.
Importante: una huella diferente demuestra que el contenido cambió. Por sí sola no indica quién lo cambió ni demuestra que hubiera un ataque.
Paso 3. Restaura y vuelve a comprobar
cp privado/index_original.html publico/index.html
sha256sum -c comprobacion.sha256 | tee evidencias/comprobacion_restaurada.txt
Resultado esperado: OK.
Evidencia 4: los archivos huella_original.txt, comprobacion_cambio.txt y comprobacion_restaurada.txt. Explica brevemente qué ha demostrado cada comprobación.
Misión 5. Corregir el problema y verificarlo
Paso 1. Retira el documento de la carpeta pública
mv publico/inventario_interno.txt privado/inventario_interno.txt
Conservamos el archivo como parte del ejercicio, pero ya no está en la carpeta que publica el servidor.
Paso 2. Repite la petición original
curl -i http://127.0.0.1:8765/inventario_interno.txt | tee evidencias/despues_correccion.txt
Resultado esperado: 404 File not found. La ruta ya no entrega el documento.
Paso 3. Comprueba que la web sigue funcionando
curl -I http://127.0.0.1:8765/index.html
sha256sum -c comprobacion.sha256
Resultado esperado: 200 OK para la página y OK para la huella.
Paso 4. Detén el servidor
Vuelve a la terminal 1 y pulsa Ctrl+C. En la terminal 2 comprueba el estado del puerto:
nmap -sT -p 8765 127.0.0.1 | tee evidencias/puerto_cerrado.txt
Resultado esperado: closed, siempre que ningún otro programa haya empezado a utilizar el puerto.
Evidencia 5: archivos despues_correccion.txt y puerto_cerrado.txt. Explica cómo verificaste la corrección.
Entrega
Comprime y entrega la carpeta operacion-faro con esta estructura:
operacion-faro/
├── README.md
├── comprobacion.sha256
├── publico/
│ └── index.html
├── privado/
│ ├── index_original.html
│ └── inventario_interno.txt
└── evidencias/
├── puertos.txt
├── exposicion.txt
├── trafico-local.pcapng
├── huella_original.txt
├── comprobacion_cambio.txt
├── comprobacion_restaurada.txt
├── despues_correccion.txt
├── puerto_cerrado.txt
└── capturas_de_pantalla...
En el README.md, organiza tu trabajo en estos apartados:
- Entorno y herramientas utilizadas.
- Servicio y puerto descubierto.
- Archivo publicado por error.
- Tráfico observado en Wireshark.
- Comprobación de integridad.
- Corrección y verificación.
- Tres cosas que has aprendido y una duda que te queda.
Si alguna herramienta falla, documenta el comando, el error y lo que intentaste. Una incidencia bien explicada también forma parte del trabajo.

