Detection rules › Splunk

Splunk rules: 37

AWS Defense Evasion Update Cloudtrail

#
Status
production
Severity
medium
Group by
aws::awsRegion, aws::recipientAccountId, aws::userAgent, dest, signature, src, user, vendor_product
Author
Gowthamaraj Rajendran, Splunk
Source
github.com/splunk/security_content

The following analytic detects UpdateTrail events in AWS CloudTrail logs. It identifies attempts to modify CloudTrail settings, potentially to evade logging. The detection leverages CloudTrail logs, focusing on UpdateTrail events where the user agent is not the AWS console and the operation is successful. This activity is significant because altering CloudTrail settings can disable or limit logging, hindering visibility into AWS account activities. If confirmed malicious, this could allow attackers to operate undetected, compromising the integrity and security of the AWS environment.

Known False Positives

  • While this search has no known false positives, it is possible that an AWS admin has updated cloudtrail logging. Please investigate this activity.

MITRE ATT&CK Coverage

Telemetry Coverage

Rules Detecting the Same Action

These rules filter on the same operation.

Rule Body

name: AWS Defense Evasion Update Cloudtrail
id: 7c921d28-ef48-4f1b-85b3-0af8af7697db
version: 12
creation_date: '2022-07-19'
modification_date: '2026-05-13'
author: Gowthamaraj Rajendran, Splunk
status: production
type: TTP
description: The following analytic detects `UpdateTrail` events in AWS CloudTrail logs. It identifies attempts to modify CloudTrail settings, potentially to evade logging. The detection leverages CloudTrail logs, focusing on `UpdateTrail` events where the user agent is not the AWS console and the operation is successful. This activity is significant because altering CloudTrail settings can disable or limit logging, hindering visibility into AWS account activities. If confirmed malicious, this could allow attackers to operate undetected, compromising the integrity and security of the AWS environment.
data_source:
    - AWS CloudTrail UpdateTrail
search: |-
    `cloudtrail` eventName = UpdateTrail eventSource = cloudtrail.amazonaws.com userAgent !=console.amazonaws.com errorCode = success
      | rename user_name as user
      | stats count min(_time) as firstTime max(_time) as lastTime
        BY signature dest user
           user_agent src vendor_account
           vendor_region vendor_product
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `aws_defense_evasion_update_cloudtrail_filter`
how_to_implement: You must install Splunk AWS Add on and enable CloudTrail logs in your AWS Environment.
known_false_positives: While this search has no known false positives, it is possible that an AWS admin has updated cloudtrail logging. Please investigate this activity.
references:
    - https://attack.mitre.org/techniques/T1562/008/
finding:
    title: User $user$ has updated a cloudtrail logging for account id $vendor_account$ from IP $src$
    entity:
        field: user
        type: user
        score: 50
threat_objects:
    - field: src
      type: ip_address
analytic_story:
    - AWS Defense Evasion
asset_type: AWS Account
mitre_attack_id:
    - T1685.002
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: cloud
security_domain: threat

Stages and Predicates

Stage 1: search

`cloudtrail` eventName = UpdateTrail eventSource = cloudtrail.amazonaws.com
    userAgent !=console.amazonaws.com errorCode = success

Stage 2: rename

| rename user_name as user

Stage 3: stats

| stats count min(_time) as firstTime max(_time) as lastTime
    BY signature dest user
       user_agent src vendor_account
       vendor_region vendor_product

Stage 4: search

| `security_content_ctime(firstTime)`

Stage 5: search

| `security_content_ctime(lastTime)`

Stage 6: search

