Branch was auto-updated.

This commit is contained in:
srv-rr-gh-researchbt
2023-05-15 12:16:32 -07:00
committed by GitHub
55 changed files with 298 additions and 1095 deletions
+18
View File
@@ -327,6 +327,24 @@
"`process_netsh`"
],
"description": "netsh macro"
},
"date version": {
"prefix": "date version",
"body": [
"version: 4",
"date: '2023-04-27'",
],
"description": "date version"
},
"time": {
"prefix": "time",
"body": [
"| `security_content_ctime(firstTime)`",
"| `security_content_ctime(lastTime)`",
],
"description": "time"
}
}
@@ -1,7 +1,7 @@
name: Active Setup Registry Autostart
id: f64579c0-203f-11ec-abcc-acde48001122
version: 3
date: '2023-04-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -14,18 +14,10 @@ description: This analytic is to detect a suspicious modification of the active
valid setup installer that creating or modifying this registry.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_value_name= "StubPath" Registry.registry_path = "*\\SOFTWARE\\Microsoft\\Active
Setup\\Installed Components*") BY _time span=1h Registry.registry_path Registry.registry_key_name
Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`] | fields firstTime lastTime dest user parent_process_name
parent_process process_name process_path process registry_key_name registry_path
registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`| `active_setup_registry_autostart_filter`'
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_value_name= "StubPath" Registry.registry_path = "*\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components*") BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`| `active_setup_registry_autostart_filter`'
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
@@ -62,15 +54,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Add DefaultUser And Password In Registry
id: d4a3eb62-0f1e-11ec-a971-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-03-29'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -13,19 +13,11 @@ description: this search is to detect a suspicious registry modification to impl
premise.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon*"
AND Registry.registry_value_name= DefaultPassword OR Registry.registry_value_name=
DefaultUserName) BY _time span=1h Registry.registry_path Registry.registry_key_name
Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`] | fields firstTime lastTime dest user parent_process_name
parent_process process_name process_path process registry_key_name registry_path
registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `add_defaultuser_and_password_in_registry_filter`'
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_path= "*SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon*" AND Registry.registry_value_name= DefaultPassword OR Registry.registry_value_name= DefaultUserName) BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `add_defaultuser_and_password_in_registry_filter`'
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
@@ -55,15 +47,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Allow Inbound Traffic By Firewall Rule Registry
id: 0a46537c-be02-11eb-92ca-acde48001122
version: 4
date: '2022-11-14'
version: 5
date: '2023-03-29'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,19 +11,11 @@ description: This analytic detects a potential suspicious modification of firewa
by allowing the traffic in a firewall rule.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\System\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\FirewallRules\\*"
Registry.registry_value_data = "*|Action=Allow|*" Registry.registry_value_data =
"*|Dir=In|*" Registry.registry_value_data = "*|LPort=*") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `allow_inbound_traffic_by_firewall_rule_registry_filter`'
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_path= "*\\System\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\FirewallRules\\*" Registry.registry_value_data = "*|Action=Allow|*" Registry.registry_value_data = "*|Dir=In|*" Registry.registry_value_data = "*|LPort=*") BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `allow_inbound_traffic_by_firewall_rule_registry_filter`'
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
@@ -60,15 +52,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Allow Operation with Consent Admin
id: 7de17d7a-c9d8-11eb-a812-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-03-29'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,19 +12,11 @@ description: This analytic identifies a potential privilege escalation attempt t
machine.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\Microsoft\\Windows\\CurrentVersion\\Policies\\System*"
Registry.registry_value_name = ConsentPromptBehaviorAdmin Registry.registry_value_data
= "0x00000000") BY _time span=1h Registry.registry_path Registry.registry_key_name
Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`] | fields firstTime lastTime dest user parent_process_name
parent_process process_name process_path process registry_key_name registry_path
registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `allow_operation_with_consent_admin_filter`'
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_path= "*\\Microsoft\\Windows\\CurrentVersion\\Policies\\System*" Registry.registry_value_name = ConsentPromptBehaviorAdmin Registry.registry_value_data = "0x00000000") BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `allow_operation_with_consent_admin_filter`'
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
@@ -60,15 +52,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Auto Admin Logon Registry Entry
id: 1379d2b8-0f18-11ec-8ca3-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-11'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -13,19 +13,12 @@ description: this search is to detect a suspicious registry modification to impl
premise.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count 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.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `auto_admin_logon_registry_entry_filter`'
search: '| tstats `security_content_summariesonly` count 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.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)`
| `auto_admin_logon_registry_entry_filter`'
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
@@ -56,15 +49,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,28 +1,22 @@
name: Disable AMSI Through Registry
id: 9c27ec42-d338-11eb-9044-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-11'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
description: this search is to identify modification in registry to disable AMSI windows
feature to evade detections. This technique was seen in several ransomware, RAT
and even APT to impaire defenses of the compromise machine and to be able to execute
payload with minimal alert as much as possible.
payload with minimal alert as much as possible.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows Script\\Settings\\AmsiEnable"
Registry.registry_value_data = "0x00000000") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_amsi_through_registry_filter`'
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows Script\\Settings\\AmsiEnable" Registry.registry_value_data = "0x00000000") BY _time span=1h 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)`
| `disable_amsi_through_registry_filter`'
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
@@ -54,15 +48,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable Defender AntiVirus Registry
id: aa4f695a-3024-11ec-9987-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-11'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,19 +12,12 @@ description: This particular behavior is typically executed when an adversary or
any further file modifications. Endpoint should be isolated.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path = "*\\Policies\\Microsoft\\Windows Defender*" Registry.registry_value_name
IN ("DisableAntiSpyware","DisableAntiVirus") Registry.registry_value_data = 0x00000001)
BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `disable_defender_antivirus_registry_filter`'
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_path = "*\\Policies\\Microsoft\\Windows Defender*" Registry.registry_value_name IN ("DisableAntiSpyware","DisableAntiVirus") Registry.registry_value_data = 0x00000001) BY _time span=1h 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)`
| `disable_defender_antivirus_registry_filter`'
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
@@ -58,15 +51,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,28 +1,22 @@
name: Disable Defender BlockAtFirstSeen Feature
id: 2dd719ac-3021-11ec-97b4-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-11'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
description: This analytic is intended to detect a suspicious modification of the
Windows registry to disable a Windows Defender feature. This technique is intended
to bypass or evade detection from Windows Defender AV, specifically the BlockAtFirstSeen
feature where it blocks suspicious files the first time seen on the host.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path = "*\\Microsoft\\Windows Defender\\SpyNet*" Registry.registry_value_name
= DisableBlockAtFirstSeen Registry.registry_value_data = 0x00000001) BY _time span=1h
Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_defender_blockatfirstseen_feature_filter`'
description: This analytic is intended to detect a suspicious modification of the Windows registry to disable
a Windows Defender feature. This technique is intended to bypass or evade detection from
Windows Defender AV, specifically the BlockAtFirstSeen feature where it blocks
suspicious files the first time seen on the host.
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_path = "*\\Microsoft\\Windows Defender\\SpyNet*" Registry.registry_value_name = DisableBlockAtFirstSeen Registry.registry_value_data = 0x00000001) BY _time span=1h 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)`
| `disable_defender_blockatfirstseen_feature_filter`'
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
@@ -57,15 +51,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable Defender MpEngine Registry
id: cc391750-3024-11ec-955a-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-11'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,19 +12,12 @@ description: This particular behavior is typically executed when an adversary or
any further file modifications. Endpoint should be isolated.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path = "*\\Policies\\Microsoft\\Windows Defender\\MpEngine*"
Registry.registry_value_name = MpEnablePus Registry.registry_value_data = 0x00000000)
BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `disable_defender_mpengine_registry_filter`'
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_path = "*\\Policies\\Microsoft\\Windows Defender\\MpEngine*" Registry.registry_value_name = MpEnablePus Registry.registry_value_data = 0x00000000) BY _time span=1h 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)`
| `disable_defender_mpengine_registry_filter`'
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
@@ -58,15 +51,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable Defender Spynet Reporting
id: 898debf4-3021-11ec-ba7c-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,17 +11,11 @@ description: This analytic is intended to detect a suspicious modification of re
Defender telemetry.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path = "*\\Microsoft\\Windows Defender\\SpyNet*" Registry.registry_value_name
= SpynetReporting Registry.registry_value_data = 0x00000000) BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_defender_spynet_reporting_filter`'
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
@@ -58,15 +52,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable Defender Submit Samples Consent Feature
id: 73922ff8-3022-11ec-bf5e-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,17 +11,11 @@ description: This analytic is intended to detect a suspicious modification of th
that submits samples for further analysis.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path = "*\\Microsoft\\Windows Defender\\SpyNet*" Registry.registry_value_name
= SubmitSamplesConsent Registry.registry_value_data = 0x00000000) BY _time span=1h
Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_defender_submit_samples_consent_feature_filter`'
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
@@ -57,15 +51,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable ETW Through Registry
id: f0eacfa4-d33f-11eb-8f9d-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,17 +11,11 @@ description: this search is to identify modification in registry to disable ETW
payload with minimal alert as much as possible.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\.NETFramework\\ETWEnabled"
Registry.registry_value_data = "0x00000000") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_etw_through_registry_filter`'
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
@@ -53,15 +47,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
+4 -19
View File
@@ -1,7 +1,7 @@
name: Disable Registry Tool
id: cd2cf33c-9201-11eb-a10a-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,17 +12,11 @@ description: This search identifies modification of registry to disable the rege
and defense evasion.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableRegistryTools"
Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)`| where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_registry_tool_filter`'
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
@@ -53,15 +47,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable Security Logs Using MiniNt Registry
id: 39ebdc68-25b9-11ec-aec7-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,16 +11,10 @@ description: This analytic is to detect a suspicious registry modification to di
will not log any event to the Security Log
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path="*\\Control\\MiniNt\\*") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_security_logs_using_minint_registry_filter`'
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
@@ -54,15 +48,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable Show Hidden Files
id: 6f3ccfa2-91fe-11eb-8f9b-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,19 +11,13 @@ description: The following analytic is to identify a modification in the Windows
on the infected machine.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE ((Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Hidden"
OR Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\HideFileExt"
Registry.registry_value_data = "0x00000001") OR (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\ShowSuperHidden"
Registry.registry_value_data = "0x00000000")) BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)`| where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_show_hidden_files_filter`'
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
@@ -57,15 +51,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable UAC Remote Restriction
id: 9928b732-210e-11ec-b65e-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,17 +12,11 @@ description: This analytic is to detect a suspicious modification of registry to
gain privilege escalation.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path="*\\CurrentVersion\\Policies\\System*" Registry.registry_value_name="LocalAccountTokenFilterPolicy"
Registry.registry_value_data="0x00000001" ) BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)`| where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_uac_remote_restriction_filter`'
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
@@ -58,15 +52,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable Windows App Hotkeys
id: 1490f224-ad8b-11eb-8c4f-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunkk
status: production
type: TTP
@@ -12,18 +12,12 @@ description: This analytic detects a suspicious registry modification to disable
implant in compromised systems.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path="*\\Windows NT\\CurrentVersion\\Image File Execution
Options\\*" AND Registry.registry_value_data= "HotKey Disabled" AND Registry.registry_value_name
= "Debugger") BY _time span=1h Registry.registry_path Registry.registry_key_name
Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`] | fields firstTime lastTime dest user parent_process_name
parent_process process_name process_path process registry_key_name registry_path
registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_windows_app_hotkeys_filter`'
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
@@ -54,15 +48,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable Windows Behavior Monitoring
id: 79439cae-9200-11eb-a4d3-acde48001122
version: 3
date: '2023-04-25'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -10,11 +10,7 @@ description: This search is to identifies a modification in registry to disable
seen in RAT, bot, or Trojan to disable AV to evade detections.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time
Protection\\DisableBehaviorMonitoring" OR Registry.registry_path= "*\\SOFTWARE\\Policies\\Microsoft\\Windows
Defender\\Real-Time Protection\\DisableOnAccessProtection" OR Registry.registry_path=
@@ -25,9 +21,7 @@ search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime
Protection\\DisableIOAVProtection" OR Registry.registry_path= "*\\Real-Time Protection\\DisableScriptScanning"
AND Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disable_windows_behavior_monitoring_filter`'
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
@@ -62,15 +56,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disable Windows SmartScreen Protection
id: 664f0fd0-91ff-11eb-a56f-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,17 +12,10 @@ description: The following search identifies a modification of registry to disab
downloading other of its component or other payload.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\SmartScreenEnabled" Registry.registry_value_data=
"Off") BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `disable_windows_smartscreen_protection_filter`'
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
@@ -57,15 +50,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disabling CMD Application
id: ff86077c-9212-11eb-a1e6-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,17 +11,11 @@ description: this search is to identify modification in registry to disable cmd
to traverse on directory and files.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\\DisableCMD"
Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disabling_cmd_application_filter`'
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
@@ -56,15 +50,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
+4 -19
View File
@@ -1,7 +1,7 @@
name: Disabling ControlPanel
id: 6ae0148e-9215-11eb-a94a-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -10,17 +10,11 @@ description: this search is to identify registry modification to disable control
persistence removed on the infected machine.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoControlPanel"
Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)`| where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disabling_controlpanel_filter`'
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
@@ -55,15 +49,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disabling Defender Services
id: 911eacdc-317f-11ec-ad30-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,19 +12,13 @@ description: This particular behavior is typically executed when an adversaries
any further file modifications. Endpoint should be isolated.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path = "*\\System\\CurrentControlSet\\Services\\*" AND
(Registry.registry_path IN("*WdBoot*", "*WdFilter*", "*WdNisDrv*", "*WdNisSvc*","*WinDefend*",
"*SecurityHealthService*")) AND Registry.registry_value_name = Start Registry.registry_value_data
= 0x00000004) BY _time span=1h Registry.registry_path Registry.registry_key_name
Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`] | fields firstTime lastTime dest user parent_process_name
parent_process process_name process_path process registry_key_name registry_path
registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `drop_dm_object_name(Registry)`| where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disabling_defender_services_filter`'
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
@@ -60,15 +54,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disabling FolderOptions Windows Feature
id: 83776de4-921a-11eb-868a-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,17 +12,11 @@ description: This search is to identify registry modification to disable folder
fake file extensions.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoFolderOptions"
Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)`| where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disabling_folderoptions_windows_feature_filter`'
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
@@ -57,15 +51,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disabling NoRun Windows App
id: de81bc46-9213-11eb-adc9-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,17 +12,11 @@ description: This search is to identify modification of registry to disable run
known application run easily through run shortcut.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoRun"
Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)`| where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disabling_norun_windows_app_filter`'
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
@@ -59,15 +53,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Disabling SystemRestore In Registry
id: f4f837e2-91fb-11eb-8bf6-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,20 +11,14 @@ description: The following search identifies the modification of registry relate
their infection on the box.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\\DisableSR"
OR Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\\DisableConfig"
OR Registry.registry_path= "*\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\SystemRestore\\DisableSR"
OR Registry.registry_path= "*\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\SystemRestore\\DisableConfig"
Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)`| where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disabling_systemrestore_in_registry_filter`'
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
@@ -59,15 +53,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
+4 -19
View File
@@ -1,7 +1,7 @@
name: Disabling Task Manager
id: dac279bc-9202-11eb-b7fb-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,17 +11,11 @@ description: This search is to identifies modification of registry to disable th
their process.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableTaskMgr"
Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `disabling_task_manager_filter`'
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
@@ -56,15 +50,6 @@ tags:
- Splunk Enterprise Security
- Splunk Cloud
required_fields:
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Enable RDP In Other Port Number
id: 99495452-b899-11eb-96dc-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,18 +11,11 @@ description: This search is to detect a modification to registry to enable rdp t
control of it.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path="*HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal
Server\\WinStations\\RDP-Tcp*" Registry.registry_value_name = "PortNumber") BY _time
span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
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)` | `enable_rdp_in_other_port_number_filter`'
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
@@ -56,15 +49,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Enable WDigest UseLogonCredential Registry
id: 0c7d8ffe-25b1-11ec-9f39-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,18 +12,11 @@ description: This analytic is to detect a suspicious registry modification to en
crendential of the host so it must be a good pivot for credential dumping techniques.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path="*\\System\\CurrentControlSet\\Control\\SecurityProviders\\WDigest\\*"
Registry.registry_value_name = "UseLogonCredential" Registry.registry_value_data
= 0x00000001) BY _time span=1h Registry.registry_path Registry.registry_key_name
Registry.registry_value_name = "UseLogonCredential" Registry.registry_value_data=0x00000001) BY _time span=1h Registry.registry_path Registry.registry_key_name
Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`] | fields firstTime lastTime dest user parent_process_name
parent_process process_name process_path process registry_key_name registry_path
registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `enable_wdigest_uselogoncredential_registry_filter`'
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
@@ -59,15 +52,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -79,6 +63,6 @@ tags:
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1003/wdigest_enable/sysmon.log
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1112/atomic_red_team/wdigest_windows-sysmon.log
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
sourcetype: xmlwineventlog
+4 -19
View File
@@ -1,7 +1,7 @@
name: ETW Registry Disabled
id: 8ed523ac-276b-11ec-ac39-acde48001122
version: 3
date: '2023-04-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -10,17 +10,11 @@ description: This analytic is to detect a registry modification to disable ETW f
its execution from audit logs.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path="*\\SOFTWARE\\Microsoft\\.NETFramework*" Registry.registry_value_name
= ETWEnabled Registry.registry_value_data=0x00000000) BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `etw_registry_disabled_filter`'
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
@@ -59,15 +53,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Hide User Account From Sign-In Screen
id: 834ba832-ad89-11eb-937d-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,17 +12,11 @@ description: This analytic identifies a suspicious registry modification to hide
on that said machine.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path="*\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\Userlist*"
AND Registry.registry_value_data = "0x00000000") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `hide_user_account_from_sign_in_screen_filter`'
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
@@ -64,15 +58,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Linux Account Manipulation Of SSH Config and Keys
id: 73a56508-1cf5-4df7-b8d9-5737fbdc27d2
version: 1
date: '2022-04-12'
version: 2
date: '2023-04-27'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -18,15 +18,9 @@ search: '| tstats `security_content_summariesonly` count min(_time) as firstTime
as lastTime FROM datamodel=Endpoint.Filesystem where Filesystem.action=deleted AND
Filesystem.file_path IN ("/etc/ssh/*", "~/.ssh/*") by _time span=1h Filesystem.file_name
Filesystem.file_path Filesystem.dest Filesystem.process_guid Filesystem.action |
`drop_dm_object_name(Filesystem)` |rename process_guid as proc_guid |join proc_guid,
_time [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Processes
where Processes.parent_process_name != unknown by _time span=1h Processes.process_id
Processes.process_name Processes.process Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_path 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 action] | table process_name process proc_guid file_name file_path
action _time parent_process_name parent_process process_path dest user | `linux_account_manipulation_of_ssh_config_and_keys_filter`'
`drop_dm_object_name(Filesystem)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`| `linux_account_manipulation_of_ssh_config_and_keys_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting
logs with the process name, parent process, and command-line executions from your
endpoints. If you are using Sysmon, you can use the Add-on for Linux Sysmon from
@@ -63,15 +57,6 @@ tags:
- Filesystem.process_guid
- Filesystem.file_path
- Filesystem.action
- Processes.dest
- Processes.user
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_name
- Processes.process_path
- Processes.process
- Processes.process_id
- Processes.parent_process_id
risk_score: 49
security_domain: endpoint
tests:
@@ -79,4 +64,4 @@ tests:
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/acidrain/sysmon_linux.log
source: Syslog:Linux-Sysmon/Operational
sourcetype: sysmon_linux
sourcetype: sysmon_linux
@@ -1,7 +1,7 @@
name: Linux Deletion Of Cron Jobs
id: 3b132a71-9335-4f33-9932-00bb4f6ac7e8
version: 1
date: '2023-04-14'
version: 2
date: '2023-04-27'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -16,18 +16,10 @@ description: This analytic is to detect a deletion of cron job in a linux machin
data_source:
- Sysmon Event ID 11
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
as lastTime FROM datamodel=Endpoint.Filesystem where Filesystem.action=deleted Filesystem.file_path
="/etc/cron.*" by _time span=1h Filesystem.file_name Filesystem.file_path Filesystem.dest
Filesystem.process_guid Filesystem.action | `drop_dm_object_name(Filesystem)` |rename
process_guid as proc_guid |join proc_guid, _time [ | tstats `security_content_summariesonly`
count FROM datamodel=Endpoint.Processes where Processes.parent_process_name != unknown
by _time span=1h Processes.process_id Processes.process_name Processes.process Processes.dest
Processes.parent_process_name Processes.parent_process Processes.process_path 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 action]
| table process_name process proc_guid file_name file_path action _time parent_process_name
parent_process process_path dest user | `linux_deletion_of_cron_jobs_filter`'
as lastTime FROM datamodel=Endpoint.Filesystem where Filesystem.action=deleted Filesystem.file_path="/etc/cron.*" by _time span=1h Filesystem.file_name Filesystem.file_path Filesystem.dest
Filesystem.process_guid Filesystem.action | `drop_dm_object_name(Filesystem)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`| `linux_deletion_of_cron_jobs_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting
logs with the process name, parent process, and command-line executions from your
endpoints. If you are using Sysmon, you can use the Add-on for Linux Sysmon from
@@ -65,15 +57,6 @@ tags:
- Filesystem.process_guid
- Filesystem.file_path
- Filesystem.action
- Processes.dest
- Processes.user
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_name
- Processes.process_path
- Processes.process
- Processes.process_id
- Processes.parent_process_id
risk_score: 49
security_domain: endpoint
tests:
@@ -1,7 +1,7 @@
name: Linux Deletion Of Init Daemon Script
id: 729aab57-d26f-4156-b97f-ab8dda8f44b1
version: 1
date: '2023-04-14'
version: 2
date: '2023-04-27'
author: Teoderick Contreras, Splunk
status: production
type: TTP
@@ -20,15 +20,8 @@ search: '| tstats `security_content_summariesonly` count min(_time) as firstTime
as lastTime FROM datamodel=Endpoint.Filesystem where Filesystem.action=deleted Filesystem.file_path
IN ( "/etc/init.d/*") by _time span=1h Filesystem.file_name Filesystem.file_path
Filesystem.dest Filesystem.process_guid Filesystem.action | `drop_dm_object_name(Filesystem)`
|rename process_guid as proc_guid |join proc_guid, _time [ | tstats `security_content_summariesonly`
count FROM datamodel=Endpoint.Processes where Processes.parent_process_name != unknown
by _time span=1h Processes.process_id Processes.process_name Processes.process Processes.dest
Processes.parent_process_name Processes.parent_process Processes.process_path 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 action]
| table process_name process proc_guid file_name file_path action _time parent_process_name
parent_process process_path dest user | `linux_deletion_of_init_daemon_script_filter`'
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`| `linux_deletion_of_init_daemon_script_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting
logs with the process name, parent process, and command-line executions from your
endpoints. If you are using Sysmon, you can use the Add-on for Linux Sysmon from
@@ -66,15 +59,6 @@ tags:
- Filesystem.process_guid
- Filesystem.file_path
- Filesystem.action
- Processes.dest
- Processes.user
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_name
- Processes.process_path
- Processes.process
- Processes.process_id
- Processes.parent_process_id
risk_score: 49
security_domain: endpoint
tests:
@@ -82,4 +66,4 @@ tests:
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/acidrain/sysmon_linux.log
source: Syslog:Linux-Sysmon/Operational
sourcetype: sysmon_linux
sourcetype: sysmon_linux
@@ -1,7 +1,7 @@
name: Linux Deletion Of Services
id: b509bbd3-0331-4aaa-8e4a-d2affe100af6
version: 1
date: '2023-04-14'
version: 2
date: '2023-04-27'
author: Teoderick Contreras, Splunk
status: production
type: TTP
@@ -18,16 +18,9 @@ search: '| tstats `security_content_summariesonly` count min(_time) as firstTime
as lastTime FROM datamodel=Endpoint.Filesystem where Filesystem.action=deleted Filesystem.file_path
IN ( "/etc/systemd/*", "*/lib/systemd/*", "*/run/systemd/*") Filesystem.file_path
= "*.service" by _time span=1h Filesystem.file_name Filesystem.file_path Filesystem.dest
Filesystem.process_guid Filesystem.action | `drop_dm_object_name(Filesystem)` |rename
process_guid as proc_guid |join proc_guid, _time [ | tstats `security_content_summariesonly`
count FROM datamodel=Endpoint.Processes where Processes.parent_process_name != unknown
by _time span=1h Processes.process_id Processes.process_name Processes.process Processes.dest
Processes.parent_process_name Processes.parent_process Processes.process_path 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 action]
| table process_name process proc_guid file_name file_path action _time parent_process_name
parent_process process_path dest user | `linux_deletion_of_services_filter`'
Filesystem.process_guid Filesystem.action | `drop_dm_object_name(Filesystem)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`| `linux_deletion_of_services_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting
logs with the process name, parent process, and command-line executions from your
endpoints. If you are using Sysmon, you can use the Add-on for Linux Sysmon from
@@ -68,15 +61,6 @@ tags:
- Filesystem.process_guid
- Filesystem.file_path
- Filesystem.action
- Processes.dest
- Processes.user
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_name
- Processes.process_path
- Processes.process
- Processes.process_id
- Processes.parent_process_id
risk_score: 64
security_domain: endpoint
tests:
@@ -84,4 +68,4 @@ tests:
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/acidrain/sysmon_linux.log
source: Syslog:Linux-Sysmon/Operational
sourcetype: sysmon_linux
sourcetype: sysmon_linux
@@ -1,7 +1,7 @@
name: Linux Deletion of SSL Certificate
id: 839ab790-a60a-4f81-bfb3-02567063f615
version: 1
date: '2022-04-12'
version: 2
date: '2023-04-27'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -19,15 +19,9 @@ search: '| tstats `security_content_summariesonly` count min(_time) as firstTime
as lastTime FROM datamodel=Endpoint.Filesystem where Filesystem.action=deleted Filesystem.file_path
= "/etc/ssl/certs/*" Filesystem.file_path IN ("*.pem", "*.crt") by _time span=1h
Filesystem.file_name Filesystem.file_path Filesystem.dest Filesystem.process_guid
Filesystem.action | `drop_dm_object_name(Filesystem)` |rename process_guid as proc_guid
|join proc_guid, _time [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Processes
where Processes.parent_process_name != unknown by _time span=1h Processes.process_id
Processes.process_name Processes.process Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_path 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 action] | table process_name process proc_guid file_name file_path
action _time parent_process_name parent_process process_path dest user | `linux_deletion_of_ssl_certificate_filter`'
Filesystem.action | `drop_dm_object_name(Filesystem)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`| `linux_deletion_of_ssl_certificate_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting
logs with the process name, parent process, and command-line executions from your
endpoints. If you are using Sysmon, you can use the Add-on for Linux Sysmon from
@@ -64,15 +58,6 @@ tags:
- Filesystem.process_guid
- Filesystem.file_path
- Filesystem.action
- Processes.dest
- Processes.user
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_name
- Processes.process_path
- Processes.process
- Processes.process_id
- Processes.parent_process_id
risk_score: 49
security_domain: endpoint
tests:
@@ -80,4 +65,4 @@ tests:
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/malware/acidrain/sysmon_linux.log
source: Syslog:Linux-Sysmon/Operational
sourcetype: sysmon_linux
sourcetype: sysmon_linux
@@ -1,7 +1,7 @@
name: Linux High Frequency Of File Deletion In Boot Folder
id: e27fbc5d-0445-4c4a-bc39-87f060d5c602
version: 1
date: '2023-04-14'
version: 2
date: '2023-04-27'
author: Teoderick Contreras, Splunk
status: production
type: TTP
@@ -16,18 +16,10 @@ search: '| tstats `security_content_summariesonly` values(Filesystem.file_name)
deletedFileNames values(Filesystem.file_path) as deletedFilePath dc(Filesystem.file_path)
as numOfDelFilePath count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Filesystem
where Filesystem.action=deleted Filesystem.file_path = "/boot/*" by _time span=1h Filesystem.dest
Filesystem.process_guid Filesystem.action | `drop_dm_object_name(Filesystem)` |rename
process_guid as proc_guid |join proc_guid, _time [ | tstats `security_content_summariesonly`
count FROM datamodel=Endpoint.Processes where Processes.parent_process_name != unknown
NOT (Processes.parent_process_name IN ("/usr/bin/dpkg", "*usr/bin/python*", "*/usr/bin/apt-*",
"/bin/rm", "*splunkd", "/usr/bin/mandb")) by _time span=1h Processes.process_id
Processes.process_name Processes.process Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_path 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 action] | table process_name process proc_guid action _time deletedFileNames
deletedFilePath numOfDelFilePath parent_process_name parent_process process_path
dest user | where numOfDelFilePath >= 200 | `linux_high_frequency_of_file_deletion_in_boot_folder_filter`'
Filesystem.process_guid Filesystem.action | `drop_dm_object_name(Filesystem)` | where numOfDelFilePath >= 200
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `linux_high_frequency_of_file_deletion_in_boot_folder_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting
logs with the process name, parent process, and command-line executions from your
endpoints. If you are using Sysmon, you can use the Add-on for Linux Sysmon from
@@ -66,15 +58,6 @@ tags:
- Filesystem.process_guid
- Filesystem.file_path
- Filesystem.action
- Processes.dest
- Processes.user
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_name
- Processes.process_path
- Processes.process
- Processes.process_id
- Processes.parent_process_id
risk_score: 80
security_domain: endpoint
tests:
@@ -82,4 +65,4 @@ tests:
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1485/rm_boot_dir/sysmon_linux.log
source: Syslog:Linux-Sysmon/Operational
sourcetype: sysmon_linux
sourcetype: sysmon_linux
@@ -1,7 +1,7 @@
name: Linux High Frequency Of File Deletion In Etc Folder
id: 9d867448-2aff-4d07-876c-89409a752ff8
version: 1
date: '2023-04-14'
version: 2
date: '2023-04-27'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -16,18 +16,10 @@ search: '| tstats `security_content_summariesonly` values(Filesystem.file_name)
deletedFileNames values(Filesystem.file_path) as deletedFilePath dc(Filesystem.file_path)
as numOfDelFilePath count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Filesystem
where Filesystem.action=deleted Filesystem.file_path = "/etc/*" by _time span=1h Filesystem.dest
Filesystem.process_guid Filesystem.action | `drop_dm_object_name(Filesystem)` |rename
process_guid as proc_guid |join proc_guid, _time [ | tstats `security_content_summariesonly`
count FROM datamodel=Endpoint.Processes where Processes.parent_process_name != unknown
NOT (Processes.parent_process_name IN ("/usr/bin/dpkg", "*usr/bin/python*", "*/usr/bin/apt-*",
"/bin/rm", "*splunkd", "/usr/bin/mandb")) by _time span=1h Processes.process_id
Processes.process_name Processes.process Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_path 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 action] | table process_name process proc_guid action _time deletedFileNames
deletedFilePath numOfDelFilePath parent_process_name parent_process process_path
dest user | where numOfDelFilePath >= 200 | `linux_high_frequency_of_file_deletion_in_etc_folder_filter`'
Filesystem.process_guid Filesystem.action | `drop_dm_object_name(Filesystem)` | where numOfDelFilePath >= 200
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `linux_high_frequency_of_file_deletion_in_etc_folder_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting
logs with the process name, parent process, and command-line executions from your
endpoints. If you are using Sysmon, you can use the Add-on for Linux Sysmon from
@@ -65,15 +57,6 @@ tags:
- Filesystem.process_guid
- Filesystem.file_path
- Filesystem.action
- Processes.dest
- Processes.user
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_name
- Processes.process_path
- Processes.process
- Processes.process_id
- Processes.parent_process_id
risk_score: 49
security_domain: endpoint
tests:
@@ -1,7 +1,7 @@
name: Monitor Registry Keys for Print Monitors
id: f5f6af30-7ba7-4295-bfe9-07de87c01bbc
version: 4
date: '2022-11-14'
version: 5
date: '2023-04-27'
author: Steven Dick, Bhavin Patel, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,17 +12,10 @@ description: This search looks for registry activity associated with modificatio
with elevated (SYSTEM) permissions and will persist after reboot.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
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.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)` | `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `monitor_registry_keys_for_print_monitors_filter`'
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
@@ -54,15 +47,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Registry Keys for Creating SHIM Databases
id: f5f6af30-7aa7-4295-bfe9-07fe87c01bbb
version: 5
date: '2022-11-14'
version: 6
date: '2023-04-27'
author: Steven Dick, Bhavin Patel, Patrick Bareiss, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -9,17 +9,10 @@ description: This search looks for registry activity associated with application
shims, which can be leveraged by attackers for various nefarious purposes.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count 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 _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
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`'
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
@@ -56,15 +49,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Registry Keys Used For Privilege Escalation
id: c9f4b923-f8af-4155-b697-1354f5bcbc5e
version: 6
date: '2023-04-14'
version: 7
date: '2023-04-27'
author: Steven Dick, David Dorsey, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -11,18 +11,11 @@ description: This search looks for modifications to registry keys that can be us
to benign system binaries.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE ((Registry.registry_path="*Microsoft\\Windows NT\\CurrentVersion\\Image File
Execution Options*") AND (Registry.registry_value_name=GlobalFlag OR Registry.registry_value_name=Debugger))
BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
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_used_for_privilege_escalation_filter`'
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
@@ -63,15 +56,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Time Provider Persistence Registry
id: 5ba382c4-2105-11ec-8d8f-acde48001122
version: 3
date: '2023-04-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -12,17 +12,10 @@ description: This analytic is to detect a suspicious modification of time provid
modified by normal user or even an admin.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path="*\\CurrentControlSet\\Services\\W32Time\\TimeProviders*")
BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)` | `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `time_provider_persistence_registry_filter`'
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
@@ -61,15 +54,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Windows Defender Exclusion Registry Entry
id: 13395a44-4dd9-11ec-9df7-acde48001122
version: 2
date: '2022-11-14'
version: 3
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -13,17 +13,10 @@ description: This analytic will detect a suspicious process that modify a regist
defense evasion and to look further for events after this behavior.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path = "*\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Exclusions\\*")
BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
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)` | `windows_defender_exclusion_registry_entry_filter`'
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
@@ -61,15 +54,6 @@ tags:
- Splunk Enterprise Security
- Splunk Cloud
required_fields:
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Windows Disable Change Password Through Registry
id: 0df33e1a-9ef6-11ec-a1ad-acde48001122
version: 2
date: '2022-11-14'
version: 3
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -16,17 +16,11 @@ description: This analytic is to detect a suspicious registry modification to di
is needed to minimized false positive.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableChangePassword"
Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_disable_change_password_through_registry_filter`'
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
@@ -58,15 +52,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Windows Disable Lock Workstation Feature Through Registry
id: c82adbc6-9f00-11ec-a81f-acde48001122
version: 2
date: '2022-11-14'
version: 3
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -12,17 +12,11 @@ description: This analytic is to detect a suspicious registry modification to di
to the compromised host.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableLockWorkstation"
Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_disable_lock_workstation_feature_through_registry_filter`'
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
@@ -54,15 +48,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Windows Disable LogOff Button Through Registry
id: b2fb6830-9ed1-11ec-9fcb-acde48001122
version: 2
date: '2022-11-14'
version: 3
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -16,18 +16,12 @@ description: This analytic is to detect a suspicious registry modification to di
filter of machine and users that can modify this registry is needed.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\*"
Registry.registry_value_name IN ("NoLogOff", "StartMenuLogOff") Registry.registry_value_data
= "0x00000001") BY _time span=1h Registry.registry_path Registry.registry_key_name
Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`] | fields firstTime lastTime dest user parent_process_name
parent_process process_name process_path process registry_key_name registry_path
registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_disable_logoff_button_through_registry_filter`'
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
@@ -61,15 +55,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Windows Disable Memory Crash Dump
id: 59e54602-9680-11ec-a8a6-acde48001122
version: 1
date: '2023-04-14'
version: 2
date: '2023-04-27'
author: Michael Haag, Splunk
status: production
type: TTP
@@ -18,14 +18,9 @@ search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint
AND Registry.registry_value_data="0x00000000" 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)`
|join process_guid [| 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)` | fields _time dest user parent_process_name parent_process
process_name process_path process process_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 process_guid registry_path registry_value_name
registry_value_data registry_key_name | `windows_disable_memory_crash_dump_filter`'
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_disable_memory_crash_dump_filter`'
how_to_implement: To successfully implement this search you need to be ingesting information
on process that include the name of the Filesystem responsible for the changes from
your endpoints into the `Endpoint` datamodel in the `Filesystem` and `Registry`
@@ -70,19 +65,12 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Filesystem.file_create_time
- Filesystem.process_id
- Filesystem.file_name
- Filesystem.user
- Filesystem.file_path
- Filesystem.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.dest
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
- Registry.registry_path
- Registry.registry_value_data
- Registry.process_guid
risk_score: 90
security_domain: endpoint
tests:
@@ -1,7 +1,7 @@
name: Windows Disable Notification Center
id: 1cd983c8-8fd6-11ec-a09d-acde48001122
version: 2
date: '2022-11-14'
version: 3
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -12,17 +12,11 @@ description: The following search identifies a modification of registry to disab
downloading other of its component or other payload.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_value_name= "DisableNotificationCenter" Registry.registry_value_data
= "0x00000001") BY _time span=1h Registry.registry_path Registry.registry_key_name
Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`] | fields firstTime lastTime dest user parent_process_name
parent_process process_name process_path process registry_key_name registry_path
registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_disable_notification_center_filter`'
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
@@ -55,15 +49,6 @@ tags:
- Splunk Enterprise Security
- Splunk Cloud
required_fields:
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Windows Disable Shutdown Button Through Registry
id: 55fb2958-9ecd-11ec-a06a-acde48001122
version: 2
date: '2022-11-14'
version: 3
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -14,18 +14,12 @@ description: This analytic is to detect a suspicious registry modification to di
users that can modify this registry is needed.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE ((Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\shutdownwithoutlogon"
Registry.registry_value_data = "0x00000000") OR (Registry.registry_path="*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoClose"
Registry.registry_value_data = "0x00000001")) BY _time span=1h Registry.registry_path
Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_disable_shutdown_button_through_registry_filter`'
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
@@ -57,15 +51,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Windows Disable Windows Group Policy Features Through Registry
id: 63a449ae-9f04-11ec-945e-acde48001122
version: 3
date: '2022-11-14'
version: 4
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -14,12 +14,8 @@ description: This analytic is to detect a suspicious registry modification to di
allowed doing this is needed.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time) AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name Processes.parent_process Processes.process_guid
| `drop_dm_object_name(Processes)`
| join process_guid [
| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\*" OR Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\*" Registry.registry_value_name IN ("NoDesktop", "NoFind", "NoControlPanel", "NoFileMenu", "NoSetTaskbar", "NoTrayContextMenu", "TaskbarLockAll", "NoThemesTab","NoPropertiesMyDocuments","NoVisualStyleChoice","NoColorChoice","NoPropertiesMyDocuments") Registry.registry_value_data = "0x00000001") BY _time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name process_path process registry_key_name registry_path registry_value_name registry_value_data process_guid
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\*" OR Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\*" Registry.registry_value_name IN ("NoDesktop", "NoFind", "NoControlPanel", "NoFileMenu", "NoSetTaskbar", "NoTrayContextMenu", "TaskbarLockAll", "NoThemesTab","NoPropertiesMyDocuments","NoVisualStyleChoice","NoColorChoice","NoPropertiesMyDocuments") Registry.registry_value_data = "0x00000001") BY _time span=1h 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)`
@@ -56,15 +52,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Windows Hide Notification Features Through Registry
id: cafa4bce-9f06-11ec-a7b2-acde48001122
version: 2
date: '2022-11-14'
version: 3
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: Anomaly
@@ -13,19 +13,12 @@ description: This analytic is to detect a suspicious registry modification to hi
In this scenario filter is needed.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path= "*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\*"
Registry.registry_value_name IN ("HideClock", "HideSCAHealth", "HideSCANetwork",
"HideSCAPower", "HideSCAVolume") Registry.registry_value_data = "0x00000001") BY
_time span=1h Registry.registry_path Registry.registry_key_name Registry.registry_value_name
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)`]
| fields firstTime lastTime dest user parent_process_name parent_process process_name
process_path process registry_key_name registry_path registry_value_name registry_value_data
process_guid | where isnotnull(registry_value_data) | `security_content_ctime(firstTime)`
Registry.registry_value_data Registry.process_guid | `drop_dm_object_name(Registry)` | `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)` | `windows_hide_notification_features_through_registry_filter`'
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
@@ -56,15 +49,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,7 +1,7 @@
name: Windows Modify Show Compress Color And Info Tip Registry
id: b7548c2e-9a10-11ec-99e3-acde48001122
version: 2
date: '2023-04-14'
version: 3
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -14,17 +14,11 @@ description: This analytic is to look for suspicious registry modification relat
NTFS file system.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path = "*\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced*"
AND Registry.registry_value_name IN("ShowCompColor", "ShowInfoTip")) BY _time span=1h
Registry.registry_path Registry.registry_key_name Registry.registry_value_name Registry.registry_value_data
Registry.process_guid | `drop_dm_object_name(Registry)`] | fields firstTime lastTime
dest user parent_process_name parent_process process_name process_path process registry_key_name
registry_path registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
Registry.process_guid | `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_modify_show_compress_color_and_info_tip_registry_filter`'
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
@@ -56,15 +50,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name
@@ -1,10 +1,10 @@
name: Windows Registry Certificate Added
id: 5ee98b2f-8b9e-457a-8bdc-dd41aaba9e87
version: 1
date: '2022-03-31'
version: 2
date: '2023-04-27'
author: Michael Haag, Splunk
status: production
type: TTP
type: Anomaly
description: The following analytic identifies installation of a root CA certificate
by monitoring the registry. The base paths may be found [here](https://gist.github.com/mattifestation/75d6117707bcf8c26845b3cbb6ad2b6b/raw/ae65ef15c706140ffc2e165615204e20f2903028/RootCAInstallationDetection.xml).
In short, there are specific certificate registry paths that will be written to
@@ -20,11 +20,10 @@ search: '| tstats `security_content_summariesonly` count from datamodel=Endpoint
where Registry.registry_path IN ("*\\certificates\\*") AND Registry.registry_value_name="Blob"
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)` | join process_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.process_guid | `drop_dm_object_name(Processes)`]
| table _time dest user process_name process process_guid registry_path registry_value_name
registry_value_data registry_key_name | `windows_registry_certificate_added_filter`'
`drop_dm_object_name(Registry)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_registry_certificate_added_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` and `Registry` node.
@@ -62,11 +61,6 @@ tags:
- Registry.registry_key_name
- Registry.registry_value_name
- Registry.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.dest
- Processes.process_guid
risk_score: 42
security_domain: endpoint
tests:
@@ -1,7 +1,7 @@
name: Windows Registry Modification for Safe Mode Persistence
id: c6149154-c9d8-11eb-9da7-acde48001122
version: 3
date: '2022-03-31'
version: 4
date: '2023-04-27'
author: Teoderick Contreras, Michael Haag, Splunk
status: production
type: TTP
@@ -17,11 +17,10 @@ search: '| tstats `security_content_summariesonly` count from datamodel=Endpoint
where Registry.registry_path IN ("*SYSTEM\\CurrentControlSet\\Control\\SafeBoot\\Minimal\\*","*SYSTEM\\CurrentControlSet\\Control\\SafeBoot\\Network\\*")
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)` | join process_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.process_guid | `drop_dm_object_name(Processes)`]
| table _time dest user process_name process process_guid registry_path registry_value_name
registry_value_data registry_key_name | `windows_registry_modification_for_safe_mode_persistence_filter`'
`drop_dm_object_name(Registry)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_registry_modification_for_safe_mode_persistence_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
@@ -63,11 +62,6 @@ tags:
- Registry.registry_key_name
- Registry.registry_value_name
- Registry.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.dest
- Processes.process_guid
risk_score: 42
security_domain: endpoint
tests:
@@ -1,7 +1,7 @@
name: Windows Service Creation Using Registry Entry
id: 25212358-948e-11ec-ad47-acde48001122
version: 2
date: '2022-11-14'
version: 3
date: '2023-04-27'
author: Steven Dick, Teoderick Contreras, Splunk
status: production
type: TTP
@@ -13,17 +13,11 @@ description: This analytic is to look for suspicious modification or creation of
to create a service entry using registry ImagePath.
data_source:
- Sysmon Event ID 1
search: '| tstats `security_content_summariesonly` count min(_time) AS firstTime max(_time)
AS lastTime FROM datamodel=Endpoint.Processes BY _time span=1h Processes.user Processes.process_id
Processes.process_name Processes.process Processes.process_path Processes.dest Processes.parent_process_name
Processes.parent_process Processes.process_guid | `drop_dm_object_name(Processes)`
| join process_guid [ | tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Registry
WHERE (Registry.registry_path="*\\SYSTEM\\CurrentControlSet\\Services*" Registry.registry_value_name
= ImagePath) BY _time span=1h Registry.registry_path Registry.registry_key_name
Registry.registry_value_name Registry.registry_value_data Registry.process_guid
| `drop_dm_object_name(Registry)`] | fields firstTime lastTime dest user parent_process_name
parent_process process_name process_path process registry_key_name registry_path
registry_value_name registry_value_data process_guid | where isnotnull(registry_value_data)
| `drop_dm_object_name(Registry)` | where isnotnull(registry_value_data)
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_service_creation_using_registry_entry_filter`'
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
@@ -57,15 +51,6 @@ tags:
- Splunk Cloud
required_fields:
- _time
- Processes.user
- Processes.dest
- Processes.process_id
- Processes.process_name
- Processes.process
- Processes.process_path
- Processes.parent_process_name
- Processes.parent_process
- Processes.process_guid
- Registry.dest
- Registry.registry_value_name
- Registry.registry_key_name