Potential Modification of Accessibility Binaries
editPotential Modification of Accessibility Binaries
editWindows contains accessibility features that may be launched with a key combination before a user has logged in. An adversary can modify the way these programs are launched to get a command prompt or backdoor without logging in to the system.
Rule type: eql
Rule indices:
- winlogbeat-*
- logs-endpoint.events.*
- logs-windows.*
Severity: high
Risk score: 73
Runs every: 5 minutes
Searches indices from: now-9m (Date Math format, see also Additional look-back time
)
Maximum alerts per execution: 100
References:
Tags:
- Elastic
- Host
- Windows
- Threat Detection
- Persistence
Version: 8 (version history)
Added (Elastic Stack release): 7.6.0
Last modified (Elastic Stack release): 8.2.0
Rule authors: Elastic
Rule license: Elastic License v2
Investigation guide
edit## Triage and analysis ### Investigating Potential Modification of Accessibility Binaries Adversaries may establish persistence and/or elevate privileges by executing malicious content triggered by accessibility features. Windows contains accessibility features that may be launched with a key combination before a user has logged in (ex: when the user is on the Windows logon screen). An adversary can modify the way these programs are launched to get a command prompt or backdoor without logging in to the system. More details can be found [here](https://attack.mitre.org/techniques/T1546/008/). This rule looks for the execution of supposed accessibility binaries that don't match any of the accessibility features binaries' original file names, which is likely a custom binary deployed by the attacker. #### Possible investigation steps - Investigate the process execution chain (parent process tree). - Identify the user account that performed the action and whether it should perform this kind of action. - Contact the account owner and confirm whether they are aware of this activity. - Investigate other alerts associated with the user/host during the past 48 hours. - Check for similar behavior in other hosts on the environment. - Retrieve the file and determine if it is malicious: - Use a private sandboxed malware analysis system to perform analysis. - Observe and collect information about the following activities: - Attempts to contact external domains and addresses. - File and registry access, modification, and creation activities. - Service creation and launch activities. - Scheduled tasks creation. - Use the PowerShell Get-FileHash cmdlet to get the SHA-256 hash value of the file. - Search for the existence and reputation of this file in resources like VirusTotal, Hybrid-Analysis, CISCO Talos, Any.run, etc. ### False positive analysis - This activity should not happen legitimately. The security team should address any potential benign true positive (B-TP), as this configuration can put the user and the domain at risk. ### Response and remediation - Initiate the incident response process based on the outcome of the triage. - Isolate the involved host to prevent further post-compromise behavior. - If the triage identified malware, search the environment for additional compromised hosts. - Implement any temporary network rules, procedures, and segmentation required to contain the malware. - Immediately block the IoCs identified. - Remove and block malicious artifacts identified on the triage. - Reset passwords for the user account and other potentially compromised accounts (email, services, CRMs, etc.). ## Config If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2, events will not define `event.ingested` and default fallback for EQL rules was not added until 8.2, so you will need to add a custom pipeline to populate `event.ingested` to @timestamp for this rule to work.
Rule query
editprocess where event.type in ("start", "process_started", "info") and process.parent.name : ("Utilman.exe", "winlogon.exe") and user.name == "SYSTEM" and process.args : ( "C:\\Windows\\System32\\osk.exe", "C:\\Windows\\System32\\Magnify.exe", "C:\\Windows\\System32\\Narrator.exe", "C:\\Windows\\System32\\Sethc.exe", "utilman.exe", "ATBroker.exe", "DisplaySwitch.exe", "sethc.exe" ) and not process.pe.original_file_name in ( "osk.exe", "sethc.exe", "utilman2.exe", "DisplaySwitch.exe", "ATBroker.exe", "ScreenMagnifier.exe", "SR.exe", "Narrator.exe", "magnify.exe", "MAGNIFY.EXE" ) /* uncomment once in winlogbeat to avoid bypass with rogue process with matching pe original file name */ /* and process.code_signature.subject_name == "Microsoft Windows" and process.code_signature.status == "trusted" */
Threat mapping
editFramework: MITRE ATT&CKTM
-
Tactic:
- Name: Persistence
- ID: TA0003
- Reference URL: https://attack.mitre.org/tactics/TA0003/
-
Technique:
- Name: Event Triggered Execution
- ID: T1546
- Reference URL: https://attack.mitre.org/techniques/T1546/
-
Tactic:
- Name: Privilege Escalation
- ID: TA0004
- Reference URL: https://attack.mitre.org/tactics/TA0004/
-
Technique:
- Name: Event Triggered Execution
- ID: T1546
- Reference URL: https://attack.mitre.org/techniques/T1546/
Rule version history
edit- Version 8 (8.2.0 release)
-
- Formatting only
- Version 7 (7.12.0 release)
-
- Formatting only
- Version 6 (7.11.2 release)
-
- Formatting only
- Version 5 (7.11.0 release)
-
-
Updated query, changed from:
event.category:process and event.type:(start or process_started) and process.parent.name:winlogon.exe and not process.name:(atbroker.exe or displayswitch.exe or magnify.exe or narrator.exe or osk.exe or sethc.exe or utilman.exe)
-
- Version 4 (7.10.0 release)
-
-
Updated query, changed from:
event.code:1 and process.parent.name:winlogon.exe and process.name:(atbroker.exe or displayswitch.exe or magnify.exe or narrator.exe or osk.exe or sethc.exe or utilman.exe)
-
- Version 3 (7.9.0 release)
-
- Formatting only
- Version 2 (7.7.0 release)
-
-
Updated query, changed from:
event.code:1 and process.parent.name:winlogon.exe and (process.name:atbroker.exe or process.name:displayswitch.exe or process.name:magnify.exe or process.name:narrator.exe or process.name:osk.exe or process.name:sethc.exe or process.name:utilman.exe)
-