| `aws_defense_evasion_update_cloudtrail_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
errorCodeeq
  • success corpus 16 (splunk 12, sigma 4)
field:"aws::errorCode" kind:eq value:"success"
eventNameeq
  • UpdateTrail corpus 5 (sigma 3, splunk 2)
field:"aws::eventName" kind:eq value:"UpdateTrail"
eventSourceeq
  • cloudtrail.amazonaws.com corpus 10 (sigma 7, splunk 3)
field:"aws::eventSource" kind:eq value:"cloudtrail.amazonaws.com"
sourcetypeeq
  • aws:cloudtrail corpus 59 (splunk 59)
field:"sourcetype" kind:eq value:"aws:cloudtrail"
userAgentne
  • console.amazonaws.com corpus 6 (splunk 6)
field:"userAgent" kind:ne value:"console.amazonaws.com"

Child Processes of Spoolsv exe

#
Status
experimental
Severity
medium
Group by
IntegrityLevel, command_line, computer_name, event_action, original_file_name, parent_command_line, parent_process_basename, parent_process_guid, parent_process_id, parent_process_name, process_basename, process_guid, process_hash, process_id, process_name, user, user_id, vendor_product
Author
Rico Valdez, Splunk
Source
github.com/splunk/security_content

The following analytic identifies child processes spawned by spoolsv.exe, the Print Spooler service in Windows, which typically runs with SYSTEM privileges. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process and parent process relationships. Monitoring this activity is crucial as it can indicate exploitation attempts, such as those associated with CVE-2018-8440, which can lead to privilege escalation. If confirmed malicious, attackers could gain SYSTEM-level access, allowing them to execute arbitrary code, escalate privileges, and potentially compromise the entire system.

Known False Positives

  • Some legitimate printer-related processes may show up as children of spoolsv.exe. You should confirm that any activity as legitimate and may be added as exclusions in the search.

MITRE ATT&CK Coverage

TacticTechniques
Privilege Escalation

Telemetry Coverage

Rule Body

name: Child Processes of Spoolsv exe
id: aa0c4aeb-5b18-41c4-8c07-f1442d7599df
version: 11
creation_date: '2020-04-29'
modification_date: '2026-05-13'
author: Rico Valdez, Splunk
status: experimental
type: TTP
description: The following analytic identifies child processes spawned by spoolsv.exe, the Print Spooler service in Windows, which typically runs with SYSTEM privileges. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process and parent process relationships. Monitoring this activity is crucial as it can indicate exploitation attempts, such as those associated with CVE-2018-8440, which can lead to privilege escalation. If confirmed malicious, attackers could gain SYSTEM-level access, allowing them to execute arbitrary code, escalate privileges, and potentially compromise the entire system.
data_source:
    - Sysmon EventID 1
    - Windows Event Log Security 4688
    - CrowdStrike ProcessRollup2
search: |-
    | tstats `security_content_summariesonly` count values(Processes.process_name) as process_name values(Processes.process) as process min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes
      WHERE Processes.parent_process_name=spoolsv.exe
        AND
        Processes.process_name!=regsvr32.exe
      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)`
    | `child_processes_of_spoolsv_exe_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: Some legitimate printer-related processes may show up as children of spoolsv.exe. You should confirm that any activity as legitimate and may be added as exclusions in the search.
references: []
finding:
    title: Potentially suspicious child processes of spoolsv.exe on $dest$
    entity:
        field: user
        type: user
        score: 50
intermediate_findings:
    entities:
        - field: dest
          type: system
          score: 50
          message: Potentially suspicious child processes of spoolsv.exe on $dest$
analytic_story:
    - Data Destruction
    - Hermetic Wiper
    - Windows Privilege Escalation
asset_type: Endpoint
cve:
    - CVE-2018-8440
mitre_attack_id:
    - T1068
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: tstats

| tstats `security_content_summariesonly`
    count
    values(Processes.process_name) as process_name
    values(Processes.process) as process
    min(_time) as firstTime
    max(_time) as lastTime
  FROM datamodel=Endpoint.Processes
  WHERE Processes.parent_process_name=spoolsv.exe
    AND
    Processes.process_name!=regsvr32.exe
  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

| `child_processes_of_spoolsv_exe_filter`

Indicators

These rows show field, operator, and value matches.

Cisco Duo Policy Allow Old Java

#
Status
production
Severity
medium
Group by
action, actionlabel, admin_email, description, user
Author
Patrick Bareiss, Splunk
Source
github.com/splunk/security_content

The following analytic detects when a Duo policy is created or updated to allow the use of outdated Java versions, which can introduce significant security risks. It works by searching Duo administrator activity logs for policy creation or update actions where the policy explicitly sets 'java_remediation' to 'no remediation', indicating that no restrictions are enforced against old Java. The analytic aggregates relevant details such as the user, admin email, and action context for further investigation. Identifying this behavior is critical for a Security Operations Center (SOC) because allowing outdated Java can expose an organization to known vulnerabilities, malware, and exploitation techniques. Attackers or malicious insiders may attempt to weaken security controls by modifying policies to permit insecure software, increasing the risk of compromise. Prompt detection enables SOC analysts to respond quickly, revert risky changes, and mitigate potential threats before they are exploited.

Known False Positives

  • No false positives have been identified at this time.

MITRE ATT&CK Coverage

Rule Body

name: Cisco Duo Policy Allow Old Java
id: ff56d843-57de-4a87-b726-13b145f6bf96
version: 6
creation_date: '2025-07-10'
modification_date: '2026-05-13'
author: Patrick Bareiss, Splunk
status: production
type: TTP
description: |
    The following analytic detects when a Duo policy is created or updated to allow the use of outdated Java versions, which can introduce significant
    security risks. It works by searching Duo administrator activity logs for policy creation or update actions where the policy explicitly sets
    'java_remediation' to 'no remediation', indicating that no restrictions are enforced against old Java. The analytic aggregates relevant details
    such as the user, admin email, and action context for further investigation. Identifying this behavior is critical for a Security Operations Center
    (SOC) because allowing outdated Java can expose an organization to known vulnerabilities, malware, and exploitation techniques. Attackers or malicious
    insiders may attempt to weaken security controls by modifying policies to permit insecure software, increasing the risk of compromise. Prompt detection
    enables SOC analysts to respond quickly, revert risky changes, and mitigate potential threats before they are exploited.
data_source:
    - Cisco Duo Administrator
search: |-
    `cisco_duo_administrator` action=policy_update OR action=policy_create
      | spath input=description
      | search java_remediation="no remediation"
      | rename object as user
      | stats count min(_time) as firstTime max(_time) as lastTime
        BY action actionlabel description
           user admin_email
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `cisco_duo_policy_allow_old_java_filter`
how_to_implement: The analytic leverages Duo activity logs to be ingested using the Cisco Security Cloud App (https://splunkbase.splunk.com/app/7404).
known_false_positives: No false positives have been identified at this time.
references:
    - https://splunkbase.splunk.com/app/7404
finding:
    title: A policy has been created or updated to allow old java by user $user$ with email $admin_email$
    entity:
        field: user
        type: user
        score: 50
analytic_story:
    - Cisco Duo Suspicious Activity
asset_type: Identity
mitre_attack_id:
    - T1556
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: application
security_domain: identity

Stages and Predicates

Stage 1: search

`cisco_duo_administrator` action=policy_update OR action=policy_create

Stage 2: spath

| spath input=description

Stage 3: search

| search java_remediation="no remediation"

Stage 4: rename

| rename object as user

Stage 5: stats

| stats count min(_time) as firstTime max(_time) as lastTime
    BY action actionlabel description
       user admin_email

Stage 6: search

| `security_content_ctime(firstTime)`

Stage 7: search

| `security_content_ctime(lastTime)`

Stage 8: search

| `cisco_duo_policy_allow_old_java_filter`

Indicators

These rows show field, operator, and value matches.

Cisco Secure Firewall - Bits Network Activity

#
Status
production
Severity
low
Group by
ClientApplication, ClientApplicationVersion, EVE_Process, action, dest, destination_port, rule, src, transport, url
Author
Nasreddine Bencherchali, Splunk
Source
github.com/splunk/security_content

The following analytic detects the use of the Background Intelligent Transfer Service (BITS) client application in allowed outbound connections. It leverages logs from Cisco Secure Firewall Threat Defense devices and identifies instances where BITS is used to initiate downloads from non-standard or unexpected domains. While BITS is a legitimate Windows service used for downloading updates, it is also commonly abused by adversaries to stealthily retrieve payloads or tools. This analytic filters out known Microsoft Edge update URLs and focuses on connections that may indicate suspicious or unauthorized file transfers. If confirmed malicious, this could represent a command and control (C2) channel or a download of malware or tooling as part of an attack chain.

Known False Positives

  • BITS is a legitimate Windows component used by Microsoft services such as Windows Update or Microsoft Edge for downloading updates. Although this analytic filters known Microsoft Edge update URLs, false positives may still occur from other legitimate enterprise applications or software distribution platforms that utilize BITS. Additional tuning may be required to account for internal application distribution systems or approved update mechanisms that also rely on BITS.

Rule Body

name: Cisco Secure Firewall - Bits Network Activity
id: b08e69d4-b42d-494c-bd30-abaaa3571ba4
version: 9
creation_date: '2025-04-03'
modification_date: '2026-05-13'
author: Nasreddine Bencherchali, Splunk
status: production
type: Anomaly
description: The following analytic detects the use of the Background Intelligent Transfer Service (BITS) client application in allowed outbound connections. It leverages logs from Cisco Secure Firewall Threat Defense devices and identifies instances where BITS is used to initiate downloads from non-standard or unexpected domains. While BITS is a legitimate Windows service used for downloading updates, it is also commonly abused by adversaries to stealthily retrieve payloads or tools. This analytic filters out known Microsoft Edge update URLs and focuses on connections that may indicate suspicious or unauthorized file transfers. If confirmed malicious, this could represent a command and control (C2) channel or a download of malware or tooling as part of an attack chain.
data_source:
    - Cisco Secure Firewall Threat Defense Connection Event
search: |
    `cisco_secure_firewall` EventType=ConnectionEvent action IN ("Trust", "Allow", "allowed") ClientApplication="BITS" AND NOT url IN ("*://msedge.b.tlu.dl*")
    | stats count min(_time) as firstTime max(_time) as lastTime by src, dest, dest_port, transport, rule, url, EVE_Process, ClientApplication, ClientApplicationVersion, action
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `cisco_secure_firewall___bits_network_activity_filter`
how_to_implement: |
    This search requires Cisco Secure Firewall Threat Defense Logs, which
    includes the ConnectionEvent 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 access policy must also enable logging.
known_false_positives: |
    BITS is a legitimate Windows component used by Microsoft services such as Windows Update or Microsoft Edge for downloading updates.
    Although this analytic filters known Microsoft Edge update URLs, false positives may still occur from other legitimate enterprise applications or software distribution platforms that utilize BITS.
    Additional tuning may be required to account for internal application distribution systems or approved update mechanisms that also rely on BITS.
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: $src$ downloaded a file from $url$ via BITS Service
        - field: dest
          type: system
          score: 20
          message: $src$ downloaded a file from $url$ via BITS Service
threat_objects:
    - field: url
      type: url
analytic_story:
    - Cisco Secure Firewall Threat Defense Analytics
asset_type: Network
mitre_attack_id: []
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: network
security_domain: network

Stages and Predicates

Stage 1: search

`cisco_secure_firewall` EventType=ConnectionEvent action IN ("Trust", "Allow", "allowed")
    ClientApplication="BITS" AND NOT url IN (
        "*://msedge.b.tlu.dl*"
    )

Stage 2: stats

| stats
    count
    min(_time) as firstTime
    max(_time) as lastTime
  by
    src,
    dest,
    dest_port,
    transport,
    rule,
    url,
    EVE_Process,
    ClientApplication,
    ClientApplicationVersion,
    action

Stage 3: search

| `security_content_ctime(firstTime)`

Stage 4: search

| `security_content_ctime(lastTime)`

Stage 5: search

| `cisco_secure_firewall___bits_network_activity_filter`

Indicators

These rows show field, operator, and value matches.

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
urleq*://msedge.b.tlu.dl*excludes:url field:"url" value:"*://msedge.b.tlu.dl*"

Detect Credential Dumping through LSASS access

#
Status
production
Severity
medium
Group by
CallTrace, GrantedAccess, Guid, Opcode, SecurityID, SourceProcessGUID, TargetProcessGUID, dest, parent_process_guid, parent_process_id, parent_process_name, process_guid, process_id, process_name, signature, signature_id, source_process_name, target_process_name, user, user_id, vendor_product
Author
Patrick Bareiss, Splunk
Source
github.com/splunk/security_content

The following analytic detects attempts to read LSASS memory, indicative of credential dumping. It leverages Sysmon EventCode 10, filtering for specific access permissions (0x1010 and 0x1410) on the lsass.exe process. This activity is significant because it suggests an attacker is trying to extract credentials from LSASS memory, potentially leading to unauthorized access, data breaches, and compromise of sensitive information. If confirmed malicious, this could enable attackers to escalate privileges, move laterally within the network, or exfiltrate data. Extensive triage is necessary to differentiate between malicious and benign activities.

Known False Positives

  • The activity may be legitimate. Other tools can access lsass for legitimate reasons, and it's possible this event could be generated in those cases. In these cases, false positives should be fairly obvious and you may need to tweak the search to eliminate noise.

MITRE ATT&CK Coverage

TacticTechniques
Credential Access

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 10: ProcessAccess

Rule Body

name: Detect Credential Dumping through LSASS access
id: 2c365e57-4414-4540-8dc0-73ab10729996
version: 15
creation_date: '2019-12-11'
modification_date: '2026-05-13'
author: Patrick Bareiss, Splunk
status: production
type: TTP
description: The following analytic detects attempts to read LSASS memory, indicative of credential dumping. It leverages Sysmon EventCode 10, filtering for specific access permissions (0x1010 and 0x1410) on the lsass.exe process. This activity is significant because it suggests an attacker is trying to extract credentials from LSASS memory, potentially leading to unauthorized access, data breaches, and compromise of sensitive information. If confirmed malicious, this could enable attackers to escalate privileges, move laterally within the network, or exfiltrate data. Extensive triage is necessary to differentiate between malicious and benign activities.
data_source:
    - Sysmon EventID 10
search: |-
    `sysmon` EventCode=10 TargetImage=*lsass.exe (GrantedAccess=0x1010 OR GrantedAccess=0x1410)
      | 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)`
      | `detect_credential_dumping_through_lsass_access_filter`
