NtAlpcDeleteSecurityContext
Libera un contexto SECURITY_QOS ALPC previamente creado con NtAlpcCreateSecurityContext.
Prototipo
NTSTATUS NtAlpcDeleteSecurityContext( HANDLE PortHandle, ULONG Flags, ALPC_HANDLE ContextHandle );
Argumentos
| Name | Type | Dir | Description |
|---|---|---|---|
| PortHandle | HANDLE | in | Handle al puerto ALPC que posee el contexto de seguridad. |
| Flags | ULONG | in | Reservado. Debe ser 0. |
| ContextHandle | ALPC_HANDLE | in | ALPC_HANDLE opaco devuelto por NtAlpcCreateSecurityContext; identifica el contexto QoS a liberar. |
IDs de syscalls por versión de Windows
| Versión de Windows | ID de syscall | Build |
|---|---|---|
| Win10 1507 | 0x7F | win10-1507 |
| Win10 1607 | 0x7F | win10-1607 |
| Win10 1703 | 0x80 | win10-1703 |
| Win10 1709 | 0x80 | win10-1709 |
| Win10 1803 | 0x81 | win10-1803 |
| Win10 1809 | 0x81 | win10-1809 |
| Win10 1903 | 0x81 | win10-1903 |
| Win10 1909 | 0x81 | win10-1909 |
| Win10 2004 | 0x83 | win10-2004 |
| Win10 20H2 | 0x83 | win10-20h2 |
| Win10 21H1 | 0x83 | win10-21h1 |
| Win10 21H2 | 0x83 | win10-21h2 |
| Win10 22H2 | 0x83 | win10-22h2 |
| Win11 21H2 | 0x83 | win11-21h2 |
| Win11 22H2 | 0x83 | win11-22h2 |
| Win11 23H2 | 0x83 | win11-23h2 |
| Win11 24H2 | 0x85 | win11-24h2 |
| Server 2016 | 0x7F | winserver-2016 |
| Server 2019 | 0x81 | winserver-2019 |
| Server 2022 | 0x83 | winserver-2022 |
| Server 2025 | 0x85 | winserver-2025 |
Módulo del kernel
APIs relacionadas
Stub del syscall
4C 8B D1 mov r10, rcx B8 85 00 00 00 mov eax, 0x85 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
Notas no documentadas
ALPC soporta un modelo `SECURITY_QUALITY_OF_SERVICE` *cacheado*: un cliente (o servidor) llama `NtAlpcCreateSecurityContext` una vez para materializar un contexto QoS con un token de cliente congelado, luego referencia ese contexto por `ALPC_HANDLE` en `NtAlpcImpersonateClientOfPort` posteriores en lugar de resnapshotear el token cada vez. `NtAlpcDeleteSecurityContext` libera el contexto permanentemente — el token snapshot se desreferencia, el slot de la tabla de contextos por-puerto se libera, y cualquier impersonación en vuelo que referencie el contexto comienza a recibir `STATUS_INVALID_HANDLE`. Se empareja con `NtAlpcRevokeSecurityContext`, que mantiene la entrada pero la invalida; la eliminación es el destructor.
Uso común por malware
Primitiva de limpieza defensiva — interés ofensivo limitado. El único abuso realista es un **use-after-free de carrera** donde un atacante fuerza al servidor a eliminar un contexto de seguridad mientras otro hilo del mismo puerto está en plena impersonación. El kernel ref-cuenta el objeto QoS subyacente, así que un UAF limpio es difícil de construir, pero algunos bugs históricos de puerto ALPC (`AlpcpCleanupPort`, hacia 2017-2019) implicaban orden incorrecto entre `NtAlpcDeleteSecurityContext` y send/receive concurrentes — corregidos en cumulativos. Ofensivamente, la llamada también puede usarse por fuzzers ALPC para verificar que el estado por-contexto del servidor se desmonta correctamente (detector de fuga).
Oportunidades de detección
No es señal útil aislada — todo servidor ALPC de larga vida (RPCSS, LSASS, spoolsv, sihost) la llama de rutina conforme las conexiones van y vienen. La única señal valiosa es un *orden anómalo*: eliminación seguida poco después por un crash del servidor, o eliminación precedida por una ráfaga inusual de `NtAlpcImpersonateClientOfPort` contra el mismo handle de contexto — ambas sugieren que alguien sondea un TOCTOU. Concentrarse en la correlación de ciclo de vida en ETW más que en este syscall directamente.
Ejemplos de syscalls directos
cCached-QoS cleanup
// Server tears down a cached impersonation context once a client disconnects.
#include <windows.h>
#include <winternl.h>
typedef PVOID ALPC_HANDLE;
NTSTATUS NTAPI NtAlpcDeleteSecurityContext(HANDLE, ULONG, ALPC_HANDLE);
void ReleaseClientQos(HANDLE serverPort, ALPC_HANDLE ctx) {
if (ctx) {
NtAlpcDeleteSecurityContext(serverPort, 0, ctx);
}
}asmx64 direct stub (Win11 24H2)
; Direct syscall stub for NtAlpcDeleteSecurityContext (SSN 0x85 on Win11 24H2 / Server 2025)
NtAlpcDeleteSecurityContext PROC
mov r10, rcx ; PortHandle
mov eax, 85h ; SSN
syscall
ret
NtAlpcDeleteSecurityContext ENDPMapeos MITRE ATT&CK
Last verified: 2026-05-20