mirror of
https://github.com/splunk/security_content
synced 2026-06-08 17:32:49 +00:00
86 lines
4.9 KiB
YAML
86 lines
4.9 KiB
YAML
name: Windows RunMRU Command Execution
|
|
id: a15aa1ab-2b79-467f-8201-65e0f32d5b1a
|
|
version: 6
|
|
date: '2025-05-02'
|
|
author: Nasreddine Bencherchali, Michael Haag, Splunk
|
|
data_source:
|
|
- Sysmon EventID 12
|
|
- Sysmon EventID 13
|
|
type: Anomaly
|
|
status: production
|
|
description: The following analytic detects modifications to the Windows RunMRU registry
|
|
key, which stores a history of commands executed through the Run dialog box (Windows+R).
|
|
It leverages Endpoint Detection and Response (EDR) telemetry to monitor registry
|
|
events targeting this key. This activity is significant as malware often uses the
|
|
Run dialog to execute malicious commands while attempting to appear legitimate.
|
|
If confirmed malicious, this could indicate an attacker using indirect command execution
|
|
techniques for defense evasion or persistence. The detection excludes MRUList value
|
|
changes to focus on actual command entries.
|
|
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Registry where Registry.registry_path="*\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU*" NOT Registry.registry_value_name="MRUList" NOT Registry.registry_value_data="unknown" by Registry.dest Registry.registry_value_data Registry.action Registry.process_guid Registry.process_id Registry.registry_key_name Registry.user Registry.registry_path Registry.registry_hive Registry.registry_value_name Registry.status Registry.vendor_product | `drop_dm_object_name(Registry)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_runmru_command_execution_filter`'
|
|
how_to_implement: The detection is based on data that originates from Endpoint Detection
|
|
and Response (EDR) agents. These agents are designed to provide security-related
|
|
telemetry from the endpoints where the agent is installed. To implement this search,
|
|
you must ingest logs that contain the process GUID, process name, and parent process.
|
|
Additionally, you must ingest complete command-line executions. These logs must
|
|
be processed using the appropriate Splunk Technology Add-ons that are specific to
|
|
the EDR product. The logs must also be mapped to the `Registry` node of the `Endpoint`
|
|
data model. Use the Splunk Common Information Model (CIM) to normalize the field
|
|
names and speed up the data modeling process.
|
|
known_false_positives: This detection may generate a few false positives, such as
|
|
legitimate software updates or legitimate system maintenance activities that modify
|
|
the RunMRU key. However, the exclusion of MRUList value changes helps reduce the
|
|
number of false positives by focusing only on actual command entries. Add any specific
|
|
false positives to the built in filter to reduce findings as needed.
|
|
references:
|
|
- https://medium.com/@ahmed.moh.farou2/fake-captcha-campaign-on-arabic-pirated-movie-sites-delivers-lumma-stealer-4f203f7adabf
|
|
- https://medium.com/@shaherzakaria8/downloading-trojan-lumma-infostealer-through-capatcha-1f25255a0e71
|
|
- https://www.forensafe.com/blogs/runmrukey.html
|
|
- https://github.com/SigmaHQ/sigma/blob/master/rules-threat-hunting/windows/registry/registry_set/registry_set_runmru_command_execution.yml
|
|
drilldown_searches:
|
|
- name: View the detection results for - "$dest$"
|
|
search: '%original_detection_search% | search dest = "$dest$"'
|
|
earliest_offset: $info_min_time$
|
|
latest_offset: $info_max_time$
|
|
- name: View risk events for the last 7 days for - "$dest$"
|
|
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
|
|
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
|
|
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
|
|
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
|
|
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
|
|
| `security_content_ctime(lastTime)`'
|
|
earliest_offset: $info_min_time$
|
|
latest_offset: $info_max_time$
|
|
rba:
|
|
message: An instance of $registry_value_data$ was identified on endpoint $dest$
|
|
by user $user$ attempting to execute a command through the Run dialog box.
|
|
risk_objects:
|
|
- field: dest
|
|
type: system
|
|
score: 48
|
|
- field: user
|
|
type: user
|
|
score: 48
|
|
threat_objects:
|
|
- field: registry_value_data
|
|
type: registry_value_text
|
|
tags:
|
|
analytic_story:
|
|
- Lumma Stealer
|
|
asset_type: Endpoint
|
|
mitre_attack_id:
|
|
- T1202
|
|
product:
|
|
- Splunk Enterprise
|
|
- Splunk Enterprise Security
|
|
- Splunk Cloud
|
|
security_domain: endpoint
|
|
cve: []
|
|
atomic_guid:
|
|
- de323a93-2f18-4bd5-ba60-d6fca6aeff76
|
|
tests:
|
|
- name: True Positive Test
|
|
attack_data:
|
|
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1202/atomic_red_team/windows-sysmon_runmru.log
|
|
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
|
|
sourcetype: XmlWinEventLog
|