Detection rules › Splunk
Splunk rules: 19
Cisco Secure Firewall - File Download Over Uncommon Port
#The following analytic detects file transfers flagged as malware that occurred over non-standard ports (other than 80 and 443). Adversaries may attempt to bypass protocol-based detection or use alternate ports to blend in with other traffic. This analytic identifies these non-conventional flows and surfaces potential evasion techniques. If confirmed malicious this indicate potential malware delivery or other nefarious activity.
Known False Positives
- Some legitimate applications may download files over custom ports (e.g., CDN mirrors, APIs). Apply additional filters accordingly.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Command & Control |
Rule Body
name: Cisco Secure Firewall - File Download Over Uncommon Port
id: f26445a8-a6a2-4855-bec0-0c39e52e5b8f
version: 8
creation_date: '2025-04-09'
modification_date: '2026-05-13'
author: Nasreddine Bencherchali, Splunk
status: production
type: Anomaly
description: |
The following analytic detects file transfers flagged as malware that occurred over non-standard ports (other than 80 and 443). Adversaries may attempt to bypass protocol-based detection or use alternate ports to blend in with other traffic. This analytic identifies these non-conventional flows and surfaces potential evasion techniques. If confirmed malicious this indicate potential malware delivery or other nefarious activity.
data_source:
- Cisco Secure Firewall Threat Defense File Event
search: |
`cisco_secure_firewall` EventType=FileEvent FileDirection="Download" NOT dest_port IN (80, 443)
| lookup cisco_secure_firewall_filetype_lookup Name as FileType OUTPUT Description
| stats count min(_time) as firstTime max(_time) as lastTime
values(file_name) as file_name
values(uri) as uri
values(ClientApplication) as ClientApplication
values(file_hash) as file_hash
values(SHA_Disposition) as SHA_Disposition
by FileDirection FileType app ThreatName dest_port Description src dest
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| table firstTime lastTime src dest dest_port FileDirection FileType Description uri ClientApplication file_name file_hash SHA_Disposition ThreatName
| `cisco_secure_firewall___file_download_over_uncommon_port_filter`
how_to_implement: |
This search requires Cisco Secure Firewall Threat Defense Logs, which
includes the FileEvent EventType. This search uses an input macro named `cisco_secure_firewall`.
We strongly recommend that you specify your environment-specific configurations
(index, source, sourcetype, etc.) for Cisco Secure Firewall Threat Defense logs. Replace the macro definition
with configurations for your Splunk environment. The search also uses a post-filter
macro designed to filter out known false positives.
The logs are to be ingested using the Splunk Add-on for Cisco Security Cloud (https://splunkbase.splunk.com/app/7404).
The malware & file access policy must also enable logging.
known_false_positives: Some legitimate applications may download files over custom ports (e.g., CDN mirrors, APIs). Apply additional filters accordingly.
references:
- https://www.cisco.com/c/en/us/td/docs/security/firepower/741/api/FQE/secure_firewall_estreamer_fqe_guide_740.pdf
intermediate_findings:
entities:
- field: src
type: system
score: 20
message: The host $src$ downloaded a file $file_name$ of type $FileType$ from $dest$ over the uncommon port $dest_port$
threat_objects:
- field: file_hash
type: file_hash
- field: file_name
type: file_name
analytic_story:
- Cisco Secure Firewall Threat Defense Analytics
asset_type: Endpoint
mitre_attack_id:
- T1105
- T1571
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: network
security_domain: endpoint
Stages and Predicates
Stage 1: search
`cisco_secure_firewall` EventType=FileEvent FileDirection="Download" NOT dest_port IN (80, 443)
Stage 2: lookup
| lookup cisco_secure_firewall_filetype_lookup Name as FileType OUTPUT Description
Stage 3: stats
| stats count min(_time) as firstTime max(_time) as lastTime
values(file_name) as file_name
values(uri) as uri
values(ClientApplication) as ClientApplication
values(file_hash) as file_hash
values(SHA_Disposition) as SHA_Disposition
by FileDirection FileType app ThreatName dest_port Description src dest
Stage 4: search
| `security_content_ctime(firstTime)`
Stage 5: search
| `security_content_ctime(lastTime)`
Stage 6: table
| table firstTime lastTime src dest dest_port FileDirection FileType Description uri
ClientApplication file_name file_hash SHA_Disposition ThreatName
Stage 7: search
| `cisco_secure_firewall___file_download_over_uncommon_port_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventType | eq |
| field:"EventType" kind:eq value:"FileEvent" |
FileDirection | eq |
| field:"FileDirection" kind:eq value:"Download" |
sourcetype | eq |
| field:"sourcetype" kind:eq value:"cisco:sfw:estreamer" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
dest_port | in | 443, 80 | excludes:dest_port field:"dest_port" value:"443" field:"dest_port" value:"80" |
Cisco Secure Firewall - Oracle E-Business Suite Correlation
#This correlation rule identifies potential exploitation attempts of Oracle E-Business Suite vulnerabilities (CVE-2025-61882 and CVE-2025-61884) by correlating multiple intrusion signatures from Cisco Secure Firewall Threat Defense logs. The detection looks for specific signatures that indicate attempts to exploit the TemplatePreview functionality and vulnerable SyncServlet endpoints as well as post compromise activity involving Cl0p. By correlating these signatures, the analytic aims to identify coordinated exploitation attempts that may indicate an attacker is targeting Oracle E-Business Suite installations. Security teams should investigate any instances of these correlated signatures, especially if they are found in conjunction with other suspicious network activity or on systems that should not be exposed to such threats.
Known False Positives
- False positives should be very unlikely.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Initial Access |
Rule Body
name: Cisco Secure Firewall - Oracle E-Business Suite Correlation
id: 9e995d21-6870-43de-acd9-76f372bcf323
version: 7
creation_date: '2025-04-16'
modification_date: '2026-05-13'
author: Nasreddine Bencherchali, Splunk, Talos NTDR
status: production
type: TTP
description: |
This correlation rule identifies potential exploitation attempts of Oracle E-Business Suite vulnerabilities (CVE-2025-61882 and CVE-2025-61884) by correlating multiple intrusion signatures from Cisco Secure Firewall Threat Defense logs.
The detection looks for specific signatures that indicate attempts to exploit the TemplatePreview functionality and vulnerable SyncServlet endpoints as well as post compromise activity involving Cl0p.
By correlating these signatures, the analytic aims to identify coordinated exploitation attempts that may indicate an attacker is targeting Oracle E-Business Suite installations.
Security teams should investigate any instances of these correlated signatures, especially if they are found in conjunction with other suspicious network activity or on systems that should not be exposed to such threats.
data_source:
- Cisco Secure Firewall Threat Defense Intrusion Event
search: |
`cisco_secure_firewall` EventType=IntrusionEvent signature_id IN (65454, 65455, 65377, 65378, 65413, 65414, 65415, 65456)
| bin _time span=5m
| fillnull
| stats dc(signature_id) as unique_signature_count
values(signature_id) as signature_id
values(signature) as signature
values(class_desc) as class_desc
values(MitreAttackGroups) as MitreAttackGroups
values(InlineResult) as InlineResult
values(InlineResultReason) as InlineResultReason
values(dest_port) as dest_port
values(rule) as rule
values(transport) as transport
values(app) as app
min(_time) as firstTime
max(_time) as lastTime
sum(eval(signature_id==65454)) as sig_template_preview
sum(eval(signature_id==65455)) as sig_sync_servlet
sum(eval(signature_id IN (65377,65378,65413,65414,65415,65456))) as sig_exploit_activity
by src dest
| where (
(
sig_exploit_activity >= 1
AND
(
sig_template_preview >= 1
OR
sig_sync_servlet >= 1
)
)
OR
(
sig_template_preview >= 1
AND
sig_sync_servlet >= 1
)
OR
unique_signature_count >= 2
)
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `cisco_secure_firewall___oracle_e_business_suite_correlation_filter`
how_to_implement: |
This search requires Cisco Secure Firewall Threat Defense Logs, which
includes the IntrusionEvent EventType. This search uses an input macro named `cisco_secure_firewall`.
We strongly recommend that you specify your environment-specific configurations
(index, source, sourcetype, etc.) for Cisco Secure Firewall Threat Defense logs. Replace the macro definition
with configurations for your Splunk environment. The search also uses a post-filter
macro designed to filter out known false positives.
The logs are to be ingested using the Splunk Add-on for Cisco Security Cloud (https://splunkbase.splunk.com/app/7404).
The intrusion access policy must also be configured.
known_false_positives: False positives should be very unlikely.
references:
- https://www.oracle.com/security-alerts/alert-cve-2025-61882.html
- https://www.oracle.com/security-alerts/alert-cve-2025-61884.html
- https://labs.watchtowr.com/well-well-well-its-another-day-oracle-e-business-suite-pre-auth-rce-chain-cve-2025-61882well-well-well-its-another-day-oracle-e-business-suite-pre-auth-rce-chain-cve-2025-61882/
- https://cloud.google.com/blog/topics/threat-intelligence/oracle-ebusiness-suite-zero-day-exploitation
finding:
title: Multiple Oracle E-Business Suite exploitation signatures $signature_id$ detected from source IP $src$ to destination IP $dest$
entity:
field: dest
type: system
score: 50
threat_objects:
- field: signature
type: signature
- field: src
type: ip_address
analytic_story:
- Cisco Secure Firewall Threat Defense Analytics
- Oracle E-Business Suite Exploitation
asset_type: Network
cve:
- CVE-2025-61882
- CVE-2025-61884
mitre_attack_id:
- T1190
product:
- Splunk Enterprise
- Splunk Cloud
- Splunk Enterprise Security
category: network
security_domain: network
Stages and Predicates
Stage 1: search
`cisco_secure_firewall` EventType=IntrusionEvent signature_id IN (
65454,
65455,
65377,
65378,
65413,
65414,
65415,
65456
)
Stage 2: bucket
| bin _time span=5m
Stage 3: fillnull
| fillnull
Stage 4: stats
| stats dc(signature_id) as unique_signature_count
values(signature_id) as signature_id
values(signature) as signature
values(class_desc) as class_desc
values(MitreAttackGroups) as MitreAttackGroups
values(InlineResult) as InlineResult
values(InlineResultReason) as InlineResultReason
values(dest_port) as dest_port
values(rule) as rule
values(transport) as transport
values(app) as app
min(_time) as firstTime
max(_time) as lastTime
sum(eval(signature_id==65454)) as sig_template_preview
sum(eval(signature_id==65455)) as sig_sync_servlet
sum(eval(signature_id IN (65377,65378,65413,65414,65415,65456))) as sig_exploit_activity
by src dest
Stage 5: where
| where (
(
sig_exploit_activity >= 1
AND
(
sig_template_preview >= 1
OR
sig_sync_servlet >= 1
)
)
OR
(
sig_template_preview >= 1
AND
sig_sync_servlet >= 1
)
OR
unique_signature_count >= 2
)
Stage 6: search
| `security_content_ctime(firstTime)`
Stage 7: search
| `security_content_ctime(lastTime)`
Stage 8: search
| `cisco_secure_firewall___oracle_e_business_suite_correlation_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventType | eq |
| field:"EventType" kind:eq value:"IntrusionEvent" |
sig_exploit_activity | ge |
| field:"sig_exploit_activity" kind:ge value:"1" |
sig_sync_servlet | ge |
| field:"sig_sync_servlet" kind:ge value:"1" |
sig_template_preview | ge |
| field:"sig_template_preview" kind:ge value:"1" |
signature_id | in |
| field:"signature_id" kind:in |
sourcetype | eq |
| field:"sourcetype" kind:eq value:"cisco:sfw:estreamer" |
unique_signature_count | ge |
| field:"unique_signature_count" kind:ge value:"2" |
Crowdstrike Admin With Duplicate Password
#The following analytic detects CrowdStrike alerts for admin accounts with duplicate password risk, identifying instances where administrative users share the same password. This practice significantly increases the risk of unauthorized access and potential breaches. Addressing these alerts promptly is crucial for maintaining strong security protocols, ensuring each admin account uses a unique, secure password to protect critical systems and data.
Known False Positives
- No false positives have been identified at this time.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
Rule Body
name: Crowdstrike Admin With Duplicate Password
id: b8bccfbf-6ac2-40f2-83b6-e72b7efaa7d4
version: 9
creation_date: '2024-07-31'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: TTP
description: The following analytic detects CrowdStrike alerts for admin accounts with duplicate password risk, identifying instances where administrative users share the same password. This practice significantly increases the risk of unauthorized access and potential breaches. Addressing these alerts promptly is crucial for maintaining strong security protocols, ensuring each admin account uses a unique, secure password to protect critical systems and data.
data_source: []
search: |-
`crowdstrike_identities` primaryDisplayName = "*admin*"
| rename riskFactors{}.severity as severity, riskFactors{}.type as risk_type, roles{}.type as role_type, accounts{}.domain as domain, accounts{}.dn as dn, accounts{}.samAccountName as user
| stats count min(_time) as firstTime max(_time) as lastTime
BY domain dn primaryDisplayName
risk_type severity riskScore
riskScoreSeverity user role_type
| where risk_type = "DUPLICATE_PASSWORD"
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `crowdstrike_admin_with_duplicate_password_filter`
how_to_implement: To implement crowdstrike:identities logs, use the Falcon Streaming API. Set up an API client, authenticate with your CrowdStrike credentials, and subscribe to the "crowdstrike:identities" event stream. Process and store the logs as needed, integrating them into your logging or SIEM system for monitoring and analysis.
known_false_positives: No false positives have been identified at this time.
references:
- https://www.crowdstrike.com/wp-content/uploads/2022/12/CrowdStrike-Falcon-Event-Streams-Add-on-Guide-v3.pdf
finding:
title: Duplicate Password for Admin User found on $domain$
entity:
field: user
type: user
score: 50
analytic_story:
- Compromised Windows Host
asset_type: Endpoint
mitre_attack_id:
- T1110
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: search
`crowdstrike_identities` primaryDisplayName = "*admin*"
Stage 2: rename
| rename riskFactors{}.severity as severity, riskFactors{}.type as risk_type,
roles{}.type as role_type, accounts{}.domain as domain, accounts{}.dn as dn,
accounts{}.samAccountName as user
Stage 3: stats
| stats count min(_time) as firstTime max(_time) as lastTime
BY domain dn primaryDisplayName
risk_type severity riskScore
riskScoreSeverity user role_type
Stage 4: where
| where risk_type = "DUPLICATE_PASSWORD"
Stage 5: search
| `security_content_ctime(firstTime)`
Stage 6: search
| `security_content_ctime(lastTime)`
Stage 7: search
| `crowdstrike_admin_with_duplicate_password_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
primaryDisplayName | eq |
| field:"primaryDisplayName" kind:eq value:"*admin*" |
risk_type | eq |
| field:"risk_type" kind:eq value:"DUPLICATE_PASSWORD" |
sourcetype | eq |
| field:"sourcetype" kind:eq value:"crowdstrike:identities" |
Detect Distributed Password Spray Attempts
#This analytic employs the 3-sigma approach to identify distributed password spray attacks. A distributed password spray attack is a type of brute force attack where the attacker attempts a few common passwords against many different accounts, connecting from multiple IP addresses to avoid detection. By utilizing the Authentication Data Model, this detection is effective for all CIM-mapped authentication events, providing comprehensive coverage and enhancing security against these attacks.
Known False Positives
- It is common to see a spike of legitimate failed authentication events on monday mornings.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
Telemetry Coverage
Rule Body
name: Detect Distributed Password Spray Attempts
id: b1a82fc8-8a9f-4344-9ec2-bde5c5331b57
version: 7
creation_date: '2024-07-01'
modification_date: '2026-05-13'
author: Dean Luxton
status: production
type: Hunting
description: This analytic employs the 3-sigma approach to identify distributed password spray attacks. A distributed password spray attack is a type of brute force attack where the attacker attempts a few common passwords against many different accounts, connecting from multiple IP addresses to avoid detection. By utilizing the Authentication Data Model, this detection is effective for all CIM-mapped authentication events, providing comprehensive coverage and enhancing security against these attacks.
data_source:
- Azure Active Directory Sign-in activity
search: >-
| tstats `security_content_summariesonly` dc(Authentication.user) AS unique_accounts
dc(Authentication.src) as unique_src values(Authentication.app) as app values(Authentication.src)
as src count(Authentication.user) as total_failures from datamodel=Authentication.Authentication
where Authentication.action="failure" NOT Authentication.src IN ("-","unknown")
Authentication.user_agent="*" by Authentication.signature_id, Authentication.user_agent,
sourcetype, _time span=10m
| `drop_dm_object_name("Authentication")`
```fill out time buckets for 0-count events during entire search length```
| appendpipe [| timechart limit=0 span=10m count | table _time]
| fillnull value=0 unique_accounts, unique_src
``` Create aggregation field & apply to all null events```
| eval counter=sourcetype+"__"+signature_id
| eventstats values(counter) as fnscounter | eval counter=coalesce(counter,fnscounter) |
stats values(total_failures) as total_failures values(signature_id) as signature_id
values(src) as src values(sourcetype) as sourcetype values(app) as app count by
counter unique_accounts unique_src user_agent _time
``` remove 0 count rows where counter has data```
| sort - _time unique_accounts
| dedup _time counter
``` 3-sigma detection logic ```
| eventstats avg(unique_accounts) as comp_avg_user , stdev(unique_accounts) as comp_std_user
avg(unique_src) as comp_avg_src , stdev(unique_src) as comp_std_src by counter user_agent
| eval upperBoundUser=(comp_avg_user+comp_std_user*3), upperBoundsrc=(comp_avg_src+comp_std_src*3)
| eval isOutlier=if((unique_accounts > 30 and unique_accounts >= upperBoundUser)
and (unique_src > 30 and unique_src >= upperBoundsrc), 1, 0)
| replace "::ffff:*" with * in src
| where isOutlier=1
| foreach *
[ eval <<FIELD>> = if(<<FIELD>>="null",null(),<<FIELD>>)]
| mvexpand src | iplocation src | table _time, unique_src, unique_accounts, total_failures,
sourcetype, signature_id, user_agent, src, Country
| eval date_wday=strftime(_time,"%a"), date_hour=strftime(_time,"%H")
| `detect_distributed_password_spray_attempts_filter`
how_to_implement: Ensure that all relevant authentication data is mapped to the Common Information Model (CIM) and that the src field is populated with the source device information. Additionally, ensure that fill_nullvalue is set within the security_content_summariesonly macro to include authentication events from log sources that do not feature the signature_id field in the results.
known_false_positives: It is common to see a spike of legitimate failed authentication events on monday mornings.
references:
- https://attack.mitre.org/techniques/T1110/003/
analytic_story:
- Compromised User Account
- Active Directory Password Spraying
asset_type: Endpoint
atomic_guid:
- 90bc2e54-6c84-47a5-9439-0a2a92b4b175
mitre_attack_id:
- T1110.003
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: application
security_domain: access
Stages and Predicates
Stage 1: tstats
| tstats `security_content_summariesonly`
dc(Authentication.user) AS unique_accounts
dc(Authentication.src) as unique_src
values(Authentication.app) as app
values(Authentication.src) as src
count(Authentication.user) as total_failures
from datamodel=Authentication.Authentication
where Authentication.action="failure" NOT Authentication.src IN ("-","unknown")
Authentication.user_agent="*"
by Authentication.signature_id, Authentication.user_agent, sourcetype, _time span=10m
Stage 2: search
| `drop_dm_object_name("Authentication")`
Stage 3: appendpipe
| appendpipe [| timechart limit=0 span=10m count | table _time]
Stage 4: fillnull
| fillnull value=0 unique_accounts, unique_src
Stage 5: eval
| eval counter=sourcetype+"__"+signature_id
Stage 6: eventstats
| eventstats values(counter) as fnscounter
Stage 7: eval
| eval counter=coalesce(counter,fnscounter)
Stage 8: stats
| stats
values(total_failures) as total_failures
values(signature_id) as signature_id
values(src) as src
values(sourcetype) as sourcetype
values(app) as app
count
by counter unique_accounts unique_src user_agent _time
Stage 9: sort
| sort - _time unique_accounts
Stage 10: dedup
| dedup _time counter
Stage 11: eventstats
| eventstats
avg(unique_accounts) as comp_avg_user ,
stdev(unique_accounts) as comp_std_user
avg(unique_src) as comp_avg_src ,
stdev(unique_src) as comp_std_src
by counter user_agent
Stage 12: eval
| eval upperBoundUser=(comp_avg_user+comp_std_user*3), upperBoundsrc=(comp_avg_src+comp_std_src*3)
Stage 13: eval
| eval
isOutlier=if(
(unique_accounts > 30 and unique_accounts >= upperBoundUser) and (unique_src > 30 and unique_src >= upperBoundsrc),
1,
0
)
isOutlier =unique_accounts > 30 AND unique_accounts >= upperBoundUser AND unique_src > 30 AND unique_src >= upperBoundsrc10Stage 14: replace
| replace "::ffff:*" with * in src
Stage 15: where
| where isOutlier=1
Stage 16: search
| foreach *
[ eval <<FIELD>> = if(<<FIELD>>="null",null(),<<FIELD>>)]
Stage 17: mvexpand
| mvexpand src
Stage 18: search
| iplocation src
Stage 19: table
| table _time, unique_src, unique_accounts, total_failures, sourcetype, signature_id, user_agent,
src, Country
Stage 20: eval
| eval date_wday=strftime(_time,"%a"), date_hour=strftime(_time,"%H")
Stage 21: search
| `detect_distributed_password_spray_attempts_filter`
Indicators
These rows show field, operator, and value matches.
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
Authentication.src | in | -, unknown | excludes:Authentication.src field:"Authentication.src" value:"-" field:"Authentication.src" value:"unknown" |
Search Terms
These SPL tokens match against raw event text.
| Stage | Term |
|---|---|
| 16 | foreach |
| 16 | * |
| 18 | iplocation |
| 18 | src |
Detect Windows DNS SIGRed via Splunk Stream
#The following analytic detects attempts to exploit the SIGRed vulnerability (CVE-2020-1350) in Windows DNS servers. It leverages Splunk Stream DNS and TCP data to identify DNS SIG and KEY records, as well as TCP payloads exceeding 65KB. This activity is significant because SIGRed is a critical wormable vulnerability that allows remote code execution. If confirmed malicious, an attacker could gain unauthorized access, execute arbitrary code, and potentially disrupt services, leading to severe data breaches and infrastructure compromise. Immediate investigation and remediation are crucial to mitigate these risks.
Known False Positives
- No false positives have been identified at this time.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution |
Rule Body
name: Detect Windows DNS SIGRed via Splunk Stream
id: babd8d10-d073-11ea-87d0-0242ac130003
version: 9
creation_date: '2020-08-04'
modification_date: '2026-05-13'
author: Shannon Davis, Splunk
status: experimental
type: TTP
description: The following analytic detects attempts to exploit the SIGRed vulnerability (CVE-2020-1350) in Windows DNS servers. It leverages Splunk Stream DNS and TCP data to identify DNS SIG and KEY records, as well as TCP payloads exceeding 65KB. This activity is significant because SIGRed is a critical wormable vulnerability that allows remote code execution. If confirmed malicious, an attacker could gain unauthorized access, execute arbitrary code, and potentially disrupt services, leading to severe data breaches and infrastructure compromise. Immediate investigation and remediation are crucial to mitigate these risks.
data_source: []
search: |
`stream_dns`
| spath "query_type{}"
| search "query_type{}" IN (SIG,KEY)
| spath protocol_stack
| search protocol_stack="ip:tcp:dns"
| append [search `stream_tcp` bytes_out>65000]
| stats count by flow_id
| where count>1
| fields - count
| `detect_windows_dns_sigred_via_splunk_stream_filter`
how_to_implement: You must be ingesting Splunk Stream DNS and Splunk Stream TCP. We are detecting SIG and KEY records via stream:dns and TCP payload over 65KB in size via stream:tcp. Replace the macro definitions ('stream:dns' and 'stream:tcp') with configurations for your Splunk environment.
known_false_positives: No false positives have been identified at this time.
references: []
finding:
title: Potential SIGRed activity detected [ $flow_id$ ]
entity:
field: flow_id
type: other
score: 50
analytic_story:
- Windows DNS SIGRed CVE-2020-1350
asset_type: Endpoint
cve:
- CVE-2020-1350
mitre_attack_id:
- T1203
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: network
security_domain: network
Stages and Predicates
Stage 1: search
`stream_dns`
Stage 2: spath
| spath "query_type{}"
Stage 3: search
| search "query_type{}" IN (SIG,KEY)
Stage 4: spath
| spath protocol_stack
Stage 5: search
| search protocol_stack="ip:tcp:dns"
Stage 6: append
| append [search `stream_tcp` bytes_out>65000]
Stage 7: stats
| stats count by flow_id
Stage 8: where
| where count>1
Stage 9: fields
| fields - count
Stage 10: search
| `detect_windows_dns_sigred_via_splunk_stream_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
bytes_out | gt |
| field:"bytes_out" kind:gt value:"65000" |
count | gt |
| field:"count" kind:gt value:"1" |
protocol_stack | eq |
| field:"protocol_stack" kind:eq value:"ip:tcp:dns" |
query_type{} | in |
| field:"query_type{}" kind:in |
sourcetype | eq |
| field:"sourcetype" kind:eq |
Disable Defender AntiVirus Registry
#The following analytic detects the modification of Windows Defender registry settings to disable antivirus and antispyware protections. It leverages data from the Endpoint.Registry data model, specifically monitoring changes to registry paths associated with Windows Defender policies. This activity is significant because disabling antivirus protections is a common tactic used by adversaries to evade detection and maintain persistence on compromised systems. If confirmed malicious, this action could allow attackers to execute further malicious activities undetected, leading to potential data breaches, system compromise, and further propagation of malware within the network.
Known False Positives
- admin or user may choose to disable windows defender product
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Defense Impairment |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 13: RegistryEvent (Value Set) |
Rule Body
name: Disable Defender AntiVirus Registry
id: aa4f695a-3024-11ec-9987-acde48001122
version: 19
creation_date: '2021-10-18'
modification_date: '2026-06-08'
author: Teoderick Contreras, Splunk, Steven Dick
status: production
type: TTP
description: The following analytic detects the modification of Windows Defender registry settings to disable antivirus and antispyware protections. It leverages data from the Endpoint.Registry data model, specifically monitoring changes to registry paths associated with Windows Defender policies. This activity is significant because disabling antivirus protections is a common tactic used by adversaries to evade detection and maintain persistence on compromised systems. If confirmed malicious, this action could allow attackers to execute further malicious activities undetected, leading to potential data breaches, system compromise, and further propagation of malware within the network.
data_source:
- Sysmon EventID 13
search: |
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Registry
WHERE (
Registry.registry_path = "*\\Policies\\Microsoft\\Windows Defender*" AND
Registry.registry_value_name IN ("DisableAntiSpyware","DisableAntiVirus") AND
Registry.registry_value_data IN (1, 0x00000001)
)
by Registry.action Registry.dest Registry.process_guid Registry.process_id Registry.registry_hive Registry.registry_path Registry.registry_key_name Registry.registry_value_data Registry.registry_value_name Registry.registry_value_type Registry.status Registry.user Registry.vendor_product
| `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 official Sysmon TA. https://splunkbase.splunk.com/app/5709
known_false_positives: admin or user may choose to disable windows defender product
references:
- https://thedfirreport.com/2021/10/18/icedid-to-xinglocker-ransomware-in-24-hours/
finding:
title: Modified/added/deleted registry entry $registry_path$ on $dest$
entity:
field: user
type: user
score: 50
intermediate_findings:
entities:
- field: dest
type: system
score: 50
message: Modified/added/deleted registry entry $registry_path$ on $dest$
analytic_story:
- SolarWinds WHD RCE Post Exploitation
- Windows Registry Abuse
- CISA AA24-241A
- IcedID
- Black Basta Ransomware
- Cactus Ransomware
- Salat Stealer
asset_type: Endpoint
mitre_attack_id:
- T1685
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: tstats
| tstats `security_content_summariesonly`
count
min(_time) as firstTime
max(_time) as lastTime
FROM datamodel=Endpoint.Registry
WHERE (
Registry.registry_path = "*\\Policies\\Microsoft\\Windows Defender*"
AND Registry.registry_value_name IN ("DisableAntiSpyware","DisableAntiVirus")
AND Registry.registry_value_data IN (1, 0x00000001)
)
by
Registry.action
Registry.dest
Registry.process_guid
Registry.process_id
Registry.registry_hive
Registry.registry_path
Registry.registry_key_name
Registry.registry_value_data
Registry.registry_value_name
Registry.registry_value_type
Registry.status
Registry.user
Registry.vendor_product
Stage 2: search
| `drop_dm_object_name(Registry)`
Stage 3: where
| where isnotnull(registry_value_data)
Stage 4: search
| `security_content_ctime(firstTime)`
Stage 5: search
| `security_content_ctime(lastTime)`
Stage 6: search
| `disable_defender_antivirus_registry_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Registry.registry_path | eq |
| field:"registry_path" kind:eq value:"*\Policies\Microsoft\Windows Defender*" |
Registry.registry_value_data | in |
| field:"Details" kind:in |
Registry.registry_value_name | in |
| field:"registry_value_name" kind:in |
registry_value_data | is_not_null | field:"Details" kind:is_not_null |
File and Directory Discovery Output to File - Windows (Sysmon)
#Adversaries may enumerate files and directories or may search in specific locations of a host or network share for certain information within a file system. Adversaries may use the information from File and Directory Discovery during automated discovery to shape follow-on behaviors, including whether or not the adversary fully infects the target and/or attempts specific actions
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Discovery |
References
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
Rule Body
id: '16818.27145'
title: File and Directory Discovery Output to File - Windows
description: 'Adversaries may enumerate files and directories or may search in specific
locations of a host or network share for certain information within a file system.
Adversaries may use the information from File and Directory Discovery during automated
discovery to shape follow-on behaviors, including whether or not the adversary fully
infects the target and/or attempts specific actions. -- Threat Actor Association:
APT28 (aka. Fancy Bear, Forest Blizzard, Strontium, Tsar Team) -- Atomics T1083
Test #1 Atomics T1083 Test #5'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<")
(TERM(tree) OR TERM(dir) OR TERM(Get-ChildItem) OR TERM(gci) OR TERM(ls) OR TERM(locate)
OR TERM(find)) (TERM(>>) OR "&gt;&gt;" OR TERM(Out-File)) | table _time, host, user
process, process_*, parent_process_name | bin span=1s | stats values(*) as * by
_time, host '
techniques:
- discovery:file and directory discovery
technique_id:
- T1083
data_category:
- Windows Sysmon
references:
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1083/T1083.md#atomic-test-1---file-and-directory-discovery-cmdexe
Stages and Predicates
Stage 1: search
`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<") (TERM(tree) OR TERM(dir) OR TERM(Get-ChildItem) OR TERM(gci) OR TERM(ls) OR TERM(locate) OR TERM(find)) (TERM(>>) OR "&gt;&gt;" OR TERM(Out-File))
Stage 2: table
| table _time, host, user process, process_*, parent_process_name
Stage 3: bucket
| bin span=1s
Stage 4: stats
| stats values(*) as * by _time, host
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventCode | eq |
| field:"EventID" kind:eq value:"1" |
Search Terms
These SPL tokens match against raw event text.
| Stage | Term |
|---|---|
| 1 | "<EventID>1<" |
| 1 | tree |
| 1 | dir |
| 1 | "Get-ChildItem" |
| 1 | gci |
| 1 | ls |
| 1 | locate |
| 1 | find |
| 1 | ">>" |
| 1 | ">>" |
| 1 | "Out-File" |
GitHub Organizations Disable Dependabot
#The following analytic detects when a user disables Dependabot security features within a GitHub repository. Dependabot helps automatically identify and fix security vulnerabilities in dependencies. The detection monitors GitHub Enterprise logs for configuration changes that disable Dependabot functionality. This behavior could indicate an attacker attempting to prevent the automatic detection of vulnerable dependencies, which would allow them to exploit known vulnerabilities that would otherwise be patched. For a SOC, identifying the disabling of security features like Dependabot is critical as it may be a precursor to supply chain attacks where attackers exploit vulnerable dependencies. The impact could be severe if vulnerabilities remain unpatched, potentially leading to code execution, data theft, or other compromises through the software supply chain.
Known False Positives
- No false positives have been identified at this time.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Initial Access | |
| Defense Impairment |
Telemetry Coverage
| Platform | Record / event type |
|---|---|
| GitHub | Audit log action repository_vulnerability_alerts.disable: Dependabot alerts disabled |
Rules Detecting the Same Action
These rules filter on the same operation.
Rule Body
name: GitHub Organizations Disable Dependabot
id: 69078d8c-0de6-45de-bb00-14e78e042fd6
version: 9
creation_date: '2025-01-15'
modification_date: '2026-05-13'
author: Patrick Bareiss, Splunk
status: production
type: Anomaly
description: The following analytic detects when a user disables Dependabot security features within a GitHub repository. Dependabot helps automatically identify and fix security vulnerabilities in dependencies. The detection monitors GitHub Enterprise logs for configuration changes that disable Dependabot functionality. This behavior could indicate an attacker attempting to prevent the automatic detection of vulnerable dependencies, which would allow them to exploit known vulnerabilities that would otherwise be patched. For a SOC, identifying the disabling of security features like Dependabot is critical as it may be a precursor to supply chain attacks where attackers exploit vulnerable dependencies. The impact could be severe if vulnerabilities remain unpatched, potentially leading to code execution, data theft, or other compromises through the software supply chain.
data_source:
- GitHub Organizations Audit Logs
search: |-
`github_organizations` vendor_action=repository_vulnerability_alerts.disable
| fillnull
| stats count min(_time) as firstTime max(_time) as lastTime
BY actor, actor_id, actor_ip,
actor_is_bot, actor_location.country_code, business,
business_id, org, org_id,
repo, repo_id, user,
user_agent, user_id, vendor_action
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `github_organizations_disable_dependabot_filter`
how_to_implement: You must ingest GitHub Organizations logs using Splunk Add-on for Github using a Personal Access Token https://splunk.github.io/splunk-add-on-for-github-audit-log-monitoring/Install/ .
known_false_positives: No false positives have been identified at this time.
references:
- https://splunk.github.io/splunk-add-on-for-github-audit-log-monitoring/Install/
- https://www.googlecloudcommunity.com/gc/Community-Blog/Monitoring-for-Suspicious-GitHub-Activity-with-Google-Security/ba-p/763610
intermediate_findings:
entities:
- field: user
type: user
score: 20
message: Dependabot security features are disabled in repository $repo$ by $user$
threat_objects:
- field: user_agent
type: http_user_agent
analytic_story:
- GitHub Malicious Activity
asset_type: GitHub
mitre_attack_id:
- T1685
- T1195
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: cloud
security_domain: network
Stages and Predicates
Stage 1: search
`github_organizations` vendor_action=repository_vulnerability_alerts.disable
Stage 2: fillnull
| fillnull
Stage 3: stats
| stats count min(_time) as firstTime max(_time) as lastTime
BY actor, actor_id, actor_ip,
actor_is_bot, actor_location.country_code, business,
business_id, org, org_id,
repo, repo_id, user,
user_agent, user_id, vendor_action
Stage 4: search
| `security_content_ctime(firstTime)`
Stage 5: search
| `security_content_ctime(lastTime)`
Stage 6: search
| `github_organizations_disable_dependabot_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sourcetype | eq |
| field:"sourcetype" kind:eq value:"github:cloud:audit" |
vendor_action | eq |
| field:"vendor_action" kind:eq value:"repository_vulnerability_alerts.disable" |
Go Run Execution (Windows Event Log)
#Malicious actors are beginning to turn to Golang as a malware language since it is not typically picked up by antivirus software. Although the language is about 10 years old, and is used by many legitimate programmers, there has not been as much activity with Golang malware. This use case looks for run executions by go.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution |
References
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
id: '6091.6540'
title: Go Run Execution
description: Malicious actors are beginning to turn to Golang as a malware language
since it is not typically picked up by antivirus software. Although the language
is about 10 years old, and is used by many legitimate programmers, there has not
been as much activity with Golang malware. This use case looks for run executions
by go.
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_winevent` (TERM(EventCode=4688) OR
"<EventID>4688<" OR Type=Process) (TERM(GO) OR "go.exe") TERM(RUN) | rex field=process
(?<ioc>"(?i)\S+\.go") | table _time, host, user, signature_id, process, process_*,
parent_process_* ioc | bin span=1s | stats values(*) as * by _time, host '
techniques:
- execution:command and scripting interpreter
technique_id:
- T1059
data_category:
- Windows event logs
- Process command-line parameters
references:
- https://www.f5.com/labs/articles/threat-intelligence/new-golang-malware-is-spreading-via-multiple-exploits-to-mine-mo
Stages and Predicates
Stage 1: search
`get_endpoint_data` `get_endpoint_data_winevent` (TERM(EventCode=4688) OR "<EventID>4688<" OR Type=Process) (TERM(GO) OR "go.exe") TERM(RUN)
Stage 2: rex
| rex field=process (?<ioc>"(?i)\S+\.go")
Stage 3: table
| table _time, host, user, signature_id, process, process_*, parent_process_* ioc
Stage 4: bucket
| bin span=1s
Stage 5: stats
| stats values(*) as * by _time, host
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventCode | eq |
| field:"EventID" kind:eq value:"4688" |
Search Terms
These SPL tokens match against raw event text.
| Stage | Term |
|---|---|
| 1 | "<EventID>4688<" |
| 1 | GO |
| 1 | "go.exe" |
| 1 | RUN |
Kubernetes Scanning by Unauthenticated IP Address
#The following analytic identifies potential scanning activities within a Kubernetes environment by unauthenticated IP addresses. It leverages Kubernetes audit logs to detect multiple unauthorized access attempts (HTTP 403 responses) from the same source IP. This activity is significant as it may indicate an attacker probing for vulnerabilities or attempting to exploit known issues. If confirmed malicious, such scanning could lead to unauthorized access, data breaches, or further exploitation of the Kubernetes infrastructure, compromising the security and integrity of the environment.
Known False Positives
- No false positives have been identified at this time.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Discovery |
Rule Body
name: Kubernetes Scanning by Unauthenticated IP Address
id: f9cadf4e-df22-4f4e-a08f-9d3344c2165d
version: 10
creation_date: '2023-12-20'
modification_date: '2026-05-13'
author: Patrick Bareiss, Splunk
status: production
type: Anomaly
description: The following analytic identifies potential scanning activities within a Kubernetes environment by unauthenticated IP addresses. It leverages Kubernetes audit logs to detect multiple unauthorized access attempts (HTTP 403 responses) from the same source IP. This activity is significant as it may indicate an attacker probing for vulnerabilities or attempting to exploit known issues. If confirmed malicious, such scanning could lead to unauthorized access, data breaches, or further exploitation of the Kubernetes infrastructure, compromising the security and integrity of the environment.
data_source:
- Kubernetes Audit
search: |-
`kube_audit` "user.groups{}"="system:unauthenticated" "responseStatus.code"=403
| iplocation sourceIPs{}
| stats count values(userAgent) as userAgent values(user.username) as user.username values(user.groups{}) as user.groups{} values(verb) as verb values(requestURI) as requestURI values(responseStatus.code) as responseStatus.code values(responseStatus.message) as responseStatus.message values(responseStatus.reason) as responseStatus.reason values(responseStatus.status) as responseStatus.status
BY sourceIPs{} Country City
| where count > 5
| rename sourceIPs{} as src_ip, user.username as user
| `kubernetes_scanning_by_unauthenticated_ip_address_filter`
how_to_implement: The detection is based on data that originates from Kubernetes Audit logs. Ensure that audit logging is enabled in your Kubernetes cluster. Kubernetes audit logs provide a record of the requests made to the Kubernetes API server, which is crucial for monitoring and detecting suspicious activities. Configure the audit policy in Kubernetes to determine what kind of activities are logged. This is done by creating an Audit Policy and providing it to the API server. Use the Splunk OpenTelemetry Collector for Kubernetes to collect the logs. This doc will describe how to collect the audit log file https://github.com/signalfx/splunk-otel-collector-chart/blob/main/docs/migration-from-sck.md. When you want to use this detection with AWS EKS, you need to enable EKS control plane logging https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html. Then you can collect the logs from Cloudwatch using the AWS TA https://splunk.github.io/splunk-add-on-for-amazon-web-services/CloudWatchLogs/.
known_false_positives: No false positives have been identified at this time.
references:
- https://kubernetes.io/docs/tasks/debug/debug-cluster/audit/
intermediate_findings:
entities:
- field: user
type: user
score: 20
message: Kubernetes scanning from ip $src_ip$
threat_objects:
- field: src_ip
type: ip_address
analytic_story:
- Kubernetes Security
asset_type: Kubernetes
mitre_attack_id:
- T1046
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: cloud
security_domain: network
Stages and Predicates
Stage 1: search
`kube_audit` "user.groups{}"="system:unauthenticated" "responseStatus.code"=403
Stage 2: search
| iplocation sourceIPs{}
Stage 3: stats
| stats
count
values(userAgent) as userAgent
values(user.username) as user.username
values(user.groups{}) as user.groups{}
values(verb) as verb
values(requestURI) as requestURI
values(responseStatus.code) as responseStatus.code
values(responseStatus.message) as responseStatus.message
values(responseStatus.reason) as responseStatus.reason
values(responseStatus.status) as responseStatus.status
BY sourceIPs{} Country City
Stage 4: where
| where count > 5
Stage 5: rename
| rename sourceIPs{} as src_ip, user.username as user
Stage 6: search
| `kubernetes_scanning_by_unauthenticated_ip_address_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
count | gt |
| field:"count" kind:gt value:"5" |
responseStatus.code | eq |
| field:"responseStatus.code" kind:eq value:"403" |
user.groups{} | eq |
| field:"user.groups{}" kind:eq value:"system:unauthenticated" |
Search Terms
These SPL tokens match against raw event text.
| Stage | Term |
|---|---|
| 2 | iplocation |
| 2 | sourceIPs{} |
Linux Deletion Of Services
#The following analytic detects the deletion of services on a Linux machine. It leverages filesystem event logs to identify when service files within system directories (e.g., /etc/systemd/, /lib/systemd/, /run/systemd/) are deleted. This activity is significant because attackers may delete or modify services to disable security features or evade defenses. If confirmed malicious, this behavior could indicate an attempt to impair system functionality or execute a destructive payload, potentially leading to system instability or data loss. Immediate investigation is required to determine the responsible process and user.
Known False Positives
- Administrator or network operator can execute this command. Please update the filter macros to remove false positives.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth | |
| Impact |
Telemetry Coverage
| Platform | Record / event type |
|---|---|
| Linux | Event ID 11: File created |
Rule Body
name: Linux Deletion Of Services
id: b509bbd3-0331-4aaa-8e4a-d2affe100af6
version: 12
creation_date: '2022-04-12'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: TTP
description: The following analytic detects the deletion of services on a Linux machine. It leverages filesystem event logs to identify when service files within system directories (e.g., /etc/systemd/, /lib/systemd/, /run/systemd/) are deleted. This activity is significant because attackers may delete or modify services to disable security features or evade defenses. If confirmed malicious, this behavior could indicate an attempt to impair system functionality or execute a destructive payload, potentially leading to system instability or data loss. Immediate investigation is required to determine the responsible process and user.
data_source:
- Sysmon for Linux EventID 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 IN ( "/etc/systemd/*", "*/lib/systemd/*", "*/run/systemd/*") Filesystem.file_path = "*.service"
BY Filesystem.action Filesystem.dest Filesystem.file_access_time
Filesystem.file_create_time Filesystem.file_hash Filesystem.file_modify_time
Filesystem.file_name Filesystem.file_path Filesystem.file_acl
Filesystem.file_size Filesystem.process_guid Filesystem.process_id
Filesystem.user Filesystem.vendor_product
| `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 Splunkbase.
known_false_positives: Administrator or network operator can execute this command. Please update the filter macros to remove false positives.
references:
- https://www.sentinelone.com/labs/acidrain-a-modem-wiper-rains-down-on-europe/
- https://unix.stackexchange.com/questions/224992/where-do-i-put-my-systemd-unit-file
- https://cert.gov.ua/article/3718487
finding:
title: A services file $file_name$ deteted on host $dest$ by process GUID - $process_guid$
entity:
field: dest
type: system
score: 50
threat_objects:
- field: file_name
type: file_name
analytic_story:
- AwfulShred
- AcidRain
- Data Destruction
- AcidPour
asset_type: Endpoint
mitre_attack_id:
- T1070.004
- T1485
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: tstats
| tstats `security_content_summariesonly`
count
min(_time) as firstTime
max(_time) 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
Filesystem.action
Filesystem.dest
Filesystem.file_access_time
Filesystem.file_create_time
Filesystem.file_hash
Filesystem.file_modify_time
Filesystem.file_name
Filesystem.file_path
Filesystem.file_acl
Filesystem.file_size
Filesystem.process_guid
Filesystem.process_id
Filesystem.user
Filesystem.vendor_product
Stage 2: search
| `drop_dm_object_name(Filesystem)`
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `security_content_ctime(lastTime)`
Stage 5: search
| `linux_deletion_of_services_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Filesystem.action | eq |
| field:"event_action" kind:eq value:"deleted" |
Filesystem.file_path | eq |
| field:"TargetFilename" kind:eq value:"*.service" |
Filesystem.file_path | in |
| field:"TargetFilename" kind:in |
Linux RPM Privilege Escalation
#The following analytic detects the execution of the RPM Package Manager with elevated privileges, specifically when it is used to run system commands as root via the --eval and lua:os.execute options. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on command-line executions and process metadata. This activity is significant because it indicates a potential privilege escalation attempt, allowing a user to gain root access. If confirmed malicious, this could lead to full system compromise, unauthorized access to sensitive data, and further exploitation of the environment.
Known False Positives
- False positives are present based on automated tooling or system administrative usage. Filter as needed.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Privilege Escalation |
Telemetry Coverage
| Platform | Record / event type |
|---|---|
| Linux | Event ID 1: Process Create |
Rule Body
name: Linux RPM Privilege Escalation
id: f8e58a23-cecd-495f-9c65-6c76b4cb9774
version: 13
creation_date: '2022-08-10'
modification_date: '2026-05-13'
author: Gowthamaraj Rajendran, Splunk
status: production
type: Anomaly
description: The following analytic detects the execution of the RPM Package Manager with elevated privileges, specifically when it is used to run system commands as root via the `--eval` and `lua:os.execute` options. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on command-line executions and process metadata. This activity is significant because it indicates a potential privilege escalation attempt, allowing a user to gain root access. If confirmed malicious, this could lead to full system compromise, unauthorized access to sensitive data, and further exploitation of the environment.
data_source:
- Sysmon for Linux EventID 1
search: |-
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes
WHERE Processes.process="*rpm*--eval*"
AND
Processes.process="*lua:os.execute*"
AND
Processes.process="*sudo*"
BY Processes.action Processes.dest Processes.original_file_name
Processes.parent_process Processes.parent_process_exec Processes.parent_process_guid
Processes.parent_process_id Processes.parent_process_name Processes.parent_process_path
Processes.process Processes.process_exec Processes.process_guid
Processes.process_hash Processes.process_id Processes.process_integrity_level
Processes.process_name Processes.process_path Processes.user
Processes.user_id Processes.vendor_product
| `drop_dm_object_name(Processes)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `linux_rpm_privilege_escalation_filter`
how_to_implement: The detection is based on data that originates from Endpoint Detection and Response (EDR) agents. These agents are designed to provide security-related telemetry from the endpoints where the agent is installed. To implement this search, you must ingest logs that contain the process GUID, process name, and parent process. Additionally, you must ingest complete command-line executions. These logs must be processed using the appropriate Splunk Technology Add-ons that are specific to the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint` data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process.
known_false_positives: False positives are present based on automated tooling or system administrative usage. Filter as needed.
references:
- https://gtfobins.github.io/gtfobins/rpm/
- https://en.wikipedia.org/wiki/RPM_Package_Manager
intermediate_findings:
entities:
- field: dest
type: system
score: 20
message: An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$
threat_objects:
- field: parent_process_name
type: parent_process_name
- field: process_name
type: process_name
analytic_story:
- Linux Privilege Escalation
- Linux Living Off The Land
asset_type: Endpoint
mitre_attack_id:
- T1548.003
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: tstats
| tstats `security_content_summariesonly`
count
min(_time) as firstTime
max(_time) as lastTime
FROM datamodel=Endpoint.Processes
WHERE Processes.process="*rpm*--eval*"
AND
Processes.process="*lua:os.execute*"
AND
Processes.process="*sudo*"
BY
Processes.action
Processes.dest
Processes.original_file_name
Processes.parent_process
Processes.parent_process_exec
Processes.parent_process_guid
Processes.parent_process_id
Processes.parent_process_name
Processes.parent_process_path
Processes.process
Processes.process_exec
Processes.process_guid
Processes.process_hash
Processes.process_id
Processes.process_integrity_level
Processes.process_name
Processes.process_path
Processes.user
Processes.user_id
Processes.vendor_product
Stage 2: search
| `drop_dm_object_name(Processes)`
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `security_content_ctime(lastTime)`
Stage 5: search
| `linux_rpm_privilege_escalation_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Processes.process | eq |
| field:"CommandLine" kind:eq |
Potential DCSync (Windows Event Log)
#Adversaries may attempt to access credentials and other sensitive information by abusing a Windows Domain Controller's application programming interface (API) to simulate the replication process from a remote domain controller using a technique called DCSync
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
References
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 4662: An operation was performed on an object. |
Rule Body
id: '13811.20280'
title: Potential DCSync
description: 'Adversaries may attempt to access credentials and other sensitive information
by abusing a Windows Domain Controller''s application programming interface (API)
to simulate the replication process from a remote domain controller using a technique
called DCSync. -- Threat Actor Association: FIN8 (Syssphinx), Muddled Libra'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_winevent` (TERM(EventCode=4662) OR
"<EventID>4662<") "0x100" ("Replicating Directory Changes all" OR "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2"
OR "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" OR "9923a32a-3607-11d2-b9be-0000f87a36b2"
OR "89e95b76-444d-4c62-991a-0facbeda640c") |regex user!=".*\$" | table _time, host,
user process, process_*, signature_id, parent_*, parameters | bin span=1s | stats
values(*) as * by _time, host '
techniques:
- credential-access:os credential dumping:dcsync
technique_id:
- T1003.006
data_category:
- Windows event logs
references:
- https://blog.blacklanternsecurity.com/p/detecting-dcsync
Stages and Predicates
Stage 1: search
`get_endpoint_data` `get_endpoint_data_winevent` (TERM(EventCode=4662) OR "<EventID>4662<") "0x100" ("Replicating Directory Changes all" OR "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2" OR "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" OR "9923a32a-3607-11d2-b9be-0000f87a36b2" OR "89e95b76-444d-4c62-991a-0facbeda640c")
Stage 2: regex
| regex user!=".*\$"
Stage 3: table
| table _time, host, user process, process_*, signature_id, parent_*, parameters
Stage 4: bucket
| bin span=1s
Stage 5: stats
| stats values(*) as * by _time, host
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventCode | eq |
| field:"EventID" kind:eq value:"4662" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
user | regex_match | .*$ | excludes:user field:"user" value:".*$" |
Search Terms
These SPL tokens match against raw event text.
| Stage | Term |
|---|---|
| 1 | "<EventID>4662<" |
| 1 | "0x100" |
| 1 | "Replicating Directory Changes all" |
| 1 | "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2" |
| 1 | "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" |
| 1 | "9923a32a-3607-11d2-b9be-0000f87a36b2" |
| 1 | "89e95b76-444d-4c62-991a-0facbeda640c" |
Print Processor Registry Autostart
#The following analytic detects suspicious modifications or new entries in the Print Processor registry path. It leverages registry activity data from the Endpoint data model to identify changes in the specified registry path. This activity is significant because the Print Processor registry is known to be exploited by APT groups like Turla for persistence and privilege escalation. If confirmed malicious, this could allow an attacker to execute a malicious DLL payload by restarting the spoolsv.exe process, leading to potential control over the compromised machine.
Known False Positives
- possible new printer installation may add driver component on this registry.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Privilege Escalation |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 13: RegistryEvent (Value Set) |
Rule Body
name: Print Processor Registry Autostart
id: 1f5b68aa-2037-11ec-898e-acde48001122
version: 12
creation_date: '2021-09-29'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: TTP
description: The following analytic detects suspicious modifications or new entries in the Print Processor registry path. It leverages registry activity data from the Endpoint data model to identify changes in the specified registry path. This activity is significant because the Print Processor registry is known to be exploited by APT groups like Turla for persistence and privilege escalation. If confirmed malicious, this could allow an attacker to execute a malicious DLL payload by restarting the spoolsv.exe process, leading to potential control over the compromised machine.
data_source:
- Sysmon EventID 13
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Registry where Registry.registry_path ="*\\Control\\Print\\Environments\\Windows x64\\Print Processors*" by Registry.action Registry.dest Registry.process_guid Registry.process_id Registry.registry_hive Registry.registry_path Registry.registry_key_name Registry.registry_value_data Registry.registry_value_name Registry.registry_value_type Registry.status Registry.user Registry.vendor_product | `security_content_ctime(lastTime)` | `security_content_ctime(firstTime)` | `drop_dm_object_name(Registry)` | `print_processor_registry_autostart_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 product, such as Carbon Black or endpoint data sources, such as Sysmon. The data used for this search is typically generated via logs that report reads and writes to the registry.
known_false_positives: possible new printer installation may add driver component on this registry.
references:
- https://attack.mitre.org/techniques/T1547/012/
- https://www.welivesecurity.com/2020/05/21/no-game-over-winnti-group/
finding:
title: modified/added/deleted registry entry $registry_path$ on $dest$
entity:
field: user
type: user
score: 50
intermediate_findings:
entities:
- field: dest
type: system
score: 50
message: modified/added/deleted registry entry $registry_path$ on $dest$
analytic_story:
- Data Destruction
- Windows Privilege Escalation
- Hermetic Wiper
- Windows Persistence Techniques
asset_type: Endpoint
mitre_attack_id:
- T1547.012
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: tstats
| tstats `security_content_summariesonly`
count
min(_time) as firstTime
max(_time) as lastTime
FROM datamodel=Endpoint.Registry
where Registry.registry_path ="*\\Control\\Print\\Environments\\Windows x64\\Print Processors*"
by
Registry.action
Registry.dest
Registry.process_guid
Registry.process_id
Registry.registry_hive
Registry.registry_path
Registry.registry_key_name
Registry.registry_value_data
Registry.registry_value_name
Registry.registry_value_type
Registry.status
Registry.user
Registry.vendor_product
Stage 2: search
| `security_content_ctime(lastTime)`
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `drop_dm_object_name(Registry)`
Stage 5: search
| `print_processor_registry_autostart_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Registry.registry_path | eq |
| field:"registry_path" kind:eq value:"*\Control\Print\Environments\Windows x64\Print Processors*" |
Suspicious Computer Account Name Change
#The following analytic detects a suspicious computer account name change in Active Directory. It leverages Event ID 4781, which logs account name changes, to identify instances where a computer account name is changed to one that does not end with a $. This behavior is significant as it may indicate an attempt to exploit CVE-2021-42278 and CVE-2021-42287, which can lead to domain controller impersonation and privilege escalation. If confirmed malicious, this activity could allow an attacker to gain elevated privileges and potentially control the domain.
Known False Positives
- Renaming a computer account name to a name that not end with '$' is highly unsual and may not have any legitimate scenarios.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Initial Access | |
| Persistence | |
| Privilege Escalation | |
| Stealth |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 4781: The name of an account was changed. |
Rule Body
name: Suspicious Computer Account Name Change
id: 35a61ed8-61c4-11ec-bc1e-acde48001122
version: 14
creation_date: '2021-12-20'
modification_date: '2026-05-13'
author: Mauricio Velazco, Splunk
status: production
type: TTP
description: The following analytic detects a suspicious computer account name change in Active Directory. It leverages Event ID 4781, which logs account name changes, to identify instances where a computer account name is changed to one that does not end with a `$`. This behavior is significant as it may indicate an attempt to exploit CVE-2021-42278 and CVE-2021-42287, which can lead to domain controller impersonation and privilege escalation. If confirmed malicious, this activity could allow an attacker to gain elevated privileges and potentially control the domain.
data_source:
- Windows Event Log Security 4781
search: |-
`wineventlog_security` EventCode=4781 OldTargetUserName="*$" NewTargetUserName!="*$"
| table _time, Computer, Caller_User_Name, OldTargetUserName, NewTargetUserName
| rename Computer as dest
| `suspicious_computer_account_name_change_filter`
how_to_implement: To successfully implement this search, you need to be ingesting Windows event logs from your hosts. In addition, the Splunk Windows TA is needed.
known_false_positives: Renaming a computer account name to a name that not end with '$' is highly unsual and may not have any legitimate scenarios.
references:
- https://exploit.ph/cve-2021-42287-cve-2021-42278-weaponisation.html
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-42278
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-42287
finding:
title: A computer account $OldTargetUserName$ was renamed with a suspicious computer name on $dest$
entity:
field: OldTargetUserName
type: user
score: 50
intermediate_findings:
entities:
- field: dest
type: system
score: 50
message: A computer account $OldTargetUserName$ was renamed with a suspicious computer name on $dest$
analytic_story:
- Active Directory Privilege Escalation
- Compromised Windows Host
- sAMAccountName Spoofing and Domain Controller Impersonation
- Scattered Lapsus$ Hunters
asset_type: Endpoint
cve:
- CVE-2021-42287
- CVE-2021-42278
mitre_attack_id:
- T1078.002
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: search
`wineventlog_security` EventCode=4781 OldTargetUserName="*$" NewTargetUserName!="*$"
Stage 2: table
| table _time, Computer, Caller_User_Name, OldTargetUserName, NewTargetUserName
Stage 3: rename
| rename Computer as dest
Stage 4: search
| `suspicious_computer_account_name_change_filter`
Indicators
These rows show field, operator, and value matches.
Suspicious process Spawned by Java (Windows Event Log)
#Detect Java Spawning suspicious processes. This could indicate successful execution of vulnerabilities such as log4j CVE-2021-44228
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution |
References
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
id: '8445.10630'
title: Suspicious process Spawned by Java
description: 'Detect Java Spawning suspicious processes. This could indicate successful
execution of vulnerabilities such as log4j CVE-2021-44228. - Threat Actor Association:
Evilnum, Volt Typhoon'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_winevent` (TERM(EventCode=4688) OR
"<EventID>4688<" OR Type=Process) "java.exe" ("powershell.exe" OR "cmd.exe" OR "AppInstaller.exe"
OR "Bitsadmin.exe" OR "CertOC.exe" OR "CertReq.exe" OR "cmdl32.exe" OR "Control.exe"
OR "Cscript.exe" OR "Desktopimgdownldr.exe" OR "Diantz.exe" OR "Esentutl.exe" OR
"Eventvwr.exe" OR "Expand.exe" OR "Extrac32.exe" OR "Findstr.exe" OR "Finger.exe"
OR "Ftp.exe" OR "GfxDownloadWrapper.exe" OR "Hh.exe" OR "IMEWDBLD.exe" OR "Ieexec.exe"
OR "Installutil.exe" OR "Makecab.exe" OR "MpCmdRun.exe" OR "Mshta.exe" OR "Msiexec.exe"
OR "OneDriveStandaloneUpdater.exe" OR "PrintBrm.exe" OR "Regasm.exe" OR "Regsvr32.exe"
OR "Replace.exe" OR "Rundll32.exe" OR "Sc.exe" OR "Schtasks.exe" OR "Wmic.exe" OR
"Wscript.exe" OR "Xwizard.exe" OR "Excel.exe" OR "Powerpnt.exe" OR "Squirrel.exe"
OR "Winword.exe" OR "Wsl.exe" OR "nslookup.exe" OR "Certutil.exe") | table _time,
host, user event_id, parent_*, process_*, process, signature_id | bin span=1s |
stats values(*) as * by _time, host | where match(parent_process_name,"(?i)java\.exe") '
techniques:
- execution:exploitation for client execution
technique_id:
- T1203
data_category:
- Windows event logs
references:
- https://blog.qualys.com/vulnerabilities-threat-research/2021/12/14/log4shell-exploit-detection-and-response-with-qualys-multi-vector-edr
Stages and Predicates
Stage 1: search
`get_endpoint_data` `get_endpoint_data_winevent` (TERM(EventCode=4688) OR "<EventID>4688<" OR Type=Process) "java.exe" ("powershell.exe" OR "cmd.exe" OR "AppInstaller.exe" OR "Bitsadmin.exe" OR "CertOC.exe" OR "CertReq.exe" OR "cmdl32.exe" OR "Control.exe" OR "Cscript.exe" OR "Desktopimgdownldr.exe" OR "Diantz.exe" OR "Esentutl.exe" OR "Eventvwr.exe" OR "Expand.exe" OR "Extrac32.exe" OR "Findstr.exe" OR "Finger.exe" OR "Ftp.exe" OR "GfxDownloadWrapper.exe" OR "Hh.exe" OR "IMEWDBLD.exe" OR "Ieexec.exe" OR "Installutil.exe" OR "Makecab.exe" OR "MpCmdRun.exe" OR "Mshta.exe" OR "Msiexec.exe" OR "OneDriveStandaloneUpdater.exe" OR "PrintBrm.exe" OR "Regasm.exe" OR "Regsvr32.exe" OR "Replace.exe" OR "Rundll32.exe" OR "Sc.exe" OR "Schtasks.exe" OR "Wmic.exe" OR "Wscript.exe" OR "Xwizard.exe" OR "Excel.exe" OR "Powerpnt.exe" OR "Squirrel.exe" OR "Winword.exe" OR "Wsl.exe" OR "nslookup.exe" OR "Certutil.exe")
Stage 2: table
| table _time, host, user event_id, parent_*, process_*, process, signature_id
Stage 3: bucket
| bin span=1s
Stage 4: stats
| stats values(*) as * by _time, host
Stage 5: where
| where match(parent_process_name,"(?i)java\.exe")
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventCode | eq |
| field:"EventID" kind:eq value:"4688" |
parent_process_name | regex_match |
| field:"parent_process_name" kind:regex_match value:"(?i)java.exe" |
Search Terms
These SPL tokens match against raw event text.
| Stage | Term |
|---|---|
| 1 | "<EventID>4688<" |
| 1 | "java.exe" |
| 1 | "powershell.exe" |
| 1 | "cmd.exe" |
| 1 | "AppInstaller.exe" |
| 1 | "Bitsadmin.exe" |
| 1 | "CertOC.exe" |
| 1 | "CertReq.exe" |
| 1 | "cmdl32.exe" |
| 1 | "Control.exe" |
| 1 | "Cscript.exe" |
| 1 | "Desktopimgdownldr.exe" |
| 1 | "Diantz.exe" |
| 1 | "Esentutl.exe" |
| 1 | "Eventvwr.exe" |
| 1 | "Expand.exe" |
| 1 | "Extrac32.exe" |
| 1 | "Findstr.exe" |
| 1 | "Finger.exe" |
| 1 | "Ftp.exe" |
| 1 | "GfxDownloadWrapper.exe" |
| 1 | "Hh.exe" |
| 1 | "IMEWDBLD.exe" |
| 1 | "Ieexec.exe" |
| 1 | "Installutil.exe" |
| 1 | "Makecab.exe" |
| 1 | "MpCmdRun.exe" |
| 1 | "Mshta.exe" |
| 1 | "Msiexec.exe" |
| 1 | "OneDriveStandaloneUpdater.exe" |
| 1 | "PrintBrm.exe" |
| 1 | "Regasm.exe" |
| 1 | "Regsvr32.exe" |
| 1 | "Replace.exe" |
| 1 | "Rundll32.exe" |
| 1 | "Sc.exe" |
| 1 | "Schtasks.exe" |
| 1 | "Wmic.exe" |
| 1 | "Wscript.exe" |
| 1 | "Xwizard.exe" |
| 1 | "Excel.exe" |
| 1 | "Powerpnt.exe" |
| 1 | "Squirrel.exe" |
| 1 | "Winword.exe" |
| 1 | "Wsl.exe" |
| 1 | "nslookup.exe" |
| 1 | "Certutil.exe" |
Suspicious Process With Discord DNS Query
#The following analytic identifies a process making a DNS query to Discord, excluding legitimate Discord application paths. It leverages Sysmon logs with Event ID 22 to detect DNS queries containing "discord" in the QueryName field. This activity is significant because Discord can be abused by adversaries to host and download malicious files, as seen in the WhisperGate campaign. If confirmed malicious, this could indicate malware attempting to download additional payloads from Discord, potentially leading to further code execution and compromise of the affected system.
Known False Positives
- Noise and false positive can be seen if the following instant messaging is allowed to use within corporate network. In this case, a filter is needed.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 22: DNSEvent (DNS query) |
Rule Body
name: Suspicious Process With Discord DNS Query
id: 4d4332ae-792c-11ec-89c1-acde48001122
version: 14
creation_date: '2022-01-19'
modification_date: '2026-06-25'
author: Teoderick Contreras, Mauricio Velazco, Splunk
status: production
type: Anomaly
description: The following analytic identifies a process making a DNS query to Discord, excluding legitimate Discord application paths. It leverages Sysmon logs with Event ID 22 to detect DNS queries containing "discord" in the QueryName field. This activity is significant because Discord can be abused by adversaries to host and download malicious files, as seen in the WhisperGate campaign. If confirmed malicious, this could indicate malware attempting to download additional payloads from Discord, potentially leading to further code execution and compromise of the affected system.
data_source:
- Sysmon EventID 22
search: '`sysmon` EventCode=22 QueryName IN ("*discord*") Image != "*\\AppData\\Local\\Discord\\*" AND Image != "*\\Program Files*" AND Image != "discord.exe" | stats count min(_time) as firstTime max(_time) as lastTime by answer answer_count dvc process_exec process_guid process_name query query_count reply_code_id signature signature_id src user_id vendor_product QueryName QueryResults QueryStatus | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `suspicious_process_with_discord_dns_query_filter`'
how_to_implement: his detection relies on sysmon logs with the Event ID 22, DNS Query.
known_false_positives: Noise and false positive can be seen if the following instant messaging is allowed to use within corporate network. In this case, a filter is needed.
references:
- https://www.microsoft.com/security/blog/2022/01/15/destructive-malware-targeting-ukrainian-organizations/
- https://medium.com/s2wblog/analysis-of-destructive-malware-whispergate-targeting-ukraine-9d5d158f19f3
- https://www.microsoft.com/security/blog/2022/01/15/destructive-malware-targeting-ukrainian-organizations/
intermediate_findings:
entities:
- field: dvc
type: system
score: 20
message: suspicious process $process_name$ has a dns query in $QueryName$ on $dvc$
threat_objects:
- field: process_name
type: process_name
analytic_story:
- Data Destruction
- WhisperGate
- PXA Stealer
- Cactus Ransomware
- BlankGrabber Stealer
- Phantom Stealer
asset_type: Endpoint
mitre_attack_id:
- T1059.005
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: network
security_domain: endpoint
Stages and Predicates
Stage 1: search
`sysmon` EventCode=22 QueryName IN ("*discord*") Image != "*\\AppData\\Local\\Discord\\*"
AND Image != "*\\Program Files*" AND Image != "discord.exe"
Stage 2: stats
| stats
count
min(_time) as firstTime
max(_time) as lastTime
by
answer
answer_count
dvc
process_exec
process_guid
process_name
query
query_count
reply_code_id
signature
signature_id
src
user_id
vendor_product
QueryName
QueryResults
QueryStatus
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `security_content_ctime(lastTime)`
Stage 5: search
| `suspicious_process_with_discord_dns_query_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventCode | eq |
| field:"EventID" kind:eq value:"22" |
Image | ne |
| field:"Image" kind:ne |
QueryName | in |
| field:"QueryName" kind:in value:"*discord*" |
Unusual Number of Kerberos Service Tickets Requested
#The following analytic identifies an unusual number of Kerberos service ticket requests, potentially indicating a kerberoasting attack. It leverages Kerberos Event 4769 and calculates the standard deviation for each host, using the 3-sigma rule to detect anomalies. This activity is significant as kerberoasting allows adversaries to request service tickets and crack them offline, potentially gaining privileged access to the domain. If confirmed malicious, this could lead to unauthorized access to sensitive accounts and escalation of privileges within the Active Directory environment.
Known False Positives
- An single endpoint requesting a large number of kerberos service tickets is not common behavior. Possible false positive scenarios include but are not limited to vulnerability scanners, administration systems and missconfigured systems.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 4769: A Kerberos service ticket was requested. |
Rule Body
name: Unusual Number of Kerberos Service Tickets Requested
id: eb3e6702-8936-11ec-98fe-acde48001122
version: 14
creation_date: '2022-02-16'
modification_date: '2026-05-13'
author: Mauricio Velazco, Dean Luxton, Splunk
status: production
type: Anomaly
description: The following analytic identifies an unusual number of Kerberos service ticket requests, potentially indicating a kerberoasting attack. It leverages Kerberos Event 4769 and calculates the standard deviation for each host, using the 3-sigma rule to detect anomalies. This activity is significant as kerberoasting allows adversaries to request service tickets and crack them offline, potentially gaining privileged access to the domain. If confirmed malicious, this could lead to unauthorized access to sensitive accounts and escalation of privileges within the Active Directory environment.
data_source:
- Windows Event Log Security 4769
search: |-
`wineventlog_security` EventCode=4769 ServiceName!="*$" TicketEncryptionType=0x17
| bucket span=2m _time
| stats dc(ServiceName) AS unique_services values(ServiceName) as requested_services values(user_category) as user_category values(src_category) as src_category values(dest) as dest
BY _time, user, src
| eventstats avg(unique_services) as comp_avg , stdev(unique_services) as comp_std
BY user, src
| eval upperBound=(comp_avg+comp_std*3)
| eval isOutlier=if(unique_services > 2 and unique_services >= upperBound, 1, 0)
| search isOutlier=1
| `unusual_number_of_kerberos_service_tickets_requested_filter`
how_to_implement: To successfully implement this search, you need to be ingesting Domain Controller and Kerberos events. The Advanced Security Audit policy setting `Audit Kerberos Authentication Service` within `Account Logon` needs to be enabled.
known_false_positives: An single endpoint requesting a large number of kerberos service tickets is not common behavior. Possible false positive scenarios include but are not limited to vulnerability scanners, administration systems and missconfigured systems.
references:
- https://attack.mitre.org/techniques/T1558/003/
- https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/t1208-kerberoasting
intermediate_findings:
entities:
- field: src
type: system
score: 20
message: User $user$ requested a service ticket for $unique_services$ services indicating a potential kerberoasting attack
- field: user
type: user
score: 20
message: User $user$ requested a service ticket for $unique_services$ services indicating a potential kerberoasting attack
analytic_story:
- Active Directory Kerberos Attacks
asset_type: Endpoint
mitre_attack_id:
- T1558.003
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: search
`wineventlog_security` EventCode=4769 ServiceName!="*$" TicketEncryptionType=0x17
Stage 2: bucket
| bucket span=2m _time
Stage 3: stats
| stats
dc(ServiceName) AS unique_services
values(ServiceName) as requested_services
values(user_category) as user_category
values(src_category) as src_category
values(dest) as dest
BY _time, user, src
Stage 4: eventstats
| eventstats avg(unique_services) as comp_avg , stdev(unique_services) as comp_std
BY user, src
Stage 5: eval
| eval upperBound=(comp_avg+comp_std*3)
Stage 6: eval
| eval isOutlier=if(unique_services > 2 and unique_services >= upperBound, 1, 0)
isOutlier =unique_services > 2 AND unique_services >= upperBound10Stage 7: search
| search isOutlier=1
Stage 8: search
| `unusual_number_of_kerberos_service_tickets_requested_filter`
Indicators
These rows show field, operator, and value matches.
Windows Cisco Secure Endpoint Stop Immunet Service Via Sfc
#The following analytic detects the use of the sfc.exe utility, in order to stop the Immunet Protect service. The Sfc.exe utility is part of Cisco Secure Endpoint installation. This detection leverages telemetry from the endpoint, focusing on command-line executions involving the -k parameter. This activity is significant as it indicates potential tampering with defensive mechanisms. If confirmed malicious, attackers could partially blind the EDR, enabling further compromise and lateral movement within the network.
Known False Positives
- It is possible that this action is executed during troubleshooting activity. Activity needs to be confirmed on a case by case basis.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Defense Impairment |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
name: Windows Cisco Secure Endpoint Stop Immunet Service Via Sfc
id: 44badcb1-2e8c-4628-9537-021bbae571ad
version: 7
creation_date: '2022-06-17'
modification_date: '2026-05-13'
author: Nasreddine Bencherchali, Splunk
status: production
type: Anomaly
description: The following analytic detects the use of the `sfc.exe` utility, in order to stop the Immunet Protect service. The Sfc.exe utility is part of Cisco Secure Endpoint installation. This detection leverages telemetry from the endpoint, focusing on command-line executions involving the `-k` parameter. This activity is significant as it indicates potential tampering with defensive mechanisms. If confirmed malicious, attackers could partially blind the EDR, enabling further compromise and lateral movement within the network.
data_source:
- Sysmon EventID 1
- Windows Event Log Security 4688
- CrowdStrike ProcessRollup2
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.process_name="sfc.exe" Processes.process="* -k*" AND NOT Processes.process_path IN ("*:\\Windows\\System32\\*", "*:\\Windows\\SysWOW64\\*", ":\\Windows\\WinSxS\\*") by Processes.action Processes.dest Processes.original_file_name Processes.parent_process Processes.parent_process_exec Processes.parent_process_guid Processes.parent_process_id Processes.parent_process_name Processes.parent_process_path Processes.process Processes.process_exec Processes.process_guid Processes.process_hash Processes.process_id Processes.process_integrity_level Processes.process_name Processes.process_path Processes.user Processes.user_id Processes.vendor_product | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_cisco_secure_endpoint_stop_immunet_service_via_sfc_filter`'
how_to_implement: The detection is based on data that originates from Endpoint Detection and Response (EDR) agents. These agents are designed to provide security-related telemetry from the endpoints where the agent is installed. To implement this search, you must ingest logs that contain the process GUID, process name, and parent process. Additionally, you must ingest complete command-line executions. These logs must be processed using the appropriate Splunk Technology Add-ons that are specific to the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint` data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process.
known_false_positives: It is possible that this action is executed during troubleshooting activity. Activity needs to be confirmed on a case by case basis.
references:
- https://www.cisco.com/c/en/us/support/docs/security/amp-endpoints/213690-amp-for-endpoint-command-line-switches.html
intermediate_findings:
entities:
- field: user
type: user
score: 20
message: Suspicious use of `sfc.exe` stopping the Immunet Protect service on $dest$ by user $user$.
- field: dest
type: system
score: 20
message: Suspicious use of `sfc.exe` stopping the Immunet Protect service on $dest$ by user $user$.
threat_objects:
- field: parent_process_name
type: parent_process_name
- field: process_name
type: process_name
analytic_story:
- Security Solution Tampering
asset_type: Endpoint
mitre_attack_id:
- T1685
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: tstats
| tstats `security_content_summariesonly`
count
min(_time) as firstTime
max(_time) as lastTime
from datamodel=Endpoint.Processes
where Processes.process_name="sfc.exe" Processes.process="* -k*"
AND NOT Processes.process_path IN (
"*:\\Windows\\System32\\*",
"*:\\Windows\\SysWOW64\\*",
":\\Windows\\WinSxS\\*"
)
by
Processes.action
Processes.dest
Processes.original_file_name
Processes.parent_process
Processes.parent_process_exec
Processes.parent_process_guid
Processes.parent_process_id
Processes.parent_process_name
Processes.parent_process_path
Processes.process
Processes.process_exec
Processes.process_guid
Processes.process_hash
Processes.process_id
Processes.process_integrity_level
Processes.process_name
Processes.process_path
Processes.user
Processes.user_id
Processes.vendor_product
Stage 2: search
| `drop_dm_object_name(Processes)`
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `security_content_ctime(lastTime)`
Stage 5: search
| `windows_cisco_secure_endpoint_stop_immunet_service_via_sfc_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Processes.process | eq |
| field:"CommandLine" kind:eq value:"* -k*" |
Processes.process_name | eq |
| field:"process_basename" kind:eq value:"sfc.exe" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
Processes.process_path | in | *:\Windows\SysWOW64\*, *:\Windows\System32\*, :\Windows\WinSxS\* | excludes:Processes.process_path field:"Processes.process_path" value:"*:\Windows\SysWOW64\*" field:"Processes.process_path" value:"*:\Windows\System32\*" field:"Processes.process_path" value:":\Windows\WinSxS\*" |
Windows Defender ASR Rule Disabled
#The following analytic identifies when a Windows Defender ASR rule disabled events. ASR is a feature of Windows Defender Exploit Guard that prevents actions and apps that are typically used by exploit-seeking malware to infect machines. ASR rules are applied to processes and applications. When a process or application attempts to perform an action that is blocked by an ASR rule, an event is generated. This detection searches for ASR rule disabled events that are generated when an ASR rule is disabled.
Known False Positives
- False positives may occur if applications are typically disabling ASR rules in the environment. Monitor for changes to ASR rules to determine if this is a false positive.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Defense Impairment |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Windows-Defender | Event ID 5007: Product Name Configuration has changed. |
Rule Body
name: Windows Defender ASR Rule Disabled
id: 429d611b-3183-49a7-b235-fc4203c4e1cb
version: 10
creation_date: '2023-12-06'
modification_date: '2026-05-13'
author: Michael Haag, Splunk
status: production
type: TTP
description: The following analytic identifies when a Windows Defender ASR rule disabled events. ASR is a feature of Windows Defender Exploit Guard that prevents actions and apps that are typically used by exploit-seeking malware to infect machines. ASR rules are applied to processes and applications. When a process or application attempts to perform an action that is blocked by an ASR rule, an event is generated. This detection searches for ASR rule disabled events that are generated when an ASR rule is disabled.
data_source:
- Windows Event Log Defender 5007
search: '`ms_defender` EventCode IN (5007) | rex field=New_Value "0x(?<New_Registry_Value>\\d+)$" | rex field=Old_Value "0x(?<Old_Registry_Value>\\d+)$" | rex field=New_Value "Rules\\\\(?<ASR_ID>[A-Fa-f0-9\\-]+)\\s*=" | eval New_Registry_Value=case(New_Registry_Value=="0", "Disabled", New_Registry_Value=="1", "Block", New_Registry_Value=="2", "Audit", New_Registry_Value=="6", "Warn") | eval Old_Registry_Value=case(Old_Registry_Value=="0", "Disabled", Old_Registry_Value=="1", "Block", Old_Registry_Value=="2", "Audit", Old_Registry_Value=="6", "Warn") | search New_Registry_Value="Disabled" | stats count min(_time) as firstTime max(_time) as lastTime by host, New_Value, Old_Value, Old_Registry_Value, New_Registry_Value, ASR_ID | lookup asr_rules ID AS ASR_ID OUTPUT ASR_Rule | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`| rename host as dest | `windows_defender_asr_rule_disabled_filter`'
how_to_implement: The following analytic requires collection of Windows Defender Operational logs in either XML or multi-line. To collect, setup a new input for the Windows Defender Operational logs. In addition, it does require a lookup that maps the ID to ASR Rule name.
known_false_positives: False positives may occur if applications are typically disabling ASR rules in the environment. Monitor for changes to ASR rules to determine if this is a false positive.
references:
- https://asrgen.streamlit.app/
finding:
title: ASR rule disabled event, $ASR_Rule$, was triggered on $dest$.
entity:
field: dest
type: system
score: 50
analytic_story:
- Windows Attack Surface Reduction
asset_type: Endpoint
mitre_attack_id:
- T1112
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: search
`ms_defender` EventCode IN (5007)
Stage 2: rex
| rex field=New_Value "0x(?<New_Registry_Value>\\d+)$"
Stage 3: rex
| rex field=Old_Value "0x(?<Old_Registry_Value>\\d+)$"
Stage 4: rex
| rex field=New_Value "Rules\\\\(?<ASR_ID>[A-Fa-f0-9\\-]+)\\s*="
Stage 5: eval
| eval
New_Registry_Value=case(
New_Registry_Value=="0", "Disabled",
New_Registry_Value=="1", "Block",
New_Registry_Value=="2", "Audit",
New_Registry_Value=="6", "Warn"
)
New_Registry_Value ="Disabled""Block""Audit""Warn"Stage 6: eval
| eval
Old_Registry_Value=case(
Old_Registry_Value=="0", "Disabled",
Old_Registry_Value=="1", "Block",
Old_Registry_Value=="2", "Audit",
Old_Registry_Value=="6", "Warn"
)
Old_Registry_Value ="Disabled""Block""Audit""Warn"Stage 7: search
| search New_Registry_Value="Disabled"
Stage 8: stats
| stats
count
min(_time) as firstTime
max(_time) as lastTime
by host, New_Value, Old_Value, Old_Registry_Value, New_Registry_Value, ASR_ID
Stage 9: lookup
| lookup asr_rules ID AS ASR_ID OUTPUT ASR_Rule
Stage 10: search
| `security_content_ctime(firstTime)`
Stage 11: search
| `security_content_ctime(lastTime)`
Stage 12: rename
| rename host as dest
Stage 13: search
| `windows_defender_asr_rule_disabled_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventCode | in |
| field:"EventID" kind:in value:"5007" |
New_Registry_Value | eq |
| field:"New_Registry_Value" kind:eq value:"Disabled" |
Windows GrimResource - MMC Process Accessing APDS DLL
#GrimResource is a code execution technique discovered by Elastic Security in 2024 that abuses a stored XSS vulnerability in apds.dll to achieve arbitrary code execution inside mmc.exe, a signed, trusted Windows binary. The attack is delivered via a malicious .msc file (MMC Saved Console file). When the victim opens the .msc file, MMC processes an embedded transformNode operation that triggers the XSS in apds.dll, which is then leveraged to execute attacker-controlled script within the MMC process context.
Known False Positives
- Legitimate use of mmc.exe accessing apds.dll may occur during routine system management or troubleshooting. Verify with approved administrative activities to reduce false alerts.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution | |
| Stealth |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 4663: An attempt was made to access an object. |
Rule Body
name: Windows GrimResource - MMC Process Accessing APDS DLL
id: 872d1651-7838-4b47-ad3e-ef5e63453a7f
version: 2
creation_date: '2026-05-05'
modification_date: '2026-05-13'
author: Raven Tait, Splunk
status: production
type: TTP
description: |-
GrimResource is a code execution technique discovered by Elastic Security in 2024 that abuses a stored XSS vulnerability in apds.dll to achieve arbitrary code execution inside mmc.exe, a signed, trusted Windows binary.
The attack is delivered via a malicious .msc file (MMC Saved Console file).
When the victim opens the .msc file, MMC processes an embedded transformNode operation that triggers the XSS in apds.dll, which is then leveraged to execute attacker-controlled script within the MMC process context.
data_source:
- Windows Event Log Security 4663
search: |-
`wineventlog_security`
AccessList="%%4416"
EventID="4663"
ObjectName="*:\\Windows\\System32\\apds.dll"
ProcessName="*:\\Windows\\System32\\mmc.exe"
| fillnull
| stats count min(_time) as firstTime
max(_time) as lastTime
by Computer AccessList EventID ObjectName ProcessName
| rename Computer as dest
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_grimresource___mmc_process_accessing_apds_dll_filter`
how_to_implement: The detection is based on data that originates from Endpoint Detection and Response (EDR) agents. These agents are designed to provide security-related telemetry from the endpoints where the agent is installed. To implement this search, you must ingest logs that contain the process GUID, process name, and parent process. Additionally, you must ingest complete command-line executions. These logs must be processed using the appropriate Splunk Technology Add-ons that are specific to the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint` data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process.
known_false_positives: Legitimate use of mmc.exe accessing apds.dll may occur during routine system management or troubleshooting. Verify with approved administrative activities to reduce false alerts.
references:
- https://www.elastic.co/security-labs/grimresource
- https://medium.com/@knownsec404team/from-http-domain-to-res-domain-xss-by-using-ie-adobes-pdf-activex-plugin-ba4f082c8199
finding:
title: mmc.exe accessed apds.dll on $dest$, consistent with GrimResource activity.
entity:
field: dest
type: system
score: 50
threat_objects:
- field: ObjectName
type: file_path
analytic_story:
- Compromised Windows Host
asset_type: Endpoint
mitre_attack_id:
- T1059.007
- T1218.014
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: search
`wineventlog_security`
AccessList="%%4416"
EventID="4663"
ObjectName="*:\\Windows\\System32\\apds.dll"
ProcessName="*:\\Windows\\System32\\mmc.exe"
Stage 2: fillnull
| fillnull
Stage 3: stats
| stats count min(_time) as firstTime
max(_time) as lastTime
by Computer AccessList EventID ObjectName ProcessName
Stage 4: rename
| rename Computer as dest
Stage 5: search
| `security_content_ctime(firstTime)`
Stage 6: search
| `security_content_ctime(lastTime)`
Stage 7: search
| `windows_grimresource___mmc_process_accessing_apds_dll_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
AccessList | eq |
| field:"AccessList" kind:eq value:"%%4416" |
EventID | eq |
| field:"EventID" kind:eq value:"4663" |
ObjectName | eq |
| field:"ObjectName" kind:eq value:"*:\Windows\System32\apds.dll" |
ProcessName | eq |
| field:"process_name" kind:eq value:"*:\Windows\System32\mmc.exe" |
Windows Modify Registry DisableSecuritySettings
#The following analytic detects modifications to the Windows registry that disable security settings for Terminal Services. It leverages the Endpoint data model, specifically monitoring changes to the registry path associated with Terminal Services security settings. This activity is significant because altering these settings can weaken the security posture of Remote Desktop Services, potentially allowing unauthorized remote access. If confirmed malicious, such modifications could enable attackers to gain persistent remote access to the system, facilitating further exploitation and data exfiltration.
Known False Positives
- Administrators may enable or disable this feature that may cause some false positive, however is not common. Filter as needed.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Defense Impairment |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 13: RegistryEvent (Value Set) |
Rule Body
name: Windows Modify Registry DisableSecuritySettings
id: 989019b4-b7aa-418a-9a17-2293e91288b6
version: 11
creation_date: '2022-07-06'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: TTP
description: The following analytic detects modifications to the Windows registry that disable security settings for Terminal Services. It leverages the Endpoint data model, specifically monitoring changes to the registry path associated with Terminal Services security settings. This activity is significant because altering these settings can weaken the security posture of Remote Desktop Services, potentially allowing unauthorized remote access. If confirmed malicious, such modifications could enable attackers to gain persistent remote access to the system, facilitating further exploitation and data exfiltration.
data_source:
- Sysmon EventID 13
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Registry where Registry.registry_path = "*\\Terminal Services\\DisableSecuritySettings" Registry.registry_value_data = 0x00000001 by Registry.action Registry.dest Registry.process_guid Registry.process_id Registry.registry_hive Registry.registry_path Registry.registry_key_name Registry.registry_value_data Registry.registry_value_name Registry.registry_value_type Registry.status Registry.user Registry.vendor_product | `drop_dm_object_name(Registry)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_modify_registry_disablesecuritysettings_filter`'
how_to_implement: To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Registry` node. Also make sure that this registry was included in your config files ex. sysmon config to be monitored.
known_false_positives: Administrators may enable or disable this feature that may cause some false positive, however is not common. Filter as needed.
references:
- https://malpedia.caad.fkie.fraunhofer.de/details/win.darkgate
finding:
title: the registry for terminal services settings was modified to disable security settings on $dest$.
entity:
field: dest
type: system
score: 50
analytic_story:
- DarkGate Malware
- CISA AA23-347A
asset_type: Endpoint
mitre_attack_id:
- T1112
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: tstats
| tstats `security_content_summariesonly`
count
min(_time) as firstTime
max(_time) as lastTime
from datamodel=Endpoint.Registry
where Registry.registry_path = "*\\Terminal Services\\DisableSecuritySettings"
Registry.registry_value_data = 0x00000001
by
Registry.action
Registry.dest
Registry.process_guid
Registry.process_id
Registry.registry_hive
Registry.registry_path
Registry.registry_key_name
Registry.registry_value_data
Registry.registry_value_name
Registry.registry_value_type
Registry.status
Registry.user
Registry.vendor_product
Stage 2: search
| `drop_dm_object_name(Registry)`
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `security_content_ctime(lastTime)`
Stage 5: search
| `windows_modify_registry_disablesecuritysettings_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Registry.registry_path | eq |
| field:"registry_path" kind:eq value:"*\Terminal Services\DisableSecuritySettings" |
Registry.registry_value_data | eq |
| field:"Details" kind:eq value:"0x00000001" |
Windows Possible Credential Dumping
#The following analytic detects potential credential dumping by identifying specific GrantedAccess permission requests and CallTrace DLLs targeting the LSASS process. It leverages Sysmon EventCode 10 logs, focusing on access requests to lsass.exe and call traces involving debug and native API DLLs like dbgcore.dll, dbghelp.dll, and ntdll.dll. This activity is significant as credential dumping can lead to unauthorized access to sensitive credentials. If confirmed malicious, attackers could gain elevated privileges and persist within the environment, posing a severe security risk.
Known False Positives
- False positives will occur based on GrantedAccess 0x1010 and 0x1400, filter based on source image as needed or remove them. Concern is Cobalt Strike usage of Mimikatz will generate 0x1010 initially, but later be caught.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 10: ProcessAccess |
Rule Body
name: Windows Possible Credential Dumping
id: e4723b92-7266-11ec-af45-acde48001122
version: 14
creation_date: '2022-01-11'
modification_date: '2026-05-13'
author: Michael Haag, Splunk
status: production
type: TTP
description: The following analytic detects potential credential dumping by identifying specific GrantedAccess permission requests and CallTrace DLLs targeting the LSASS process. It leverages Sysmon EventCode 10 logs, focusing on access requests to lsass.exe and call traces involving debug and native API DLLs like dbgcore.dll, dbghelp.dll, and ntdll.dll. This activity is significant as credential dumping can lead to unauthorized access to sensitive credentials. If confirmed malicious, attackers could gain elevated privileges and persist within the environment, posing a severe security risk.
data_source:
- Sysmon EventID 10
search: '`sysmon` EventCode=10 TargetImage=*\\lsass.exe granted_access IN ("0x01000", "0x1010", "0x1038", "0x40", "0x1400", "0x1fffff", "0x1410", "0x143a", "0x1438", "0x1000") CallTrace IN ("*dbgcore.dll*", "*dbghelp.dll*", "*ntdll.dll*", "*kernelbase.dll*", "*kernel32.dll*") NOT SourceUser IN ("NT AUTHORITY\\SYSTEM", "NT AUTHORITY\\NETWORK SERVICE") | stats count min(_time) as firstTime max(_time) as lastTime by CallTrace EventID GrantedAccess Guid Opcode ProcessID SecurityID SourceImage SourceProcessGUID SourceProcessId TargetImage TargetProcessGUID TargetProcessId UserID dest granted_access parent_process_exec parent_process_guid parent_process_id parent_process_name parent_process_path process_exec process_guid process_id process_name process_path signature signature_id user_id vendor_product | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_possible_credential_dumping_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 must have at least version 6.0.4 of the Sysmon TA. Enabling EventCode 10 TargetProcess lsass.exe is required.
known_false_positives: False positives will occur based on GrantedAccess 0x1010 and 0x1400, filter based on source image as needed or remove them. Concern is Cobalt Strike usage of Mimikatz will generate 0x1010 initially, but later be caught.
references:
- https://en.wikipedia.org/wiki/Local_Security_Authority_Subsystem_Service
- https://docs.microsoft.com/en-us/windows/win32/api/minidumpapiset/nf-minidumpapiset-minidumpwritedump
- https://cyberwardog.blogspot.com/2017/03/chronicles-of-threat-hunter-hunting-for_22.html
- https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1
- https://docs.microsoft.com/en-us/windows/win32/procthread/process-security-and-access-rights?redirectedfrom=MSDN
- https://github.com/redcanaryco/AtomicTestHarnesses/blob/master/Windows/TestHarnesses/T1003.001_DumpLSASS/DumpLSASS.ps1
finding:
title: A process, $SourceImage$, has loaded $TargetImage$ that are typically related to credential dumping on $dest$. Review for further details.
entity:
field: user_id
type: user
score: 50
intermediate_findings:
entities:
- field: dest
type: system
score: 50
message: A process, $SourceImage$, has loaded $TargetImage$ that are typically related to credential dumping on $dest$. Review for further details.
threat_objects:
- field: SourceImage
type: process
analytic_story:
- Detect Zerologon Attack
- CISA AA22-264A
- Credential Dumping
- CISA AA23-347A
- DarkSide Ransomware
- CISA AA22-257A
- Scattered Lapsus$ Hunters
asset_type: Endpoint
mitre_attack_id:
- T1003.001
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: search
`sysmon` EventCode=10 TargetImage=*\\lsass.exe granted_access IN (
"0x01000",
"0x1010",
"0x1038",
"0x40",
"0x1400",
"0x1fffff",
"0x1410",
"0x143a",
"0x1438",
"0x1000"
) CallTrace IN (
"*dbgcore.dll*",
"*dbghelp.dll*",
"*ntdll.dll*",
"*kernelbase.dll*",
"*kernel32.dll*"
) NOT SourceUser IN ("NT AUTHORITY\\SYSTEM", "NT AUTHORITY\\NETWORK SERVICE")
Stage 2: stats
| stats
count
min(_time) as firstTime
max(_time) as lastTime
by
CallTrace
EventID
GrantedAccess
Guid
Opcode
ProcessID
SecurityID
SourceImage
SourceProcessGUID
SourceProcessId
TargetImage
TargetProcessGUID
TargetProcessId
UserID
dest
granted_access
parent_process_exec
parent_process_guid
parent_process_id
parent_process_name
parent_process_path
process_exec
process_guid
process_id
process_name
process_path
signature
signature_id
user_id
vendor_product
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `security_content_ctime(lastTime)`
Stage 5: search
| `windows_possible_credential_dumping_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CallTrace | in |
| field:"CallTrace" kind:in |
EventCode | eq |
| field:"EventID" kind:eq value:"10" |
TargetImage | eq |
| field:"TargetImage" kind:eq value:"*\\lsass.exe" |
granted_access | in |
| field:"GrantedAccess" kind:in |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
SourceUser | in | NT AUTHORITY\NETWORK SERVICE, NT AUTHORITY\SYSTEM | excludes:SourceUser field:"SourceUser" value:"NT AUTHORITY\NETWORK SERVICE" field:"SourceUser" value:"NT AUTHORITY\SYSTEM" |
Windows Security Support Provider Reg Query
#The following analytic identifies command-line activity querying the registry for Security Support Providers (SSPs) related to Local Security Authority (LSA) protection and configuration. This detection leverages Endpoint Detection and Response (EDR) telemetry, focusing on processes accessing specific LSA registry paths. Monitoring this activity is crucial as adversaries and post-exploitation tools like winpeas may use it to gather information on LSA protections, potentially leading to credential theft. If confirmed malicious, attackers could exploit this to scrape password hashes or plaintext passwords from memory, significantly compromising system security.
Known False Positives
- No false positives have been identified at this time.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Privilege Escalation |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
name: Windows Security Support Provider Reg Query
id: 31302468-93c9-4eca-9ae3-2d41f53a4e2b
version: 13
creation_date: '2022-12-06'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
description: The following analytic identifies command-line activity querying the registry for Security Support Providers (SSPs) related to Local Security Authority (LSA) protection and configuration. This detection leverages Endpoint Detection and Response (EDR) telemetry, focusing on processes accessing specific LSA registry paths. Monitoring this activity is crucial as adversaries and post-exploitation tools like winpeas may use it to gather information on LSA protections, potentially leading to credential theft. If confirmed malicious, attackers could exploit this to scrape password hashes or plaintext passwords from memory, significantly compromising system security.
data_source:
- Sysmon EventID 1
- Windows Event Log Security 4688
- CrowdStrike ProcessRollup2
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where `process_reg` AND Processes.process = "* query *" AND Processes.process = "*\\SYSTEM\\CurrentControlSet\\Control\\LSA*" Processes.process IN ("*RunAsPPL*" , "*LsaCfgFlags*") by Processes.action Processes.dest Processes.original_file_name Processes.parent_process Processes.parent_process_exec Processes.parent_process_guid Processes.parent_process_id Processes.parent_process_name Processes.parent_process_path Processes.process Processes.process_exec Processes.process_guid Processes.process_hash Processes.process_id Processes.process_integrity_level Processes.process_name Processes.process_path Processes.user Processes.user_id Processes.vendor_product | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_security_support_provider_reg_query_filter`'
how_to_implement: The detection is based on data that originates from Endpoint Detection and Response (EDR) agents. These agents are designed to provide security-related telemetry from the endpoints where the agent is installed. To implement this search, you must ingest logs that contain the process GUID, process name, and parent process. Additionally, you must ingest complete command-line executions. These logs must be processed using the appropriate Splunk Technology Add-ons that are specific to the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint` data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process.
known_false_positives: No false positives have been identified at this time.
references:
- https://blog.netwrix.com/2022/01/11/understanding-lsa-protection/
- https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS
- https://www.microsoft.com/en-us/security/blog/2022/10/14/new-prestige-ransomware-impacts-organizations-in-ukraine-and-poland/
intermediate_findings:
entities:
- field: dest
type: system
score: 20
message: process with reg query command line $process$ on $dest$
analytic_story:
- Windows Post-Exploitation
- Prestige Ransomware
- Sneaky Active Directory Persistence Tricks
asset_type: Endpoint
mitre_attack_id:
- T1547.005
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: tstats
| tstats `security_content_summariesonly`
count
min(_time) as firstTime
max(_time) as lastTime
from datamodel=Endpoint.Processes
where `process_reg` AND Processes.process = "* query *"
AND Processes.process = "*\\SYSTEM\\CurrentControlSet\\Control\\LSA*" Processes.process IN (
"*RunAsPPL*" ,
"*LsaCfgFlags*"
)
by
Processes.action
Processes.dest
Processes.original_file_name
Processes.parent_process
Processes.parent_process_exec
Processes.parent_process_guid
Processes.parent_process_id
Processes.parent_process_name
Processes.parent_process_path
Processes.process
Processes.process_exec
Processes.process_guid
Processes.process_hash
Processes.process_id
Processes.process_integrity_level
Processes.process_name
Processes.process_path
Processes.user
Processes.user_id
Processes.vendor_product
Stage 2: search
| `drop_dm_object_name(Processes)`
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `security_content_ctime(lastTime)`
Stage 5: search
| `windows_security_support_provider_reg_query_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Processes.original_file_name | eq |
| field:"OriginalFileName" kind:eq value:"reg.exe" |
Processes.process | eq |
| field:"CommandLine" kind:eq |
Processes.process | in |
| field:"CommandLine" kind:in |
Processes.process_name | eq |
| field:"process_basename" kind:eq value:"reg.exe" |
Windows Spearphishing Attachment Connect To None MS Office Domain
#The following analytic identifies suspicious Office documents that connect to non-Microsoft Office domains. It leverages Sysmon EventCode 22 to detect processes like winword.exe or excel.exe making DNS queries to domains outside of *.office.com or *.office.net. This activity is significant as it may indicate a spearphishing attempt using malicious documents to download or connect to harmful content. If confirmed malicious, this could lead to unauthorized data access, malware infection, or further network compromise.
Known False Positives
- Windows Office document may contain legitimate url link other than MS office Domain. filter is needed
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Initial Access |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 22: DNSEvent (DNS query) |
Rule Body
name: Windows Spearphishing Attachment Connect To None MS Office Domain
id: 1cb40e15-cffa-45cc-abbd-e35884a49766
version: 10
creation_date: '2023-01-27'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: Hunting
description: The following analytic identifies suspicious Office documents that connect to non-Microsoft Office domains. It leverages Sysmon EventCode 22 to detect processes like winword.exe or excel.exe making DNS queries to domains outside of *.office.com or *.office.net. This activity is significant as it may indicate a spearphishing attempt using malicious documents to download or connect to harmful content. If confirmed malicious, this could lead to unauthorized data access, malware infection, or further network compromise.
data_source:
- Sysmon EventID 22
search: '`sysmon` EventCode=22 Image IN ("*\\winword.exe","*\\excel.exe","*\\powerpnt.exe","*\\mspub.exe","*\\visio.exe","*\\wordpad.exe","*\\wordview.exe","*\\onenote.exe", "*\\onenotem.exe","*\\onenoteviewer.exe","*\\onenoteim.exe", "*\\msaccess.exe") AND NOT(QueryName IN ("*.office.com", "*.office.net")) | stats count min(_time) as firstTime max(_time) as lastTime by answer answer_count dvc process_exec process_guid process_name query query_count reply_code_id signature signature_id src user_id vendor_product QueryName QueryResults QueryStatus | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_spearphishing_attachment_connect_to_none_ms_office_domain_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 must have at least version 6.0.4 of the Sysmon TA.
known_false_positives: Windows Office document may contain legitimate url link other than MS office Domain. filter is needed
references:
- https://www.netskope.com/blog/asyncrat-using-fully-undetected-downloader
- https://malpedia.caad.fkie.fraunhofer.de/details/win.asyncrat
analytic_story:
- Spearphishing Attachments
- AsyncRAT
- MuddyWater
asset_type: Endpoint
mitre_attack_id:
- T1566.001
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: network
security_domain: endpoint
Stages and Predicates
Stage 1: search
`sysmon` EventCode=22 Image IN (
"*\\winword.exe",
"*\\excel.exe",
"*\\powerpnt.exe",
"*\\mspub.exe",
"*\\visio.exe",
"*\\wordpad.exe",
"*\\wordview.exe",
"*\\onenote.exe",
"*\\onenotem.exe",
"*\\onenoteviewer.exe",
"*\\onenoteim.exe",
"*\\msaccess.exe"
) AND NOT(QueryName IN ("*.office.com", "*.office.net"))
Stage 2: stats
| stats
count
min(_time) as firstTime
max(_time) as lastTime
by
answer
answer_count
dvc
process_exec
process_guid
process_name
query
query_count
reply_code_id
signature
signature_id
src
user_id
vendor_product
QueryName
QueryResults
QueryStatus
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `security_content_ctime(lastTime)`
Stage 5: search
| `windows_spearphishing_attachment_connect_to_none_ms_office_domain_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventCode | eq |
| field:"EventID" kind:eq value:"22" |
Image | in |
| field:"Image" kind:in |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
QueryName | in | *.office.com, *.office.net | excludes:QueryName field:"QueryName" value:"*.office.com" field:"QueryName" value:"*.office.net" |
WMI Temporary Event Subscription
#The following analytic detects the creation of WMI temporary event subscriptions. It leverages Windows Event Logs, specifically EventCode 5860, to identify these activities. This detection is significant because attackers often use WMI to execute commands, gather information, or maintain persistence within a compromised system. If confirmed malicious, this activity could allow an attacker to execute arbitrary code, escalate privileges, or persist in the environment. Analysts should review the specific WMI queries and assess their intent, considering potential false positives from legitimate administrative tasks.
Known False Positives
- Some software may create WMI temporary event subscriptions for various purposes. The included search contains an exception for two of these that occur by default on Windows 10 systems. You may need to modify the search to create exceptions for other legitimate events.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution |
Telemetry Coverage
Rule Body
name: WMI Temporary Event Subscription
id: 38cbd42c-1098-41bb-99cf-9d6d2b296d83
version: 10
creation_date: '2020-04-29'
modification_date: '2026-05-13'
author: Rico Valdez, Splunk
status: experimental
type: TTP
description: The following analytic detects the creation of WMI temporary event subscriptions. It leverages Windows Event Logs, specifically EventCode 5860, to identify these activities. This detection is significant because attackers often use WMI to execute commands, gather information, or maintain persistence within a compromised system. If confirmed malicious, this activity could allow an attacker to execute arbitrary code, escalate privileges, or persist in the environment. Analysts should review the specific WMI queries and assess their intent, considering potential false positives from legitimate administrative tasks.
data_source: []
search: |-
`wmi`
EventCode=5860
Temporary
| rex field=Message "NotificationQuery =\s+(?<query>[^;|^$]+)"
| search
query!="FROM Win32_ProcessStartTrace WHERE ProcessName = 'wsmprovhost.exe'"
AND
query!="FROM __InstanceOperationEvent WHERE TargetInstance ISA 'AntiVirusProduct' OR TargetInstance ISA 'FirewallProduct' OR TargetInstance ISA 'AntiSpywareProduct'"
| stats count min(_time) as firstTime
max(_time) as lastTime
by ComputerName, query
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `wmi_temporary_event_subscription_filter`
how_to_implement: To successfully implement this search, you must be ingesting the Windows WMI activity logs. This can be done by adding a stanza to inputs.conf on the system generating logs with a title of [WinEventLog://Microsoft-Windows-WMI-Activity/Operational].
known_false_positives: Some software may create WMI temporary event subscriptions for various purposes. The included search contains an exception for two of these that occur by default on Windows 10 systems. You may need to modify the search to create exceptions for other legitimate events.
references: []
finding:
title: WMI Temporary event subscription detected on $dest$
entity:
field: dest
type: system
score: 50
analytic_story:
- Suspicious WMI Use
asset_type: Endpoint
mitre_attack_id:
- T1047
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: search
`wmi`
EventCode=5860
Temporary
Stage 2: rex
| rex field=Message "NotificationQuery =\s+(?<query>[^;|^$]+)"
Stage 3: search
| search
query!="FROM Win32_ProcessStartTrace WHERE ProcessName = 'wsmprovhost.exe'"
AND
query!="FROM __InstanceOperationEvent WHERE TargetInstance ISA 'AntiVirusProduct' OR TargetInstance ISA 'FirewallProduct' OR TargetInstance ISA 'AntiSpywareProduct'"
Stage 4: stats
| stats count min(_time) as firstTime
max(_time) as lastTime
by ComputerName, query
Stage 5: search
| `security_content_ctime(firstTime)`
Stage 6: search
| `security_content_ctime(lastTime)`
Stage 7: search
| `wmi_temporary_event_subscription_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventCode | eq |
| field:"EventID" kind:eq value:"5860" |
query | ne |
| field:"query" kind:ne |
Search Terms
These SPL tokens match against raw event text.
| Stage | Term |
|---|---|
| 1 | Temporary |