Abus de Tokens
Reading time: 11 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.
Tokens
Si vous ne savez pas ce que sont les Windows Access Tokens, lisez cette page avant de continuer :
Peut-être pourriez-vous être en mesure d'escalader les privilèges en abusant des tokens que vous avez déjà
SeImpersonatePrivilege
C'est un privilège détenu par tout processus qui permet l'imitation (mais pas la création) de tout token, à condition qu'un handle puisse être obtenu. Un token privilégié peut être acquis à partir d'un service Windows (DCOM) en l'incitant à effectuer une authentification NTLM contre un exploit, permettant ensuite l'exécution d'un processus avec des privilèges SYSTEM. Cette vulnérabilité peut être exploitée à l'aide de divers outils, tels que juicy-potato, RogueWinRM (qui nécessite que winrm soit désactivé), SweetPotato, et PrintSpoofer.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
SeAssignPrimaryPrivilege
Il est très similaire à SeImpersonatePrivilege, il utilisera la même méthode pour obtenir un token privilégié.
Ensuite, ce privilège permet d'assigner un token principal à un nouveau processus/suspendu. Avec le token d'imitation privilégié, vous pouvez dériver un token principal (DuplicateTokenEx).
Avec le token, vous pouvez créer un nouveau processus avec 'CreateProcessAsUser' ou créer un processus suspendu et définir le token (en général, vous ne pouvez pas modifier le token principal d'un processus en cours d'exécution).
SeTcbPrivilege
Si vous avez activé ce token, vous pouvez utiliser KERB_S4U_LOGON pour obtenir un token d'imitation pour tout autre utilisateur sans connaître les identifiants, ajouter un groupe arbitraire (administrateurs) au token, définir le niveau d'intégrité du token à "moyen", et assigner ce token au fil d'exécution actuel (SetThreadToken).
SeBackupPrivilege
Le système est amené à accorder tous les droits de lecture sur tout fichier (limité aux opérations de lecture) par ce privilège. Il est utilisé pour lire les hachages de mot de passe des comptes Administrateur locaux à partir du registre, après quoi des outils comme "psexec" ou "wmiexec" peuvent être utilisés avec le hachage (technique Pass-the-Hash). Cependant, cette technique échoue dans deux conditions : lorsque le compte Administrateur local est désactivé, ou lorsqu'une politique est en place qui retire les droits administratifs des Administrateurs locaux se connectant à distance.
Vous pouvez abuser de ce privilège avec :
- https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1
- https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug
- suivant IppSec dans https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
- Ou comme expliqué dans la section escalade des privilèges avec les opérateurs de sauvegarde de :
SeRestorePrivilege
Ce privilège permet un accès en écriture à tout fichier système, indépendamment de la liste de contrôle d'accès (ACL) du fichier. Il ouvre de nombreuses possibilités d'escalade, y compris la capacité de modifier des services, effectuer du DLL Hijacking, et définir des débogueurs via les options d'exécution de fichiers d'image parmi diverses autres techniques.
SeCreateTokenPrivilege
SeCreateTokenPrivilege est un puissant privilège, particulièrement utile lorsqu'un utilisateur possède la capacité d'imiter des tokens, mais aussi en l'absence de SeImpersonatePrivilege. Cette capacité repose sur la possibilité d'imiter un token qui représente le même utilisateur et dont le niveau d'intégrité ne dépasse pas celui du processus actuel.
Points Clés :
- Imitation sans SeImpersonatePrivilege : Il est possible de tirer parti de SeCreateTokenPrivilege pour EoP en imitant des tokens dans des conditions spécifiques.
- Conditions pour l'imitation de token : Une imitation réussie nécessite que le token cible appartienne au même utilisateur et ait un niveau d'intégrité inférieur ou égal à celui du processus tentant l'imitation.
- Création et modification de tokens d'imitation : Les utilisateurs peuvent créer un token d'imitation et l'améliorer en ajoutant un SID (Identifiant de Sécurité) d'un groupe privilégié.
SeLoadDriverPrivilege
Ce privilège permet de charger et décharger des pilotes de périphériques en créant une entrée de registre avec des valeurs spécifiques pour ImagePath
et Type
. Étant donné que l'accès en écriture direct à HKLM
(HKEY_LOCAL_MACHINE) est restreint, HKCU
(HKEY_CURRENT_USER) doit être utilisé à la place. Cependant, pour rendre HKCU
reconnaissable par le noyau pour la configuration des pilotes, un chemin spécifique doit être suivi.
Ce chemin est \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
, où <RID>
est l'Identifiant Relatif de l'utilisateur actuel. À l'intérieur de HKCU
, ce chemin entier doit être créé, et deux valeurs doivent être définies :
ImagePath
, qui est le chemin vers le binaire à exécuterType
, avec une valeur deSERVICE_KERNEL_DRIVER
(0x00000001
).
Étapes à Suivre :
- Accéder à
HKCU
au lieu deHKLM
en raison de l'accès en écriture restreint. - Créer le chemin
\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
dansHKCU
, où<RID>
représente l'Identifiant Relatif de l'utilisateur actuel. - Définir
ImagePath
sur le chemin d'exécution du binaire. - Assigner
Type
commeSERVICE_KERNEL_DRIVER
(0x00000001
).
# Example Python code to set the registry values
import winreg as reg
# Define the path and values
path = r'Software\YourPath\System\CurrentControlSet\Services\DriverName' # Adjust 'YourPath' as needed
key = reg.OpenKey(reg.HKEY_CURRENT_USER, path, 0, reg.KEY_WRITE)
reg.SetValueEx(key, "ImagePath", 0, reg.REG_SZ, "path_to_binary")
reg.SetValueEx(key, "Type", 0, reg.REG_DWORD, 0x00000001)
reg.CloseKey(key)
Plus de façons d'abuser de ce privilège dans https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
SeTakeOwnershipPrivilege
Ceci est similaire à SeRestorePrivilege. Sa fonction principale permet à un processus de prendre possession d'un objet, contournant l'exigence d'un accès discrétionnaire explicite grâce à la fourniture de droits d'accès WRITE_OWNER. Le processus consiste d'abord à sécuriser la possession de la clé de registre prévue à des fins d'écriture, puis à modifier le DACL pour permettre les opérations d'écriture.
takeown /f 'C:\some\file.txt' #Now the file is owned by you
icacls 'C:\some\file.txt' /grant <your_username>:F #Now you have full access
# Use this with files that might contain credentials such as
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software
%WINDIR%\repair\security
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
c:\inetpub\wwwwroot\web.config
SeDebugPrivilege
Ce privilège permet de déboguer d'autres processus, y compris de lire et d'écrire dans la mémoire. Diverses stratégies d'injection de mémoire, capables d'échapper à la plupart des solutions antivirus et de prévention des intrusions sur hôte, peuvent être employées avec ce privilège.
Dump mémoire
Vous pourriez utiliser ProcDump de la SysInternals Suite pour capturer la mémoire d'un processus. Plus précisément, cela peut s'appliquer au processus Local Security Authority Subsystem Service (LSASS), qui est responsable du stockage des informations d'identification des utilisateurs une fois qu'un utilisateur s'est connecté avec succès à un système.
Vous pouvez ensuite charger ce dump dans mimikatz pour obtenir des mots de passe :
mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords
RCE
Si vous voulez obtenir un shell NT SYSTEM
, vous pouvez utiliser :
# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)
Vérifier les privilèges
whoami /priv
Les tokens qui apparaissent comme Désactivés peuvent être activés, vous pouvez en fait abuser des tokens Activés et Désactivés.
Activer tous les tokens
Si vous avez des tokens désactivés, vous pouvez utiliser le script EnableAllTokenPrivs.ps1 pour activer tous les tokens :
.\EnableAllTokenPrivs.ps1
whoami /priv
Ou le script intégré dans ce post.
Table
Feuille de triche complète des privilèges de jeton à https://github.com/gtworek/Priv2Admin, le résumé ci-dessous ne listera que les moyens directs d'exploiter le privilège pour obtenir une session admin ou lire des fichiers sensibles.
Privilège | Impact | Outil | Chemin d'exécution | Remarques |
---|---|---|---|---|
SeAssignPrimaryToken | Admin | Outil tiers | "Cela permettrait à un utilisateur d'imiter des jetons et de s'élever vers le système nt en utilisant des outils tels que potato.exe, rottenpotato.exe et juicypotato.exe" | Merci à Aurélien Chalot pour la mise à jour. J'essaierai de reformuler cela en quelque chose de plus ressemblant à une recette bientôt. |
SeBackup | Menace | Commandes intégrées | Lire des fichiers sensibles avec robocopy /b | - Peut être plus intéressant si vous pouvez lire %WINDIR%\MEMORY.DMP |
SeCreateToken | Admin | Outil tiers | Créer un jeton arbitraire incluant des droits d'administrateur local avec NtCreateToken . | |
SeDebug | Admin | PowerShell | Dupliquer le jeton lsass.exe . | Script à trouver sur FuzzySecurity |
SeLoadDriver | Admin | Outil tiers | 1. Charger un pilote de noyau bogué tel que | 1. La vulnérabilité |
SeRestore | Admin | PowerShell | 1. Lancer PowerShell/ISE avec le privilège SeRestore présent. | L'attaque peut être détectée par certains logiciels antivirus. La méthode alternative repose sur le remplacement des binaires de service stockés dans "Program Files" en utilisant le même privilège |
SeTakeOwnership | Admin | Commandes intégrées | 1. | L'attaque peut être détectée par certains logiciels antivirus. La méthode alternative repose sur le remplacement des binaires de service stockés dans "Program Files" en utilisant le même privilège. |
SeTcb | Admin | Outil tiers | Manipuler des jetons pour inclure des droits d'administrateur local. Peut nécessiter SeImpersonate. À vérifier. |
Référence
- Jetez un œil à ce tableau définissant les jetons Windows : https://github.com/gtworek/Priv2Admin
- Jetez un œil à ce document sur l'élévation de privilèges avec des jetons.
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.