NtRevertContainerImpersonation
Setzt eine Server-Silo- / Argon-Container-Impersonation auf den Host-Sicherheitskontext zurück.
Prototyp
NTSTATUS NtRevertContainerImpersonation(VOID);
Argumente
| Name | Type | Dir | Description |
|---|
Syscall-IDs pro Windows-Version
| Windows-Version | Syscall-ID | Build |
|---|---|---|
| Win10 1507 | 0x162 | win10-1507 |
| Win10 1607 | 0x169 | win10-1607 |
| Win10 1703 | 0x16F | win10-1703 |
| Win10 1709 | 0x172 | win10-1709 |
| Win10 1803 | 0x174 | win10-1803 |
| Win10 1809 | 0x175 | win10-1809 |
| Win10 1903 | 0x176 | win10-1903 |
| Win10 1909 | 0x176 | win10-1909 |
| Win10 2004 | 0x17C | win10-2004 |
| Win10 20H2 | 0x17C | win10-20h2 |
| Win10 21H1 | 0x17C | win10-21h1 |
| Win10 21H2 | 0x17E | win10-21h2 |
| Win10 22H2 | 0x17E | win10-22h2 |
| Win11 21H2 | 0x186 | win11-21h2 |
| Win11 22H2 | 0x189 | win11-22h2 |
| Win11 23H2 | 0x189 | win11-23h2 |
| Win11 24H2 | 0x18B | win11-24h2 |
| Server 2016 | 0x169 | winserver-2016 |
| Server 2019 | 0x175 | winserver-2019 |
| Server 2022 | 0x184 | winserver-2022 |
| Server 2025 | 0x18B | winserver-2025 |
Kernel-Modul
Verwandte APIs
Syscall-Stub
4C 8B D1 mov r10, rcx B8 8B 01 00 00 mov eax, 0x18B F6 04 25 08 03 FE 7F 01 test byte ptr [0x7FFE0308], 1 75 03 jne short +3 0F 05 syscall C3 ret CD 2E int 2Eh C3 ret
Undokumentierte Hinweise
NtRevertContainerImpersonation macht eine vorherige container-seitige Impersonation des Host-Tokens innerhalb eines Server Silos rückgängig (auch Argon-Container genannt — die mit Windows 10 eingeführte Kernel-Primitive hinter Windows Server Containers und dem process-isolated-Modus von Docker auf Windows). Die Gegenoperation — der Eintritt in die Host-Impersonation — erfolgt implizit, wenn ein silo-awarer Dienst die Silo-Grenze überschreitet. Es gibt keinen öffentlichen Win32-Wrapper; die Call-Surface wird fast ausschließlich vom Host Compute Service (vmcompute.exe), hcsshim und einigen Container-Manager-Komponenten genutzt. Der Syscall nimmt keine Argumente und wirkt auf das Impersonation-Token des aufrufenden Threads.
Häufige Malware-Nutzung
Sehr geringes Malware-Signal. Der Syscall ist nur in einem Server Silo sinnvoll — ein enges Deployment. Es gab akademisches und Red-Team-Interesse an Container-Escapes gegen hcsshim und vmcompute (insbesondere Palo Alto Unit 42's 'Siloscape'-Bericht von 2021, der legitime Container-Management-APIs missbrauchte statt diesen Syscall direkt), aber keine bekannte Commodity-Malware-Familie ruft NtRevertContainerImpersonation in freier Wildbahn auf. Dokumentation lohnt zur Vollständigkeit der Silo-Angriffsfläche, nicht wegen IOC-Wert.
Erkennungsmöglichkeiten
Telemetrie ist dünn. Die ETW-Provider Microsoft-Windows-Containers-CCG und Microsoft-Windows-Hyper-V-Compute emittieren Silo-Lifecycle-Ereignisse, exponieren diesen Syscall aber nicht direkt. Aus Verteidigersicht lautet die sinnvolle Frage 'hat ein unerwarteter Prozess in einem Container seinen Silo-Impersonation-Status manipuliert?' — beantwortbar durch Korrelation der Container-ID (PsGetSiloMonitorContextSlot) mit Parent-Image und Kommandozeile via Defender for Containers oder Sysmon-ImageLoad-Events auf vmcompute/hcs*-DLLs. Der Kernel-ETW-Provider Microsoft-Windows-Kernel-Process zeigt Token-Impersonation-Übergänge, die nach silo-gebundenen Threads filterbar sind.
Direkte Syscall-Beispiele
asmx64 direct stub (Win11 24H2)
; Direct syscall stub for NtRevertContainerImpersonation (SSN 0x18B, Win11 24H2)
NtRevertContainerImpersonation PROC
mov r10, rcx ; syscall convention
mov eax, 18Bh ; SSN
syscall
ret
NtRevertContainerImpersonation ENDPcDynamic resolution from ntdll
// No Win32 wrapper exists; resolve from ntdll directly.
typedef NTSTATUS (NTAPI *PFN_NtRevertContainerImpersonation)(VOID);
HMODULE hNtdll = GetModuleHandleW(L"ntdll.dll");
PFN_NtRevertContainerImpersonation pNtRevert =
(PFN_NtRevertContainerImpersonation)GetProcAddress(
hNtdll, "NtRevertContainerImpersonation");
if (pNtRevert) {
NTSTATUS s = pNtRevert();
// STATUS_SUCCESS only when called from inside a Server Silo with
// an active container-side host impersonation.
if (!NT_SUCCESS(s)) {
// STATUS_INVALID_PARAMETER outside a silo.
}
}MITRE ATT&CK-Mappings
Last verified: 2026-05-20