NtPrivilegeObjectAuditAlarm
Émet une entrée du journal Sécurité signalant l'utilisation d'un ou plusieurs privilèges sur un objet spécifique.
Prototype
NTSTATUS NtPrivilegeObjectAuditAlarm( PUNICODE_STRING SubsystemName, PVOID HandleId, HANDLE ClientToken, ACCESS_MASK DesiredAccess, PPRIVILEGE_SET Privileges, BOOLEAN AccessGranted );
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| SubsystemName | PUNICODE_STRING | in | Nom de sous-système affiché dans l'événement résultant, ex. L"Security". |
| HandleId | PVOID | in | Identifiant opaque par handle pour corréler avec les événements d'ouverture/fermeture associés. |
| ClientToken | HANDLE | in | Jeton d'impersonation du client dont l'usage de privilège est journalisé. |
| DesiredAccess | ACCESS_MASK | in | Masque d'accès que le client tentait d'exercer lorsque le privilège a été contrôlé. |
| Privileges | PPRIVILEGE_SET | in | Ensemble de privilèges contrôlés, ex. {SE_SECURITY_PRIVILEGE} pour l'accès SACL. |
| AccessGranted | BOOLEAN | in | TRUE si l'opération a réussi (journalisée en succès 4673/4674), FALSE si elle a échoué. |
IDs de syscalls par version de Windows
| Version de Windows | ID de syscall | 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 |
Module noyau
APIs liées
Stub du syscall
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
Notes non documentées
Génère l'événement Sécurité 4674 (« Tentative d'opération sur un objet privilégié ») chaque fois qu'une opération privilégiée contre un *objet* (et non une action de service — voir NtPrivilegedServiceAuditAlarm pour ça) est contrôlée. L'exemple classique est l'appel d'API de sauvegarde qui exercent SeBackupPrivilege fichier par fichier : chaque ouverture privilégiée émet un 4674. C'est à l'appelant d'invoquer le syscall — l'usage de privilèges n'est pas audité automatiquement par l'Object Manager, donc un sous-système privilégié qui veut la fidélité de journal doit appeler explicitement. Sysmon Event ID 4673/4674 (avec règles correspondantes) rejoue les mêmes données avec un contexte processus supplémentaire.
Usage courant par les malwares
Quasi nul. Les malwares qui utilisent des privilèges le font typiquement en silence — appeler NtPrivilegeObjectAuditAlarm générerait précisément l'entrée qu'ils cherchent à éviter. Les seuls appelants légitimes sont les sous-systèmes MS qui *veulent* la fidélité d'audit (LSASS, ntdsa.dll, le service Backup, capteurs Defender for Identity). Tout appelant en dehors de ce petit ensemble est suspect avant tout par sa rareté.
Opportunités de détection
Sur poste standard, le volume est quasi nul sauf pendant les jobs de sauvegarde. L'absence soudaine d'événements 4674 attendus pendant une opération privilégiée connue (ex. shadow copy planifié) est un signal plus fort que la présence — elle indique l'altération du sous-système Journal (T1562.002). Pour la détection positive, se concentrer sur les 4674 avec privilège == SeDebugPrivilege, SeTcbPrivilege ou SeLoadDriverPrivilege émis par une image non signée ou par une image inhabituelle avec ces privilèges.
Exemples de syscalls directs
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).
}Mappings MITRE ATT&CK
Last verified: 2026-05-20