Translated ['src/windows-hardening/checklist-windows-privilege-escalatio

This commit is contained in:
Translator 2025-09-03 14:47:19 +00:00
parent 6ddeb728dd
commit b2c8a629e3
4 changed files with 515 additions and 407 deletions

View File

@ -236,6 +236,7 @@
- [Authentication Credentials Uac And Efs](windows-hardening/authentication-credentials-uac-and-efs.md)
- [Checklist - Local Windows Privilege Escalation](windows-hardening/checklist-windows-privilege-escalation.md)
- [Windows Local Privilege Escalation](windows-hardening/windows-local-privilege-escalation/README.md)
- [Abusing Auto Updaters And Ipc](windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md)
- [Arbitrary Kernel Rw Token Theft](windows-hardening/windows-local-privilege-escalation/arbitrary-kernel-rw-token-theft.md)
- [Dll Hijacking](windows-hardening/windows-local-privilege-escalation/dll-hijacking.md)
- [Abusing Tokens](windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens.md)

View File

@ -1,114 +1,115 @@
# Checkliste - Lokale Windows Privilegieneskalation
# Checkliste - Local Windows Privilege Escalation
{{#include ../banners/hacktricks-training.md}}
### **Bestes Tool zur Suche nach Windows lokalen Privilegieneskalationsvektoren:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)
### **Bestes Tool, um Windows local privilege escalation vectors zu finden:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)
### [Systeminfo](windows-local-privilege-escalation/index.html#system-info)
### [System Info](windows-local-privilege-escalation/index.html#system-info)
- [ ] [**Systeminformationen**](windows-local-privilege-escalation/index.html#system-info) abrufen
- [ ] Nach **Kernel** [**Exploits mit Skripten**](windows-local-privilege-escalation/index.html#version-exploits) suchen
- [ ] **Google verwenden, um nach** Kernel **Exploits** zu suchen
- [ ] **searchsploit verwenden, um nach** Kernel **Exploits** zu suchen
- [ ] Interessante Informationen in [**Umgebungsvariablen**](windows-local-privilege-escalation/index.html#environment)?
- [ ] Passwörter im [**PowerShell-Verlauf**](windows-local-privilege-escalation/index.html#powershell-history)?
- [ ] Interessante Informationen in [**Internet-Einstellungen**](windows-local-privilege-escalation/index.html#internet-settings)?
- [ ] [**Laufwerke**](windows-local-privilege-escalation/index.html#drives)?
- [ ] [**WSUS-Exploit**](windows-local-privilege-escalation/index.html#wsus)?
- [ ] Beschaffe [**System information**](windows-local-privilege-escalation/index.html#system-info)
- [ ] Suche nach **kernel** [**exploits using scripts**](windows-local-privilege-escalation/index.html#version-exploits)
- [ ] Verwende Google, um nach kernel exploits zu suchen
- [ ] Verwende searchsploit, um nach kernel exploits zu suchen
- [ ] Interessante Infos in [**env vars**](windows-local-privilege-escalation/index.html#environment)?
- [ ] Passwörter in [**PowerShell history**](windows-local-privilege-escalation/index.html#powershell-history)?
- [ ] Interessante Infos in [**Internet settings**](windows-local-privilege-escalation/index.html#internet-settings)?
- [ ] [**Drives**](windows-local-privilege-escalation/index.html#drives)?
- [ ] [**WSUS exploit**](windows-local-privilege-escalation/index.html#wsus)?
- [ ] [**Third-party agent auto-updaters / IPC abuse**](windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md)
- [ ] [**AlwaysInstallElevated**](windows-local-privilege-escalation/index.html#alwaysinstallelevated)?
### [Protokollierung/AV-Enumeration](windows-local-privilege-escalation/index.html#enumeration)
### [Logging/AV enumeration](windows-local-privilege-escalation/index.html#enumeration)
- [ ] [**Audit**](windows-local-privilege-escalation/index.html#audit-settings) und [**WEF**](windows-local-privilege-escalation/index.html#wef) Einstellungen überprüfen
- [ ] [**LAPS**](windows-local-privilege-escalation/index.html#laps) überprüfen
- [ ] Überprüfen, ob [**WDigest**](windows-local-privilege-escalation/index.html#wdigest) aktiv ist
- [ ] [**LSA-Schutz**](windows-local-privilege-escalation/index.html#lsa-protection)?
- [ ] Prüfe [**Audit** ](windows-local-privilege-escalation/index.html#audit-settings)und [**WEF** ](windows-local-privilege-escalation/index.html#wef)-Einstellungen
- [ ] Prüfe [**LAPS**](windows-local-privilege-escalation/index.html#laps)
- [ ] Prüfe, ob [**WDigest** ](windows-local-privilege-escalation/index.html#wdigest)aktiv ist
- [ ] [**LSA Protection**](windows-local-privilege-escalation/index.html#lsa-protection)?
- [ ] [**Credentials Guard**](windows-local-privilege-escalation/index.html#credentials-guard)[?](windows-local-privilege-escalation/index.html#cached-credentials)
- [ ] [**Zwischengespeicherte Anmeldeinformationen**](windows-local-privilege-escalation/index.html#cached-credentials)?
- [ ] Überprüfen, ob ein [**AV**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/windows-av-bypass/README.md) vorhanden ist
- [ ] [**AppLocker-Richtlinie**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/authentication-credentials-uac-and-efs/README.md#applocker-policy)?
- [ ] [**Cached Credentials**](windows-local-privilege-escalation/index.html#cached-credentials)?
- [ ] Prüfe, ob irgendeine [**AV**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/windows-av-bypass/README.md) vorhanden ist
- [ ] [**AppLocker Policy**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/authentication-credentials-uac-and-efs/README.md#applocker-policy)?
- [ ] [**UAC**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/authentication-credentials-uac-and-efs/uac-user-account-control/README.md)
- [ ] [**Benutzerprivilegien**](windows-local-privilege-escalation/index.html#users-and-groups)
- [ ] [**Aktuelle** Benutzer **privilegien**](windows-local-privilege-escalation/index.html#users-and-groups) überprüfen
- [ ] Sind Sie [**Mitglied einer privilegierten Gruppe**](windows-local-privilege-escalation/index.html#privileged-groups)?
- [ ] Überprüfen, ob Sie [eines dieser Tokens aktiviert haben](windows-local-privilege-escalation/index.html#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ?
- [ ] [**Benutzersitzungen**](windows-local-privilege-escalation/index.html#logged-users-sessions)?
- [ ] Überprüfen[ **Benutzerverzeichnisse**](windows-local-privilege-escalation/index.html#home-folders) (Zugriff?)
- [ ] [**Passwortrichtlinie**](windows-local-privilege-escalation/index.html#password-policy) überprüfen
- [ ] Was ist [**in der Zwischenablage**](windows-local-privilege-escalation/index.html#get-the-content-of-the-clipboard)?
- [ ] [**User Privileges**](windows-local-privilege-escalation/index.html#users-and-groups)
- [ ] Prüfe die **aktuellen** Benutzer**privilegien**(windows-local-privilege-escalation/index.html#users-and-groups)
- [ ] Bist du [**Mitglied einer privilegierten Gruppe**](windows-local-privilege-escalation/index.html#privileged-groups)?
- [ ] Prüfe, ob du eines dieser Tokens aktiviert hast: **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ?
- [ ] [**Users Sessions**](windows-local-privilege-escalation/index.html#logged-users-sessions)?
- [ ] Prüfe [ **users homes**](windows-local-privilege-escalation/index.html#home-folders) (Zugriff?)
- [ ] Prüfe die [**Password Policy**](windows-local-privilege-escalation/index.html#password-policy)
- [ ] Was ist [ **inside the Clipboard**](windows-local-privilege-escalation/index.html#get-the-content-of-the-clipboard)?
### [Netzwerk](windows-local-privilege-escalation/index.html#network)
### [Network](windows-local-privilege-escalation/index.html#network)
- [ ] **Aktuelle** [**Netzwerkinformationen**](windows-local-privilege-escalation/index.html#network) überprüfen
- [ ] **Versteckte lokale Dienste** überprüfen, die auf das Internet beschränkt sind
- [ ] Prüfe die **aktuellen** [**Network** **information**](windows-local-privilege-escalation/index.html#network)
- [ ] Prüfe **versteckte lokale Dienste**, die nach außen beschränkt sind
### [Ausgeführte Prozesse](windows-local-privilege-escalation/index.html#running-processes)
### [Running Processes](windows-local-privilege-escalation/index.html#running-processes)
- [ ] Prozesse Binärdateien [**Datei- und Ordnersicherheitsberechtigungen**](windows-local-privilege-escalation/index.html#file-and-folder-permissions)
- [ ] [**Speicherpasswort-Mining**](windows-local-privilege-escalation/index.html#memory-password-mining)
- [ ] [**Unsichere GUI-Apps**](windows-local-privilege-escalation/index.html#insecure-gui-apps)
- [ ] Anmeldeinformationen mit **interessanten Prozessen** über `ProcDump.exe` stehlen? (firefox, chrome, usw...)
- [ ] Zugriffsrechte auf Prozess-Binaries: [**file and folders permissions**](windows-local-privilege-escalation/index.html#file-and-folder-permissions)
- [ ] [**Memory Password mining**](windows-local-privilege-escalation/index.html#memory-password-mining)
- [ ] [**Insecure GUI apps**](windows-local-privilege-escalation/index.html#insecure-gui-apps)
- [ ] Credentials stehlen mit **interessanten Prozessen** via `ProcDump.exe` ? (firefox, chrome, usw.)
### [Dienste](windows-local-privilege-escalation/index.html#services)
### [Services](windows-local-privilege-escalation/index.html#services)
- [ ] [Können Sie **irgendeinen Dienst** ändern?](windows-local-privilege-escalation/index.html#permissions)
- [ ] [Können Sie **die Binärdatei** ändern, die von einem **Dienst** **ausgeführt** wird?](windows-local-privilege-escalation/index.html#modify-service-binary-path)
- [ ] [Können Sie **die Registrierung** eines **Dienstes** ändern?](windows-local-privilege-escalation/index.html#services-registry-modify-permissions)
- [ ] [Können Sie von einem **nicht zitierten Dienst** Binärdateipfad profitieren?](windows-local-privilege-escalation/index.html#unquoted-service-paths)
- [ ] Kannst du einen Dienst **modifizieren**? (Can you **modify any service**?)
- [ ] Kannst du die **binary**, die von einem Dienst **ausgeführt** wird, **ändern**? (Can you **modify** the **binary** that is **executed** by any **service**?)
- [ ] Kannst du die **Registry** eines Dienstes **ändern**? (Can you **modify** the **registry** of any **service**?)
- [ ] Kannst du von einem **unquoted service** binary **path** profitieren? (Can you take advantage of any **unquoted service** binary **path**?)
### [**Anwendungen**](windows-local-privilege-escalation/index.html#applications)
### [**Applications**](windows-local-privilege-escalation/index.html#applications)
- [ ] **Schreib** [**Berechtigungen für installierte Anwendungen**](windows-local-privilege-escalation/index.html#write-permissions)
- [ ] [**Startup-Anwendungen**](windows-local-privilege-escalation/index.html#run-at-startup)
- [ ] **Verwundbare** [**Treiber**](windows-local-privilege-escalation/index.html#drivers)
- [ ] **Write** [**permissions on installed applications**](windows-local-privilege-escalation/index.html#write-permissions)
- [ ] [**Startup Applications**](windows-local-privilege-escalation/index.html#run-at-startup)
- [ ] **Vulnerable** [**Drivers**](windows-local-privilege-escalation/index.html#drivers)
### [DLL-Hijacking](windows-local-privilege-escalation/index.html#path-dll-hijacking)
### [DLL Hijacking](windows-local-privilege-escalation/index.html#path-dll-hijacking)
- [ ] Können Sie **in einen beliebigen Ordner im PATH schreiben**?
- [ ] Gibt es eine bekannte Dienstbinärdatei, die **versucht, eine nicht existierende DLL zu laden**?
- [ ] Können Sie **in einen beliebigen** Binärdateiordner **schreiben**?
- [ ] Kannst du in irgendeinen Ordner innerhalb von PATH **schreiben**?
- [ ] Gibt es einen bekannten Service-Binary, der versucht, eine nicht-existente DLL zu laden?
- [ ] Kannst du in einen **Binaries-Ordner** **schreiben**?
### [Netzwerk](windows-local-privilege-escalation/index.html#network)
### [Network](windows-local-privilege-escalation/index.html#network)
- [ ] Das Netzwerk auflisten (Freigaben, Schnittstellen, Routen, Nachbarn, ...)
- [ ] Besonders auf Netzwerkdienste achten, die auf localhost (127.0.0.1) hören
- [ ] Netzwerk enumerieren (Shares, Interfaces, Routes, Neighbours, ...)
- [ ] Achte besonders auf Netzwerkdienste, die auf localhost (127.0.0.1) lauschen
### [Windows-Anmeldeinformationen](windows-local-privilege-escalation/index.html#windows-credentials)
### [Windows Credentials](windows-local-privilege-escalation/index.html#windows-credentials)
- [ ] [**Winlogon**](windows-local-privilege-escalation/index.html#winlogon-credentials) Anmeldeinformationen
- [ ] [**Windows Vault**](windows-local-privilege-escalation/index.html#credentials-manager-windows-vault) Anmeldeinformationen, die Sie verwenden könnten?
- [ ] Interessante [**DPAPI-Anmeldeinformationen**](windows-local-privilege-escalation/index.html#dpapi)?
- [ ] Passwörter von gespeicherten [**WLAN-Netzwerken**](windows-local-privilege-escalation/index.html#wifi)?
- [ ] Interessante Informationen in [**gespeicherten RDP-Verbindungen**](windows-local-privilege-escalation/index.html#saved-rdp-connections)?
- [ ] Passwörter in [**kürzlich ausgeführten Befehlen**](windows-local-privilege-escalation/index.html#recently-run-commands)?
- [ ] [**Remote Desktop Credential Manager**](windows-local-privilege-escalation/index.html#remote-desktop-credential-manager) Passwörter?
- [ ] [**AppCmd.exe** existiert](windows-local-privilege-escalation/index.html#appcmd-exe)? Anmeldeinformationen?
- [ ] [**SCClient.exe**](windows-local-privilege-escalation/index.html#scclient-sccm)? DLL-Seitenladung?
- [ ] [**Winlogon** ](windows-local-privilege-escalation/index.html#winlogon-credentials)credentials
- [ ] [**Windows Vault**](windows-local-privilege-escalation/index.html#credentials-manager-windows-vault) Credentials, die du verwenden könntest?
- [ ] Interessante [**DPAPI credentials**](windows-local-privilege-escalation/index.html#dpapi)?
- [ ] Passwörter von gespeicherten [**Wifi networks**](windows-local-privilege-escalation/index.html#wifi)?
- [ ] Interessante Infos in [**saved RDP Connections**](windows-local-privilege-escalation/index.html#saved-rdp-connections)?
- [ ] Passwörter in [**recently run commands**](windows-local-privilege-escalation/index.html#recently-run-commands)?
- [ ] [**Remote Desktop Credentials Manager**](windows-local-privilege-escalation/index.html#remote-desktop-credential-manager) Passwörter?
- [ ] [**AppCmd.exe** exists](windows-local-privilege-escalation/index.html#appcmd-exe)? Credentials?
- [ ] [**SCClient.exe**](windows-local-privilege-escalation/index.html#scclient-sccm)? DLL Side Loading?
### [Dateien und Registrierung (Anmeldeinformationen)](windows-local-privilege-escalation/index.html#files-and-registry-credentials)
### [Files and Registry (Credentials)](windows-local-privilege-escalation/index.html#files-and-registry-credentials)
- [ ] **Putty:** [**Anmeldeinformationen**](windows-local-privilege-escalation/index.html#putty-creds) **und** [**SSH-Hostschlüssel**](windows-local-privilege-escalation/index.html#putty-ssh-host-keys)
- [ ] [**SSH-Schlüssel in der Registrierung**](windows-local-privilege-escalation/index.html#ssh-keys-in-registry)?
- [ ] Passwörter in [**unbeaufsichtigten Dateien**](windows-local-privilege-escalation/index.html#unattended-files)?
- [ ] **Putty:** [**Creds**](windows-local-privilege-escalation/index.html#putty-creds) **and** [**SSH host keys**](windows-local-privilege-escalation/index.html#putty-ssh-host-keys)
- [ ] [**SSH keys in registry**](windows-local-privilege-escalation/index.html#ssh-keys-in-registry)?
- [ ] Passwörter in [**unattended files**](windows-local-privilege-escalation/index.html#unattended-files)?
- [ ] Irgendein [**SAM & SYSTEM**](windows-local-privilege-escalation/index.html#sam-and-system-backups) Backup?
- [ ] [**Cloud-Anmeldeinformationen**](windows-local-privilege-escalation/index.html#cloud-credentials)?
- [ ] [**Cloud credentials**](windows-local-privilege-escalation/index.html#cloud-credentials)?
- [ ] [**McAfee SiteList.xml**](windows-local-privilege-escalation/index.html#mcafee-sitelist.xml) Datei?
- [ ] [**Zwischengespeichertes GPP-Passwort**](windows-local-privilege-escalation/index.html#cached-gpp-pasword)?
- [ ] Passwort in [**IIS-Webkonfigurationsdatei**](windows-local-privilege-escalation/index.html#iis-web-config)?
- [ ] Interessante Informationen in [**Webprotokollen**](windows-local-privilege-escalation/index.html#logs)?
- [ ] Möchten Sie [**den Benutzer nach Anmeldeinformationen fragen**](windows-local-privilege-escalation/index.html#ask-for-credentials)?
- [ ] Interessante [**Dateien im Papierkorb**](windows-local-privilege-escalation/index.html#credentials-in-the-recyclebin)?
- [ ] Andere [**Registrierungen mit Anmeldeinformationen**](windows-local-privilege-escalation/index.html#inside-the-registry)?
- [ ] In [**Browserdaten**](windows-local-privilege-escalation/index.html#browsers-history) (Datenbanken, Verlauf, Lesezeichen, ...)?
- [ ] [**Allgemeine Passwortsuche**](windows-local-privilege-escalation/index.html#generic-password-search-in-files-and-registry) in Dateien und Registrierung
- [ ] [**Tools**](windows-local-privilege-escalation/index.html#tools-that-search-for-passwords) zur automatischen Passwortsuche
- [ ] [**Cached GPP Password**](windows-local-privilege-escalation/index.html#cached-gpp-pasword)?
- [ ] Passwort in [**IIS Web config file**](windows-local-privilege-escalation/index.html#iis-web-config)?
- [ ] Interessante Infos in [**web** **logs**](windows-local-privilege-escalation/index.html#logs)?
- [ ] Willst du den Benutzer nach [**credentials**](windows-local-privilege-escalation/index.html#ask-for-credentials) fragen?
- [ ] Interessante [**files inside the Recycle Bin**](windows-local-privilege-escalation/index.html#credentials-in-the-recyclebin)?
- [ ] Andere [**registry containing credentials**](windows-local-privilege-escalation/index.html#inside-the-registry)?
- [ ] In [**Browser data**](windows-local-privilege-escalation/index.html#browsers-history) (dbs, history, bookmarks, ...)?
- [ ] [**Generic password search**](windows-local-privilege-escalation/index.html#generic-password-search-in-files-and-registry) in Dateien und Registry
- [ ] [**Tools**](windows-local-privilege-escalation/index.html#tools-that-search-for-passwords) zum automatischen Suchen nach Passwörtern
### [Leckende Handler](windows-local-privilege-escalation/index.html#leaked-handlers)
### [Leaked Handlers](windows-local-privilege-escalation/index.html#leaked-handlers)
- [ ] Haben Sie Zugriff auf einen Handler eines Prozesses, der von einem Administrator ausgeführt wird?
- [ ] Hast du Zugriff auf irgendeinen Handler eines Prozesses, der von einem Administrator ausgeführt wird?
### [Pipe-Client-Impersonation](windows-local-privilege-escalation/index.html#named-pipe-client-impersonation)
### [Pipe Client Impersonation](windows-local-privilege-escalation/index.html#named-pipe-client-impersonation)
- [ ] Überprüfen, ob Sie es ausnutzen können
- [ ] Prüfe, ob du es ausnutzen kannst
{{#include ../banners/hacktricks-training.md}}

View File

@ -0,0 +1,123 @@
# Missbrauch von Enterprise AutoUpdaters und privilegierter IPC (z. B. Netskope stAgentSvc)
{{#include ../../banners/hacktricks-training.md}}
Diese Seite verallgemeinert eine Klasse von Windows Local Privilege EscalationKetten, die in EnterpriseEndpointAgenten und Updatern vorkommen und eine niedrigschwellige IPCSchnittstelle sowie einen privilegierten UpdateFlow bereitstellen. Ein repräsentatives Beispiel ist Netskope Client für Windows < R129 (CVE-2025-0309), bei dem ein niedrig privilegierter Benutzer eine Enrollment auf einen Angreiferkontrollierten Server erzwingen und anschließend ein bösartiges MSI liefern kann, das vom SYSTEMDienst installiert wird.
Kernideen, die sich gegen ähnliche Produkte wiederverwenden lassen:
- Missbrauche die localhostIPC eines privilegierten Dienstes, um eine erneute Enrollment oder Neukonfiguration auf einen AngreiferServer zu erzwingen.
- Implementiere die UpdateEndpoints des Vendors, liefere ein rogue Trusted Root CA und weise den Updater auf ein bösartiges, „signed“ Paket.
- Umgehe schwache SignerChecks (CN allowlists), optionale DigestFlags und lax konfigurierte MSIEigenschaften.
- Wenn IPC „encrypted“ ist, leite Key/IV aus weltweit lesbaren MaschinenIdentifikatoren ab, die in der Registry gespeichert sind.
- Wenn der Dienst Anrufer nach ImagePfad/Prozessname einschränkt, injiziere in einen allowlisted Prozess oder spawn einen Prozess suspended und bootstrappe deine DLL via eines minimalen threadcontext patches.
---
## 1) Erzwingen der Enrollment zu einem AngreiferServer über localhostIPC
Viele Agenten liefern einen UserMode UIProzess, der über localhost TCP mittels JSON mit einem SYSTEMDienst kommuniziert.
Beobachtet in Netskope:
- UI: stAgentUI (niedrige Integrität) ↔ Service: stAgentSvc (SYSTEM)
- IPC command ID 148: IDP_USER_PROVISIONING_WITH_TOKEN
ExploitAblauf:
1) Erzeuge ein JWT EnrollmentToken, dessen Claims den BackendHost steuern (z. B. AddonUrl). Verwende alg=None, sodass keine Signatur erforderlich ist.
2) Sende die IPCNachricht, die den ProvisioningBefehl mit deinem JWT und dem TenantNamen auslöst:
```json
{
"148": {
"idpTokenValue": "<JWT with AddonUrl=attacker-host; header alg=None>",
"tenantName": "TestOrg"
}
}
```
3) Der Dienst beginnt, deinen rogue server wegen enrollment/config anzusprechen, z. B.:
- /v1/externalhost?service=enrollment
- /config/user/getbrandingbyemail
Hinweise:
- Wenn die CallerVerifizierung pfad-/namenbasiert ist, lasse die Anfrage von einem auf der AllowList stehenden VendorBinary ausgehen (siehe §4).
---
## 2) Hijacking the update channel to run code as SYSTEM
Sobald der Client mit deinem Server kommuniziert, implementiere die erwarteten Endpunkte und leite ihn zu einem attacker MSI. Typische Abfolge:
1) /v2/config/org/clientconfig → Gib eine JSONKonfiguration zurück mit einem sehr kurzen UpdaterIntervall, z. B.:
```json
{
"clientUpdate": { "updateIntervalInMin": 1 },
"check_msi_digest": false
}
```
2) /config/ca/cert → Return a PEM CA certificate. Der Dienst installiert es in den Local Machine Trusted Root store.
3) /v2/checkupdate → Supply metadata pointing to a malicious MSI and a fake version.
Bypassing common checks seen in the wild:
- Signer CN allowlist: der Dienst prüft möglicherweise nur, ob das Subject CN gleich “netSkope Inc” oder “Netskope, Inc.” ist. Deine rogue CA kann ein Leaf mit diesem CN ausstellen und das MSI signieren.
- CERT_DIGEST property: füge eine harmlose MSIEigenschaft mit dem Namen CERT_DIGEST ein. Wird bei der Installation nicht durchgesetzt.
- Optional digest enforcement: ein ConfigFlag (z. B. check_msi_digest=false) deaktiviert zusätzliche kryptografische Validierung.
Result: Der SYSTEMDienst installiert dein MSI von
C:\ProgramData\Netskope\stAgent\data\*.msi
und führt beliebigen Code als NT AUTHORITY\SYSTEM aus.
---
## 3) Forging encrypted IPC requests (when present)
Ab R127 verpackte Netskope IPCJSON in ein encryptDataFeld, das wie Base64 aussieht. ReverseEngineering zeigte AES mit Key/IV, die aus registryWerten abgeleitet werden, die von jedem Benutzer lesbar sind:
- Key = HKLM\SOFTWARE\NetSkope\Provisioning\nsdeviceidnew
- IV = HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID
Angreifer können die Verschlüsselung reproduzieren und gültige verschlüsselte Befehle von einem StandardBenutzer senden. Genereller Tipp: wenn ein Agent plötzlich seine IPC „verschlüsselt“, suche nach device IDs, product GUIDs, install IDs unter HKLM als Material.
---
## 4) Bypassing IPC caller allowlists (path/name checks)
Einige Dienste versuchen, den Peer zu authentifizieren, indem sie die PID der TCPVerbindung auflösen und den ImagePfad/-Namen mit allowgelisteten VendorBinaries unter Program Files vergleichen (z. B. stagentui.exe, bwansvc.exe, epdlp.exe).
Zwei praktische Umgehungen:
- DLLInjection in einen allowgelisteten Prozess (z. B. nsdiag.exe) und Proxying der IPC von innen heraus.
- Einen allowgelisteten Binary suspended starten und dein ProxyDLL bootstrappen ohne CreateRemoteThread (siehe §5), um driverdurchgesetzte TamperRegeln zu erfüllen.
---
## 5) Tamperprotection friendly injection: suspended process + NtContinue patch
Produkte liefern oft einen minifilter/OB callbacks Driver (z. B. Stadrv), der gefährliche Rechte von Handles zu geschützten Prozessen entfernt:
- Process: entfernt PROCESS_TERMINATE, PROCESS_CREATE_THREAD, PROCESS_VM_READ, PROCESS_DUP_HANDLE, PROCESS_SUSPEND_RESUME
- Thread: beschränkt auf THREAD_GET_CONTEXT, THREAD_QUERY_LIMITED_INFORMATION, THREAD_RESUME, SYNCHRONIZE
Ein zuverlässiger UserMode Loader, der diese Einschränkungen respektiert:
1) CreateProcess eines VendorBinaries mit CREATE_SUSPENDED.
2) Handle erhalten, die noch erlaubt sind: PROCESS_VM_WRITE | PROCESS_VM_OPERATION am Prozess und ein ThreadHandle mit THREAD_GET_CONTEXT/THREAD_SET_CONTEXT (oder nur THREAD_RESUME, wenn du Code bei einem bekannten RIP patchst).
3) ntdll!NtContinue (oder eine andere frühe, garantiert gemappte Thunk) mit einem winzigen Stub überschreiben, der LoadLibraryW auf deinem DLLPfad aufruft und dann zurückspringt.
4) ResumeThread, um deinen Stub im Prozess auszulösen und deine DLL zu laden.
Weil du PROCESS_CREATE_THREAD oder PROCESS_SUSPEND_RESUME bei einem bereits geschützten Prozess nie benutzt hast (du hast den Prozess selbst erstellt), ist die Policy des Drivers erfüllt.
---
## 6) Practical tooling
- NachoVPN (Netskope plugin) automatisiert eine rogue CA, malicious MSI signing und stellt die benötigten Endpunkte bereit: /v2/config/org/clientconfig, /config/ca/cert, /v2/checkupdate.
- UpSkope ist ein custom IPCClient, der beliebige (optional AESverschlüsselte) IPCNachrichten erstellt und die suspendedprocess Injection beinhaltet, damit sie von einem allowgelisteten Binary ausgeht.
---
## 7) Detection opportunities (blue team)
- Überwache Hinzufügungen zum Local Machine Trusted Root. Sysmon + registrymod Eventing (siehe SpecterOps Guidance) funktioniert gut.
- Markiere MSIAusführungen, die vom AgentService aus Pfaden wie C:\ProgramData\<vendor>\<agent>\data\*.msi initiiert werden.
- Prüfe AgentLogs auf unerwartete Enrollment Hosts/Tenants, z. B.: C:\ProgramData\netskope\stagent\logs\nsdebuglog.log suche nach addonUrl / tenantAnomalien und provisioning msg 148.
- Alarmiere bei localhost IPCClients, die nicht die erwarteten signed Binaries sind oder aus ungewöhnlichen ChildProcessTrees stammen.
---
## Hardening tips for vendors
- Binde Enrollment/UpdateHosts an eine strikte AllowList; lehne untrusted Domains in clientcode ab.
- Authentifiziere IPCPeers mit OSPrimitiven (ALPC security, namedpipe SIDs) statt mit ImagePfad/-NamenChecks.
- Halte secret Material aus worldreadable HKLM; falls IPC verschlüsselt werden muss, leite Keys aus geschützten Secrets ab oder verhandle über authentifizierte Kanäle.
- Behandle den Updater als SupplyChainAngriffsfläche: erfordere eine vollständige Kette zu einer trusted CA, die du kontrollierst, verifiziere PaketSignaturen gegen gepinnte Keys und fail closed, wenn Validierung in der Config deaktiviert ist.
## References
- [Advisory Netskope Client for Windows Local Privilege Escalation via Rogue Server (CVE-2025-0309)](https://blog.amberwolf.com/blog/2025/august/advisory---netskope-client-for-windows---local-privilege-escalation-via-rogue-server/)
- [NachoVPN Netskope plugin](https://github.com/AmberWolfCyber/NachoVPN)
- [UpSkope Netskope IPC client/exploit](https://github.com/AmberWolfCyber/UpSkope)
- [NVD CVE-2025-0309](https://nvd.nist.gov/vuln/detail/CVE-2025-0309)
{{#include ../../banners/hacktricks-training.md}}