mirror of
https://github.com/splunk/security_content
synced 2026-06-08 17:32:49 +00:00
Branch was auto-updated.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
name: Auto Admin Logon Registry Entry
|
||||
id: 1379d2b8-0f18-11ec-8ca3-acde48001122
|
||||
version: 1
|
||||
date: '2021-09-06'
|
||||
version: 2
|
||||
date: '2020-01-28'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
@@ -12,12 +12,19 @@ description: this search is to detect a suspicious registry modification to impl
|
||||
continue encrypting the whole network. This behavior is not a common practice and
|
||||
really a suspicious TTP or alert need to be consider if found within then network
|
||||
premise.
|
||||
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
|
||||
as lastTime from datamodel=Endpoint.Registry where Registry.registry_path= "*SOFTWARE\\Microsoft\\Windows
|
||||
NT\\CurrentVersion\\Winlogon*" AND Registry.registry_key_name=AutoAdminLogon AND
|
||||
Registry.registry_value_name=1 by Registry.registry_path Registry.registry_key_name
|
||||
Registry.registry_value_name Registry.dest | `drop_dm_object_name(Registry)` | `security_content_ctime(firstTime)`
|
||||
|`security_content_ctime(lastTime)` | `auto_admin_logon_registry_entry_filter`'
|
||||
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Registry
|
||||
where Registry.registry_path= "*SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon*"
|
||||
AND Registry.registry_value_name=AutoAdminLogon
|
||||
AND Registry.registry_value_data=1
|
||||
by _time span=1h Registry.dest Registry.user Registry.registry_path Registry.registry_value_name Registry.process_guid Registry.registry_key_name Registry.registry_value_data
|
||||
| `drop_dm_object_name(Registry)`
|
||||
|rename process_guid as proc_guid |join proc_guid, _time [| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Processes
|
||||
by _time span=1h Processes.process_id Processes.process_name Processes.process Processes.dest Processes.parent_process_name Processes.parent_process Processes.process_guid
|
||||
| `drop_dm_object_name(Processes)`
|
||||
|rename process_guid as proc_guid
|
||||
| fields _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data registry_key_name]
|
||||
| table _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data registry_key_name
|
||||
| `auto_admin_logon_registry_entry_filter`'
|
||||
how_to_implement: To successfully implement this search you need to be ingesting information
|
||||
on process that include the name of the process responsible for the changes from
|
||||
your endpoints into the `Endpoint` datamodel in the `Registry` node. Also make sure
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
name: Monitor Registry Keys for Print Monitors
|
||||
id: f5f6af30-7ba7-4295-bfe9-07de87c01bbc
|
||||
version: 2
|
||||
date: '2020-11-23'
|
||||
author: Bhavin Patel, Splunk
|
||||
version: 3
|
||||
date: '2020-01-28'
|
||||
author: Bhavin Patel, Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
description: This search looks for registry activity associated with modifications
|
||||
@@ -10,11 +10,17 @@ description: This search looks for registry activity associated with modificatio
|
||||
scenario, an attacker can load an arbitrary .dll into the print-monitor registry
|
||||
by giving the full path name to the after.dll. The system will execute the .dll
|
||||
with elevated (SYSTEM) permissions and will persist after reboot.
|
||||
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
|
||||
as lastTime FROM datamodel=Endpoint.Registry where Registry.action=modified AND
|
||||
Registry.registry_path="*CurrentControlSet\\Control\\Print\\Monitors*" by Registry.dest,
|
||||
Registry.registry_key_name Registry.user Registry.registry_path Registry.registry_value_name
|
||||
Registry.action | `drop_dm_object_name(Registry)` | `monitor_registry_keys_for_print_monitors_filter`'
|
||||
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
|
||||
where Registry.action=modified AND Registry.registry_path="*CurrentControlSet\\Control\\Print\\Monitors*"
|
||||
by _time span=1h Registry.dest Registry.user Registry.registry_path Registry.registry_value_name Registry.process_guid Registry.registry_key_name Registry.registry_value_data
|
||||
| `drop_dm_object_name(Registry)`
|
||||
|rename process_guid as proc_guid |join proc_guid, _time [| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Processes
|
||||
by _time span=1h Processes.process_id Processes.process_name Processes.process Processes.dest Processes.parent_process_name Processes.parent_process Processes.process_guid
|
||||
| `drop_dm_object_name(Processes)`
|
||||
|rename process_guid as proc_guid
|
||||
| fields _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data registry_key_name]
|
||||
| table _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data registry_key_name
|
||||
| `monitor_registry_keys_for_print_monitors_filter`'
|
||||
how_to_implement: To successfully implement this search, you must be ingesting data
|
||||
that records registry activity from your hosts to populate the endpoint data model
|
||||
in the registry node. This is typically populated via endpoint detection-and-response
|
||||
@@ -41,6 +47,7 @@ tags:
|
||||
- Stage:Privilege Escalation
|
||||
dataset:
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1547.010/atomic_red_team/windows-sysmon.log
|
||||
- https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1547.010/atomic_red_team/sysmon.log
|
||||
impact: 80
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
|
||||
@@ -1,17 +1,23 @@
|
||||
name: Registry Keys for Creating SHIM Databases
|
||||
id: f5f6af30-7aa7-4295-bfe9-07fe87c01bbb
|
||||
version: 3
|
||||
date: '2020-11-26'
|
||||
author: Bhavin Patel, Patrick Bareiss, Splunk
|
||||
version: 4
|
||||
date: '2020-01-28'
|
||||
author: Bhavin Patel, Patrick Bareiss, Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel: []
|
||||
description: This search looks for registry activity associated with application compatibility
|
||||
shims, which can be leveraged by attackers for various nefarious purposes.
|
||||
search: '| tstats `security_content_summariesonly` count values(Registry.registry_key_name)
|
||||
as registry_key_name min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Registry
|
||||
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
|
||||
where Registry.registry_path=*CurrentVersion\\AppCompatFlags\\Custom* OR Registry.registry_path=*CurrentVersion\\AppCompatFlags\\InstalledSDB*
|
||||
by Registry.dest Registry.user | `security_content_ctime(lastTime)` | `security_content_ctime(firstTime)`
|
||||
| `drop_dm_object_name(Registry)` | `registry_keys_for_creating_shim_databases_filter`'
|
||||
by _time span=1h Registry.dest Registry.user Registry.registry_path Registry.registry_value_name Registry.registry_value_data Registry.process_guid
|
||||
| `drop_dm_object_name(Registry)`
|
||||
|rename process_guid as proc_guid |join proc_guid, _time [| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Processes
|
||||
by _time span=1h Processes.process_id Processes.process_name Processes.process Processes.dest Processes.parent_process_name Processes.parent_process Processes.process_guid
|
||||
| `drop_dm_object_name(Processes)`
|
||||
|rename process_guid as proc_guid
|
||||
| fields _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data]
|
||||
| table _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data
|
||||
| `registry_keys_for_creating_shim_databases_filter`'
|
||||
how_to_implement: To successfully implement this search, you must populate the Change_Analysis
|
||||
data model. This is typically populated via endpoint detection and response product,
|
||||
such as Carbon Black or other endpoint data sources such as Sysmon. The data used
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: Sdclt UAC Bypass
|
||||
id: d71efbf6-da63-11eb-8c6e-acde48001122
|
||||
version: 1
|
||||
date: '2021-07-01'
|
||||
version: 2
|
||||
date: '2020-01-28'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
@@ -10,13 +10,19 @@ description: This search is to detect a suspicious sdclt.exe registry modificati
|
||||
This technique is commonly seen when attacker try to bypassed UAC by using sdclt.exe
|
||||
application by modifying some registry that sdclt.exe tries to open or query with
|
||||
payload file path on it to be executed.
|
||||
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
|
||||
as lastTime from datamodel=Endpoint.Registry where (Registry.registry_path= "*\\Windows\\CurrentVersion\\App
|
||||
Paths\\control.exe*" OR Registry.registry_path= "*\\exefile\\shell\\runas\\command\\*")
|
||||
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Registry
|
||||
where (Registry.registry_path= "*\\Windows\\CurrentVersion\\App Paths\\control.exe*"
|
||||
OR Registry.registry_path= "*\\exefile\\shell\\runas\\command\\*")
|
||||
(Registry.registry_value_name = "(Default)" OR Registry.registry_value_name = "IsolatedCommand")
|
||||
by Registry.registry_path Registry.registry_key_name Registry.registry_value_name
|
||||
Registry.dest | `drop_dm_object_name(Registry)` | `security_content_ctime(firstTime)`
|
||||
| `security_content_ctime(lastTime)` | `sdclt_uac_bypass_filter`'
|
||||
by _time span=1h Registry.dest Registry.user Registry.registry_path Registry.registry_value_name Registry.process_guid Registry.registry_key_name Registry.registry_value_data
|
||||
| `drop_dm_object_name(Registry)`
|
||||
|rename process_guid as proc_guid |join proc_guid, _time [| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Processes
|
||||
by _time span=1h Processes.process_id Processes.process_name Processes.process Processes.dest Processes.parent_process_name Processes.parent_process Processes.process_guid
|
||||
| `drop_dm_object_name(Processes)`
|
||||
|rename process_guid as proc_guid
|
||||
| fields _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data registry_key_name]
|
||||
| table _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data registry_key_name
|
||||
| `sdclt_uac_bypass_filter`'
|
||||
how_to_implement: To successfully implement this search you need to be ingesting information
|
||||
on process that include the name of the process responsible for the changes from
|
||||
your endpoints into the `Endpoint` datamodel in the `Processes` node.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: SilentCleanup UAC Bypass
|
||||
id: 56d7cfcc-da63-11eb-92d4-acde48001122
|
||||
version: 1
|
||||
date: '2021-07-01'
|
||||
version: 2
|
||||
date: '2020-01-28'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
@@ -10,11 +10,18 @@ description: This search is to detect a suspicious modification of registry that
|
||||
related to UAC bypassed. This registry will be trigger once the attacker abuse the
|
||||
silentcleanup task schedule to gain high privilege execution that will bypass User
|
||||
control account.
|
||||
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
|
||||
as lastTime from datamodel=Endpoint.Registry where Registry.registry_path= "*\\Environment\\windir"
|
||||
Registry.registry_value_name = "*.exe*" by Registry.registry_path Registry.registry_key_name
|
||||
Registry.registry_value_name Registry.dest | `drop_dm_object_name(Registry)` | `security_content_ctime(firstTime)`
|
||||
| `security_content_ctime(lastTime)` | `silentcleanup_uac_bypass_filter`'
|
||||
search: '| tstats `security_content_summariesonly` count from datamodel=Endpoint.Registry
|
||||
where Registry.registry_path= "*\\Environment\\windir"
|
||||
Registry.registry_value_data = "*.exe*"
|
||||
by _time span=1h Registry.dest Registry.user Registry.registry_path Registry.registry_value_name Registry.registry_value_data Registry.process_guid Registry.registry_key_name
|
||||
| `drop_dm_object_name(Registry)`
|
||||
|rename process_guid as proc_guid |join proc_guid, _time [| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Processes
|
||||
by _time span=1h Processes.process_id Processes.process_name Processes.process Processes.dest Processes.parent_process_name Processes.parent_process Processes.process_guid
|
||||
| `drop_dm_object_name(Processes)`
|
||||
|rename process_guid as proc_guid
|
||||
| fields _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data registry_key_name]
|
||||
| table _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data registry_key_name
|
||||
| `silentcleanup_uac_bypass_filter`'
|
||||
how_to_implement: To successfully implement this search you need to be ingesting information
|
||||
on process that include the name of the process responsible for the changes from
|
||||
your endpoints into the `Endpoint` datamodel in the `Registry` node. Also make sure
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: WSReset UAC Bypass
|
||||
id: 8b5901bc-da63-11eb-be43-acde48001122
|
||||
version: 1
|
||||
date: '2021-07-01'
|
||||
version: 2
|
||||
date: '2020-01-28'
|
||||
author: Teoderick Contreras, Splunk
|
||||
type: TTP
|
||||
datamodel:
|
||||
@@ -10,12 +10,18 @@ description: This search is to detect a suspicious modification of registry rela
|
||||
to UAC bypass. This technique is to modify the registry in this detection, create
|
||||
a registry value with the path of the payload and run WSreset.exe to bypass User
|
||||
account Control.
|
||||
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
|
||||
as lastTime from datamodel=Endpoint.Registry where Registry.registry_path= "*\\AppX82a6gwre4fdg3bt635tn5ctqjf8msdd2\\Shell\\open\\command*"
|
||||
(Registry.registry_value_name = "(Default)" OR Registry.registry_value_name = "DelegateExecute")
|
||||
by Registry.registry_path Registry.registry_key_name Registry.registry_value_name
|
||||
Registry.dest | `drop_dm_object_name(Registry)` | `security_content_ctime(firstTime)`
|
||||
| `security_content_ctime(lastTime)` | `wsreset_uac_bypass_filter`'
|
||||
search: '| tstats `security_content_summariesonly` count from datamodel=Endpoint.Registry
|
||||
where Registry.registry_path= "*\\AppX82a6gwre4fdg3bt635tn5ctqjf8msdd2\\Shell\\open\\command*"
|
||||
AND (Registry.registry_value_name = "(Default)" OR Registry.registry_value_name = "DelegateExecute")
|
||||
by _time span=1h Registry.dest Registry.user Registry.registry_path Registry.registry_value_name Registry.registry_value_data Registry.process_guid Registry.registry_key_name
|
||||
| `drop_dm_object_name(Registry)`
|
||||
|rename process_guid as proc_guid |join proc_guid, _time [| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Processes
|
||||
by _time span=1h Processes.process_id Processes.process_name Processes.process Processes.dest Processes.parent_process_name Processes.parent_process Processes.process_guid
|
||||
| `drop_dm_object_name(Processes)`
|
||||
|rename process_guid as proc_guid
|
||||
| fields _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data registry_key_name]
|
||||
| table _time dest user parent_process_name parent_process process_name process_path process proc_guid registry_path registry_value_name registry_value_data registry_key_name
|
||||
| `wsreset_uac_bypass_filter`'
|
||||
how_to_implement: To successfully implement this search you need to be ingesting information
|
||||
on process that include the name of the process responsible for the changes from
|
||||
your endpoints into the `Endpoint` datamodel in the `Registry` node. Also make sure
|
||||
|
||||
@@ -7,6 +7,6 @@ tests:
|
||||
latest_time: 'now'
|
||||
attack_data:
|
||||
- file_name: windows-sysmon.log
|
||||
data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1547.001/atomic_red_team/windows-sysmon.log
|
||||
data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1547.010/atomic_red_team/sysmon.log
|
||||
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
|
||||
sourcetype: xmlwineventlog
|
||||
|
||||
Reference in New Issue
Block a user