Skip to content

Commit feb9ec4

Browse files
committed
update to fix ci errors
1 parent 8efe3b1 commit feb9ec4

6 files changed

+67
-51
lines changed

detections/cloud/circle_ci_disable_security_step.yml

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,23 @@ description: The following analytic detects the disablement of security steps in
1515
with the disablement, and examine any relevant artifacts and concurrent processes.
1616
data_source:
1717
- CircleCI
18-
search: '`circleci` | rename workflows.job_id AS job_id | join job_id [ | search `circleci`
19-
| stats values(name) as step_names count by job_id job_name ] | stats count by step_names
20-
job_id job_name vcs.committer_name vcs.subject vcs.url owners{} | rename vcs.* as
21-
* , owners{} as user | lookup mandatory_step_for_job job_name OUTPUTNEW step_name
22-
AS mandatory_step | search mandatory_step=* | eval mandatory_step_executed=if(like(step_names,
23-
"%".mandatory_step."%"), 1, 0) | where mandatory_step_executed=0 | rex field=url
24-
"(?<repository>[^\/]*\/[^\/]*)$" | eval phase="build" | `security_content_ctime(firstTime)`
25-
| `security_content_ctime(lastTime)` | `circle_ci_disable_security_step_filter`'
18+
search: '`circleci`
19+
| rename workflows.job_id AS job_id
20+
| join job_id [
21+
| search `circleci`
22+
| stats values(name) as step_names count by job_id job_name
23+
]
24+
| stats count by
25+
step_names job_id job_name vcs.committer_name vcs.subject vcs.url owners{}
26+
| rename vcs.* as * , owners{} as user
27+
| lookup mandatory_step_for_job job_name OUTPUTNEW step_name AS mandatory_step
28+
| search mandatory_step=*
29+
| eval mandatory_step_executed=if(like(step_names, "%".mandatory_step."%"), 1, 0)
30+
| where mandatory_step_executed=0 | rex field=url "(?<repository>[^\/]*\/[^\/]*)$"
31+
| eval phase="build"
32+
| `security_content_ctime(firstTime)`
33+
| `security_content_ctime(lastTime)`
34+
| `circle_ci_disable_security_step_filter`'
2635
how_to_implement: You must index CircleCI logs.
2736
known_false_positives: unknown
2837
references: []

