Skip to content

Commit dbea574

Browse files
authored
Merge branch 'develop' into notdoor_outlook_macros
2 parents 1a85b44 + 04b8e4e commit dbea574

File tree

39 files changed

+1289
-1210
lines changed

39 files changed

+1289
-1210
lines changed

detections/application/esxi_malicious_vib_forced_install.yml

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,58 +14,60 @@ description: Detects potentially malicious installation of VMware Installation
1414
modules, drivers, or monitoring tools to establish persistence or gain deeper
1515
control of the hypervisor.
1616
data_source:
17-
- VMWare ESXi Syslog
17+
- VMWare ESXi Syslog
1818
search: '`esxi_syslog` Message="* image profile with validation disabled. *" OR
1919
Message="* image profile bypassing signing and acceptance level verification.
2020
*" OR Message="* vib without valid signature, *"
2121
| rex field=_raw "Z (?<dest>[\w\.]+)\s"
2222
| stats min(_time) as firstTime max(_time) as lastTime count by dest Message
2323
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`
2424
| `esxi_malicious_vib_forced_install_filter`'
25-
how_to_implement: This is based on syslog data generated by VMware ESXi hosts. To implement this search,
26-
you must configure your ESXi systems to forward syslog output to your Splunk deployment. These logs must
25+
how_to_implement:
26+
This is based on syslog data generated by VMware ESXi hosts. To implement this search,
27+
you must configure your ESXi systems to forward syslog output to your Splunk deployment. These logs must
2728
be ingested with the appropriate Splunk Technology Add-on for VMware ESXi Logs, which provides field
28-
extractions and CIM compatibility.
29+
extractions and CIM compatibility.
2930
known_false_positives: Some third party vendor VIBs or patches may require the force option.
3031
references:
31-
- https://detect.fyi/detecting-and-responding-to-esxi-compromise-with-splunk-f33998ce7823
32+
- https://detect.fyi/detecting-and-responding-to-esxi-compromise-with-splunk-f33998ce7823
3233
drilldown_searches:
33-
- name: View the detection results for - "$dest$"
34-
search: '%original_detection_search% | search dest = "$dest$"'
35-
earliest_offset: $info_min_time$
36-
latest_offset: $info_max_time$
37-
- name: View risk events for the last 7 days for - "$dest$"
38-
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
39-
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
40-
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
41-
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
42-
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
43-
| `security_content_ctime(lastTime)`'
44-
earliest_offset: $info_min_time$
45-
latest_offset: $info_max_time$
34+
- name: View the detection results for - "$dest$"
35+
search: '%original_detection_search% | search dest = "$dest$"'
36+
earliest_offset: $info_min_time$
37+
latest_offset: $info_max_time$
38+
- name: View risk events for the last 7 days for - "$dest$"
39+
search:
40+
'| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
41+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
42+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
43+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
44+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
45+
| `security_content_ctime(lastTime)`'
46+
earliest_offset: $info_min_time$
47+
latest_offset: $info_max_time$
4648
rba:
4749
message: A VIB was installed on ESXi $dest$ with the force flag.
4850
risk_objects:
49-
- field: dest
50-
type: system
51-
score: 60
51+
- field: dest
52+
type: system
53+
score: 60
5254
threat_objects: []
5355
tags:
5456
analytic_story:
55-
- ESXi Post Compromise
56-
- Black Basta Ransomware
57-
- China-Nexus Threat Activity
57+
- ESXi Post Compromise
58+
- Black Basta Ransomware
59+
- China-Nexus Threat Activity
5860
asset_type: Infrastructure
5961
mitre_attack_id:
60-
- T1505.006
62+
- T1505.006
6163
product:
62-
- Splunk Enterprise
63-
- Splunk Enterprise Security
64-
- Splunk Cloud
64+
- Splunk Enterprise
65+
- Splunk Enterprise Security
66+
- Splunk Cloud
6567
security_domain: endpoint
6668
tests:
67-
- name: True Positive Test
68-
attack_data:
69-
- data: https://media.githubusercontent.com/media/splunk/attack_data/refs/heads/master/datasets/attack_techniques/T1505.006/esxi_malicious_vib/esxi_malicious_vib_forced_install.log
70-
source: vmware:esxlog
71-
sourcetype: vmw-syslog
69+
- name: True Positive Test
70+
attack_data:
71+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1505.006/esxi_malicious_vib/esxi_malicious_vib_forced_install.log
72+
source: vmware:esxlog
73+
sourcetype: vmw-syslog

detections/application/esxi_ssh_brute_force.yml

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ date: '2025-05-12'
55
author: Raven Tait, Splunk
66
status: production
77
type: Anomaly
8-
description: This detection identifies signs of SSH brute-force attacks by monitoring for a high
9-
number of failed login attempts within a short time frame. Such activity may indicate an
8+
description:
9+
This detection identifies signs of SSH brute-force attacks by monitoring for a high
10+
number of failed login attempts within a short time frame. Such activity may indicate an
1011
attacker attempting to gain unauthorized access through password guessing.
1112
data_source:
12-
- VMWare ESXi Syslog
13+
- VMWare ESXi Syslog
1314
search: '`esxi_syslog` Message="*Authentication failure for*"
1415
| rex "for (?<user>[\w]+) from (?<src_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"
1516
| rex field=_raw "Z (?<dest>[\w\.]+)\s"
@@ -18,49 +19,51 @@ search: '`esxi_syslog` Message="*Authentication failure for*"
1819
| where count > 10
1920
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`
2021
| `esxi_ssh_brute_force_filter`'
21-
how_to_implement: This is based on syslog data generated by VMware ESXi hosts. To implement this search,
22-
you must configure your ESXi systems to forward syslog output to your Splunk deployment. These logs must
22+
how_to_implement:
23+
This is based on syslog data generated by VMware ESXi hosts. To implement this search,
24+
you must configure your ESXi systems to forward syslog output to your Splunk deployment. These logs must
2325
be ingested with the appropriate Splunk Technology Add-on for VMware ESXi Logs, which provides field
24-
extractions and CIM compatibility.
25-
known_false_positives: Limited false positives in most environments, however tune
26+
extractions and CIM compatibility.
27+
known_false_positives:
28+
Limited false positives in most environments, however tune
2629
as needed.
2730
drilldown_searches:
28-
- name: View the detection results for - "$dest$"
29-
search: '%original_detection_search% | search dest = "$dest$"'
30-
earliest_offset: $info_min_time$
31-
latest_offset: $info_max_time$
32-
- name: View risk events for the last 7 days for - "$dest$"
33-
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
34-
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
35-
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
36-
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
37-
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
38-
| `security_content_ctime(lastTime)`'
39-
earliest_offset: $info_min_time$
40-
latest_offset: $info_max_time$
31+
- name: View the detection results for - "$dest$"
32+
search: '%original_detection_search% | search dest = "$dest$"'
33+
earliest_offset: $info_min_time$
34+
latest_offset: $info_max_time$
35+
- name: View risk events for the last 7 days for - "$dest$"
36+
search:
37+
'| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
38+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
39+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
40+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
41+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
42+
| `security_content_ctime(lastTime)`'
43+
earliest_offset: $info_min_time$
44+
latest_offset: $info_max_time$
4145
rba:
4246
message: Attempted SSH brute force on ESXi host $dest$.
4347
risk_objects:
44-
- field: dest
45-
type: system
46-
score: 25
48+
- field: dest
49+
type: system
50+
score: 25
4751
threat_objects: []
4852
tags:
4953
analytic_story:
50-
- ESXi Post Compromise
51-
- Black Basta Ransomware
54+
- ESXi Post Compromise
55+
- Black Basta Ransomware
5256
asset_type: Infrastructure
5357
mitre_attack_id:
54-
- T1110
58+
- T1110
5559
product:
56-
- Splunk Enterprise
57-
- Splunk Enterprise Security
58-
- Splunk Cloud
60+
- Splunk Enterprise
61+
- Splunk Enterprise Security
62+
- Splunk Cloud
5963
security_domain: endpoint
6064
tests:
61-
- name: True Positive Test
62-
attack_data:
63-
- data: http://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1110/esxi_ssh_brute_force/esxi_ssh_brute_force.log
64-
source: vmware:esxlog
65-
sourcetype: vmw-syslog
66-
65+
- name: True Positive Test
66+
attack_data:
67+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1110/esxi_ssh_brute_force/esxi_ssh_brute_force.log
68+
source: vmware:esxlog
69+
sourcetype: vmw-syslog

