T1547.004 Microsoft Sentinel · KQL

Detect Winlogon Helper DLL in Microsoft Sentinel

Adversaries may abuse features of Winlogon to execute DLLs and/or executables when a user logs in. Winlogon.exe is a Windows component responsible for actions at logon/logoff as well as the secure attention sequence (SAS) triggered by Ctrl-Alt-Delete. Registry entries in HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ and HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ are used to manage additional helper programs. Malicious modifications to these Registry keys may cause Winlogon to load and execute malicious DLLs and/or executables. Specifically, the Winlogon\Notify, Winlogon\Userinit, and Winlogon\Shell subkeys are known targets for abuse by threat actors including Turla, Wizard Spider, and LockBit.

MITRE ATT&CK

Tactic
Persistence Privilege Escalation
Technique
T1547 Boot or Logon Autostart Execution
Sub-technique
T1547.004 Winlogon Helper DLL
Canonical reference
https://attack.mitre.org/techniques/T1547/004/

KQL Detection Query

Microsoft Sentinel (KQL)
kusto
let WinlogonValues = dynamic(["Shell", "Userinit", "Notify", "VmApplet", "AppSetup", "Taskman"]);
let DefaultShell = "explorer.exe";
let DefaultUserinit = "C:\\Windows\\system32\\userinit.exe,";
DeviceRegistryEvents
| where Timestamp > ago(24h)
| where ActionType == "RegistryValueSet"
| where RegistryKey has "\\Windows NT\\CurrentVersion\\Winlogon"
| where RegistryValueName in~ (WinlogonValues)
| where not(RegistryValueData =~ DefaultShell and RegistryValueName =~ "Shell")
| where not(RegistryValueData =~ DefaultUserinit and RegistryValueName =~ "Userinit")
| project Timestamp, DeviceName, RegistryKey, RegistryValueName, RegistryValueData, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessAccountName
| sort by Timestamp desc
critical severity high confidence

Detects modifications to Winlogon helper registry values (Shell, Userinit, Notify, VmApplet, AppSetup, Taskman) that deviate from their default values. Filters out the standard Shell (explorer.exe) and Userinit (userinit.exe) to reduce noise. Any modification to these values can result in arbitrary code execution at every user logon.

Data Sources

Windows Registry: Windows Registry Key ModificationMicrosoft Defender for Endpoint

Required Tables

DeviceRegistryEvents

False Positives & Tuning

  • Custom shell replacements in kiosk or thin-client environments
  • Enterprise login scripts that legitimately modify Userinit to chain additional executables
  • Accessibility tools or custom logon screen providers that modify Winlogon values
Download portable Sigma rule (.yml)

Other platforms for T1547.004


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Modify Winlogon Shell to Append Malicious Binary

    Expected signal: Sysmon Event ID 13: RegistryValueSet on HKCU\...\Winlogon\Shell with value containing 'explorer.exe, C:\Windows\System32\calc.exe'.

  2. Test 2Modify Winlogon Userinit to Chain Malicious Binary

    Expected signal: Sysmon Event ID 13: RegistryValueSet on HKLM\...\Winlogon\Userinit showing the appended executable path.

  3. Test 3Create Winlogon Notify Key

    Expected signal: Sysmon Event ID 12: Key created for the Notify subkey. Sysmon Event ID 13: Value set for DllName.

Unlock Pro Content

Get the full detection package for T1547.004 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections