Potential Modification of Accessibility Binariesedit

Windows 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 guideedit

## 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 queryedit

process 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 mappingedit

Framework: MITRE ATT&CKTM

Rule version historyedit

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)