detections/cloud/gsuite_drive_share_in_external_email.yml

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,25 @@ description: The following analytic detects Google Drive or Google Docs files sh
1414
this behavior helps in early detection and mitigation of data breaches.
1515
data_source:
1616
- G Suite Drive
17-
search: '`gsuite_drive` NOT (email IN("", "null")) | rex field=parameters.owner "[^@]+@(?<src_domain>[^@]+)"
18-
| rex field=email "[^@]+@(?<dest_domain>[^@]+)" | where src_domain = "internal_test_email.com"
19-
and not dest_domain = "internal_test_email.com" | eval phase="plan" | eval severity="low"
20-
| stats values(parameters.doc_title) as doc_title, values(parameters.doc_type) as
21-
doc_types, values(email) as dst_email_list, values(parameters.visibility) as visibility,
22-
values(parameters.doc_id) as doc_id, count min(_time) as firstTime max(_time) as
23-
lastTime by parameters.owner ip_address phase severity | rename parameters.owner
24-
as user ip_address as src_ip | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`
25-
| `gsuite_drive_share_in_external_email_filter`'
17+
search: |
18+
`gsuite_drive` NOT (email IN("", "null"))
19+
| spath path=parameters.owner output=owner
20+
| rex field=owner "[^@]+@(?<src_domain>[^@]+)"
21+
| rex field=email "[^@]+@(?<dest_domain>[^@]+)"
22+
| where src_domain = "internal_test_email.com" and not dest_domain = "internal_test_email.com"
23+
| eval phase="plan"
24+
| eval severity="low"
25+
| stats values(parameters.doc_title) as doc_title,
26+
values(parameters.doc_type) as doc_types,
27+
values(email) as dst_email_list,
28+
values(parameters.visibility) as visibility,
29+
values(parameters.doc_id) as doc_id,
30+
count min(_time) as firstTime max(_time) as lastTime
31+
by parameters.owner ip_address phase severity
32+
| rename parameters.owner as user ip_address as src_ip
33+
| `security_content_ctime(firstTime)`
34+
| `security_content_ctime(lastTime)`
35+
| `gsuite_drive_share_in_external_email_filter`
2636
how_to_implement: To successfully implement this search, you need to be ingesting
2737
logs related to gsuite having the file attachment metadata like file type, file
2838
extension, source email, destination email, num of attachment and etc. In order

detections/cloud/microsoft_intune_mobile_apps.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ id: 98e6b389-2806-4426-a580-8a92cb0d9710
33
version: 3
44
date: '2025-06-10'
55
author: Dean Luxton
6-
status: production
6+
status: experimental
77
type: Hunting
88
description: |
99
Microsoft Intune supports deploying packaged applications to support software deployment, this functionality can also be abused for deploying malicious payloads to intune managed devices.
@@ -39,9 +39,3 @@ tags:
3939
- Splunk Enterprise Security
4040
- Splunk Cloud
4141
security_domain: audit
42-
tests:
43-
- name: True Positive Test
44-
attack_data:
45-
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1072/intune/intune.log
46-
sourcetype: azure:monitor:activity
47-
source: Azure AD

detections/endpoint/windows_ad_suspicious_gpo_modification.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ type: TTP
88
data_source:
99
- Windows Event Log Security 5136
1010
- Windows Event Log Security 5145
11-
description: This analytic looks for a the creation of potentially harmful GPO which
11+
description: |
12+
This analytic looks for a the creation of potentially harmful GPO which
1213
could lead to persistence or code execution on remote hosts. Note, this analyic
1314
is looking for the absence of the corresponding 5136 events which is evidence of
1415
the GPOs being manually edited (using a tool like PowerView) or potentially missing
@@ -40,13 +41,13 @@ search: "`wineventlog_security` EventCode=5145 ShareName=\"\\\\\\\\*\\\\SYSVOL\"
4041
values(Logon_ID) as Logon_ID values(newPolicy) as newPolicy values(OpCorrelationID)
4142
as OpCorrelationID values(folder) as folder values(file) as file by gpo_guid |
4243
mvexpand folder | where NOT folder IN (newPolicy) | `windows_ad_suspicious_gpo_modification_filter`"
43-
how_to_implement: Ingest EventCodes 5145 and 5136 from domain controllers. Additional
44+
how_to_implement: |
45+
Ingest EventCodes 5145 and 5136 from domain controllers. Additional
4446
SACLs required to capture EventCode 5136, see references for further information
4547
on how to configure this. The Group Policy - Audit Detailed File Share will need
4648
to be enabled on the DCs to generate event code 5145, this event is very noisy on
4749
DCs, consider tuning out sysvol events which do not match access mask 0x2.
48-
known_false_positives: When a GPO is manually edited and 5136 events are not logging
49-
to Splunk.
50+
known_false_positives: When a GPO is manually edited and 5136 events are not logging to Splunk.
5051
references:
5152
- https://github.com/PowerShellMafia/PowerSploit/blob/26a0757612e5654b4f792b012ab8f10f95d391c9/Recon/PowerView.ps1#L5907-L6122
5253
- https://github.com/X-C3LL/GPOwned

detections/endpoint/windows_moveit_transfer_writing_aspx.yml

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
name: Windows MOVEit Transfer Writing ASPX
22
id: c0ed2aca-5666-45b3-813f-ddfac3f3eda0
33
version: 7
4-
date: '2025-06-10'
4+
date: '2025-06-16'
55
author: Michael Haag, Splunk
66
status: production
77
type: TTP
88
data_source:
9-
- Sysmon EventID 1 AND Sysmon EventID 11
9+
- Sysmon EventID 11
1010
description: The following analytic detects the creation of new ASPX files in the
1111
MOVEit Transfer application's "wwwroot" directory. It leverages endpoint data on
1212
process and filesystem activity to identify processes responsible for creating these
@@ -15,26 +15,26 @@ description: The following analytic detects the creation of new ASPX files in th
1515
ASPX files. If confirmed malicious, this could lead to exfiltration of sensitive
1616
data, including user credentials and file metadata, posing a severe risk to the
1717
organization's security.
18-
search: '| tstats `security_content_summariesonly` count FROM datamodel=Endpoint.Processes
19-
where Processes.process_name=System by _time span=1h by Processes.action Processes.dest Processes.original_file_name
20-
Processes.parent_process Processes.parent_process_exec Processes.parent_process_guid
21-
Processes.parent_process_id Processes.parent_process_name Processes.parent_process_path
22-
Processes.process Processes.process_exec Processes.process_guid Processes.process_hash
23-
Processes.process_id Processes.process_integrity_level Processes.process_name Processes.process_path
24-
Processes.user Processes.user_id Processes.vendor_product | `drop_dm_object_name(Processes)` | join process_guid, _time [|
25-
tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
26-
as lastTime FROM datamodel=Endpoint.Filesystem where Filesystem.file_path IN ("*\\MOVEitTransfer\\wwwroot\\*")
27-
Filesystem.file_name IN("*.aspx", "*.ashx", "*.asp*") OR Filesystem.file_name IN
28-
("human2.aspx","_human2.aspx") by _time span=1h Filesystem.dest Filesystem.file_create_time
29-
Filesystem.file_name Filesystem.file_path | `drop_dm_object_name(Filesystem)` |
30-
fields _time dest file_create_time file_name file_path process_name process_path
31-
process] | dedup file_create_time | table dest file_create_time, file_name, file_path,
32-
process_name | `windows_moveit_transfer_writing_aspx_filter`'
33-
how_to_implement: To successfully implement this search you need to be ingesting information
18+
search: |
19+
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
20+
as lastTime FROM datamodel=Endpoint.Filesystem where
21+
Filesystem.file_path IN ("*\\MOVEitTransfer\\wwwroot\\*") AND
22+
Filesystem.file_name IN("*.ashx", "*.asp*")
23+
by Filesystem.action Filesystem.dest Filesystem.file_access_time Filesystem.file_create_time
24+
Filesystem.file_hash Filesystem.file_modify_time Filesystem.file_name Filesystem.file_path
25+
Filesystem.file_acl Filesystem.file_size Filesystem.process_guid Filesystem.process_id
26+
Filesystem.user Filesystem.vendor_product
27+
| `drop_dm_object_name(Filesystem)`
28+
| `security_content_ctime(firstTime)`
29+
| `security_content_ctime(lastTime)`
30+
| `windows_moveit_transfer_writing_aspx_filter`
31+
how_to_implement: |
32+
To successfully implement this search you need to be ingesting information
3433
on process that include the name of the process responsible for the changes from
3534
your endpoints into the `Endpoint` datamodel in the `Processes` node and `Filesystem`
3635
node.
37-
known_false_positives: The query is structured in a way that `action` (read, create)
36+
known_false_positives: |
37+
The query is structured in a way that `action` (read, create)
3838
is not defined. Review the results of this query, filter, and tune as necessary.
3939
It may be necessary to generate this query specific to your endpoint product.
4040
references:
@@ -58,12 +58,14 @@ drilldown_searches:
5858
earliest_offset: $info_min_time$
5959
latest_offset: $info_max_time$
6060
rba:
61-
message: The MOVEit application on $dest$ has written a new ASPX file to disk.
61+
message: The MOVEit application on $dest$ has written a new ASPX file $file_name$ to disk.
6262
risk_objects:
6363
- field: dest
6464
type: system
6565
score: 100
66-
threat_objects: []
66+
threat_objects:
67+
- field: file_name
68+
type: file_name
6769
tags:
6870
analytic_story:
6971
- MOVEit Transfer Critical Vulnerability

detections/endpoint/windows_winlogon_with_public_network_connection.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ description: The following analytic detects instances of Winlogon.exe, a critica
1616
integrity breaches. If confirmed malicious, attackers could maintain persistence,
1717
bypass security measures, and compromise the system at a fundamental level.
1818
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
19-
as lastTime from datamodel=Endpoint.Processes where Processes.process_name IN (winlogon.exe) Processes.process!=unknown
19+
as lastTime from datamodel=Endpoint.Processes where Processes.process_name IN (winlogon.exe) Processes.process!=unknown
2020
by Processes.action Processes.dest Processes.original_file_name
2121
Processes.parent_process Processes.parent_process_exec Processes.parent_process_guid
2222
Processes.parent_process_id Processes.parent_process_name Processes.parent_process_path
2323
Processes.process Processes.process_exec Processes.process_guid Processes.process_hash
2424
Processes.process_id Processes.process_integrity_level Processes.process_name Processes.process_path
2525
Processes.user Processes.user_id Processes.vendor_product | `drop_dm_object_name(Processes)`
26-
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | join process_id
26+
| `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | join process_id
2727
[| tstats `security_content_summariesonly` count FROM datamodel=Network_Traffic.All_Traffic
2828
where All_Traffic.dest_port != 0 NOT (All_Traffic.dest IN (127.0.0.1,10.0.0.0/8,172.16.0.0/12,
2929
192.168.0.0/16, 0:0:0:0:0:0:0:1)) by All_Traffic.process_id All_Traffic.dest All_Traffic.dest_port

0 commit comments

Comments
 (0)