how_to_implement: This search needs Sysmon Logs and a sysmon configuration, which includes EventCode 10 with lsass.exe. This search uses an input macro named `sysmon`. We strongly recommend that you specify your environment-specific configurations (index, source, sourcetype, etc.) for Windows Sysmon 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.
known_false_positives: The activity may be legitimate. Other tools can access lsass for legitimate reasons, and it's possible this event could be generated in those cases. In these cases, false positives should be fairly obvious and you may need to tweak the search to eliminate noise.
references: []
finding:
    title: The $SourceImage$ has attempted access to read $TargetImage$ was identified on endpoint $dest$, this is indicative of credential dumping and should be investigated.
    entity:
        field: dest
        type: system
        score: 50
analytic_story:
    - Detect Zerologon Attack
    - CISA AA23-347A
    - Credential Dumping
    - BlackSuit Ransomware
    - Lokibot
    - Scattered Lapsus$ Hunters
asset_type: Windows
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 (GrantedAccess=0x1010 OR GrantedAccess=0x1410)

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

| `detect_credential_dumping_through_lsass_access_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 10 corpus 16 (splunk 16)
field:"EventID" kind:eq value:"10"
GrantedAccesseq
  • 0x1010 corpus 2 (sigma 1, splunk 1)
  • 0x1410 corpus 2 (sigma 1, splunk 1)
field:"GrantedAccess" kind:eq
TargetImageeq
  • *lsass.exe corpus 5 (splunk 5)
field:"TargetImage" kind:eq value:"*lsass.exe"

Detect Prohibited Applications Spawning cmd exe

#
Status
production
Group by
IntegrityLevel, command_line, computer_name, event_action, original_file_name, parent_command_line, parent_process_basename, parent_process_guid, parent_process_id, parent_process_name, process_basename, process_guid, process_hash, process_id, process_name, user, user_id, vendor_product
Author
Bhavin Patel, Splunk
Source
github.com/splunk/security_content

The following analytic detects executions of cmd.exe spawned by processes that are commonly abused by attackers and do not typically launch cmd.exe. It leverages data from Endpoint Detection and Response (EDR) agents, focusing on process GUID, process name, parent process, and command-line executions. This activity is significant because it may indicate an attempt to execute unauthorized commands or scripts, often a precursor to further malicious actions. If confirmed malicious, this behavior could lead to unauthorized code execution, privilege escalation, or persistence within the environment.

Known False Positives

  • There are circumstances where an application may legitimately execute and interact with the Windows command-line interface. Investigate and modify the lookup file, as appropriate.

MITRE ATT&CK Coverage

Telemetry Coverage

Rule Body

name: Detect Prohibited Applications Spawning cmd exe
id: dcfd6b40-42f9-469d-a433-2e53f7486664
version: 16
creation_date: '2020-04-29'
modification_date: '2026-05-13'
author: Bhavin Patel, Splunk
status: production
type: Hunting
description: The following analytic detects executions of cmd.exe spawned by processes that are commonly abused by attackers and do not typically launch cmd.exe. It leverages data from Endpoint Detection and Response (EDR) agents, focusing on process GUID, process name, parent process, and command-line executions. This activity is significant because it may indicate an attempt to execute unauthorized commands or scripts, often a precursor to further malicious actions. If confirmed malicious, this behavior could lead to unauthorized code execution, privilege escalation, or persistence within the environment.
data_source:
    - Sysmon EventID 1
    - Windows Event Log Security 4688
    - CrowdStrike ProcessRollup2
search: |
    | tstats `security_content_summariesonly` count values(Processes.process)
    as process min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where (Processes.process_name=cmd.exe OR Processes.original_file_name=Cmd.Exe)
    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)`
    |search [
        | inputlookup prohibited_apps_launching_cmd
        | rename prohibited_applications as parent_process_name
        | eval parent_process_name="*" . parent_process_name
        | table parent_process_name
      ]
    | `detect_prohibited_applications_spawning_cmd_exe_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: There are circumstances where an application may legitimately execute and interact with the Windows command-line interface. Investigate and modify the lookup file, as appropriate.
references: []
analytic_story:
    - Suspicious Command-Line Executions
    - Suspicious MSHTA Activity
    - Suspicious Zoom Child Processes
    - NOBELIUM Group
asset_type: Endpoint
mitre_attack_id:
    - T1059.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
    values(Processes.process)
as process
    min(_time) as firstTime
    max(_time) as lastTime
  from datamodel=Endpoint.Processes
  where (Processes.process_name=cmd.exe OR Processes.original_file_name=Cmd.Exe)
  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

| search [
    | inputlookup prohibited_apps_launching_cmd
    | rename prohibited_applications as parent_process_name
    | eval parent_process_name="*" . parent_process_name
    | table parent_process_name
  ]

Stage 6: search

| `detect_prohibited_applications_spawning_cmd_exe_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
1eq
  • 1 corpus 6 (splunk 6)
field:"1" kind:eq value:"1"
Processes.original_file_nameeq
  • Cmd.Exe corpus 75 (sigma 43, splunk 17, elastic 15)
field:"OriginalFileName" kind:eq value:"Cmd.Exe"
Processes.process_nameeq
  • cmd.exe corpus 122 (elastic 93, splunk 29)
field:"process_basename" kind:eq value:"cmd.exe"

ESXi VM Discovery

#
Status
production
Severity
medium
Group by
command, dest, user
Author
Raven Tait, Splunk
Source
github.com/splunk/security_content

This detection identifies the use of ESXCLI commands to discover virtual machines on an ESXi host While used by administrators, this activity may also indicate adversary reconnaissance aimed at identifying high value targets, mapping the virtual environment, or preparing for data theft or destructive operations.

Known False Positives

  • Administrators may use this command when troubleshooting. Tune as needed.

MITRE ATT&CK Coverage

TacticTechniques
Discovery

Rule Body

name: ESXi VM Discovery
id: 5643cdc9-a0be-4123-860b-f13da0bf4fcb
version: 5
creation_date: '2025-07-11'
modification_date: '2026-05-13'
author: Raven Tait, Splunk
status: production
type: TTP
description: This detection identifies the use of ESXCLI commands to discover virtual machines on an ESXi host While used by administrators, this activity may also indicate adversary reconnaissance aimed at identifying high value targets, mapping the virtual environment, or preparing for data theft or destructive operations.
data_source:
    - VMWare ESXi Syslog
search: '`esxi_syslog` Message="*esxcli vm process*" Message="*list*" | rex field=_raw "\]: \[(?<user>\w+)\]:(?<command>.+)" | rex field=_raw "Z (?<dest>[\w\.]+)\s" | stats min(_time) as firstTime max(_time) as lastTime count by dest user command | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `esxi_vm_discovery_filter`'
how_to_implement: This is based on syslog data generated by VMware ESXi hosts. To implement this search, you must configure your ESXi systems to forward syslog output to your Splunk deployment. These logs must be ingested with the appropriate Splunk Technology Add-on for VMware ESXi Logs, which provides field extractions and CIM compatibility.
known_false_positives: Administrators may use this command when troubleshooting. Tune as needed.
finding:
    title: VM discovery commands executed on ESXi host $dest$ by $user$.
    entity:
        field: user
        type: user
        score: 50
intermediate_findings:
    entities:
        - field: dest
          type: system
          score: 50
          message: VM discovery commands executed on ESXi host $dest$ by $user$.
analytic_story:
    - ESXi Post Compromise
    - Black Basta Ransomware
    - China-Nexus Threat Activity
asset_type: Infrastructure
mitre_attack_id:
    - T1673
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: application
security_domain: endpoint

Stages and Predicates

Stage 1: search

`esxi_syslog` Message="*esxcli vm process*" Message="*list*"

Stage 2: rex

| rex field=_raw "\]: \[(?<user>\w+)\]:(?<command>.+)"

Stage 3: rex

| rex field=_raw "Z (?<dest>[\w\.]+)\s"

Stage 4: stats

| stats min(_time) as firstTime max(_time) as lastTime count by dest user command

Stage 5: search

| `security_content_ctime(firstTime)`

Stage 6: search

| `security_content_ctime(lastTime)`

Stage 7: search

