> Windows Syscalls
ntoskrnl.exeT1562.002T1134

NtPrivilegeObjectAuditAlarm

Emite una entrada del log de Seguridad reportando el uso de uno o más privilegios sobre un objeto específico.

Prototipo

NTSTATUS NtPrivilegeObjectAuditAlarm(
  PUNICODE_STRING SubsystemName,
  PVOID           HandleId,
  HANDLE          ClientToken,
  ACCESS_MASK     DesiredAccess,
  PPRIVILEGE_SET  Privileges,
  BOOLEAN         AccessGranted
);

Argumentos

NameTypeDirDescription
SubsystemNamePUNICODE_STRINGinNombre de subsistema mostrado en el evento resultante, p. ej. L"Security".
HandleIdPVOIDinIdentificador opaco por handle para correlación con los eventos de apertura/cierre asociados.
ClientTokenHANDLEinToken de impersonación del cliente cuyo uso de privilegio se registra.
DesiredAccessACCESS_MASKinMáscara de acceso que el cliente intentaba ejercer cuando se comprobó el privilegio.
PrivilegesPPRIVILEGE_SETinConjunto de privilegios comprobados, p. ej. {SE_SECURITY_PRIVILEGE} para acceso SACL.
AccessGrantedBOOLEANinTRUE si la operación tuvo éxito (registrada como éxito 4673/4674), FALSE si falló.

IDs de syscalls por versión de Windows

Versión de WindowsID de syscallBuild
Win10 15070x123win10-1507
Win10 16070x129win10-1607
Win10 17030x12Dwin10-1703
Win10 17090x12Fwin10-1709
Win10 18030x131win10-1803
Win10 18090x132win10-1809
Win10 19030x133win10-1903
Win10 19090x133win10-1909
Win10 20040x138win10-2004
Win10 20H20x138win10-20h2
Win10 21H10x138win10-21h1
Win10 21H20x139win10-21h2
Win10 22H20x139win10-22h2
Win11 21H20x13Fwin11-21h2
Win11 22H20x141win11-22h2
Win11 23H20x141win11-23h2
Win11 24H20x143win11-24h2
Server 20160x129winserver-2016
Server 20190x132winserver-2019
Server 20220x13Ewinserver-2022
Server 20250x143winserver-2025

Módulo del kernel

ntoskrnl.exeNtPrivilegeObjectAuditAlarm

APIs relacionadas

ObjectPrivilegeAuditAlarmWPrivilegeCheckNtPrivilegedServiceAuditAlarmNtAccessCheckAndAuditAlarm

Stub del 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

Notas no documentadas

Genera el evento de Seguridad 4674 ("Se intentó una operación sobre un objeto privilegiado") siempre que se comprueba una operación privilegiada contra un *objeto* (no una acción de servicio — para eso ver NtPrivilegedServiceAuditAlarm). El ejemplo clásico es invocar APIs de backup que ejercen SeBackupPrivilege fichero a fichero: cada apertura privilegiada emite un 4674. El llamante es responsable de invocar el syscall — el uso de privilegios no se audita automáticamente por el Object Manager, así que un subsistema privilegiado que quiera fidelidad de log debe llamarlo explícitamente. Sysmon Event ID 4673/4674 (con reglas correspondientes) reproduce los mismos datos con contexto de proceso adicional.

Uso común por malware

Casi nulo. El malware que usa privilegios típicamente lo hace en silencio — llamar a NtPrivilegeObjectAuditAlarm generaría justamente la entrada que intenta evitar. Los únicos llamantes legítimos son subsistemas MS que *quieren* fidelidad de auditoría (LSASS, ntdsa.dll, el servicio Backup, sensores de Defender for Identity). Cualquier llamante fuera de ese pequeño conjunto es sospechoso ante todo por ser inusual.

Oportunidades de detección

El volumen en una estación normal es casi nulo salvo durante jobs de backup. La ausencia repentina de eventos 4674 esperados durante una operación privilegiada conocida (p. ej. shadow copy programado) es señal más fuerte que la presencia — indica deterioro del subsistema de Eventos (T1562.002). Para detección positiva, focalizar en 4674 con privilegio == SeDebugPrivilege, SeTcbPrivilege o SeLoadDriverPrivilege emitidos por una imagen no firmada o por una imagen inusual con esos privilegios.

Ejemplos de syscalls directos

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 ENDP

cBackup 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 granted

rustWin32 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).
}

Mapeos MITRE ATT&CK

Last verified: 2026-05-20