Laboratoire DanderSpritz
Objectif
L'objectif du laboratoire DanderSpritz est de permettre aux chercheurs et aux défenseurs de déployer rapidement une version entièrement fonctionnelle de DanderSpritz - l'ensemble d'outils de post-exploitation du groupe Equation ainsi qu'un domaine Windows Server 2008 et un client comme cibles. La cible Windows dispose de quelques outils de rétro-ingénierie que j'ai trouvés utiles lors de l'étude de DanderSpritz et de ses capacités.
En savoir plus sur le laboratoire DanderSpritz ici : https://medium.com/@francisck/introducing-danderspritz-lab-461912313d7c
Un site web que j'ai créé pour documenter les capacités et les outils de DanderSpritz : https://danderspritz.com
NOTE : Ce laboratoire n'a pas été durci d'aucune manière (il est intentionnellement vulnérable) et fonctionne avec les identifiants vagrant par défaut. Veuillez ne pas le connecter ou le pontifier à des réseaux qui vous sont importants.
Prérequis
- 20 Go+ d'espace disque libre
- 8 Go+ de RAM
- 20 Go de bande passante (pour télécharger les ISO, mises à jour, service packs, etc.)
- Packer v1.2.3 ou plus récent
- Vagrant v2.1.1 ou plus récent
- Plugin Vagrant-Reload
- Virtualbox (VMWare Fusion/Workstation à venir plus tard)
Démarrage du laboratoire DanderSpritz
DanderSpritz utilise Packer, Vagrant et le plug-in Vagrant-reload pour installer et configurer le laboratoire à partir de zéro. Packer téléchargera les ISO Windows directement depuis Microsoft et installera des versions d'essai du logiciel pour une utilisation pendant la recherche.
- Clonez ce dépôt sur votre propre machine
git clone [email protected]:francisck/DanderSpritz_lab.git
- Assurez-vous d'avoir le plug-in Vagrant-reload installé
vagrant plugin install vagrant-reload
- Pour télécharger les ISO et effectuer la construction des boîtes Vagrant, exécutez la commande suivante :
packer build danderspritz_lab.json
- Une fois les boîtes Vagrant construites, démarrez les VM et laissez-les poursuivre une configuration supplémentaire :
vagrant up
Créer un projet FuzzBunch
- Lancez l'invite de commandes Windows (cmd) et exécutez ce qui suit :
D:\
python fb.py
- Définissez une adresse cible par défaut de 192.168.40.3
- Définissez une adresse de rappel par défaut de 192.168.40.4
- N'utilisez pas la redirection (pour commencer)
- Laissez le répertoire de logs par défaut
- Créez un nouveau projet (option 0)
- Nommez votre nouveau projet
- Laissez le répertoire de logs par défaut

Exploiter la machine cible
- Exécutez la commande suivante pour exploiter la machine en utilisant EternalBlue
use eternalblue
- Choisissez toutes les options par défaut sauf le mécanisme de livraison. Utilisez "FB" (déploiement traditionnel) comme mécanisme de livraison
- Une fois eternalblue réussi, configurez danderspritz et peddlecheap
- Lancez une autre invite de commandes Windows (cmd) et exécutez ce qui suit :
D:\
python configure_lp
- Autorisez Java à travers le pare-feu
- Sélectionnez
browse à côté de "Répertoire de logs" et choisissez le nom du projet FuzzBunch que vous avez créé

- Cliquez sur "go"
- Dans la console DanderSpritz, exécutez la commande suivante :
pc_prep
- Sélectionnez la charge utile standard x64-winnt niveau 3 sharedlib
5
- Ne sélectionnez pas les paramètres avancés
- Choisissez d'effectuer un rappel immédiat
- Utilisez l'ID PC par défaut (0)
- Sélectionnez "Oui" à "Voulez-vous écouter ?"
- Ne modifiez pas les ports d'écoute
- Laissez l'adresse de "rappel" par défaut (127.0.0.1)
- Ne changez pas le nom de l'exe
- Utilisez la clé par défaut (option 2)
- Validez que la configuration de PeddleCheap est valide
- Ne configurez pas avec FC (felonycrowbar)
- Copiez l'emplacement du binaire configuré :

Livrer l'implant (peddlecheap) via la backdoor DoublePulsar :
- Dans la fenêtre Fuzzbunch d'origine, tapez :
use doublepulsar
- Choisissez "oui" lorsqu'on vous demande si vous souhaitez être invité pour les paramètres de variable
- Sélectionnez tous les paramètres de variable par défaut sauf l'architecture cible (choisissez l'option 1)
1) x64 x64 64-bits
- Sélectionnez la fonction "RunDLL" (option 2)
2) RunDLL Use an APC to inject a DLL into a user mode process.