| `esxi_vm_discovery_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Messageeq
  • *esxcli vm process*
  • *list*
field:"Message" kind:eq
sourcetypein
  • vmw-syslog corpus 23 (splunk 23)
  • vmware:esxlog* corpus 23 (splunk 23)
field:"sourcetype" kind:in

File_Folder Hidden - Windows (Sysmon)

#
Group by
_time, host
Source
github.com/anvilogic-forge/armory

This use case detects commands setting the hidden attribute to files or folders on Windows systems. This technique is used by threat actors to evade detection and conceal malicious files from regular view

MITRE ATT&CK Coverage

References

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 1: Process creation

Rule Body

id: '17782.29992'
title: File_Folder Hidden - Windows
description: 'This use case detects commands setting the hidden attribute to files
  or folders on Windows systems. This technique is used by threat actors to evade
  detection and conceal malicious files from regular view. Atomics T1222.001 Test
  #4'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<")
  (TERM(attrib) OR TERM(attrib.exe)) "+h" | regex process="(?i)\s\+h\s+" | table _time,
  host, user parent_*, process, process_* | bin span=1s | stats values(*) as * by
  _time, host '
techniques:
- defense-evasion:file and directory permissions modification:windows file and directory
  permissions modification
technique_id:
- T1222.001
data_category:
- Windows Sysmon
references:
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1222.001/T1222.001.md#atomic-test-4---attrib---hide-file

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<") (TERM(attrib) OR TERM(attrib.exe)) "+h"

Stage 2: regex

| regex process="(?i)\s\+h\s+"

Stage 3: table

| table _time, host, user parent_*, process, process_*

Stage 4: bucket

| bin span=1s

Stage 5: stats

| stats values(*) as * by _time, host

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 1 corpus 226 (splunk 226)
field:"EventID" kind:eq value:"1"
processregex_match
  • (?i)\s+h\s+ corpus 3 (splunk 3)
field:"CommandLine" kind:regex_match value:"(?i)\s+h\s+"

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"<EventID>1<"
1attrib
1attrib.exe
1"+h"

GetCurrent User with PowerShell Script Block

#
Status
production
Group by
Guid, Name, Opcode, Path, ScriptBlockId, ScriptBlockText, dest, process_id, signature, signature_id, user_id, vendor_product
Author
Mauricio Velazco, Splunk
Source
github.com/splunk/security_content

The following analytic detects the execution of the GetCurrent method from the WindowsIdentity .NET class using PowerShell Script Block Logging (EventCode=4104). This method identifies the current Windows user. The detection leverages PowerShell script block logs to identify when this method is called. This activity is significant because adversaries and Red Teams may use it to gain situational awareness and perform Active Directory discovery on compromised endpoints. If confirmed malicious, this could allow attackers to map out user accounts and potentially escalate privileges or move laterally within the network.

Known False Positives

  • Administrators or power users may use this PowerShell commandlet for troubleshooting.

MITRE ATT&CK Coverage

TacticTechniques
Discovery

Telemetry Coverage

Rule Body

name: GetCurrent User with PowerShell Script Block
id: 80879283-c30f-44f7-8471-d1381f6d437a
version: 10
creation_date: '2021-08-24'
modification_date: '2026-05-13'
author: Mauricio Velazco, Splunk
status: production
type: Hunting
description: The following analytic detects the execution of the `GetCurrent` method from the WindowsIdentity .NET class using PowerShell Script Block Logging (EventCode=4104). This method identifies the current Windows user. The detection leverages PowerShell script block logs to identify when this method is called. This activity is significant because adversaries and Red Teams may use it to gain situational awareness and perform Active Directory discovery on compromised endpoints. If confirmed malicious, this could allow attackers to map out user accounts and potentially escalate privileges or move laterally within the network.
data_source:
    - Powershell Script Block Logging 4104
search: |-
    `powershell` EventCode=4104 ScriptBlockText = "*[System.Security.Principal.WindowsIdentity]*"  ScriptBlockText = "*GetCurrent()*"
      | fillnull
      | stats count min(_time) as firstTime max(_time) as lastTime
        BY dest signature signature_id
           user_id vendor_product EventID
           Guid Opcode Name
           Path ProcessID ScriptBlockId
           ScriptBlockText
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `getcurrent_user_with_powershell_script_block_filter`
how_to_implement: To successfully implement this analytic, you will need to enable PowerShell Script Block Logging on some or all endpoints. Additional setup here https://help.splunk.com/en/security-offerings/splunk-user-behavior-analytics/get-data-in/5.4.1/add-other-data-to-splunk-uba/configure-powershell-logging-to-see-powershell-anomalies-in-splunk-uba.
known_false_positives: Administrators or power users may use this PowerShell commandlet for troubleshooting.
references:
    - https://attack.mitre.org/techniques/T1033/
    - https://docs.microsoft.com/en-us/dotnet/api/system.security.principal.windowsidentity.getcurrent?view=net-6.0&viewFallbackFrom=net-5.0
analytic_story:
    - Active Directory Discovery
asset_type: Endpoint
mitre_attack_id:
    - T1033
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`powershell` EventCode=4104 ScriptBlockText = "*[System.Security.Principal.WindowsIdentity]*"
    ScriptBlockText = "*GetCurrent()*"

Stage 2: fillnull

| fillnull

Stage 3: stats

| stats count min(_time) as firstTime max(_time) as lastTime
    BY dest signature signature_id
       user_id vendor_product EventID
       Guid Opcode Name
       Path ProcessID ScriptBlockId
       ScriptBlockText

Stage 4: search

| `security_content_ctime(firstTime)`

Stage 5: search

| `security_content_ctime(lastTime)`

Stage 6: search

| `getcurrent_user_with_powershell_script_block_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 4104 corpus 269 (splunk 269)
field:"EventID" kind:eq value:"4104"
ScriptBlockTexteq
  • *GetCurrent()*
  • *[System.Security.Principal.WindowsIdentity]*
field:"ScriptBlockText" kind:eq

High Number of Login Failures from a single source

#
Status
production
Severity
low
Group by
_time, src_ip
Author
Bhavin Patel, Mauricio Velazco, Splunk
Source
github.com/splunk/security_content

The following analytic detects multiple failed login attempts in Office365 Azure Active Directory from a single source IP address. It leverages Office365 management activity logs, specifically AzureActiveDirectoryStsLogon records, aggregating these logs in 5-minute intervals to count failed login attempts. This activity is significant as it may indicate brute-force attacks or password spraying, which are critical to monitor. If confirmed malicious, an attacker could gain unauthorized access to Office365 accounts, leading to potential data breaches, lateral movement within the organization, or further malicious activities using the compromised account.

Known False Positives

  • An Ip address with more than 10 failed authentication attempts in the span of 5 minutes may also be triggered by a broken application.

MITRE ATT&CK Coverage

TacticTechniques
Credential Access

Telemetry Coverage

PlatformRecord / event type
Microsoft 365UserLoginFailed

Rules Detecting the Same Action

These rules filter on the same operation.

Rule Body

name: High Number of Login Failures from a single source
id: 7f398cfb-918d-41f4-8db8-2e2474e02222
version: 12
creation_date: '2020-12-16'
modification_date: '2026-05-13'
author: Bhavin Patel, Mauricio Velazco, Splunk
status: production
type: Anomaly
description: The following analytic detects multiple failed login attempts in Office365 Azure Active Directory from a single source IP address. It leverages Office365 management activity logs, specifically AzureActiveDirectoryStsLogon records, aggregating these logs in 5-minute intervals to count failed login attempts. This activity is significant as it may indicate brute-force attacks or password spraying, which are critical to monitor. If confirmed malicious, an attacker could gain unauthorized access to Office365 accounts, leading to potential data breaches, lateral movement within the organization, or further malicious activities using the compromised account.
data_source:
    - O365 UserLoginFailed
search: |-
    `o365_management_activity` Workload=AzureActiveDirectory Operation=UserLoginFailed record_type=AzureActiveDirectoryStsLogon
      | bucket span=5m _time
      | stats dc(_raw) AS failed_attempts values(user) as user values(LogonError) as LogonError values(signature) as signature values(UserAgent) as UserAgent values(dest) as dest values(vendor_account) as vendor_account values(vendor_product) as vendor_product
        BY _time, src_ip
      | where failed_attempts > 10
      | `high_number_of_login_failures_from_a_single_source_filter`
how_to_implement: You must install the Splunk Microsoft Office 365 Add-on and ingest Office 365 management activity events. Adjust the threshold value to suit the specific environment, as environments with naturally higher login failures might generate false positives at a lower threshold.
known_false_positives: An Ip address with more than 10 failed authentication attempts in the span of 5 minutes may also be triggered by a broken application.
references:
    - https://attack.mitre.org/techniques/T1110/001/
    - https://docs.microsoft.com/en-us/security/compass/incident-response-playbook-password-spray
    - https://www.cisa.gov/uscert/ncas/alerts/aa21-008a
    - https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes
intermediate_findings:
    entities:
        - field: user
          type: user
          score: 20
          message: Ip address $src_ip$ failed to authenticate more than 10 times in a 5 minute
threat_objects:
    - field: src_ip
      type: ip_address
analytic_story:
    - Office 365 Account Takeover
asset_type: O365 Tenant
mitre_attack_id:
    - T1110.001
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: cloud
security_domain: threat

Stages and Predicates

Stage 1: search

`o365_management_activity` Workload=AzureActiveDirectory Operation=UserLoginFailed
    record_type=AzureActiveDirectoryStsLogon

Stage 2: bucket

| bucket span=5m _time

Stage 3: stats

| stats
    dc(_raw) AS failed_attempts
    values(user) as user
    values(LogonError) as LogonError
    values(signature) as signature
    values(UserAgent) as UserAgent
    values(dest) as dest
    values(vendor_account) as vendor_account
    values(vendor_product) as vendor_product
  BY _time, src_ip

Stage 4: where

| where failed_attempts > 10

Stage 5: search

