
CVE-2021-21220 Infrastruttura di sfruttamento
La vittima visita una pagina web ospitata. L'exploit viene avviato tramite shellcode incorporato in utils.js (eseguito lato client nel browser della vittima tramite CVE-2021-21220). Lo shellcode viene eseguito sulla macchina della vittima, contatta il server di consegna HTTPS, scarica MicrosoftEdgeUpdate.exe e lo esegue. Una volta in esecuzione, l'implant si connette al server C2 tramite un hop intermedio (C2 redirector) usando TLS per ricevere un certificato firmato, quindi si riconnette tramite TLS reciproco completo. Il controller C2 riceve la connessione e presenta un menu interattivo di reverse shell, consentendo all'operatore di eseguire comandi Windows in remoto sulla macchina della vittima
Diagramma del modello di minaccia:
Nota: esistono anche istruzioni alternative un po' più approfondite: https://docs.google.com/document/d/1q1xkLOoWJbd6i1exGZA5UIgr2MV8YcwYBWv_PG8luJI/edit?usp=sharing
Clona il repository:
git clone https://github.com/JacobTaylor3/Docker-Lab-Milestone-2.git
cd Docker-Lab-Milestone-2
Scarica la VM Windows vittima dall'unità condivisa e importala in VirtualBox. In VirtualBox: File → Tools → Network Manager — annota l'indirizzo IPv4 del tuo adattatore host-only (deve essere nella subnet 192.168.56.0/24). Qualunque indirizzo IP venga assegnato (consigliamo 192.168.56.1) è il tuo vero IP della macchina C2.
Avvia Docker Desktop (o il daemon Docker su Linux).
Utenti Windows (WSL):
launch.shusanetshper aggiungere alias IP all'adattatore VirtualBox, il che richiede diritti di amministratore. Fai clic con il tasto destro sulla tua distribuzione WSL (Ubuntu o quella che usi) nel menu Start e seleziona Esegui come amministratore prima di continuare.
Esegui lo script di avvio:
sudo ./launch.sh
Quando ti viene chiesto un IP del c2-redirector, inserisci un indirizzo diverso sulla stessa subnet (es. 192.168.56.10). launch.sh lo aggiunge come alias IP su vboxnet0 così Docker può associarsi a esso. La vittima si connette solo a questo alias — il vero IP della tua macchina rimane nascosto.
Lo script:
ENROLLMENT_TOKEN, DOWNLOAD_TOKEN)Una volta che il lab è attivo, collegati al controller C2:
sudo docker attach c2-server
Premi Invio se il prompt non appare immediatamente. Scollegati senza fermare il container: Ctrl+P poi Ctrl+Q.
Avvia la VM Windows. La password è victim. Apri un browser e vai su:
http://<c2-redirector-IP>:8888
L'exploit CVE-2021-21220 si attiva automaticamente. Lo shellcode scarica MicrosoftEdgeUpdate.exe da https://<c2-redirector-IP>:8443/update/<token>, lo esegue tramite un bypass UAC di fodhelper, e l'implant si riconnette al controller C2.
La sessione dell'implant appare nel menu del controller. Selezionala tramite il numero per entrare nel loop dei comandi.
Sei container, ciascuno rappresentante una macchina distinta:
Due canali di traffico, ciascuno con un hop redirector su un IP separato:
:443 mTLS): vittima → c2-redirector (C2_HOST_IP) → c2-server (solo backnet):9443 HTTPS): vittima → exfil-redirector (EXFIL_HOST_IP) → exfil-receiver (solo exfilnet)I dati di exfil vengono salvati in exfil-data/<hostname>/ sulla macchina 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/
Consulta documentation/ProjectOverview.md per l'architettura completa, la pipeline token/crypto e il flusso del payload.
| Macchina | Container | Porta | Ruolo |
|---|
| 1 | c2-redirector | :443 | relay TCP socat — hop lato vittima, nasconde il vero IP del C2 |
| 2 | c2-server | (solo backnet) | listener C2 mTLS — interfaccia di comando dell'operatore |
| 3 | delivery-server | :8443 | nginx HTTPS — download dell'implant con token monouso |
| 4 | exploit-server | :8888 | pagina web dell'exploit CVE-2021-21220 |
| 5 | exfil-redirector | :9443 | relay TCP socat — hop lato vittima, nasconde il vero IP di exfil |
| 6 | exfil-receiver | (solo exfilnet) | sink POST HTTPS — salva screenshot, keylog e credenziali |