> Windows Syscalls
ntoskrnl.exeT1562.002T1070.004

NtDeleteObjectAuditAlarm

Émet l'entrée du journal Sécurité qui enregistre la suppression d'un objet audité.

Prototype

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

Arguments

NameTypeDirDescription
SubsystemNamePUNICODE_STRINGinNom de sous-système, correspondant à la valeur passée à l'ouverture NtAccessCheck*AuditAlarm d'origine.
HandleIdPVOIDinID de handle opaque utilisé pour corréler avec les événements d'audit d'ouverture/fermeture du même objet.
GenerateOnCloseBOOLEANinTRUE si l'ouverture audit-alarm précédente a demandé un enregistrement de fermeture/suppression ; FALSE rend l'appel no-op.

IDs de syscalls par version de Windows

Version 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

Module noyau

ntoskrnl.exeNtDeleteObjectAuditAlarm

APIs liées

ObjectDeleteAuditAlarmWNtCloseObjectAuditAlarmNtAccessCheckByTypeAndAuditAlarmNtSetInformationFileNtDeleteFile

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

Notes non documentées

Génère l'événement Sécurité 4660 (« Un objet a été supprimé »). Le sous-système audité invoque ce syscall après une suppression réussie sur un objet sous SACL, afin que le journal Sécurité porte un enregistrement de suppression explicite (la paire ouverture/fermeture ne distingue pas une fermeture normale d'une suppression). 4660 est l'événement canonique que les répondeurs d'incident corrèlent avec 4663 (droit DELETE exercé) et 4656 (ouverture avec DELETE) sur le même HandleId pour reconstruire complètement l'activité destructrice d'un attaquant. SSN `0xDD` sur Win11 24H2 (et valeurs correspondantes sur builds antérieures — c'est l'un des rares syscalls audit-alarm dont le SSN dérive parce qu'il se trie alphabétiquement parmi le groupe renuméroté).

Usage courant par les malwares

Aucun observé dans le malware grand public. Les opérations destructrices des ransomwares/wipers (Conti, Royal, AcidRain) n'appellent jamais NtDeleteObjectAuditAlarm — ils appellent NtSetInformationFile avec FileDispositionInformation, ou NtDeleteFile, directement, laissant l'Object Manager appliquer la SACL ou non. Le déclenchement ou non de 4660 dépend entièrement de l'usage du *chemin sous-système audité* ; contourner le wrapper Win32 signifie pas de 4660. C'est précisément pourquoi les défenseurs ne devraient pas se fier uniquement à 4660 pour la détection de ransomware — la télémétrie mini-filter (provider ETW FltMgr, hooks EDR sur écritures fichier) est plus fiable.

Opportunités de détection

L'événement 4660 doit être apparié avec un 4663 (accès DELETE accordé) et un 4656 précédent partageant le même HandleId pour reconstruire qui a supprimé quoi. Sur les magasins de shadow copies sous SACL, les ruches registre sous HKLM\SECURITY et les clés de configuration Defender, les pics de 4660 sont des indicateurs directs de ransomware. L'absence de 4660 en présence de suppressions massives de fichiers (observables via Sysmon Event ID 23) implique que le chemin de suppression a contourné le sous-système audit-alarm — en soi un fort signal d'acteur sophistiqué (T1070.004).

Exemples de syscalls directs

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

Mappings MITRE ATT&CK

Last verified: 2026-05-20