| `high_number_of_login_failures_from_a_single_source_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Operationeq
  • UserLoginFailed corpus 7 (splunk 7)
field:"Operation" kind:eq value:"UserLoginFailed"
Workloadeq
  • AzureActiveDirectory corpus 30 (splunk 30)
field:"Workload" kind:eq value:"AzureActiveDirectory"
failed_attemptsgt
  • 10 corpus 2 (splunk 2)
field:"failed_attempts" kind:gt value:"10"
record_typeeq
  • AzureActiveDirectoryStsLogon corpus 2 (splunk 2)
field:"record_type" kind:eq value:"AzureActiveDirectoryStsLogon"
sourcetypeeq
  • o365:management:activity corpus 80 (splunk 80)
field:"sourcetype" kind:eq value:"o365:management:activity"

Modify Windows Defender (Sysmon)

#
Group by
_time, host
Source
github.com/anvilogic-forge/armory

Adversaries may modify security tools to avoid possible detection of their tools and activities. This use case looks for abnormalities commonly associated with a large number of modifications to windows defender in a short period of time

MITRE ATT&CK Coverage

TacticTechniques
Defense Impairment

References

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 1: Process creation

Rule Body

id: '5996.11036'
title: Modify Windows Defender
description: 'Adversaries may modify security tools to avoid possible detection of
  their tools and activities. This use case looks for abnormalities commonly associated
  with a large number of modifications to windows defender in a short period of time.
  -- Threat Actor Association: BlackByte, Lazarus, Magic Hound (aka APT35, Charming
  Kitten, Phosphorus, and Mint Sandstorm), Memento Team, Muddled Libra, REvil, Vice
  Society - Software Association: Akira, BianLian, Black Basta, Lockbit, Snake, Vice
  Society, XingLocker, Zloader'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "EventID>1<")
  (TERM(Set-MpPreference) OR TERM(Add-MpPreference)) | table _time, host, user process,
  process_*, singature_id, parent_* | bin span=60s | stats values(*) as * by _time,
  host | eventstats dc(process) as dc_process by host, _time | where dc_process >=
  1 '
techniques:
- defense-evasion:impair defenses:disable or modify tools
technique_id:
- T1562.001
data_category:
- Windows Sysmon
- Process command-line parameters
references:
- https://unit42.paloaltonetworks.com/unit42-gorgon-group-slithering-nation-state-cybercrime/

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "EventID>1<") (TERM(Set-MpPreference) OR TERM(Add-MpPreference))

Stage 2: table

| table _time, host, user process, process_*, singature_id, parent_*

Stage 3: bucket

| bin span=60s

Stage 4: stats

| stats values(*) as * by _time, host

Stage 5: eventstats

| eventstats dc(process) as dc_process by host, _time

Stage 6: where

| where dc_process >= 1

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 1 corpus 226 (splunk 226)
field:"EventID" kind:eq value:"1"
dc_processge
  • 1 corpus 2 (splunk 2)
field:"dc_process" kind:ge value:"1"

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"EventID>1<"
1"Set-MpPreference"
1"Add-MpPreference"

Powershell Enable SMB1Protocol Feature

#
Status
production
Severity
medium
Group by
Guid, Name, Opcode, Path, ScriptBlockId, ScriptBlockText, dest, process_id, signature, signature_id, user_id, vendor_product
Author
Teoderick Contreras, Splunk
Source
github.com/splunk/security_content

The following analytic detects the enabling of the SMB1 protocol via powershell.exe. It leverages PowerShell script block logging (EventCode 4104) to identify the execution of the Enable-WindowsOptionalFeature cmdlet with the SMB1Protocol parameter. This activity is significant because enabling SMB1 can facilitate lateral movement and file encryption by ransomware, such as RedDot. If confirmed malicious, this action could allow an attacker to propagate through the network, encrypt files, and potentially disrupt business operations.

Known False Positives

  • network operator may enable or disable this windows feature.

MITRE ATT&CK Coverage

Telemetry Coverage

Rule Body

name: Powershell Enable SMB1Protocol Feature
id: afed80b2-d34b-11eb-a952-acde48001122
version: 12
creation_date: '2021-06-23'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: TTP
description: The following analytic detects the enabling of the SMB1 protocol via `powershell.exe`. It leverages PowerShell script block logging (EventCode 4104) to identify the execution of the `Enable-WindowsOptionalFeature` cmdlet with the `SMB1Protocol` parameter. This activity is significant because enabling SMB1 can facilitate lateral movement and file encryption by ransomware, such as RedDot. If confirmed malicious, this action could allow an attacker to propagate through the network, encrypt files, and potentially disrupt business operations.
data_source:
    - Powershell Script Block Logging 4104
search: |-
    `powershell` EventCode=4104 ScriptBlockText = "*Enable-WindowsOptionalFeature*" ScriptBlockText = "*SMB1Protocol*"
      | fillnull
      | stats count min(_time) as firstTime max(_time) as lastTime
        BY dest signature signature_id
           user_id vendor_product EventID
           Guid Opcode Name
           Path ProcessID ScriptBlockId
           ScriptBlockText
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `powershell_enable_smb1protocol_feature_filter`
how_to_implement: To successfully implement this search, you need to be ingesting logs with the powershell logs  from your endpoints. make sure you enable needed registry to monitor this event.
known_false_positives: network operator may enable or disable this windows feature.
references:
    - https://app.any.run/tasks/c0f98850-af65-4352-9746-fbebadee4f05/
    - https://www.splunk.com/en_us/blog/security/hunting-for-malicious-powershell-using-script-block-logging.html
finding:
    title: Powershell Enable SMB1Protocol Feature on $dest$
    entity:
        field: dest
        type: system
        score: 50
analytic_story:
    - Ransomware
    - Malicious PowerShell
    - Hermetic Wiper
    - Data Destruction
asset_type: Endpoint
mitre_attack_id:
    - T1027.005
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`powershell` EventCode=4104 ScriptBlockText = "*Enable-WindowsOptionalFeature*"
    ScriptBlockText = "*SMB1Protocol*"

Stage 2: fillnull

| fillnull

Stage 3: stats

| stats count min(_time) as firstTime max(_time) as lastTime
    BY dest signature signature_id
       user_id vendor_product EventID
       Guid Opcode Name
       Path ProcessID ScriptBlockId
       ScriptBlockText

Stage 4: search

| `security_content_ctime(firstTime)`

Stage 5: search

| `security_content_ctime(lastTime)`

Stage 6: search

| `powershell_enable_smb1protocol_feature_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 4104 corpus 269 (splunk 269)
field:"EventID" kind:eq value:"4104"
ScriptBlockTexteq
  • *Enable-WindowsOptionalFeature* corpus 3 (sigma 2, splunk 1)
  • *SMB1Protocol* corpus 2 (sigma 1, splunk 1)
field:"ScriptBlockText" kind:eq

Supernova Webshell

#
Status
experimental
Severity
medium
Group by
Web.src, Web.user, Web.vendor_product, _time, c-uri, c-useragent, cs-host
Author
John Stoner, Splunk
Source
github.com/splunk/security_content

The following analytic detects the presence of the Supernova webshell, used in the SUNBURST attack, by identifying specific patterns in web URLs. The detection leverages Splunk to search for URLs containing "logoimagehandler.ashxcodes*", "logoimagehandler.ashxclazz*", "logoimagehandler.ashxmethod*", and "logoimagehandler.ashxargs*". This activity is significant as it indicates potential unauthorized access and arbitrary code execution on a compromised system. If confirmed malicious, this could lead to data theft, ransomware deployment, or other severe outcomes. Immediate steps include reviewing the web URLs, inspecting on-disk artifacts, and analyzing concurrent processes and network connections.

Known False Positives

  • There might be false positives associted with this detection since items like args as a web argument is pretty generic.

MITRE ATT&CK Coverage

Rule Body

name: Supernova Webshell
id: 2ec08a09-9ff1-4dac-b59f-1efd57972ec1
version: 10
creation_date: '2021-01-06'
modification_date: '2026-05-13'
author: John Stoner, Splunk
status: experimental
type: TTP
description: The following analytic detects the presence of the Supernova webshell, used in the SUNBURST attack, by identifying specific patterns in web URLs. The detection leverages Splunk to search for URLs containing "*logoimagehandler.ashx*codes*", "*logoimagehandler.ashx*clazz*", "*logoimagehandler.ashx*method*", and "*logoimagehandler.ashx*args*". This activity is significant as it indicates potential unauthorized access and arbitrary code execution on a compromised system. If confirmed malicious, this could lead to data theft, ransomware deployment, or other severe outcomes. Immediate steps include reviewing the web URLs, inspecting on-disk artifacts, and analyzing concurrent processes and network connections.
data_source: []
search: |-
    | tstats `security_content_summariesonly` count FROM datamodel=Web.Web
      WHERE web.url=*logoimagehandler.ashx*codes*
        OR
        Web.url=*logoimagehandler.ashx*clazz*
        OR
        Web.url=*logoimagehandler.ashx*method*
        OR
        Web.url=*logoimagehandler.ashx*args*
      BY Web.src Web.dest Web.url
         Web.vendor_product Web.user Web.http_user_agent
         _time span=1s
    | `supernova_webshell_filter`
how_to_implement: To successfully implement this search, you need to be monitoring web traffic to your Solarwinds Orion. The logs should be ingested into splunk and populating/mapped to the Web data model.
known_false_positives: There might be false positives associted with this detection since items like args as a web argument is pretty generic.
references:
    - https://www.splunk.com/en_us/blog/security/detecting-supernova-malware-solarwinds-continued.html
    - https://www.guidepointsecurity.com/blog/supernova-solarwinds-net-webshell-analysis/
