Skip to content

Commit b49e81a

Browse files
committed
added splunk detections
1 parent a04ed82 commit b49e81a

100 files changed

Lines changed: 6276 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

detections/splunk/README.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# Splunk Production-Tuned Conversion Pack
2+
3+
This is the second-pass tuning package for the Sentinel-to-Splunk conversion.
4+
5+
## Summary
6+
- Active converted rules: 75
7+
- Production-ready candidates: 70
8+
- Validation-required candidates: 5
9+
- Deprecated rules preserved separately: 22
10+
11+
## What changed in this pass
12+
- Normalized first-pass SPL syntax that still contained KQL habits such as `!in~`, `!has`, `between (...)`, and unresolved `project` fragments.
13+
- Replaced broken time-window joins with `relative_time(...)` comparisons where appropriate.
14+
- Promoted reviewed rules to `status: production` and `lifecycle: production`.
15+
- Added consistent implementation and production tuning guidance to each active rule.
16+
- Kept complex cloud and Entra correlation detections in testing status when they still depend on environment-specific nested fields or multi-source joins.
17+
18+
## Production candidates
19+
- browser/browser-extension-install-from-temp-or-user-profile.yml
20+
- collection/Clipboard-Data-Collection.yml
21+
- collection/data-from-local-system.yml
22+
- collection/graph-mail-access-burst.yml
23+
- collection/mass-file-enumeration-in-user-data-paths.yml
24+
- collection/screen-capture-utility-execution.yml
25+
- command-and-control/powershell-or-lolbin-external-network-traffic.yml
26+
- command-and-control/quick-assist-or-rmm-followed-by-script-execution.yml
27+
- command-and-control/sharepoint-spinstall0-or-webshell-staging-access.yml
28+
- command-and-control/suspicious-web-download-via-certutil-or-bitsadmin.yml
29+
- credential-access/device-code-phishing-followed-by-graph-mail-access.yml
30+
- credential-access/potential-lsass-memory-dump.yml
31+
- credential-access/potential-ntlm-enumeration-via-failed-logons.yml
32+
- credential-access/suspicious-browser-credential-store-access.yml
33+
- credential-access/vmware_vmdk_ntds_theft.yml
34+
- defense-evasion/clear-windows-event-logs.yml
35+
- defense-evasion/disable-script-block-logging.yml
36+
- defense-evasion/powershell-script-block-logging-disabled.yml
37+
- defense-evasion/security-tool-disable-attempt.yml
38+
- discovery/dns-enumeration-via-command-line-tools.yml
39+
- discovery/ldap-enumeration-using-powershell.yml
40+
- discovery/net-group-and-domain-trust-discovery.yml
41+
- discovery/Net-User-Enumeration.yml
42+
- discovery/system-and-network-configuration-discovery.yml
43+
- execution/fake_captcha_browser_to_script.yml
44+
- execution/malicious-and-paste-powershell-from-explorer.yml
45+
- execution/mshta-launching-script-or-powershell.yml
46+
- execution/oauth-redirection-abuse-followed-by-browser-download.yml
47+
- execution/powershell-encoded-command-execution.yml
48+
- execution/powershell-encoded-command-from-temp-folder.yml
49+
- execution/suspicious-ai-cli-noninteractive-trust-all-tools.yml
50+
- exfiltration/archive-creation-followed-by-external-transfer.yml
51+
- exfiltration/azcopy-or-cloud-cli-bulk-export.yml
52+
- exfiltration/exfiltration-uncommon-port.yml
53+
- exfiltration/Onedrive-File-Exfil.yml
54+
- exfiltration/onedrive-or-cloud-storage-bulk-upload-spike.yml
55+
- exfiltration/powershell-email-exfiltration-with-attachments.yml
56+
- exfiltration/quick_assist_winscp_google_drive.yml
57+
- exfiltration/sharepoint-or-onedrive-bulk-download-by-newly-risky-user.yml
58+
- impact/boot-configuration-or-recovery-tampering.yml
59+
- impact/mass-file-rename-or-encryption-burst.yml
60+
- impact/remote_smb_encryption.yml
61+
- impact/volume-shadow-copy-deletion.yml
62+
- initial-access/device-code-sign-in-followed-by-device-registration.yml
63+
- initial-access/multiple-user-device-code-sign-ins.yml
64+
- initial-access/oauth-redirection-abuse-url-click.yml
65+
- initial-access/potential-spearphishing-attachment-execution.yml
66+
- initial-access/suspicious-external-remote-service-sign-in.yml
67+
- initial-access/teams-external-contact-followed-by-quick-assist.yml
68+
- lateral-movement/remote-scheduled-task-creation.yml
69+
- lateral-movement/remote-service-creation.yml
70+
- lateral-movement/wmi-remote-process-execution.yml
71+
- persistence/cleanup-loader-scheduled-task-rundll32-dllregisterserver.yml
72+
- persistence/m365_inbox_rule_forward_delete.yml
73+
- persistence/nodejs-guid-installer-scheduled-task.yml
74+
- persistence/random-appdata-roaming-dll-drop-followed-by-task.yml
75+
- persistence/registry-run-key-modification.yml
76+
- persistence/service-binary-path-hijack.yml
77+
- persistence/suspicious-scheduled-task-creation.yml
78+
- privilege-escalation/dll-injection.yml
79+
- privilege-escalation/event-viewer-uac-bypass-registry-hijack.yml
80+
- privilege-escalation/suspicious-service-creation-for-elevation.yml
81+
- privilege-escalation/suspicious-token-manipulation-or-sedebug-use.yml
82+
- reconnaissance/External-Lookup-Tool-Usage.yml
83+
- reconnaissance/external-network-scanner-execution.yml
84+
- reconnaissance/whoami-and-net-enumeration-burst.yml
85+
- resource-development/bulk-mailbox-or-rule-creation.yml
86+
- resource-development/suspicious-azure-ad-application-registration.yml
87+
- resource-development/suspicious-trufflehog-secret-scanning.yml
88+
- resource-development/user-click-spike-to-suspicious-domain.yml
89+
90+
## Validation-required rules
91+
- exfiltration/cloud-storage-public-access-or-immutability-removal.yml
92+
- impact/cloud-backup-or-storage-mass-delete-burst.yml
93+
- persistence/entra_control_plane_abuse.yml
94+
- resource-development/new-app-secret-added-then-service-principal-signin.yml
95+
- resource-development/sharepoint-third-party-integration-secret-access.yml
96+
97+
## Deployment guidance
98+
1. Point each source macro to the correct index, sourcetype, or accelerated datamodel.
99+
2. Validate field aliases for Microsoft Defender, Office 365, Azure Activity, AuditLogs, and URL click telemetry.
100+
3. Start rules in a lower-noise schedule with suppression and allowlists for IT/admin activity.
101+
4. Promote to notable or risk-based alerting only after baseline review.
102+
103+
## Important note
104+
The 5 validation-required rules are not broken, but they still need hands-on field mapping in your Splunk environment because the original Sentinel logic depends on source-specific cloud schemas and nested JSON arrays.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
title: Browser Extension Files Created by Non-Browser Process
2+
id: SPLK-BROW-0001
3+
source_id: SENT-BROW-0001
4+
status: production
5+
description: Detects suspicious creation of browser extension files or folders in browser profile extension directories by non-browser processes, which may indicate unauthorized extension staging or installation.
6+
author: Adam Ring
7+
date: '2026-03-20'
8+
modified: '2026-03-20'
9+
platform: splunk
10+
query_language: spl
11+
logsource:
12+
product: windows
13+
category: file_event
14+
source_table: DeviceFileEvents
15+
search: '`microsoft_defender_device_file_events`
16+
17+
| where like(lower(FolderPath), "%\\chrome\\user data\\default\\extensions\\%") OR like(lower(FolderPath), "%\\chrome\\user data\\profile %") OR like(lower(FolderPath), "%\\edge\\user data\\default\\extensions\\%") OR like(lower(FolderPath), "%\\edge\\user data\\profile %") OR like(lower(FolderPath), "%\\bravesoftware\\brave-browser\\user data\\default\\extensions\\%")
18+
19+
| where FileName IN ("manifest.json") OR match(FolderPath, "\\Extensions\\[a-z]{32}\\")
20+
21+
| where NOT lower(InitiatingProcessFileName) IN ("chrome.exe", "msedge.exe", "brave.exe", "firefox.exe")
22+
23+
| table Timestamp, DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, FolderPath, SHA1, ReportId'
24+
how_to_implement:
25+
- Map the source macro to your production indexes, sourcetypes, or datamodel-backed acceleration.
26+
- Prefer Splunk CIM field aliases where possible and validate original Microsoft field names before deployment.
27+
- Deploy with asset- and user-based allowlists for admin tools, software distribution, sanctioned automation, and IT support activity.
28+
- Start as a scheduled correlation search with a limited lookback and suppression window, then raise to notable only after baselining.
29+
severity: medium
30+
risk_score: 60
31+
tactics:
32+
- Persistence
33+
techniques:
34+
- T1176
35+
kill_chain_phases:
36+
- Persistence
37+
data_sources:
38+
- DeviceFileEvents
39+
falsepositives:
40+
- Legitimate enterprise software deploying approved extensions
41+
- Browser migration or profile restore activity
42+
- Developer testing of unpacked extensions
43+
triage:
44+
- Review the extension path, manifest, and extension ID
45+
- Determine whether the extension is approved or enterprise-managed
46+
- Review the initiating process and command line for archive extraction, scripting, or installer behavior
47+
- Check for related browser credential theft, suspicious outbound traffic, or new persistence nearby
48+
validation:
49+
- Install a benign test extension and compare normal browser-created file patterns versus non-browser initiated writes
50+
lifecycle: production
51+
owner: Detection Engineering
52+
tags:
53+
- attack.persistence
54+
- attack.t1176
55+
- browser-extension
56+
- chrome
57+
- edge
58+
- sentinel
59+
- splunk
60+
- converted-from-sentinel
61+
production_tuning:
62+
- Validate macro scope, time range, and field aliases in a non-production search head first.
63+
- Tune known-good parent processes, service accounts, management hosts, and software deployment workflows.
64+
- Where count thresholds exist, baseline by business unit or asset class before enabling notable actions.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
title: Suspicious Clipboard Read or Clipboard Utility Execution
2+
id: SPLK-COLL-0001
3+
source_id: SENT-COLL-0001
4+
status: production
5+
description: Detects suspicious clipboard read activity or clipboard utility execution that may indicate collection of copied data, secrets, or credentials.
6+
author: Adam Ring
7+
date: '2026-03-06'
8+
modified: '2026-03-26'
9+
platform: splunk
10+
query_language: spl
11+
logsource:
12+
product: windows
13+
category: process_creation
14+
source_table: DeviceProcessEvents
15+
search: '`microsoft_defender_device_process_events`
16+
17+
| where FileName IN ("powershell.exe", "pwsh.exe", "cmd.exe", "clip.exe")
18+
19+
| where like(lower(ProcessCommandLine), "%get-clipboard%") OR like(lower(ProcessCommandLine), "%[windows.forms.clipboard]::gettext%") OR like(lower(ProcessCommandLine), "%gettext()%") OR like(lower(ProcessCommandLine), "%clip.exe%")
20+
21+
| where NOT like(lower(ProcessCommandLine), "%set-clipboard%")
22+
23+
| where NOT lower(InitiatingProcessFileName) IN ("code.exe", "devenv.exe", "powershell_ise.exe")
24+
25+
| table Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, SHA1, ReportId'
26+
how_to_implement:
27+
- Map the source macro to your production indexes, sourcetypes, or datamodel-backed acceleration.
28+
- Prefer Splunk CIM field aliases where possible and validate original Microsoft field names before deployment.
29+
- Deploy with asset- and user-based allowlists for admin tools, software distribution, sanctioned automation, and IT support activity.
30+
- Start as a scheduled correlation search with a limited lookback and suppression window, then raise to notable only after baselining.
31+
severity: medium
32+
risk_score: 55
33+
tactics:
34+
- Collection
35+
techniques:
36+
- T1115
37+
kill_chain_phases:
38+
- Collection
39+
data_sources:
40+
- DeviceProcessEvents
41+
falsepositives:
42+
- Legitimate administrator or developer clipboard scripting
43+
- Automation workflows that intentionally read clipboard contents
44+
- User troubleshooting or local productivity scripts
45+
triage:
46+
- Review whether the account normally uses PowerShell or command-line clipboard access
47+
- Check whether clipboard reads occurred near archive creation, browser credential access, or outbound transfers
48+
- Review the initiating process and surrounding process tree for scripting, LOLBins, or user-writable execution paths
49+
validation:
50+
- Run Get-Clipboard in a lab PowerShell session and compare with normal admin activity
51+
lifecycle: production
52+
owner: Detection Engineering
53+
tags:
54+
- attack.collection
55+
- attack.t1115
56+
- sentinel
57+
- collection
58+
- splunk
59+
- converted-from-sentinel
60+
production_tuning:
61+
- Validate macro scope, time range, and field aliases in a non-production search head first.
62+
- Tune known-good parent processes, service accounts, management hosts, and software deployment workflows.
63+
- Where count thresholds exist, baseline by business unit or asset class before enabling notable actions.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
title: Suspicious Access to Sensitive Local User Documents
2+
id: SPLK-COLL-0005
3+
source_id: SENT-COLL-0005
4+
status: production
5+
description: Detects processes accessing potentially sensitive document types in common user data paths, which may indicate collection or staging from the local system.
6+
author: Adam Ring
7+
date: '2026-03-26'
8+
modified: '2026-03-26'
9+
platform: splunk
10+
query_language: spl
11+
logsource:
12+
product: windows
13+
category: file_event
14+
source_table: DeviceFileEvents
15+
search: '`microsoft_defender_device_file_events`
16+
17+
| where ActionType IN ("FileCreated", "FileModified", "FileRead", "FileAccessed")
18+
19+
| where like(lower(FolderPath), "%\\users\\%") OR like(lower(FolderPath), "%\\desktop\\%") OR like(lower(FolderPath), "%\\documents\\%") OR like(lower(FolderPath), "%\\downloads\\%")
20+
21+
| where like(lower(FileName), "%.docx")
22+
23+
| where NOT lower(InitiatingProcessFileName) IN ("explorer.exe", "searchindexer.exe", "onedrive.exe", "msmpeng.exe")
24+
25+
| bin Timestamp span=15m | stats count as FileCount, dc(FolderPath) as DistinctPaths, values(FileName) as Files by DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, InitiatingProcessCommandLine, Timestamp
26+
27+
| where FileCount >= 25 AND DistinctPaths >= 3'
28+
how_to_implement:
29+
- Map the source macro to your production indexes, sourcetypes, or datamodel-backed acceleration.
30+
- Prefer Splunk CIM field aliases where possible and validate original Microsoft field names before deployment.
31+
- Deploy with asset- and user-based allowlists for admin tools, software distribution, sanctioned automation, and IT support activity.
32+
- Start as a scheduled correlation search with a limited lookback and suppression window, then raise to notable only after baselining.
33+
severity: medium
34+
risk_score: 57
35+
tactics:
36+
- Collection
37+
techniques:
38+
- T1005
39+
kill_chain_phases:
40+
- Collection
41+
data_sources:
42+
- DeviceFileEvents
43+
falsepositives:
44+
- Backup, indexing, sync, or anti-malware activity
45+
- Bulk document processing by IT or approved business tooling
46+
- User-driven search, migration, or archival workflows
47+
triage:
48+
- Identify the process and account accessing the files
49+
- Determine whether the host or user normally performs bulk document access
50+
- Review for nearby archive creation, cloud upload, email exfiltration, or removable media usage
51+
validation:
52+
- Use a benign script in a lab to access many files across user folders and tune thresholds against normal activity
53+
lifecycle: production
54+
owner: Detection Engineering
55+
tags:
56+
- attack.collection
57+
- attack.t1005
58+
- sentinel
59+
- collection
60+
- splunk
61+
- converted-from-sentinel
62+
production_tuning:
63+
- Validate macro scope, time range, and field aliases in a non-production search head first.
64+
- Tune known-good parent processes, service accounts, management hosts, and software deployment workflows.
65+
- Where count thresholds exist, baseline by business unit or asset class before enabling notable actions.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
title: Microsoft Graph Mail Access Burst
2+
id: SPLK-COLL-0004
3+
source_id: SENT-COLL-0004
4+
status: production
5+
description: Detects bursts of Microsoft Graph mail search or mail access activity that may indicate post-compromise mailbox collection or reconnaissance.
6+
author: Adam Ring
7+
date: '2026-03-20'
8+
modified: '2026-03-26'
9+
platform: splunk
10+
query_language: spl
11+
logsource:
12+
product: m365
13+
service: cloud_app
14+
source_table: CloudAppEvents
15+
search: '`microsoft_defender_cloud_app_events`
16+
17+
| where Application="Microsoft Graph"
18+
19+
| where like(lower(ActionType), "%searchqueryperformed%") OR like(lower(ActionType), "%mailitemsaccessed%") OR like(lower(ActionType), "%messagebind%")
20+
21+
| eval User=coalesce(AccountUpn, AccountDisplayName, AccountObjectId)
22+
23+
| eval ClientIP=IPAddress
24+
25+
| bin TimeGenerated span=30m | stats count as ActionCount, values(ActionType) as Actions, values(ClientIP) as IPs by TimeGenerated, User, Application
26+
27+
| where ActionCount >= 20'
28+
how_to_implement:
29+
- Map the source macro to your production indexes, sourcetypes, or datamodel-backed acceleration.
30+
- Prefer Splunk CIM field aliases where possible and validate original Microsoft field names before deployment.
31+
- Deploy with asset- and user-based allowlists for admin tools, software distribution, sanctioned automation, and IT support activity.
32+
- Start as a scheduled correlation search with a limited lookback and suppression window, then raise to notable only after baselining.
33+
severity: medium
34+
risk_score: 70
35+
tactics:
36+
- Collection
37+
techniques:
38+
- T1114
39+
kill_chain_phases:
40+
- Collection
41+
data_sources:
42+
- CloudAppEvents
43+
falsepositives:
44+
- Migration tools
45+
- eDiscovery, journaling, or approved admin search workflows
46+
- Application integrations that legitimately access mail at scale
47+
triage:
48+
- Validate whether the user or application normally performs high-volume Graph mail access
49+
- Check for nearby device code sign-ins, consent grants, OAuth abuse, or risky sign-in activity
50+
- Determine whether the activity targeted high-value mailboxes or was followed by mail export, forwarding, or download behavior
51+
validation:
52+
- Tune thresholds against known mail clients, admin workflows, and approved tenant applications
53+
lifecycle: production
54+
owner: Detection Engineering
55+
tags:
56+
- attack.collection
57+
- attack.t1114
58+
- graph
59+
- mailbox
60+
- sentinel
61+
- splunk
62+
- converted-from-sentinel
63+
production_tuning:
64+
- Validate macro scope, time range, and field aliases in a non-production search head first.
65+
- Tune known-good parent processes, service accounts, management hosts, and software deployment workflows.
66+
- Where count thresholds exist, baseline by business unit or asset class before enabling notable actions.

0 commit comments

Comments
 (0)