Skip to content

Commit 15c6e97

Browse files
authored
Update abusing-auto-updaters-and-ipc.md
1 parent 0e3a9b1 commit 15c6e97

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Abusing Enterprise Auto-Updaters and Privileged IPC (e.g., Netskope stAgentSvc)
1+
# Abusing Enterprise Auto-Updaters and Privileged IPC (e.g., Netskope, ASUS & MSI)
22

33
{{#include ../../banners/hacktricks-training.md}}
44

@@ -103,7 +103,7 @@ Because you never used PROCESS_CREATE_THREAD or PROCESS_SUSPEND_RESUME on an alr
103103
- UpSkope is a custom IPC client that crafts arbitrary (optionally AES\-encrypted) IPC messages and includes the suspended\-process injection to originate from an allow\-listed binary.
104104

105105
---
106-
## 8) Browser\-to\-localhost CSRF against privileged HTTP APIs (ASUS DriverHub)
106+
## 1) Browser\-to\-localhost CSRF against privileged HTTP APIs (ASUS DriverHub)
107107

108108
DriverHub ships a user\-mode HTTP service (ADU.exe) on 127.0.0.1:53000 that expects browser calls coming from https://driverhub.asus.com. The origin filter simply performs `string_contains(".asus.com")` over the Origin header and over download URLs exposed by `/asus/v1.0/*`. Any attacker\-controlled host such as `https://driverhub.asus.com.attacker.tld` therefore passes the check and can issue state\-changing requests from JavaScript. See [CSRF basics](../../pentesting-web/csrf-cross-site-request-forgery.md) for additional bypass patterns.
109109

@@ -131,7 +131,7 @@ Invoke-WebRequest -Uri "http://127.0.0.1:53000/asus/v1.0/Reboot" -Method Post \
131131
Any browser visit to the attacker site therefore becomes a 1\-click (or 0\-click via `onload`) local CSRF that drives a SYSTEM helper.
132132

133133
---
134-
## 9) Insecure code\-signing verification & certificate cloning (ASUS UpdateApp)
134+
## 2) Insecure code\-signing verification & certificate cloning (ASUS UpdateApp)
135135

136136
`/asus/v1.0/UpdateApp` downloads arbitrary executables defined in the JSON body and caches them in `C:\ProgramData\ASUS\AsusDriverHub\SupportTemp`. Download URL validation reuses the same substring logic, so `http://updates.asus.com.attacker.tld:8000/payload.exe` is accepted. After download, ADU.exe merely checks that the PE contains a signature and that the Subject string matches ASUS before running it – no `WinVerifyTrust`, no chain validation.
137137

@@ -143,7 +143,7 @@ To weaponize the flow:
143143
Because both the Origin and URL filters are substring\-based and the signer check only compares strings, DriverHub pulls and executes the attacker binary under its elevated context.
144144

145145
---
146-
## 9) TOCTOU inside updater copy/execute paths (MSI Center CMD_AutoUpdateSDK)
146+
## 1) TOCTOU inside updater copy/execute paths (MSI Center CMD_AutoUpdateSDK)
147147

148148
MSI Center’s SYSTEM service exposes a TCP protocol where each frame is `4-byte ComponentID || 8-byte CommandID || ASCII arguments`. The core component (Component ID `0f 27 00 00`) ships `CMD_AutoUpdateSDK = {05 03 01 08 FF FF FF FC}`. Its handler:
149149
1) Copies the supplied executable to `C:\Windows\Temp\MSI Center SDK.exe`.
@@ -157,7 +157,7 @@ The copied file is not locked between verification and `ExecuteTask()`. An attac
157157
When the scheduler fires, it executes the overwritten payload under SYSTEM despite having validated the original file. Reliable exploitation uses two goroutines/threads that spam CMD_AutoUpdateSDK until the TOCTOU window is won.
158158

159159
---
160-
## 10) Abusing custom SYSTEM-level IPC & impersonation (MSI Center + Acer Control Centre)
160+
## 2) Abusing custom SYSTEM-level IPC & impersonation (MSI Center + Acer Control Centre)
161161

162162
### MSI Center TCP command sets
163163
- Every plugin/DLL loaded by `MSI.CentralServer.exe` receives a Component ID stored under `HKLM\SOFTWARE\MSI\MSI_CentralServer`. The first 4 bytes of a frame select that component, allowing attackers to route commands to arbitrary modules.

0 commit comments

Comments
 (0)