Try in Splunk Security Cloud


The following analytic detects registry activity related to the creation of application compatibility shims. It leverages data from the Endpoint.Registry data model, specifically monitoring registry paths associated with AppCompatFlags. This activity is significant because attackers can use shims to bypass security controls, achieve persistence, or escalate privileges. If confirmed malicious, this could allow an attacker to maintain long-term access, execute arbitrary code, or manipulate application behavior, posing a severe risk to the integrity and security of the affected systems.

  • Type: TTP
  • Product: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
  • Datamodel: Endpoint
  • Last Updated: 2024-05-17
  • Author: Steven Dick, Bhavin Patel, Patrick Bareiss, Teoderick Contreras, Splunk
  • ID: f5f6af30-7aa7-4295-bfe9-07fe87c01bbb




ID Technique Tactic
T1546.011 Application Shimming Privilege Escalation, Persistence
T1546 Event Triggered Execution Privilege Escalation, Persistence
Kill Chain Phase
  • Exploitation
  • Installation
  • DE.CM
  • CIS 10
| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_path=*CurrentVersion\\AppCompatFlags\\Custom* OR Registry.registry_path=*CurrentVersion\\AppCompatFlags\\InstalledSDB*) BY _time span=1h Registry.dest Registry.user Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data Registry.process_guid 
| `drop_dm_object_name(Registry)` 
| where isnotnull(registry_value_data) 
| `security_content_ctime(firstTime)` 
| `security_content_ctime(lastTime)` 
| `registry_keys_for_creating_shim_databases_filter`


The SPL above uses the following Macros:

:information_source: registry_keys_for_creating_shim_databases_filter is a empty macro by default. It allows the user to filter out any results (false positives) without editing the SPL.

Required fields

List of fields required to use this analytic.

  • _time
  • Registry.dest
  • Registry.registry_value_name
  • Registry.registry_key_name
  • Registry.registry_path
  • Registry.registry_value_data
  • Registry.process_guid

How To Implement

To successfully implement this search, you need to be ingesting logs with the registry value name, registry path, and registry value data from your endpoints. If you are using Sysmon, you must have at least version 2.0 of the offical Sysmon TA.

Known False Positives

There are many legitimate applications that leverage shim databases for compatibility purposes for legacy applications

Associated Analytic Story


Risk Score Impact Confidence Message
56.0 70 80 A registry activity in $registry_path$ related to shim modication in host $dest$

:information_source: The Risk Score is calculated by the following formula: Risk Score = (Impact * Confidence/100). Initial Confidence and Impact is set by the analytic author.


Test Dataset

Replay any dataset to Splunk Enterprise by using our tool or the UI. Alternatively you can replay a dataset into a Splunk Attack Range

source | version: 7