NtPrivilegeObjectAuditAlarm
Emittiert einen Security-Eventlog-Eintrag, der die Nutzung eines oder mehrerer Privilegien an einem bestimmten Objekt meldet.
Prototyp
NTSTATUS NtPrivilegeObjectAuditAlarm( PUNICODE_STRING SubsystemName, PVOID HandleId, HANDLE ClientToken, ACCESS_MASK DesiredAccess, PPRIVILEGE_SET Privileges, BOOLEAN AccessGranted );
Argumente
| Name | Type | Dir | Description |
|---|---|---|---|
| SubsystemName | PUNICODE_STRING | in | Im resultierenden Event angezeigter Subsystemname, z. B. L"Security". |
| HandleId | PVOID | in | Opaker Pro-Handle-Identifikator zur Korrelation mit zugehörigen Open/Close-Events. |
| ClientToken | HANDLE | in | Impersonation-Token des Clients, dessen Privilegiennutzung protokolliert wird. |
| DesiredAccess | ACCESS_MASK | in | Zugriffsmaske, die der Client beim Privilegien-Check auszuüben versuchte. |
| Privileges | PPRIVILEGE_SET | in | Geprüfter Privilegien-Satz, z. B. {SE_SECURITY_PRIVILEGE} für SACL-Zugriff. |
| AccessGranted | BOOLEAN | in | TRUE bei Erfolg der Operation (als Erfolg 4673/4674 protokolliert), FALSE bei Fehlschlag. |
Syscall-IDs pro Windows-Version
| Windows-Version | Syscall-ID | Build |
|---|---|---|
| Win10 1507 | 0x123 | win10-1507 |
| Win10 1607 | 0x129 | win10-1607 |
| Win10 1703 | 0x12D | win10-1703 |
| Win10 1709 | 0x12F | win10-1709 |
| Win10 1803 | 0x131 | win10-1803 |
| Win10 1809 | 0x132 | win10-1809 |
| Win10 1903 | 0x133 | win10-1903 |
| Win10 1909 | 0x133 | win10-1909 |
| Win10 2004 | 0x138 | win10-2004 |
| Win10 20H2 | 0x138 | win10-20h2 |
| Win10 21H1 | 0x138 | win10-21h1 |
| Win10 21H2 | 0x139 | win10-21h2 |
| Win10 22H2 | 0x139 | win10-22h2 |
| Win11 21H2 | 0x13F | win11-21h2 |
| Win11 22H2 | 0x141 | win11-22h2 |
| Win11 23H2 | 0x141 | win11-23h2 |
| Win11 24H2 | 0x143 | win11-24h2 |
| Server 2016 | 0x129 | winserver-2016 |
| Server 2019 | 0x132 | winserver-2019 |
| Server 2022 | 0x13E | winserver-2022 |
| Server 2025 | 0x143 | winserver-2025 |
Kernel-Modul
Verwandte APIs
Syscall-Stub
4C 8B D1 mov r10, rcx B8 43 01 00 00 mov eax, 0x143 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
Erzeugt das Security-Event 4674 ("Es wurde versucht, eine Operation an einem privilegierten Objekt durchzuführen"), wann immer eine privilegierte Operation gegen ein *Objekt* (keine Service-Aktion — dafür NtPrivilegedServiceAuditAlarm) geprüft wird. Klassisches Beispiel ist der Aufruf von Backup-APIs, die SeBackupPrivilege datei-für-datei ausüben: jeder privilegierte Datei-Open emittiert ein 4674. Der Aufrufer ist verantwortlich, den Syscall zu invocieren — Privilegiennutzung wird vom Object Manager nicht automatisch geprüft, also muss ein privilegiertes Subsystem mit Log-Treue es explizit aufrufen. Sysmon Event ID 4673/4674 (mit entsprechenden Regeln) füllt dieselben Daten mit zusätzlichem Prozesskontext.
Häufige Malware-Nutzung
Fast null. Malware, die Privilegien nutzt, tut das typischerweise lautlos — NtPrivilegeObjectAuditAlarm aufzurufen würde gerade den Eintrag erzeugen, den sie zu vermeiden versucht. Die einzigen legitimen Aufrufer sind MS-Subsysteme, die *Audit-Treue wollen* (LSASS, ntdsa.dll, der Backup-Dienst, Defender-for-Identity-Sensoren). Jeder Aufrufer außerhalb dieses kleinen Sets ist primär durch seine Seltenheit verdächtig.
Erkennungsmöglichkeiten
Volumen auf einer normalen Workstation ist nahe null, außer Backup-Jobs laufen. Plötzliches Fehlen erwarteter 4674-Events während einer bekannten privilegierten Operation (z. B. geplanter Volume Shadow Copy) ist ein stärkeres Signal als deren Anwesenheit — es deutet auf Eventlog-Subsystem-Beeinträchtigung (T1562.002). Für positive Detektion auf 4674-Events mit Privileg == SeDebugPrivilege, SeTcbPrivilege oder SeLoadDriverPrivilege fokussieren, die von einem unsignierten Image oder einem Image, das normalerweise nicht mit diesen Privilegien gesehen wird, emittiert wurden.
Direkte Syscall-Beispiele
asmx64 direct stub (Win11 24H2)
; Direct syscall stub for NtPrivilegeObjectAuditAlarm (SSN 0x143, Win11 24H2)
NtPrivilegeObjectAuditAlarm PROC
mov r10, rcx ; syscall convention
mov eax, 143h ; SSN
syscall
ret
NtPrivilegeObjectAuditAlarm ENDPcBackup service emitting a 4674 per protected file
// A backup service holding SeBackupPrivilege walks the volume and, for each
// file it opens via FILE_FLAG_BACKUP_SEMANTICS, explicitly emits a 4674
// so the Security log records *which* files were touched with the privilege.
LUID seBackupLuid;
LookupPrivilegeValueW(NULL, SE_BACKUP_NAME, &seBackupLuid);
struct {
PRIVILEGE_SET ps;
LUID_AND_ATTRIBUTES extra; // tail for >1 privilege
} 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");
NtPrivilegeObjectAuditAlarm(
&sub,
(PVOID)hFile, // handle id
hClientToken,
FILE_GENERIC_READ,
&pset.ps,
TRUE); // access grantedrustWin32 PrivilegeCheck + ObjectPrivilegeAuditAlarmW
// The Win32 wrappers are PrivilegeCheck (decision) +
// ObjectPrivilegeAuditAlarmW (audit emission).
use windows_sys::Win32::Security::Authorization::ObjectPrivilegeAuditAlarmW;
use windows_sys::Win32::Security::*;
unsafe {
let ok = ObjectPrivilegeAuditAlarmW(
windows_sys::w!("Security"),
handle_id as *mut _,
client_token,
desired_access,
&priv_set as *const _ as *mut _,
1, // access_granted
);
// ok != 0 -> the 4674 was emitted (assuming "Audit Privilege Use"
// policy is enabled).
}MITRE ATT&CK-Mappings
Last verified: 2026-05-20