detections/endpoint/attacker_tools_on_endpoint.yml

Lines changed: 62 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ date: '2025-07-29'
55
author: Bhavin Patel, Splunk, sventec, Github Community
66
status: production
77
type: TTP
8-
description: The following analytic detects the execution of tools commonly exploited
8+
description:
9+
The following analytic detects the execution of tools commonly exploited
910
by cybercriminals, such as those used for unauthorized access, network scanning,
1011
or data exfiltration. It leverages process activity data from Endpoint Detection
1112
and Response (EDR) agents, focusing on known attacker tool names. This activity
@@ -14,14 +15,15 @@ description: The following analytic detects the execution of tools commonly expl
1415
lead to unauthorized access, data theft, or further network compromise, posing a
1516
severe threat to the organization's security infrastructure.
1617
data_source:
17-
- Sysmon EventID 1
18-
- Windows Event Log Security 4688
19-
- CrowdStrike ProcessRollup2
20-
- Cisco Network Visibility Module Flow Data
21-
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
18+
- Sysmon EventID 1
19+
- Windows Event Log Security 4688
20+
- CrowdStrike ProcessRollup2
21+
- Cisco Network Visibility Module Flow Data
22+
search:
23+
'| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
2224
as lastTime values(Processes.process) as process values(Processes.parent_process)
23-
as parent_process from datamodel=Endpoint.Processes where
24-
[| inputlookup attacker_tools | rename attacker_tool_names AS Processes.process_name | fields Processes.process_name] AND
25+
as parent_process from datamodel=Endpoint.Processes where
26+
[| inputlookup attacker_tools | rename attacker_tool_names AS Processes.process_name | fields Processes.process_name] AND
2527
Processes.dest!=unknown AND Processes.user!=unknown by Processes.action Processes.dest Processes.original_file_name
2628
Processes.parent_process Processes.parent_process_exec Processes.parent_process_guid
2729
Processes.parent_process_id Processes.parent_process_name Processes.parent_process_path
@@ -31,7 +33,8 @@ search: '| tstats `security_content_summariesonly` count min(_time) as firstTime
3133
| `security_content_ctime(lastTime)` | `drop_dm_object_name(Processes)` | lookup
3234
attacker_tools attacker_tool_names AS process_name OUTPUT description | search description
3335
!=false| `attacker_tools_on_endpoint_filter`'
34-
how_to_implement: The detection is based on data that originates from Endpoint Detection
36+
how_to_implement:
37+
The detection is based on data that originates from Endpoint Detection
3538
and Response (EDR) agents. These agents are designed to provide security-related
3639
telemetry from the endpoints where the agent is installed. To implement this search,
3740
you must ingest logs that contain the process GUID, process name, and parent process.
@@ -40,64 +43,67 @@ how_to_implement: The detection is based on data that originates from Endpoint D
4043
the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint`
4144
data model. Use the Splunk Common Information Model (CIM) to normalize the field
4245
names and speed up the data modeling process.
43-
known_false_positives: Some administrator activity can be potentially triggered, please
46+
known_false_positives:
47+
Some administrator activity can be potentially triggered, please
4448
add those users to the filter macro.
4549
references: []
4650
drilldown_searches:
47-
- name: View the detection results for - "$user$" and "$dest$"
48-
search: '%original_detection_search% | search user = "$user$" dest = "$dest$"'
49-
earliest_offset: $info_min_time$
50-
latest_offset: $info_max_time$
51-
- name: View risk events for the last 7 days for - "$user$" and "$dest$"
52-
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$user$",
53-
"$dest$") starthoursago=168 | stats count min(_time) as firstTime max(_time)
54-
as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk
55-
Message" values(analyticstories) as "Analytic Stories" values(annotations._all)
56-
as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics"
57-
by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
58-
earliest_offset: $info_min_time$
59-
latest_offset: $info_max_time$
51+
- name: View the detection results for - "$user$" and "$dest$"
52+
search: '%original_detection_search% | search user = "$user$" dest = "$dest$"'
53+
earliest_offset: $info_min_time$
54+
latest_offset: $info_max_time$
55+
- name: View risk events for the last 7 days for - "$user$" and "$dest$"
56+
search:
57+
'| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$user$",
58+
"$dest$") starthoursago=168 | stats count min(_time) as firstTime max(_time)
59+
as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk
60+
Message" values(analyticstories) as "Analytic Stories" values(annotations._all)
61+
as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics"
62+
by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
63+
earliest_offset: $info_min_time$
64+
latest_offset: $info_max_time$
6065
rba:
61-
message: An attacker tool $process_name$, listed in attacker_tools.csv is executed
66+
message:
67+
An attacker tool $process_name$, listed in attacker_tools.csv is executed
6268
on host $dest$ by User $user$. This process $process_name$ is known to do- $description$
6369
risk_objects:
64-
- field: user
65-
type: user
66-
score: 64
67-
- field: dest
68-
type: system
69-
score: 64
70+
- field: user
71+
type: user
72+
score: 64
73+
- field: dest
74+
type: system
75+
score: 64
7076
threat_objects:
71-
- field: process_name
72-
type: process_name
77+
- field: process_name
78+
type: process_name
7379
tags:
7480
analytic_story:
75-
- XMRig
76-
- Unusual Processes
77-
- SamSam Ransomware
78-
- CISA AA22-264A
79-
- Compromised Windows Host
80-
- PHP-CGI RCE Attack on Japanese Organizations
81-
- Cisco Network Visibility Module Analytics
82-
- Scattered Spider
81+
- XMRig
82+
- Unusual Processes
83+
- SamSam Ransomware
84+
- CISA AA22-264A
85+
- Compromised Windows Host
86+
- PHP-CGI RCE Attack on Japanese Organizations
87+
- Cisco Network Visibility Module Analytics
88+
- Scattered Spider
8389
asset_type: Endpoint
8490
mitre_attack_id:
85-
- T1003
86-
- T1036.005
87-
- T1595
91+
- T1003
92+
- T1036.005
93+
- T1595
8894
product:
89-
- Splunk Enterprise
90-
- Splunk Enterprise Security
91-
- Splunk Cloud
95+
- Splunk Enterprise
96+
- Splunk Enterprise Security
97+
- Splunk Cloud
9298
security_domain: endpoint
9399
tests:
94-
- name: True Positive Test - Sysmon
95-
attack_data:
96-
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1595/attacker_scan_tools/windows-sysmon.log
97-
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
98-
sourcetype: XmlWinEventLog
99-
- name: True Positive Test - Cisco NVM
100-
attack_data:
101-
- data: https://media.githubusercontent.com/media/splunk/attack_data/refs/heads/master/datasets/cisco_network_visibility_module/cisco_nvm_flowdata/nvm_flowdata.log
102-
source: not_applicable
103-
sourcetype: cisco:nvm:flowdata
100+
- name: True Positive Test - Sysmon
101+
attack_data:
102+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1595/attacker_scan_tools/windows-sysmon.log
103+
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
104+
sourcetype: XmlWinEventLog
105+
- name: True Positive Test - Cisco NVM
106+
attack_data:
107+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/cisco_network_visibility_module/cisco_nvm_flowdata/nvm_flowdata.log
108+
source: not_applicable
109+
sourcetype: cisco:nvm:flowdata

0 commit comments

Comments
 (0)