
Chemins d'exploitation vous permettant d'(ab)user des privilèges Windows pour élever vos droits au sein du système d'exploitation.
L'idée est de « traduire » les privilèges du système d'exploitation Windows en un chemin menant à :
Les privilèges sont listés et expliqués sur : https://learn.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
Si l'objectif peut être atteint de plusieurs manières, la priorité est
Vous pouvez vérifier vos propres privilèges avec whoami /priv. Les privilèges désactivés sont aussi bons que les activés. La seule chose importante est de savoir si vous avez le privilège dans la liste ou non.
Note 1 : Chaque fois que le chemin d'attaque se termine par une création de jeton, vous pouvez supposer que l'étape suivante consiste à créer un nouveau processus en utilisant ce jeton, puis à prendre le contrôle du système d'exploitation.
Note 2 :
a. Pour appeler directement NtQuerySystemInformation()/ZwQuerySystemInformation(), vous trouverez les privilèges requis ici.
b. Pour NtSetSystemInformation()/ZwSetSystemInformation(), les privilèges requis sont listés ici.
Note 3 : Je me concentre uniquement sur le système d'exploitation. Si un privilège fonctionne dans l'AD mais pas dans l'OS lui-même, je le décris comme non utilisé dans l'OS. Il serait bien que quelqu'un creuse davantage dans les scénarios orientés AD.
N'hésitez pas à contribuer et/ou à discuter des idées présentées.
Crédits :
| Privilège | Impact | Outil | Chemin d'exécution | Remarques |
|---|
SeAssignPrimaryToken | Admin | Outil tiers | « Cela permettrait à un utilisateur d'usurper des jetons et d'élever ses privilèges vers NT SYSTEM en utilisant des outils tels que potato.exe, rottenpotato.exe et juicypotato.exe » | Merci à Aurélien Chalot pour la mise à jour. Je vais essayer de reformuler cela en quelque chose de plus proche d'une recette bientôt. |
SeAudit | Menace | Outil tiers | Écrire des événements dans le journal des événements de sécurité pour tromper l'audit ou pour écraser d'anciens événements. | L'écriture de ses propres événements est possible avec l'API Authz Report Security Event.- voir le PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeAuditPrivilegePoC) par @daem0nc0re |
SeBackup | Admin | Outil tiers | 1. Sauvegarder les ruches de registre HKLM\SAM et HKLM\SYSTEM 2. Extraire les hachages des comptes locaux de la base de données SAM 3. Pass-the-Hash en tant que membre du groupe local Administrateurs Alternative : peut être utilisé pour lire des fichiers sensibles. | Pour plus d'informations, reportez-vous au fichier SeBackupPrivilege. - voir le PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeBackupPrivilegePoC) par @daem0nc0re |
SeChangeNotify | Aucun | - | - | Privilège détenu par tout le monde. Le révoquer peut rendre l'OS (Windows Server 2019) non démarrable. |
SeCreateGlobal | ? | ? | ? | |
SeCreatePagefile | Aucun | Commandes intégrées | Créer hiberfil.sys, le lire hors ligne, rechercher des données sensibles. | Nécessite un accès hors ligne, ce qui conduit de toute façon à des droits admin. - Voir le PoC par @daem0nc0re |
SeCreatePermanent | ? | ? | ? | |
SeCreateSymbolicLink | ? | ? | ? | |
SeCreateToken | Admin | Outil tiers | Créer n'importe quel jeton, y compris les droits admin locaux, avec NtCreateToken.- voir le PoC par @daem0nc0re | |
SeDebug | Admin | PowerShell | Dupliquer le jeton de lsass.exe. | Script disponible sur FuzzySecurity. - Voir le PoC par @daem0nc0re |
SeDelegateSession-UserImpersonate | ? | ? | ? | Nom du privilège coupé pour réduire la largeur de la colonne. |
SeEnableDelegation | Aucun | - | - | Le privilège n'est pas utilisé dans le système d'exploitation Windows. |
SeImpersonate | Admin | Outil tiers | Outils de la famille Potato (potato.exe, RottenPotato, RottenPotatoNG, Juicy Potato, SweetPotato, RemotePotato0), RogueWinRM, PrintSpoofer, etc. | Comme SeAssignPrimaryToken, permet par conception de créer un processus dans le contexte de sécurité d'un autre utilisateur (en utilisant un handle vers un jeton de cet utilisateur). De nombreux outils et techniques peuvent être utilisés pour obtenir le jeton requis. |
SeIncreaseBasePriority | Disponibilité | Commandes intégrées | start /realtime SomeCpuIntensiveApp.exe | Peut être plus intéressant sur les serveurs. |
SeIncreaseQuota | Disponibilité | Outil tiers | Modifier les limites de CPU, mémoire et cache à des valeurs rendant l'OS non démarrable. | - Les quotas ne sont pas vérifiés en mode sans échec, ce qui rend la réparation relativement facile. - Le même privilège est utilisé pour gérer les quotas de registre. |
SeIncreaseWorkingSet | Aucun | - | - | Privilège détenu par tout le monde. Vérifié lors de l'appel des fonctions de réglage fin de la gestion de la mémoire. |
SeLoadDriver | Admin | Outil tiers | 1. Charger un pilote noyau bogué tel que szkg64.sys2. Exploiter la vulnérabilité du pilote Alternative : le privilège peut être utilisé pour décharger des pilotes liés à la sécurité avec la commande intégrée fltMC, ex : fltMC sysmondrv | 1. La vulnérabilité szkg64 est listée comme CVE-2018-157322. Le code d'exploitation de szkg64 code d'exploit a été créé par Parvez Anwar |
SeLockMemory | Disponibilité | Outil tiers | Affamer la partition mémoire système en déplaçant des pages. | PoC publié par Walied Assar (@waleedassar) |
SeMachineAccount | Aucun | - | - | Le privilège n'est pas utilisé dans le système d'exploitation Windows. |
SeManageVolume | Admin | Outil tiers | 1. Activer le privilège dans le jeton 2. Créer un handle vers \.\C: avec SYNCHRONIZE | FILE_TRAVERSE3. Envoyer le FSCTL_SD_GLOBAL_CHANGE pour remplacer S-1-5-32-544 par S-1-5-32-5454. Écraser utilman.exe etc. | FSCTL_SD_GLOBAL_CHANGE peut être effectué avec ce morceau de code. |
SeProfileSingleProcess | Aucun | - | - | Le privilège est vérifié avant de modifier (et dans un ensemble très limité de commandes, avant d'interroger) les paramètres de Prefetch, SuperFetch et ReadyBoost. L'impact peut être ajusté, car l'effet réel n'est pas connu. |
SeRelabel | Menace | Outil tiers | Modification de fichiers système par un administrateur légitime | Voir : documentation MIC Les étiquettes d'intégrité fournissent une protection supplémentaire, en plus des ACL bien connues. Deux scénarios principaux incluent : - protection contre les attaques utilisant des applications exploitables telles que les navigateurs, les lecteurs PDF, etc. - protection des fichiers de l'OS. La présence de SeRelabel dans le jeton permettra d'utiliser l'accès WRITE_OWNER à une ressource, y compris les fichiers et dossiers. Malheureusement, le jeton avec un niveau d'intégrité (IL) inférieur à High aura le privilège SeRelabel désactivé, le rendant inutile pour quiconque n'étant pas déjà administrateur.Voir l'excellent article de blog par @tiraniddo pour les détails. |
SeRemoteShutdown | Disponibilité | Commandes intégrées | shutdown /s /f /m \\server1 /d P:5:19 | Le privilège est vérifié lorsqu'une demande d'arrêt/redémarrage provient du réseau. Scénario 127.0.0.1 à étudier. |
SeReserveProcessor | Aucun | - | - | Il semble que le privilège ne soit plus utilisé et qu'il n'apparaisse que dans quelques versions de winnt.h. Vous pouvez le voir listé, par exemple, dans le code source publié par Microsoft ici. |
SeRestore | 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 antivirus. Une méthode alternative consiste à remplacer les binaires de services stockés dans « Program Files » en utilisant le même privilège. - voir le PoC par @daem0nc0re |
SeSecurity | Menace | Commandes intégrées | - Effacer le journal des événements de sécurité : wevtutil cl Security- Réduire le journal de sécurité à 20 Mo pour forcer les événements à être supprimés rapidement : wevtutil sl Security /ms:0- Lire le journal des événements de sécurité pour connaître les processus, les accès et les actions des autres utilisateurs dans le système. - Savoir ce qui est journalisé pour agir discrètement. - Savoir ce qui est journalisé pour générer un grand nombre d'événements, purgeant efficacement les anciens sans laisser de preuve évidente de nettoyage. - Visualiser et modifier les SACL des objets (en pratique : les paramètres d'audit) | Voir le PoC par @daem0nc0re |
SeShutdown | Disponibilité | Commandes intégrées | shutdown.exe /s /f /t 1 | Permet d'appeler la plupart des niveaux de NtPowerInformation(). À étudier. Permet d'appeler NtRaiseHardError() provoquant un BSOD immédiat et un vidage mémoire, pouvant conduire à une divulgation d'informations sensibles - voir le PoC par @daem0nc0re |
SeSyncAgent | Aucun | - | - | Le privilège n'est pas utilisé dans le système d'exploitation Windows. |
SeSystemEnvironment | Inconnu | Outil tiers | Le privilège permet d'utiliser NtSetSystemEnvironmentValue, NtModifyDriverEntry et d'autres appels système pour manipuler les variables UEFI. | Le privilège est requis pour exécuter sysprep.exe. De plus : |
SeSystemProfile | ? | ? | ? | |
SeSystemtime | Menace | Commandes intégrées | cmd.exe /c date 01-01-01cmd.exe /c time 00:00 | Le privilège permet de changer l'heure système, pouvant entraîner des problèmes d'intégrité de la piste d'audit, car les événements seront stockés avec une date/heure erronée. - Soyez prudent avec les formats de date/heure. Utilisez toujours des valeurs sûres si vous n'êtes pas sûr. - Parfois, le nom du privilège utilise un « T » majuscule et est appelé SeSystemTime. |
SeTakeOwnership | Admin | Commandes intégrées | 1. takeown.exe /f "%windir%\system32"2. icacls.exe "%windir%\system32" /grant "%username%":F3. Renommer cmd.exe en utilman.exe 4. Verrouiller la console et appuyer sur Win+U | L'attaque peut être détectée par certains antivirus. Une méthode alternative consiste à remplacer les binaires de services stockés dans « Program Files » en utilisant le même privilège. - Voir le PoC par @daem0nc0re |
SeTcb | Admin | Outil tiers | Manipuler des jetons pour inclure des droits admin locaux. | Exemple de code+exe créant des jetons arbitraires disponible sur PsBits. |
SeTimeZone | Désordre | Commandes intégrées | Changer le fuseau horaire. tzutil /s "Chatham Islands Standard Time" | |
SeTrustedCredManAccess | Menace | Outil tiers | Récupération des identifiants du Gestionnaire d'identifiants | Excellent article de blog par @tiraniddo. - voir le PoC par @daem0nc0re |
SeUndock | Aucun | - | - | Le privilège est activé lors du déverrouillage, mais jamais observé comme vérifié pour accorder/refuser l'accès. En pratique, cela signifie qu'il est en fait inutilisé et ne peut mener à aucune escalade. |
SeUnsolicitedInput | Aucun | - | - | Le privilège n'est pas utilisé dans le système d'exploitation Windows. |