finding:
    title: Potential Supernova Webshell on $dest$
    entity:
        field: user
        type: user
        score: 50
intermediate_findings:
    entities:
        - field: dest
          type: system
          score: 50
          message: Potential Supernova Webshell on $dest$
analytic_story:
    - NOBELIUM Group
    - Earth Alux
    - GhostRedirector IIS Module and Rungan Backdoor
asset_type: Web Server
mitre_attack_id:
    - T1505.003
    - T1133
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: web
security_domain: network

Stages and Predicates

Stage 1: tstats

| tstats `security_content_summariesonly` count FROM datamodel=Web.Web
  WHERE web.url=*logoimagehandler.ashx*codes*
    OR
    Web.url=*logoimagehandler.ashx*clazz*
    OR
    Web.url=*logoimagehandler.ashx*method*
    OR
    Web.url=*logoimagehandler.ashx*args*
  BY Web.src Web.dest Web.url
     Web.vendor_product Web.user Web.http_user_agent
     _time span=1s

Stage 2: search

| `supernova_webshell_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Web.urleq
  • *logoimagehandler.ashx*args*
  • *logoimagehandler.ashx*clazz*
  • *logoimagehandler.ashx*method*
field:"c-uri" kind:eq
web.urleq
  • *logoimagehandler.ashx*codes*
field:"web.url" kind:eq value:"*logoimagehandler.ashx*codes*"

Visio.exe File Download (Sysmon)

#
Group by
_time, host
Source
github.com/anvilogic-forge/armory

Visio.exe is a diagramming and vector graphics application developed by Microsoft, used for creating flowcharts, organizational charts, and other visual representations of information. Threat actors can abuse visio.exe to download files. This use case detects executions of visio.exe followed by URLs in the command line

MITRE ATT&CK Coverage

TacticTechniques
Command & Control

References

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 1: Process creation

Rule Body

id: '33361.59029'
title: Visio.exe File Download
description: Visio.exe is a diagramming and vector graphics application developed
  by Microsoft, used for creating flowcharts, organizational charts, and other visual
  representations of information. Threat actors can abuse visio.exe to download files.
  This use case detects executions of visio.exe followed by URLs in the command line.
  Living Off the Land Binary and Scripts (LOLBAS) (LOLBIN)
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<")
  TERM(visio) | regex process="(?i)visio(\.exe(\"|\'')?)?\s+(\"|\'')?[A-Za-z0-9]{2,6}:\/\/[^\s]+"
  | table _time, host, user, process, process_*, parent_*, signature_id | bin span=1s
  | stats values(*) as * by _time, host '
techniques:
- command-and-control:ingress tool transfer
technique_id: 
- T1105
data_category:
- Windows Sysmon
- Process command-line parameters
references:
- https://attack.mitre.org/techniques/T1105/
- https://lolbas-project.github.io/lolbas/OtherMSBinaries/Visio/

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<") TERM(visio)

Stage 2: regex

| regex process="(?i)visio(\.exe(\"|\')?)?\s+(\"|\')?[A-Za-z0-9]{2,6}:\/\/[^\s]+"

Stage 3: table

| table _time, host, user, process, process_*, parent_*, signature_id

Stage 4: bucket

| bin span=1s

Stage 5: stats

| stats values(*) as * by _time, host

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 1 corpus 226 (splunk 226)
field:"EventID" kind:eq value:"1"
processregex_match
  • (?i)visio(.exe("|\')?)?\s+("|\')?[A-Za-z0-9]{2,6}:\/\/[^\s]+ corpus 3 (splunk 3)
field:"CommandLine" kind:regex_match

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"<EventID>1<"
1visio

Windows Computer Account With SPN

#
Status
production
Severity
medium
Group by
LogonId, dest, subject
Author
Michael Haag, Splunk
Source
github.com/splunk/security_content

The following analytic detects the addition of Service Principal Names (SPNs) HOST and RestrictedKrbHost to a computer account, indicative of KrbRelayUp behavior. This detection leverages Windows Security Event Logs, specifically EventCode 4741, to identify changes in SPNs. This activity is significant as it is commonly associated with Kerberos-based attacks, which can be used to escalate privileges or perform lateral movement within a network. If confirmed malicious, this behavior could allow an attacker to impersonate services, potentially leading to unauthorized access to sensitive resources.

Known False Positives

  • It is possible third party applications may add these SPNs to Computer Accounts, filtering may be needed.

MITRE ATT&CK Coverage

TacticTechniques
Credential Access

Telemetry Coverage

Rule Body

name: Windows Computer Account With SPN
id: 9a3e57e7-33f4-470e-b25d-165baa6e8357
version: 11
creation_date: '2022-04-28'
modification_date: '2026-05-13'
author: Michael Haag, Splunk
status: production
type: TTP
description: The following analytic detects the addition of Service Principal Names (SPNs) HOST and RestrictedKrbHost to a computer account, indicative of KrbRelayUp behavior. This detection leverages Windows Security Event Logs, specifically EventCode 4741, to identify changes in SPNs. This activity is significant as it is commonly associated with Kerberos-based attacks, which can be used to escalate privileges or perform lateral movement within a network. If confirmed malicious, this behavior could allow an attacker to impersonate services, potentially leading to unauthorized access to sensitive resources.
data_source:
    - Windows Event Log Security 4741
search: |-
    `wineventlog_security` EventCode=4741 NewUacValue="0x80" ServicePrincipalNames IN ("*HOST/*","*RestrictedKrbHost/*")
      | stats count min(_time) as firstTime max(_time) as lastTime values(EventCode),values(TargetDomainName),values(PrimaryGroupId), values(OldUacValue), values(NewUacValue),values(SamAccountName),values(DnsHostName),values(ServicePrincipalNames)
        BY dest Logon_ID subject
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `windows_computer_account_with_spn_filter`
how_to_implement: To successfully implement this search, you need to be ingesting Windows Security Event Logs with 4741 EventCode enabled. The Windows TA is also required.
known_false_positives: It is possible third party applications may add these SPNs to Computer Accounts, filtering may be needed.
references:
    - https://www.trustedsec.com/blog/an-attack-path-mapping-approach-to-cves-2021-42287-and-2021-42278
    - https://github.com/Dec0ne/KrbRelayUp
finding:
    title: A Computer Account was created with SPNs related to Kerberos on $dest$, possibly indicative of Kerberos relay attack.
    entity:
        field: dest
        type: system
        score: 50
analytic_story:
    - Local Privilege Escalation With KrbRelayUp
    - Active Directory Kerberos Attacks
    - Compromised Windows Host
asset_type: Endpoint
mitre_attack_id:
    - T1558
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`wineventlog_security` EventCode=4741 NewUacValue="0x80" ServicePrincipalNames IN (
    "*HOST/*",
    "*RestrictedKrbHost/*"
)

Stage 2: stats

| stats
    count
    min(_time) as firstTime
    max(_time) as lastTime
    values(EventCode),
    values(TargetDomainName),
    values(PrimaryGroupId),
    values(OldUacValue),
    values(NewUacValue),
    values(SamAccountName),
    values(DnsHostName),
    values(ServicePrincipalNames)
  BY dest Logon_ID subject

Stage 3: search

| `security_content_ctime(firstTime)`

Stage 4: search

| `security_content_ctime(lastTime)`

Stage 5: search

| `windows_computer_account_with_spn_filter`

Indicators

These rows show field, operator, and value matches.

Windows Credential Dumping LSASS Memory Createdump

#
Status
production
Severity
medium
Group by
IntegrityLevel, command_line, computer_name, event_action, original_file_name, parent_command_line, parent_process_basename, parent_process_guid, parent_process_id, parent_process_name, process_basename, process_guid, process_hash, process_id, process_name, user, user_id, vendor_product
Author
Michael Haag, Splunk
Source
github.com/splunk/security_content

The following analytic detects the use of CreateDump.exe to perform a process dump. This binary is not native to Windows and is often introduced by third-party applications, including PowerShell 7. The detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process names, GUIDs, and complete command-line executions. This activity is significant as it may indicate an attempt to dump LSASS memory, which can be used to extract credentials. If confirmed malicious, this could lead to unauthorized access and lateral movement within the network.

Known False Positives

  • False positives may be present if an application is dumping processes, filter as needed. Recommend reviewing createdump.exe usage across the fleet to better understand all usage and by what.

MITRE ATT&CK Coverage

TacticTechniques
Credential Access

Telemetry Coverage

Rule Body

name: Windows Credential Dumping LSASS Memory Createdump
id: b3b7ce35-fce5-4c73-85f4-700aeada81a9
version: 14
creation_date: '2022-06-17'
modification_date: '2026-05-13'
author: Michael Haag, Splunk
status: production
type: TTP
description: The following analytic detects the use of CreateDump.exe to perform a process dump. This binary is not native to Windows and is often introduced by third-party applications, including PowerShell 7. The detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process names, GUIDs, and complete command-line executions. This activity is significant as it may indicate an attempt to dump LSASS memory, which can be used to extract credentials. If confirmed malicious, this could lead to unauthorized access 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=createdump.exe
        OR
        Processes.original_file_name="FX_VER_INTERNALNAME_STR" Processes.process="*-u *"
        AND
        Processes.process="*-f *"
      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_credential_dumping_lsass_memory_createdump_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 may be present if an application is dumping processes, filter as needed. Recommend reviewing createdump.exe usage across the fleet to better understand all usage and by what.
references:
    - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1003.001/T1003.001.md#atomic-test-11---dump-lsass-with-createdumpexe-from-net-v5
finding:
    title: An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ by user $user$ attempting to dump a process.
    entity:
        field: user
        type: user
        score: 50
intermediate_findings:
    entities:
        - field: dest
          type: system
          score: 50
          message: An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ by user $user$ attempting to dump a process.
threat_objects:
    - field: parent_process_name
      type: parent_process_name
    - field: process_name
      type: process_name
analytic_story:
    - Compromised Windows Host
    - Credential Dumping
    - 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: tstats

| tstats `security_content_summariesonly`
    count
    min(_time) as firstTime
    max(_time) as lastTime
  FROM datamodel=Endpoint.Processes
  WHERE Processes.process_name=createdump.exe
    OR
    Processes.original_file_name="FX_VER_INTERNALNAME_STR" Processes.process="*-u *"
    AND
    Processes.process="*-f *"
  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_credential_dumping_lsass_memory_createdump_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Processes.original_file_nameeq
  • FX_VER_INTERNALNAME_STR corpus 3 (sigma 2, splunk 1)
field:"OriginalFileName" kind:eq value:"FX_VER_INTERNALNAME_STR"
Processes.processeq
  • *-f * corpus 3 (splunk 2, sigma 1)
  • *-u * corpus 5 (sigma 4, splunk 1)
field:"CommandLine" kind:eq
Processes.process_nameeq
  • createdump.exe corpus 2 (elastic 1, splunk 1)
field:"process_basename" kind:eq value:"createdump.exe"

Windows DLL Module Loaded in Temp Dir

#
Status
production
Group by
dest, image_loaded, original_file_name, process_guid, process_hash, process_id, process_name, service_dll_signature_exists, service_dll_signature_verified, signature, signature_id, user_id, vendor_product
Author
Teoderick Contreras, Splunk
Source
github.com/splunk/security_content

The following analytic detects instances where a Dynamic Link Library (DLL) is loaded from a temporary directory on a Windows system. Loading DLLs from non-standard paths such as %TEMP% is uncommon for legitimate applications and is often associated with adversary tradecraft, including DLL search order hijacking, side-loading, or execution of malicious payloads staged in temporary folders. Adversaries frequently leverage these directories because they are writable by standard users and often overlooked by security controls, making them convenient locations to drop and execute malicious files. This behavior may indicate attempts to evade detection, execute unauthorized code, or maintain persistence through hijacked execution flows. Detection of DLL loads from %TEMP% can help surface early signs of compromise and should be investigated in the context of the originating process, user account, and potential file creation or modification activity within the same directory.

Known False Positives

  • No false positives have been identified at this time.

MITRE ATT&CK Coverage

TacticTechniques
Command & Control

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 7: Image loaded

Rule Body

name: Windows DLL Module Loaded in Temp Dir
id: c2998141-235a-4e31-83cf-46afb5208a87
version: 5
creation_date: '2025-08-21'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: Hunting
description: The following analytic detects instances where a Dynamic Link Library (DLL) is loaded from a temporary directory on a Windows system. Loading DLLs from non-standard paths such as %TEMP% is uncommon for legitimate applications and is often associated with adversary tradecraft, including DLL search order hijacking, side-loading, or execution of malicious payloads staged in temporary folders. Adversaries frequently leverage these directories because they are writable by standard users and often overlooked by security controls, making them convenient locations to drop and execute malicious files. This behavior may indicate attempts to evade detection, execute unauthorized code, or maintain persistence through hijacked execution flows. Detection of DLL loads from %TEMP% can help surface early signs of compromise and should be investigated in the context of the originating process, user account, and potential file creation or modification activity within the same directory.
data_source:
    - Sysmon EventID 7
search: '`sysmon` EventCode=7 NOT (ImageLoaded IN("C:\\Program Files*")) AND ImageLoaded="*\\temp\\*" AND ImageLoaded="*.dll" | fillnull | stats count min(_time) as firstTime max(_time) as lastTime by Image ImageLoaded dest loaded_file loaded_file_path original_file_name process_exec process_guid process_hash process_id process_name process_path service_dll_signature_exists service_dll_signature_verified signature signature_id user_id vendor_product | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_dll_module_loaded_in_temp_dir_filter`'
how_to_implement: To successfully implement this search, you need to be ingesting logs with the process name and imageloaded 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: No false positives have been identified at this time.
references:
    - https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-203a
    - https://blog.sekoia.io/interlock-ransomware-evolving-under-the-radar/