- Laissez toutes les autres options par défaut et sélectionnez "Oui" lorsqu'on vous demande si vous voulez exécuter le plugin
- Vous devriez voir "Doublepulsar succeeded"
Se connecter à l'implant PeddleCheap avec DanderSpritz
- Dans DanderSpritz, sélectionnez "PeddleCheap" en haut de l'écran
- Sélectionnez la clé "default" dans le menu déroulant des clés
- Entrez l'adresse de la machine cible (192.168.40.3)
- Sélectionnez "Connect to target"

- Sélectionnez le nom de votre projet Fuzzbunch
- Attendez que le DanderSpritz Survey se termine (cela prendra un certain temps) et vous devrez répondre à quelques questions en cours de route
- Profitez-en !
Utilisez pour le bien, pas pour le mal !
Le but de ce projet est de permettre aux chercheurs en sécurité de construire et configurer facilement un laboratoire DanderSpritz entièrement fonctionnel pour la rétro-ingénierie et les tests.
- Ne lancez pas ceci contre des cibles en dehors de ce laboratoire.
- N'utilisez pas ceci pour des "engagements d'équipe rouge"
- Contribuez à partager vos recherches avec la communauté
- Contactez-moi pour toute question que vous pourriez avoir :)
Utilisation quotidienne
Une fois que vous avez exécuté packer une fois, vous n'aurez plus besoin de le relancer. Les boîtes Vagrant seront disponibles pour reconstruire, démonter, redémarrer votre laboratoire.
Voici quelques commandes utiles que vous pouvez utiliser lorsque vous travaillez avec le laboratoire :
Utilisation de base de Vagrant
- Lancer tous les hôtes du laboratoire DanderSprotz :
vagrant up
- Lancer un hôte spécifique :
vagrant up <hostname>
- Redémarrer un hôte spécifique :
vagrant reload <hostname>
- Redémarrer un hôte spécifique et relancer le processus de provisionnement :
vagrant reload <hostname> --provision
- Détruire un hôte spécifique
vagrant destroy <hostname>
- Détruire l'ensemble de l'environnement du laboratoire Danderspritz :
vagrant destroy
- Prendre un instantané d'une machine :
vagrant snapshot save <hostname> <snapshot_name>
- Restaurer un instantané de machine :
vagrant snapshot restore <hostname> <snapshot_name>
- Vérifier le statut de chaque hôte :
vagrant status
- Suspendre l'environnement du laboratoire :
vagrant suspend
- Reprendre l'environnement du laboratoire :
vagrant resume
Réarmer les hôtes Windows expirés
Si vous rencontrez un problème où la licence d'essai a expiré, vous pouvez réarmer les hôtes jusqu'à 3 fois (pour 90 jours de licence Windows) en exécutant cette commande dans une invite de commandes administrative
Vous devrez redémarrer la machine.
Schéma du laboratoire

- Nom de domaine : windomain.local
- Identifiant administrateur (toutes les machines) : vagrant:vagrant
- DC (Contrôleur de domaine) : 192.168.40.2/24
- Cible : 192.168.40.3/24
- DanderSpritz : 192.168.40.4/24
Hôtes du laboratoire
- DC - Contrôleur de domaine Windows 2008 R2
- Contrôleur de domaine Windows pour Windomain.local
- GPO de configuration du serveur WEF
- GPO de journalisation PowerShell
- GPO de politique d'audit Windows renforcée
- Target - Poste de travail Windows 7
- Simule un poste de travail / machine cible
- Joint au domaine AD Windows Windomain.local
- Quelques outils de rétro-ingénierie / visibilité pré-installés
- Chocolatey (avec le dépôt FireEye Flare) disponible pour l'installation d'outils supplémentaires
- Boîte DanderSpritz - Windows 10
- DanderSprirtz et Fuzzbunch pré-installés
Outils installés sur la cible (Windows 7 SP1)
- Sysmon
- Outils Sysinternals (Procmon, TCPview, etc.)
- API Monitor
- InfoPe
- HxD
- PEView
- Windbg
- WireShark
- Binary Ninja
- HashCalc
- IDA 7 Free
- Ollydbg
- GPO d'audit renforcé
- GPO de journalisation PowerShell
- Événements Windows transférés au contrôleur de domaine (WEC)
Crédits/Ressources
Une grande partie de ce code a été empruntée et adaptée du projet DetectionLab de Chris Long ainsi que des dépôts GitHub packer-windows et adfs2 de Stefan Scherer. Un immense merci à tous ceux qui ont contribué par leur code à rendre des projets comme celui-ci plus faciles (ou même possibles).
Remerciements