
Infrastructure d'exploitation CVE-2021-21220
La victime navigue vers une page web hébergée. L'exploit se déclenche via un shellcode intégré dans utils.js (exécuté côté client dans le navigateur de la victime via CVE-2021-21220). Le shellcode s'exécute sur la machine de la victime, appelle le serveur de livraison HTTPS, télécharge MicrosoftEdgeUpdate.exe, puis l'exécute. Une fois en cours d'exécution, l'implant se connecte au serveur C2 via un saut intermédiaire (redirecteur C2) en utilisant TLS pour recevoir un certificat signé, puis se reconnecte en TLS mutuel complet. Le contrôleur C2 reçoit la connexion et présente un menu interactif de shell inversé, permettant à l'opérateur d'exécuter des commandes Windows à distance sur la machine de la victime.
Diagramme du modèle de menace :
Remarque : Il existe également des instructions alternatives qui vont un peu plus en détail : https://docs.google.com/document/d/1q1xkLOoWJbd6i1exGZA5UIgr2MV8YcwYBWv_PG8luJI/edit?usp=sharing
Clonez le dépôt :
git clone https://github.com/JacobTaylor3/Docker-Lab-Milestone-2.git
cd Docker-Lab-Milestone-2
Téléchargez la machine virtuelle Windows victime depuis le lecteur partagé et importez-la dans VirtualBox. Dans VirtualBox : Fichier → Outils → Gestionnaire de réseaux — notez l'adresse IPv4 de votre adaptateur host-only (elle doit être dans le sous-réseau 192.168.56.0/24). Quelle que soit l'adresse IP attribuée (nous recommandons 192.168.56.1), il s'agit de la véritable adresse IP de votre machine C2.
Démarrez Docker Desktop (ou le démon Docker sous Linux).
Utilisateurs de Windows (WSL) :
launch.shutilisenetshpour ajouter des alias IP à votre adaptateur VirtualBox, ce qui nécessite des droits d'administrateur. Cliquez avec le bouton droit sur votre distribution WSL (Ubuntu ou celle que vous utilisez) dans le menu Démarrer, puis sélectionnez Exécuter en tant qu'administrateur avant de continuer.
Exécutez le script de lancement :
sudo ./launch.sh
Lorsque vous êtes invité à saisir une adresse IP c2-redirector, entrez une adresse différente sur le même sous-réseau (par exemple 192.168.56.10). launch.sh l'ajoute comme alias IP sur vboxnet0 afin que Docker puisse s'y lier. La victime ne se connecte qu'à cet alias — l'adresse IP réelle de votre machine reste masquée.
Le script va :
ENROLLMENT_TOKEN, DOWNLOAD_TOKEN)Une fois le laboratoire démarré, attachez-vous au contrôleur C2 :
sudo docker attach c2-server
Appuyez sur Entrée si l'invite n'apparaît pas immédiatement. Détachez-vous sans arrêter : Ctrl+P puis Ctrl+Q.
Démarrez la machine virtuelle Windows. Le mot de passe est victim. Ouvrez un navigateur et accédez à :
http://<c2-redirector-IP>:8888
L'exploit CVE-2021-21220 se déclenche automatiquement. Le shellcode télécharge MicrosoftEdgeUpdate.exe depuis https://<c2-redirector-IP>:8443/update/<token>, l'exécute via un contournement UAC fodhelper, et l'implant se connecte en retour au contrôleur C2.
La session de l'implant apparaît dans le menu du contrôleur. Sélectionnez-la par numéro pour entrer dans la boucle de commandes.
Six conteneurs, chacun représentant une machine distincte :
Deux canaux de trafic, chacun avec un saut de redirection sur une adresse IP distincte :
:443 mTLS) : victime → c2-redirector (C2_HOST_IP) → c2-server (backnet uniquement):9443 HTTPS) : victime → exfil-redirector (EXFIL_HOST_IP) → exfil-receiver (exfilnet uniquement)Les données d'exfiltration sont enregistrées dans exfil-data/<hostname>/ sur la machine hôte.
# 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/
Consultez documentation/ProjectOverview.md pour l'architecture complète, le pipeline de jetons/crypto et le flux de la charge utile.
| Machine | Conteneur | Port | Rôle |
|---|
| 1 | c2-redirector | :443 | relais TCP socat — saut côté victime, masque la véritable adresse IP du C2 |
| 2 | c2-server | (backnet uniquement) | écouteur C2 mTLS — interface de commande pour l'opérateur |
| 3 | delivery-server | :8443 | nginx HTTPS — téléchargement d'implant par jeton à usage unique |
| 4 | exploit-server | :8888 | page web de l'exploit CVE-2021-21220 |
| 5 | exfil-redirector | :9443 | relais TCP socat — saut côté victime, masque la véritable adresse IP d'exfiltration |
| 6 | exfil-receiver | (exfilnet uniquement) | collecteur POST HTTPS — enregistre les captures d'écran, les frappes clavier et les identifiants |