analytic_story:
    - SolarWinds WHD RCE Post Exploitation
    - Interlock Rat
    - Lokibot
asset_type: Endpoint
mitre_attack_id:
    - T1105
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`sysmon` EventCode=7 NOT (ImageLoaded IN("C:\\Program Files*")) AND ImageLoaded="*\\temp\\*"
    AND ImageLoaded="*.dll"

Stage 2: fillnull

| fillnull

Stage 3: stats

| stats
    count
    min(_time) as firstTime
    max(_time) as lastTime
  by
    Image
    ImageLoaded
    dest
    loaded_file
    loaded_file_path
    original_file_name
    process_exec
    process_guid
    process_hash
    process_id
    process_name
    process_path
    service_dll_signature_exists
    service_dll_signature_verified
    signature
    signature_id
    user_id
    vendor_product

Stage 4: search

| `security_content_ctime(firstTime)`

Stage 5: search

| `security_content_ctime(lastTime)`

Stage 6: search

| `windows_dll_module_loaded_in_temp_dir_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 7 corpus 39 (splunk 39)
field:"EventID" kind:eq value:"7"
ImageLoadedeq
  • *.dll corpus 6 (sigma 3, splunk 3)
  • *\temp\* corpus 3 (sigma 2, splunk 1)
field:"ImageLoaded" kind:eq

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
ImageLoadedeqC:\Program Files*excludes:ImageLoaded field:"ImageLoaded" value:"C:\Program Files*"

Windows File Without Extension In Critical Folder

#
Status
production
Severity
low
Group by
CreationUtcTime, computer_name, event_action, file_access_time, file_acl, file_hash, file_modify_time, file_name, file_size, process_guid, process_id, target_filename, user, vendor_product
Author
Teoderick Contreras, Bhavin Patel, Splunk
Source
github.com/splunk/security_content

This analytic detects the creation of files without extensions in critical Windows system and driver-related directories, including but not limited to System32\Drivers, and other known Windows driver storage and loading paths. The analytic leverages telemetry from the Endpoint.Filesystem data model, with a focus on file creation events and file path analysis. File creation activity in these directories—particularly involving extensionless files—is highly suspicious, as it may indicate the presence of destructive or stealthy malware. This behavior is consistent with malware families such as HermeticWiper, which deploy kernel driver components into trusted Windows driver directories to obtain low-level access and execute destructive payloads. If confirmed malicious, this activity can result in severe system compromise, including the deployment of malicious drivers, boot-sector or filesystem destruction, and ultimately system inoperability and irreversible data loss.

Known False Positives

  • If you are leveraging Sysmon, you may see false positives related to folder creation, since Event ID 11 does not contain enough information to determine if the file is a File or a Directory. Filter out those entries when leveraging this analytic.

MITRE ATT&CK Coverage

TacticTechniques
Impact

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 11: FileCreate

Rule Body

name: Windows File Without Extension In Critical Folder
id: 0dbcac64-963c-11ec-bf04-acde48001122
version: 13
creation_date: '2022-02-25'
modification_date: '2026-07-27'
author: Teoderick Contreras, Bhavin Patel, Splunk
status: production
type: Anomaly
description: |-
    This analytic detects the creation of files without extensions in critical Windows system and driver-related directories, including but not limited to System32\Drivers, and other known Windows driver storage and loading paths.
    The analytic leverages telemetry from the Endpoint.Filesystem data model, with a focus on file creation events and file path analysis.
    File creation activity in these directories—particularly involving extensionless files—is highly suspicious, as it may indicate the presence of destructive or stealthy malware.
    This behavior is consistent with malware families such as HermeticWiper, which deploy kernel driver components into trusted Windows driver directories to obtain low-level access and execute destructive payloads.
    If confirmed malicious, this activity can result in severe system compromise, including the deployment of malicious drivers, boot-sector or filesystem destruction, and ultimately system inoperability and irreversible data loss.
data_source:
    - Sysmon EventID 11
search: |
    | tstats `security_content_summariesonly`
      count FROM datamodel=Endpoint.Filesystem where

    Filesystem.action IN ("created", "modified")
    Filesystem.file_path IN(
        "*:\\AMD\\*",
        "*:\\OEM\\*",
        "*:\\Windows\\Boot\\*",
        "*:\\Windows\\ELAMBKUP\\*",
        "*:\\Windows\\INF\\*",
        "*:\\Windows\\servicing\\*",
        "*:\\Windows\\System32\\Boot\\*",
        "*:\\Windows\\System32\\Drivers\\*",
        "*:\\Windows\\System32\\DriverStore\\*",
        "*:\\Windows\\System32\\Recovery\\*",
        "*:\\Windows\\SysWOW64\\Drivers\\*"
    )

    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)`
    | rex field="file_name" "\.(?<extension>[^\.]*$)"
    | where isnull(extension)
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `windows_file_without_extension_in_critical_folder_filter`
how_to_implement: To successfully implement this search you need to be ingesting information on process that include the name of the Filesystem responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Filesystem` node.
known_false_positives: |-
    If you are leveraging Sysmon, you may see false positives related to folder creation, since Event ID 11 does not contain enough information to determine if the file is a File or a Directory. Filter out those entries when leveraging this analytic.
references:
    - https://blog.talosintelligence.com/2022/02/threat-advisory-hermeticwiper.html
    - https://www.splunk.com/en_us/blog/security/detecting-hermeticwiper.html
    - https://learn.microsoft.com/en-us/answers/questions/2184241/where-does-windows-installation-search-for-drivers
intermediate_findings:
    entities:
        - field: user
          type: user
          score: 20
          message: A file without extension [$file_name$] was dropped in a critical folder [$file_path$] by $user$
threat_objects:
    - field: file_name
      type: file_name
analytic_story:
    - Data Destruction
    - Hermetic Wiper
asset_type: Endpoint
mitre_attack_id:
    - 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 FROM datamodel=Endpoint.Filesystem where

Filesystem.action IN ("created", "modified")
Filesystem.file_path IN(
    "*:\\AMD\\*",
    "*:\\OEM\\*",
    "*:\\Windows\\Boot\\*",
    "*:\\Windows\\ELAMBKUP\\*",
    "*:\\Windows\\INF\\*",
    "*:\\Windows\\servicing\\*",
    "*:\\Windows\\System32\\Boot\\*",
    "*:\\Windows\\System32\\Drivers\\*",
    "*:\\Windows\\System32\\DriverStore\\*",
    "*:\\Windows\\System32\\Recovery\\*",
    "*:\\Windows\\SysWOW64\\Drivers\\*"
)

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: rex

| rex field="file_name" "\.(?<extension>[^\.]*$)"

Stage 4: where

| where isnull(extension)

Stage 5: search

| `security_content_ctime(firstTime)`

Stage 6: search

| `security_content_ctime(lastTime)`

Stage 7: search

| `windows_file_without_extension_in_critical_folder_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Filesystem.actionin
  • created corpus 10 (splunk 10)
  • modified corpus 10 (splunk 10)
