> Windows Syscalls
ntoskrnl.exeT1562.002T1070.004

NtDeleteObjectAuditAlarm

Emite la entrada del log de Seguridad que registra la eliminación de un objeto auditado.

Prototipo

NTSTATUS NtDeleteObjectAuditAlarm(
  PUNICODE_STRING SubsystemName,
  PVOID           HandleId,
  BOOLEAN         GenerateOnClose
);

Argumentos

NameTypeDirDescription
SubsystemNamePUNICODE_STRINGinNombre de subsistema, coincidente con el valor pasado a la apertura NtAccessCheck*AuditAlarm original.
HandleIdPVOIDinID opaco del handle usado para correlación con los eventos de audit de apertura/cierre del mismo objeto.
GenerateOnCloseBOOLEANinTRUE si la apertura audit-alarm previa solicitó un registro de cierre/eliminación; FALSE convierte la llamada en no-op.

IDs de syscalls por versión de Windows

Versión de WindowsID de syscallBuild
Win10 15070xC6win10-1507
Win10 16070xC9win10-1607
Win10 17030xCCwin10-1703
Win10 17090xCDwin10-1709
Win10 18030xCEwin10-1803
Win10 18090xCFwin10-1809
Win10 19030xD0win10-1903
Win10 19090xD0win10-1909
Win10 20040xD4win10-2004
Win10 20H20xD4win10-20h2
Win10 21H10xD4win10-21h1
Win10 21H20xD5win10-21h2
Win10 22H20xD5win10-22h2
Win11 21H20xDAwin11-21h2
Win11 22H20xDBwin11-22h2
Win11 23H20xDBwin11-23h2
Win11 24H20xDDwin11-24h2
Server 20160xC9winserver-2016
Server 20190xCFwinserver-2019
Server 20220xD9winserver-2022
Server 20250xDDwinserver-2025

Módulo del kernel

ntoskrnl.exeNtDeleteObjectAuditAlarm

APIs relacionadas

ObjectDeleteAuditAlarmWNtCloseObjectAuditAlarmNtAccessCheckByTypeAndAuditAlarmNtSetInformationFileNtDeleteFile

Stub del syscall

4C 8B D1            mov r10, rcx
B8 DD 00 00 00      mov eax, 0xDD
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 4660 ("Se eliminó un objeto"). El subsistema auditado invoca este syscall tras una operación de eliminación exitosa sobre un objeto bajo SACL, para que el log de Seguridad lleve un registro explícito de eliminación (el par apertura/cierre por sí solo no distingue un cierre normal de una eliminación). 4660 es el evento canónico que los respondedores de incidentes correlacionan con 4663 (derecho DELETE ejercido) y 4656 (apertura con DELETE) sobre el mismo HandleId para reconstruir completamente la actividad destructiva de un atacante. SSN `0xDD` en Win11 24H2 (y valores correspondientes en builds anteriores — es uno de los pocos syscalls audit-alarm cuyo SSN deriva porque ordena alfabéticamente entre el grupo renumerado).

Uso común por malware

Ninguno observado en malware commodity. Las operaciones destructivas de ransomware/wipers (Conti, Royal, AcidRain) nunca llaman a NtDeleteObjectAuditAlarm — llaman a NtSetInformationFile con FileDispositionInformation, o a NtDeleteFile, directamente, dejando que el Object Manager aplique la SACL o no. Si se dispara 4660 depende enteramente del uso del *camino de subsistema auditado*; saltarse el wrapper Win32 significa no 4660. Por eso los defensores no deberían confiar solo en 4660 para detección de ransomware — la telemetría de mini-filter (proveedor ETW FltMgr, hooks EDR sobre escrituras de fichero) es más fiable.

Oportunidades de detección

El evento 4660 debe emparejarse con 4663 (acceso DELETE concedido) y un 4656 previo compartiendo el mismo HandleId para reconstruir quién eliminó qué. En almacenes de shadow copies con SACL, las hives de registro bajo HKLM\SECURITY y las claves de configuración de Defender, los picos de 4660 son indicadores directos de ransomware. La ausencia de 4660 en presencia de eliminaciones masivas de ficheros (observables vía Sysmon Event ID 23) implica que el camino de eliminación evitó el subsistema audit-alarm — señal fuerte de actor sofisticado (T1070.004).

Ejemplos de syscalls directos

asmx64 direct stub (Win11 24H2)

; Direct syscall stub for NtDeleteObjectAuditAlarm (SSN 0xDD, Win11 24H2)
NtDeleteObjectAuditAlarm PROC
    mov  r10, rcx          ; syscall convention
    mov  eax, 0DDh         ; SSN
    syscall
    ret
NtDeleteObjectAuditAlarm ENDP

cAudited delete from a SACL-aware service

// Service holding the handle has just performed a privileged delete via
// NtSetInformationFile(FileDispositionInformation). Now record the 4660.
UNICODE_STRING sub = RTL_CONSTANT_STRING(L"Security");

NTSTATUS s = NtDeleteObjectAuditAlarm(
    &sub,
    (PVOID)hHandleId,   // same value used in the matching NtAccessCheck*AuditAlarm call
    TRUE);              // matches the GenerateOnClose flag returned earlier

// Resulting Security event 4660 carries object DN/path and the deleting subject.
NtClose(hFile);

rustWin32 ObjectDeleteAuditAlarmW wrapper

use windows_sys::Win32::Security::Authorization::ObjectDeleteAuditAlarmW;

unsafe {
    let ok = ObjectDeleteAuditAlarmW(
        windows_sys::w!("Security"),
        handle_id as *mut _,
        gen_on_close as i32,
    );
    // ok != 0 -> 4660 emitted (subject to "Audit Object Access" policy).
}

Mapeos MITRE ATT&CK

Last verified: 2026-05-20