STICKY KEYS
IFEO
SHIMS
APPINIT_DLLS
DetectionBlue TeamSOCOctober 12, 2026•9 min read

Detecting Accessibility Feature, IFEO and Shim Persistence

These techniques hook a trusted trigger: the logon screen, a process launch or an application compatibility layer. They are old, well documented and still turn up in intrusions.

Scroll

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

SignalWhereATT&CK
Debugger value under Image File Execution Options for sethc, utilman, osk, narrator or magnifySysmon 13T1546.008
Any IFEO Debugger or GlobalFlag set, or a SilentProcessExit MonitorProcess valueSysmon 13T1546.012
System32 accessibility binary modified or replaced by cmd.exeSysmon 11, file integrityT1546.008
winlogon.exe or utilman.exe parenting cmd.exe or powershell.exe as SYSTEMSysmon 1T1546.008
sdbinst.exe run, or new keys under AppCompatFlags\InstalledSDB and CustomSysmon 1, 13T1546.011
AppInit_DLLs populated with LoadAppInit_DLLs set to 1Sysmon 13T1546.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.

Vetted sources

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 EngineeringManaged Detection & ResponseThreat HuntingIncident ResponsePurple Teaming
  • 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.
Written by: Mjolnir Threat Research (MTAC)  |  Published: October 12, 2026  |  Last reviewed: October 12, 2026