Several Windows features let one executable launch or modify another, and attackers reuse them for persistence. Replacing sethc.exe or utilman.exe, or setting an IFEO Debugger value, gives SYSTEM-level access from the logon screen. Installing a shim database or setting AppInit_DLLs causes a payload to load into other processes. All of them leave specific registry and file artifacts.
Signals at a Glance
| Signal | Where | ATT&CK |
|---|---|---|
| Debugger value under Image File Execution Options for sethc, utilman, osk, narrator or magnify | Sysmon 13 | T1546.008 |
| Any IFEO Debugger or GlobalFlag set, or a SilentProcessExit MonitorProcess value | Sysmon 13 | T1546.012 |
| System32 accessibility binary modified or replaced by cmd.exe | Sysmon 11, file integrity | T1546.008 |
| winlogon.exe or utilman.exe parenting cmd.exe or powershell.exe as SYSTEM | Sysmon 1 | T1546.008 |
| sdbinst.exe run, or new keys under AppCompatFlags\InstalledSDB and Custom | Sysmon 1, 13 | T1546.011 |
| AppInit_DLLs populated with LoadAppInit_DLLs set to 1 | Sysmon 13 | T1546.010 |
IFEO and Accessibility Binaries
The logon-screen backdoor takes two forms: replace the accessibility binary with cmd.exe, or point an IFEO Debugger value at it so that Windows launches the debugger instead. Both give a SYSTEM shell from the lock screen with five presses of Shift. The same Debugger mechanism, and the newer SilentProcessExit key, can also hijack any other process name. Detect the registry writes first:
title: IFEO Debugger Or SilentProcessExit Monitor Set
logsource:
product: windows
category: registry_set
detection:
ifeo:
TargetObject|contains: '\Image File Execution Options\'
TargetObject|endswith:
- '\Debugger'
- '\GlobalFlag'
spe:
TargetObject|contains: '\SilentProcessExit\'
TargetObject|endswith: '\MonitorProcess'
condition: ifeo or spe
level: high
# tune/validate: some application debugging tools set GlobalFlag; allowlist by writer and image.
Then cover the file replacement path and the resulting process lineage, which is the point where the backdoor is actually used:
// KQL: accessibility binaries tampered with, or a shell spawned from the logon screen
let accBins = dynamic(["sethc.exe","utilman.exe","osk.exe","narrator.exe","magnify.exe","displayswitch.exe","atbroker.exe"]);
union
( DeviceFileEvents
| where FileName in~ (accBins) and FolderPath has @"\Windows\System32"
| where ActionType in ("FileCreated","FileModified","FileRenamed")
| where InitiatingProcessFileName !in~ ("TiWorker.exe","TrustedInstaller.exe","wuauclt.exe","msiexec.exe")
| project Timestamp, DeviceName, Signal="binary_changed", FileName, InitiatingProcessFileName ),
( DeviceProcessEvents
| where InitiatingProcessFileName in~ ("winlogon.exe","utilman.exe","atbroker.exe")
| where FileName in~ ("cmd.exe","powershell.exe","pwsh.exe","wscript.exe","mshta.exe")
| project Timestamp, DeviceName, Signal="shell_from_logon_screen", FileName, InitiatingProcessFileName )
| order by Timestamp desc
// tune/validate: accessibility tooling and assistive suites may spawn helpers; review before alerting.
Shims and AppInit_DLLs
Application compatibility shims are loaded from a custom shim database (SDB) registered with sdbinst.exe. A malicious SDB can inject a DLL into a target application every time it starts. AppInit_DLLs, which loads a DLL into every process that loads user32.dll, is disabled when Secure Boot is on but still appears on older or relaxed systems.
- Alert on
sdbinst.exeexecution at all, and on new keys underHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\InstalledSDBand\Custom. Legitimate use is very rare outside compatibility engineering teams. - Look for new
.sdbfiles inC:\Windows\AppPatch\Customand its 64-bit subfolder. - Alert on non-empty
AppInit_DLLsunderHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows, paying attention toLoadAppInit_DLLsand the WOW6432Node counterpart. - Reduce the exposure: enable Secure Boot, and restrict write access to System32 and the IFEO key with protections that stop standard tooling from tampering.
Use the SigmaHQ IFEO, sticky-keys, shim and AppInit rules, Elastic’s accessibility-feature and shim-database detections, Splunk ESCU content, MITRE CAR analytics and Atomic Red Team tests for T1546.008, T1546.011 and T1546.012. Autoruns lists IFEO, AppInit and known-DLL entries for fleet review. Baseline your own environment before alerting.
Build Detections That Fire
Mjolnir Security helps blue teams turn threat intelligence into high-fidelity detections across endpoint, network, identity and cloud telemetry.
- Detection Engineering We build and tune detections mapped to ATT&CK from your own telemetry.
- Threat Hunting as a Service Hypothesis-driven hunts for the behaviours on this page.
- 24/7 Incident Response Containment when a detection fires. Call +1 833 403 5875.
Stay ahead of emerging threats. Get notified when we publish new intelligence reports and advisories.
Subscribe to Alerts