NtPrivilegedServiceAuditAlarm
Emittiert einen Security-Eventlog-Eintrag, der eine privilegierte Dienst-Operation meldet (Event 4673).
Prototyp
NTSTATUS NtPrivilegedServiceAuditAlarm( PUNICODE_STRING SubsystemName, PUNICODE_STRING ServiceName, HANDLE ClientToken, PPRIVILEGE_SET Privileges, BOOLEAN AccessGranted );
Argumente
| Name | Type | Dir | Description |
|---|---|---|---|
| SubsystemName | PUNICODE_STRING | in | Im resultierenden Event angezeigter Subsystemname, typischerweise L"Security". |
| ServiceName | PUNICODE_STRING | in | Freier Service-Name (z. B. L"DRIVERS", L"BackupService"), der dem Event beigefügt wird. |
| ClientToken | HANDLE | in | Impersonation-Token des Clients, dessen Privilegiennutzung aufgezeichnet wird. |
| Privileges | PPRIVILEGE_SET | in | Genutzter Privilegien-Satz (z. B. {SeLoadDriverPrivilege}). |
| AccessGranted | BOOLEAN | in | TRUE bei erfolgreicher privilegierter Operation, FALSE bei versuchter-aber-verweigerter. |
Syscall-IDs pro Windows-Version
| Windows-Version | Syscall-ID | Build |
|---|---|---|
| Win10 1507 | 0x124 | win10-1507 |
| Win10 1607 | 0x12A | win10-1607 |
| Win10 1703 | 0x12E | win10-1703 |
| Win10 1709 | 0x130 | win10-1709 |
| Win10 1803 | 0x132 | win10-1803 |
| Win10 1809 | 0x133 | win10-1809 |
| Win10 1903 | 0x134 | win10-1903 |
| Win10 1909 | 0x134 | win10-1909 |
| Win10 2004 | 0x139 | win10-2004 |
| Win10 20H2 | 0x139 | win10-20h2 |
| Win10 21H1 | 0x139 | win10-21h1 |
| Win10 21H2 | 0x13A | win10-21h2 |
| Win10 22H2 | 0x13A | win10-22h2 |
| Win11 21H2 | 0x140 | win11-21h2 |
| Win11 22H2 | 0x142 | win11-22h2 |
| Win11 23H2 | 0x142 | win11-23h2 |
| Win11 24H2 | 0x144 | win11-24h2 |
| Server 2016 | 0x12A | winserver-2016 |
| Server 2019 | 0x133 | winserver-2019 |
| Server 2022 | 0x13F | winserver-2022 |
| Server 2025 | 0x144 | winserver-2025 |
Kernel-Modul
Verwandte APIs
Syscall-Stub
4C 8B D1 mov r10, rcx B8 44 01 00 00 mov eax, 0x144 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
Geschwister-Syscall von NtPrivilegeObjectAuditAlarm — gleiche Form, aber für service-level (kein Pro-Handle-Objekt) privilegierte Operationen. Erzeugt das Security-Event 4673 ("Ein privilegierter Dienst wurde aufgerufen"). Kanonisches Aufrufer-Muster: eine Service-Mode-Komponente (z. B. der Service Control Manager beim Laden eines Kernel-Treibers via SeLoadDriverPrivilege oder das Plug-and-Play-Subsystem beim Aufruf von SeUndockPrivilege) möchte die Aktion unter ihrer eigenen Service-Identität protokolliert haben. Das 4673-Event enthält den hier übergebenen Service-Namen, die genutzten Privilegien und die User-SID des Client-Tokens.
Häufige Malware-Nutzung
Im Wesentlichen null in Commodity-Malware. Der Zweck des Syscalls ist gerade, eine Spur zu hinterlassen — das Gegenteil des Ziels eines Malware-Operators. Die wenigen In-the-Wild-Beobachtungen sind MS-signierte Komponenten in normaler Arbeit. Werkzeuge wie Mimikatz, die SeDebugPrivilege schwingen, rufen diesen Syscall nie auf — sie üben das Privileg lautlos aus, weil der Object Manager Privilegiennutzung nicht automatisch auditiert.
Erkennungsmöglichkeiten
Das 4673-Eventvolumen auf einer sauberen Workstation wird von einer kleinen Menge legitimer Operationen dominiert (Treiber-Loads, geplante-Task-Läufe als SYSTEM, WMI-Provider-Starts). Verteidiger sollten 4673 nach (ServiceName, PrivilegeList, ClientUserSid) baselinen und auf neue Tupel alarmieren. Anmerkung: das *Fehlen* eines 4673 rund um eine SeLoadDriverPrivilege-Nutzung (über SCM-Event 7045 verifizierbar) ist weit interessanter als deren Anwesenheit — es deutet entweder auf einen Non-SCM-Treiber-Load (T1547.006) oder auf Audit-Log-Tampering (T1562.002). Defender for Endpoint zeigt äquivalente Telemetrie über die DeviceProcessEvents- und DeviceEvents-Tabellen.
Direkte Syscall-Beispiele
asmx64 direct stub (Win11 24H2)
; Direct syscall stub for NtPrivilegedServiceAuditAlarm (SSN 0x144, Win11 24H2)
NtPrivilegedServiceAuditAlarm PROC
mov r10, rcx ; syscall convention
mov eax, 144h ; SSN
syscall
ret
NtPrivilegedServiceAuditAlarm ENDPcManual 4673 emission from a privileged backup service
// A backup component holding SeBackupPrivilege wants to explicitly record
// a 4673 every time it begins a privileged enumeration pass.
LUID seBackupLuid;
LookupPrivilegeValueW(NULL, SE_BACKUP_NAME, &seBackupLuid);
struct {
PRIVILEGE_SET ps;
} pset = {
.ps = { .PrivilegeCount = 1, .Control = PRIVILEGE_SET_ALL_NECESSARY,
.Privilege = {{ .Luid = seBackupLuid, .Attributes = SE_PRIVILEGE_USED_FOR_ACCESS }} }
};
UNICODE_STRING sub = RTL_CONSTANT_STRING(L"Security");
UNICODE_STRING svc = RTL_CONSTANT_STRING(L"ContosoBackupService");
NTSTATUS s = NtPrivilegedServiceAuditAlarm(
&sub, &svc,
hClientToken,
&pset.ps,
TRUE); // success
// Resulting Security event 4673 records:
// Subject : NT AUTHORITY\SYSTEM (the service)
// Service : ContosoBackupService
// Privilege: SeBackupPrivilegerustWin32 PrivilegedServiceAuditAlarmW wrapper
use windows_sys::Win32::Security::Authorization::PrivilegedServiceAuditAlarmW;
use windows_sys::Win32::Security::*;
unsafe {
let ok = PrivilegedServiceAuditAlarmW(
windows_sys::w!("Security"),
windows_sys::w!("ContosoBackupService"),
client_token,
&priv_set as *const _ as *mut _,
1, // access_granted
);
// ok != 0 -> Security 4673 emitted (subject to "Audit Privilege Use" policy).
}MITRE ATT&CK-Mappings
Last verified: 2026-05-20