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
| Name | Type | Dir | Description |
|---|---|---|---|
| SubsystemName | PUNICODE_STRING | in | Nom de sous-système, correspondant à la valeur passée à l'ouverture NtAccessCheck*AuditAlarm d'origine. |
| HandleId | PVOID | in | ID de handle opaque utilisé pour corréler avec les événements d'audit d'ouverture/fermeture du même objet. |
| GenerateOnClose | BOOLEAN | in | TRUE 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 Windows | ID de syscall | Build |
|---|---|---|
| Win10 1507 | 0xC6 | win10-1507 |
| Win10 1607 | 0xC9 | win10-1607 |
| Win10 1703 | 0xCC | win10-1703 |
| Win10 1709 | 0xCD | win10-1709 |
| Win10 1803 | 0xCE | win10-1803 |
| Win10 1809 | 0xCF | win10-1809 |
| Win10 1903 | 0xD0 | win10-1903 |
| Win10 1909 | 0xD0 | win10-1909 |
| Win10 2004 | 0xD4 | win10-2004 |
| Win10 20H2 | 0xD4 | win10-20h2 |
| Win10 21H1 | 0xD4 | win10-21h1 |
| Win10 21H2 | 0xD5 | win10-21h2 |
| Win10 22H2 | 0xD5 | win10-22h2 |
| Win11 21H2 | 0xDA | win11-21h2 |
| Win11 22H2 | 0xDB | win11-22h2 |
| Win11 23H2 | 0xDB | win11-23h2 |
| Win11 24H2 | 0xDD | win11-24h2 |
| Server 2016 | 0xC9 | winserver-2016 |
| Server 2019 | 0xCF | winserver-2019 |
| Server 2022 | 0xD9 | winserver-2022 |
| Server 2025 | 0xDD | winserver-2025 |
Module noyau
APIs liées
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 ENDPcAudited 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