Abusing Tokens
Jetons
Si vous ne savez pas ce que sont les jetons d'accès Windows, lisez cette page avant de continuer :
Access TokensPeut-être pourriez-vous être en mesure d'escalader les privilèges en abusant des jetons que vous avez déjà
SeImpersonatePrivilege
Il s'agit d'un privilège détenu par n'importe quel processus qui permet l'impersonation (mais pas la création) de n'importe quel jeton, à condition qu'une poignée de celui-ci puisse être obtenue. Un jeton privilégié peut être acquis à partir d'un service Windows (DCOM) en l'incitant à effectuer une authentification NTLM contre une exploitation, 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, GodPotatoJuicyPotatoSeAssignPrimaryPrivilege
Il est très similaire à SeImpersonatePrivilege, il utilisera la même méthode pour obtenir un jeton privilégié. Ensuite, ce privilège permet de assigner un jeton principal à un processus nouveau/en attente. Avec le jeton d'impersonation privilégié, vous pouvez dériver un jeton principal (DuplicateTokenEx). Avec le jeton, vous pouvez créer un nouveau processus avec 'CreateProcessAsUser' ou créer un processus en attente et définir le jeton (en général, vous ne pouvez pas modifier le jeton principal d'un processus en cours d'exécution).
SeTcbPrivilege
Si vous avez activé ce jeton, vous pouvez utiliser KERB_S4U_LOGON pour obtenir un jeton d'impersonation pour tout autre utilisateur sans connaître les informations d'identification, ajouter un groupe arbitraire (administrateurs) au jeton, définir le niveau d'intégrité du jeton sur "moyen" et assigner ce jeton au thread actuel (SetThreadToken).
SeBackupPrivilege
Le système est amené à accorder un accès en lecture à n'importe quel fichier (limité aux opérations de lecture) par ce privilège. Il est utilisé pour lire les hachages de mots de passe des comptes Administrateur locaux à partir du registre, après quoi, des outils comme "psexec" ou "wmicexec" peuvent être utilisés avec le hachage (technique Pass-the-Hash). Cependant, cette technique échoue dans deux cas : lorsque le compte Administrateur local est désactivé, ou lorsqu'une stratégie est en place qui supprime les droits administratifs des administrateurs locaux se connectant à distance. Vous pouvez abuser de ce privilège avec :
en suivant IppSec dans https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
Ou comme expliqué dans la section escalade de privilèges avec les opérateurs de sauvegarde de :
SeRestorePrivilege
La permission pour accéder en écriture à n'importe quel fichier système, indépendamment de la liste de contrôle d'accès (ACL) du fichier, est fournie par ce privilège. Cela ouvre de nombreuses possibilités d'escalade, y compris la capacité de modifier des services, d'effectuer du détournement de DLL et de définir des débogueurs via les options d'exécution de fichiers image, entre autres techniques.
SeCreateTokenPrivilege
SeCreateTokenPrivilege est une permission puissante, particulièrement utile lorsqu'un utilisateur possède la capacité d'impersonner des jetons, mais aussi en l'absence de SeImpersonatePrivilege. Cette capacité repose sur la capacité d'impersonner un jeton qui représente le même utilisateur et dont le niveau d'intégrité n'excède pas celui du processus actuel.
Points clés :
Impersonation sans SeImpersonatePrivilege : Il est possible d'utiliser SeCreateTokenPrivilege pour l'EoP en impersonnant des jetons dans des conditions spécifiques.
Conditions pour l'impersonation de jetons : L'impersonation réussie nécessite que le jeton cible appartienne au même utilisateur et ait un niveau d'intégrité inférieur ou égal à celui du processus tentant l'impersonation.
Création et modification de jetons d'impersonation : Les utilisateurs peuvent créer un jeton d'impersonation et l'améliorer en ajoutant l'identifiant de sécurité (SID) d'un groupe privilégié.
SeLoadDriverPrivilege
Ce privilège permet de charger et décharger des pilotes de périphériques avec la création d'une entrée de registre avec des valeurs spécifiques pour ImagePath
et Type
. Comme 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 du pilote, 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 complet doit être créé, et deux valeurs doivent être définies :
ImagePath
, qui est le chemin d'accès binaire à exécuterType
, avec une valeur deSERVICE_KERNEL_DRIVER
(0x00000001
).
Étapes à suivre :
Accédez à
HKCU
au lieu deHKLM
en raison de l'accès en écriture restreint.Créez le chemin
\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
dansHKCU
, où<RID>
représente l identifiant relatif de l'utilisateur actuel.Définissez le
ImagePath
sur le chemin d'exécution du binaire.Attribuez le
Type
commeSERVICE_KERNEL_DRIVER
(0x00000001
).
D'autres façons d'abuser de ce privilège se trouvent sur 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 ainsi l'exigence d'accès discrétionnaire explicite en fournissant des droits d'accès WRITE_OWNER. Le processus implique d'abord de sécuriser la propriété de la clé de registre prévue à des fins d'écriture, puis de modifier le DACL pour permettre des opérations d'écriture.
SeDebugPrivilege
Ce privilège permet de déboguer d'autres processus, y compris de lire et écrire dans la mémoire. Diverses stratégies d'injection de mémoire, capables de contourner la plupart des antivirus et des solutions de prévention des intrusions hôtes, peuvent être utilisées avec ce privilège.
Dump de 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 de stocker les informations d'identification de l'utilisateur 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:
RCE
Si vous voulez obtenir un shell NT SYSTEM
, vous pourriez utiliser :
Vérifier les privilèges
Les jetons qui apparaissent comme Désactivés peuvent être activés, vous pouvez en fait abuser des jetons Activés et Désactivés.
Activer tous les jetons
Si vous avez des jetons désactivés, vous pouvez utiliser le script EnableAllTokenPrivs.ps1 pour activer tous les jetons :
Ou le script intégré dans ce poste.
Tableau
Feuille de triche complète sur les privilèges de jetons à https://github.com/gtworek/Priv2Admin, le résumé ci-dessous ne répertorie que les moyens directs d'exploiter le privilège pour obtenir une session administrateur ou lire des fichiers sensibles.
Privilège | Impact | Outil | Chemin d'exécution | Remarques |
---|---|---|---|---|
| Admin | Outil tiers | "Cela permettrait à un utilisateur d'usurper des jetons et de s'élever en privilège 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 bientôt de manière plus proche d'une recette. |
| Menace | Commandes intégrées | Lire des fichiers sensibles avec | - Peut être plus intéressant si vous pouvez lire %WINDIR%\MEMORY.DMP
- |
| Admin | Outil tiers | Créer un jeton arbitraire incluant des droits d'administrateur local avec | |
| Admin | PowerShell | Dupliquer le jeton | Script à trouver sur FuzzySecurity |
| Admin | Outil tiers | 1. Charger un pilote de noyau défectueux tel que | 1. La vulnérabilité de |
| Admin | PowerShell | 1. Lancer PowerShell/ISE avec le privilège SeRestore présent. 2. Activer le privilège avec Enable-SeRestorePrivilege). 3. Renommer utilman.exe en utilman.old 4. Renommer cmd.exe en utilman.exe 5. Verrouiller la console et appuyer sur Win+U | L'attaque peut être détectée par certains logiciels antivirus. Une méthode alternative repose sur le remplacement des binaires de service stockés dans "Program Files" en utilisant le même privilège |
| Admin | Commandes intégrées | 1. | L'attaque peut être détectée par certains logiciels antivirus. Une méthode alternative repose sur le remplacement des binaires de service stockés dans "Program Files" en utilisant le même privilège. |
| Admin | Outil tiers | Manipuler les jetons pour inclure des droits d'administrateur local. Peut nécessiter SeImpersonate. À vérifier. |
Référence
Consultez ce tableau définissant les jetons Windows : https://github.com/gtworek/Priv2Admin
Consultez ce document sur l'élévation de privilèges avec les jetons.
Last updated