field:"event_action" kind:in
Filesystem.file_pathin
  • *:\AMD\*
  • *:\OEM\*
  • *:\Windows\Boot\*
  • *:\Windows\ELAMBKUP\*
  • *:\Windows\INF\*
  • *:\Windows\SysWOW64\Drivers\*
  • *:\Windows\System32\Boot\*
  • *:\Windows\System32\DriverStore\*
  • *:\Windows\System32\Drivers\*
  • *:\Windows\System32\Recovery\*
  • *:\Windows\servicing\* corpus 2 (splunk 2)
field:"TargetFilename" kind:in
extensionis_null
  • (no value, null check)
field:"extension" kind:is_null

Windows Service Created (Sysmon)

#
Group by
_time, host
Source
github.com/anvilogic-forge/armory

Adversaries may leverage sc.exe to execute malicious content by creating a new service

MITRE ATT&CK Coverage

References

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 1: Process creation

Rule Body

id: '5705.18100'
title: Windows Service Created
description: 'Adversaries may leverage sc.exe to execute malicious content by creating
  a new service. -- Threat Actor Association: Alloy Taurus/Gallium, APT27/Emissary
  Panda, APT29/Nobelium/Cozy Bear, Earth Estries, FamousSparrow, FIN6, FIN7, FIN12,
  Flax Typhoon, GoldenJackal, Lazarus, Magic Hound (aka APT35, Charming Kitten, Phosphorus,
  and Mint Sandstorm), MalKamak, Memento Team, Night Spider, Prophet Spider, Redfly,
  Wizard Spider - Software Association: Bazar, Conti, Clop, Cuba, DirtyMoe, GhostShell,
  Hancitor, Midas, Prometheus/Spook, Snatch -- Atomics T1036.004 Test #2 Atomics T1574.009
  Test#1 -- #TrendingThreat #Russia #Ukraine'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` ("EventCode=1" OR "<EventID>1<")
  (TERM(sc) OR TERM(sc.exe)) TERM(create) |regex process="(?i)sc(\.exe)?\s(.+)?create\s"|
  table _time, host, user, signature_id, process, process_*, parent_* | bin span=1s
  | stats values(*) as * by _time, host '
techniques:
- execution:system services:service execution
- persistence:create or modify system process
technique_id:
- T1569.002
- T1543
data_category:
- Windows Sysmon
references:
- https://news.sophos.com/en-us/2020/05/21/ragnar-locker-ransomware-deploys-virtual-machine-to-dodge-security/
- https://www.fireeye.com/blog/threat-research/2019/04/pick-six-intercepting-a-fin6-intrusion.html

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_sysmon` ("EventCode=1" OR "<EventID>1<") (TERM(sc) OR TERM(sc.exe)) TERM(create)

Stage 2: regex

| regex process="(?i)sc(\.exe)?\s(.+)?create\s"

Stage 3: table

| table _time, host, user, signature_id, process, process_*, parent_*

Stage 4: bucket

| bin span=1s

Stage 5: stats

| stats values(*) as * by _time, host

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
processregex_match
  • (?i)sc(.exe)?\s(.+)?create\s corpus 2 (splunk 2)
field:"CommandLine" kind:regex_match value:"(?i)sc(.exe)?\s(.+)?create\s"

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"EventCode=1"
1"<EventID>1<"
1sc
1sc.exe
1create

Windows System Time Discovery W32tm Delay

#
Status
production
Severity
low
Group by
IntegrityLevel, command_line, computer_name, event_action, original_file_name, parent_command_line, parent_process_basename, parent_process_guid, parent_process_id, parent_process_name, process_basename, process_guid, process_hash, process_id, process_name, user, user_id, vendor_product
Author
Teoderick Contreras, Splunk
Source
github.com/splunk/security_content

The following analytic identifies the use of the w32tm.exe utility with the /stripchart function, which is indicative of DCRat malware delaying its payload execution. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on specific command-line arguments used by w32tm.exe. This activity is significant as it may indicate an attempt to evade detection by delaying malicious actions such as C2 communication and beaconing. If confirmed malicious, this behavior could allow an attacker to maintain persistence and execute further malicious activities undetected.

Known False Positives

  • No false positives have been identified at this time.

MITRE ATT&CK Coverage

TacticTechniques
Discovery

Telemetry Coverage

Rule Body

name: Windows System Time Discovery W32tm Delay
id: b2cc69e7-11ba-42dc-a269-59c069a48870
version: 11
creation_date: '2022-07-27'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: Anomaly
description: The following analytic identifies the use of the w32tm.exe utility with the /stripchart function, which is indicative of DCRat malware delaying its payload execution. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on specific command-line arguments used by w32tm.exe. This activity is significant as it may indicate an attempt to evade detection by delaying malicious actions such as C2 communication and beaconing. If confirmed malicious, this behavior could allow an attacker to maintain persistence and execute further malicious activities undetected.
data_source:
    - Sysmon EventID 1
    - Windows Event Log Security 4688
    - CrowdStrike ProcessRollup2
search: |-
    | tstats `security_content_summariesonly` values(Processes.process) as process min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes
      WHERE Processes.process_name = w32tm.exe Processes.process= "* /stripchart *" Processes.process= "* /computer:localhost *" Processes.process= "* /period:*" Processes.process= "* /dataonly *" Processes.process= "* /samples:*"
      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_system_time_discovery_w32tm_delay_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://cert.gov.ua/article/405538
    - https://malpedia.caad.fkie.fraunhofer.de/details/win.dcrat
    - https://www.mandiant.com/resources/analyzing-dark-crystal-rat-backdoor
intermediate_findings:
    entities:
        - field: dest
          type: system
          score: 20
          message: Process name w32tm.exe is using suspcicious command line arguments $process$ on host $dest$.
analytic_story:
    - DarkCrystal RAT
asset_type: Endpoint
mitre_attack_id:
    - T1124
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: tstats

| tstats `security_content_summariesonly`
    values(Processes.process) as process
    min(_time) as firstTime
    max(_time) as lastTime
  FROM datamodel=Endpoint.Processes
  WHERE Processes.process_name = w32tm.exe Processes.process= "* /stripchart *"
    Processes.process= "* /computer:localhost *" Processes.process= "* /period:*"
    Processes.process= "* /dataonly *" Processes.process= "* /samples:*"
  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_system_time_discovery_w32tm_delay_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Processes.processeq
  • * /computer:localhost *
  • * /dataonly *
  • * /period:*
  • * /samples:*
  • * /stripchart *
field:"CommandLine" kind:eq
Processes.process_nameeq
  • w32tm.exe corpus 3 (elastic 2, splunk 1)
field:"process_basename" kind:eq value:"w32tm.exe"

Back to all Splunk rules