Detection rules › Splunk

Splunk rules: 0p

Anomalous usage of 7zip

#
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
Michael Haag, Teoderick Contreras, Splunk
Source
github.com/splunk/security_content

The following analytic detects the execution of 7z.exe, a 7-Zip utility, spawned from rundll32.exe or dllhost.exe. This behavior is identified using Endpoint Detection and Response (EDR) telemetry, focusing on process names and parent processes. This activity is significant as it may indicate an adversary attempting to use 7-Zip for data exfiltration, often by renaming the executable to evade detection. If confirmed malicious, this could lead to unauthorized data archiving and exfiltration, compromising sensitive information and potentially leading to further system exploitation.

Known False Positives

  • False positives should be limited as this behavior is not normal for `rundll32.exe` or `dllhost.exe` to spawn and run 7zip.

MITRE ATT&CK Coverage

Telemetry Coverage

Rule Body

name: Anomalous usage of 7zip
id: 9364ee8e-a39a-11eb-8f1d-acde48001122
version: 15
creation_date: '2021-04-22'
modification_date: '2026-05-13'
author: Michael Haag, Teoderick Contreras, Splunk
status: production
type: Anomaly
description: The following analytic detects the execution of 7z.exe, a 7-Zip utility, spawned from rundll32.exe or dllhost.exe. This behavior is identified using Endpoint Detection and Response (EDR) telemetry, focusing on process names and parent processes. This activity is significant as it may indicate an adversary attempting to use 7-Zip for data exfiltration, often by renaming the executable to evade detection. If confirmed malicious, this could lead to unauthorized data archiving and exfiltration, compromising sensitive information and potentially leading to further system exploitation.
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.parent_process_name IN ("rundll32.exe", "dllhost.exe") Processes.process_name=*7z*) AND NOT Processes.process_path = "C:\\Program Files\\VMware\\VMware Tools\\7za.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)`
    | `anomalous_usage_of_7zip_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 should be limited as this behavior is not normal for `rundll32.exe` or `dllhost.exe` to spawn and run 7zip.
references:
    - https://attack.mitre.org/techniques/T1560/001/
    - https://www.microsoft.com/security/blog/2021/01/20/deep-dive-into-the-solorigate-second-stage-activation-from-sunburst-to-teardrop-and-raindrop/
    - https://thedfirreport.com/2021/01/31/bazar-no-ryuk/
intermediate_findings:
    entities:
        - field: user
          type: user
          score: 20
          message: An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ by user $user$. This behavior is indicative of suspicious loading of 7zip.
        - field: dest
          type: system
          score: 20
          message: An instance of $parent_process_name$ spawning $process_name$ was identified on endpoint $dest$ by user $user$. This behavior is indicative of suspicious loading of 7zip.
threat_objects:
    - field: parent_process_name
      type: parent_process_name
    - field: process_name
      type: process_name
analytic_story:
    - NOBELIUM Group
    - BlackByte Ransomware
    - Cobalt Strike
    - Graceful Wipe Out Attack
    - BlackSuit Ransomware
asset_type: Endpoint
mitre_attack_id:
    - T1560.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.parent_process_name IN ("rundll32.exe", "dllhost.exe")
      Processes.process_name=*7z*
  ) AND NOT Processes.process_path = "C:\\Program Files\\VMware\\VMware Tools\\7za.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

| `anomalous_usage_of_7zip_filter`

Indicators

These rows show field, operator, and value matches.

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
Processes.process_patheqC:\Program Files\VMware\VMware Tools\7za.exeexcludes:Processes.process_path field:"Processes.process_path" value:"C:\Program Files\VMware\VMware Tools\7za.exe"

AWS Bedrock Claude Cross Region Possible Inference Abuse

#
Status
production
Severity
low
Author
Rod Soto
Source
github.com/splunk/security_content

This detection identifies potential cross-region inference abuse in AWS Bedrock Claude models. Cross-region inference abuse may indicate attempts to bypass regional restrictions, exfiltrate data, or perform unauthorized actions across different AWS regions.

Known False Positives

  • False positives may arise from legitimate use cases where users are accessing AWS Bedrock Claude models across different regions for valid reasons, such as multi-region deployments, testing, or development purposes. It is important to review the context of the detected events to determine if they represent actual abuse or benign usage.

MITRE ATT&CK Coverage

TacticTechniques
Defense Impairment

Rule Body

name: AWS Bedrock Claude Cross Region Possible Inference Abuse
id: e3d3f27d-b08e-415a-9811-8f72a0905ca6
version: 1
creation_date: '2026-07-06'
modification_date: '2026-07-06'
author: Rod Soto
status: production
type: Anomaly
description: This detection identifies potential cross-region inference abuse in AWS Bedrock Claude models. Cross-region inference abuse may indicate attempts to bypass regional restrictions, exfiltrate data, or perform unauthorized actions across different AWS regions.
data_source:
    - AWS Bedrock Claude
search: |-
    `aws_bedrock_claude`
    | rename "identity.arn" AS user_arn
    | rename "input.inputTokenCount" AS input_tokens
    | rename "output.outputTokenCount" AS output_tokens
    | rex field=user_arn "assumed-role/[^/]+/(?<user>[^\"]+)$"
    | rex field="input.inputBodyJson.metadata.user_id" "(?<session_user>user_[^_]+.*)"
    | eval input_tokens=tonumber(input_tokens)
    | eval output_tokens=tonumber(output_tokens)
    | eval token_ratio=round(output_tokens / max(input_tokens,1), 2)
    | eval model_short=replace(modelId,"^.*/","")
    | eval mismatch_detail=region." -> ".inferenceRegion
    | where isnotnull(user_arn) AND len(user_arn)>10
    | where isnotnull(session_user)
    | where region!=inferenceRegion
    | where input_tokens>=2000
    | table _time, user, user_arn, session_user, model_short, input_tokens, output_tokens, token_ratio, mismatch_detail, operation, host
    | sort - input_tokens
    | `aws_bedrock_claude_cross_region_possible_inference_abuse_filter`
how_to_implement: You must install and configure the Splunk Add-on for AWS (https://splunkbase.splunk.com/app/1876). Enable Amazon Bedrock model invocation logging in AWS so that Claude request/response payloads are delivered to S3 and/or CloudWatch Logs (see https://docs.aws.amazon.com/bedrock/latest/userguide/model-invocation-logging.html for setup steps), then ingest those logs into Splunk via the AWS TA. Configure the `aws_bedrock_claude` macro to point to the index and sourcetype (`json_no_timestamp`) where these logs land.
known_false_positives: False positives may arise from legitimate use cases where users are accessing AWS Bedrock Claude models across different regions for valid reasons, such as multi-region deployments, testing, or development purposes. It is important to review the context of the detected events to determine if they represent actual abuse or benign usage.
references:
    - https://aws.amazon.com/blogs/apn/unlocking-the-power-of-splunk-with-amazon-bedrock-an-agentic-ai-approach-to-build-customized-splunk-assistants-using-bedrock-agents/
    - https://help.splunk.com/en/splunk-observability-cloud/observability-for-ai/splunk-ai-infrastructure-monitoring/set-up-ai-infrastructure-monitoring/amazon-bedrock
    - https://research.splunk.com/stories/aws_bedrock_security/
    - https://docs.aws.amazon.com/bedrock/latest/userguide/model-invocation-logging.html
intermediate_findings:
    entities:
        - field: user
          type: user
          score: 20
          message: Cross-region inference abuse detected from $user$ ($session_user$) using model $model_short$ with region mismatch $mismatch_detail$ and $input_tokens$ input tokens on $host$.
analytic_story:
    - Suspicious AWS Bedrock Claude Activities
asset_type: Web Application
mitre_attack_id:
    - T1599
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: application
security_domain: endpoint

Stages and Predicates

Stage 1: search

`aws_bedrock_claude`

Stage 2: rename

| rename "identity.arn" AS user_arn

Stage 3: rename

| rename "input.inputTokenCount" AS input_tokens

Stage 4: rename

| rename "output.outputTokenCount" AS output_tokens

Stage 5: rex

| rex field=user_arn "assumed-role/[^/]+/(?<user>[^\"]+)$"

The parser skipped this rex command.

Stage 6: rex

| rex field="input.inputBodyJson.metadata.user_id" "(?<session_user>user_[^_]+.*)"

Stage 7: eval

| eval input_tokens=tonumber(input_tokens)

Stage 8: eval

| eval output_tokens=tonumber(output_tokens)

Stage 9: eval

| eval token_ratio=round(output_tokens / max(input_tokens,1), 2)

Stage 10: eval

| eval model_short=replace(modelId,"^.*/","")

Stage 11: eval

| eval mismatch_detail=region." -> ".inferenceRegion

Stage 12: where

| where isnotnull(user_arn) AND len(user_arn)>10

Stage 13: where

| where isnotnull(session_user)

Stage 14: where

| where region!=inferenceRegion

Stage 15: where

| where input_tokens>=2000

Stage 16: table

| table _time, user, user_arn, session_user, model_short, input_tokens, output_tokens, token_ratio,
    mismatch_detail, operation, host

Stage 17: sort

| sort - input_tokens

Stage 18: search

| `aws_bedrock_claude_cross_region_possible_inference_abuse_filter`

Indicators

These rows show field, operator, and value matches.

AWS Disable Bucket Versioning

#
Status
production
Severity
low
Group by
aws::awsRegion, aws::recipientAccountId, aws::userAgent, bucket_name, dest, signature, src, user, vendor_product
Author
Bhavin Patel, Splunk
Source
github.com/splunk/security_content

The following analytic detects when AWS S3 bucket versioning is suspended by a user. It leverages AWS CloudTrail logs to identify PutBucketVersioning events with the VersioningConfiguration.Status set to Suspended. This activity is significant because disabling versioning can prevent recovery of deleted or modified data, which is a common tactic in ransomware attacks. If confirmed malicious, this action could lead to data loss and hinder recovery efforts, severely impacting data integrity and availability.

Known False Positives

  • It is possible that an AWS Administrator has legitimately disabled versioning on certain buckets to avoid costs.

MITRE ATT&CK Coverage

TacticTechniques
Impact

Telemetry Coverage

Rules Detecting the Same Action

These rules filter on the same operation.

Rule Body

name: AWS Disable Bucket Versioning
id: 657902a9-987d-4879-a1b2-e7a65512824b
version: 10
creation_date: '2023-05-01'
modification_date: '2026-05-13'
author: Bhavin Patel, Splunk
status: production
type: Anomaly
description: The following analytic detects when AWS S3 bucket versioning is suspended by a user. It leverages AWS CloudTrail logs to identify `PutBucketVersioning` events with the `VersioningConfiguration.Status` set to `Suspended`. This activity is significant because disabling versioning can prevent recovery of deleted or modified data, which is a common tactic in ransomware attacks. If confirmed malicious, this action could lead to data loss and hinder recovery efforts, severely impacting data integrity and availability.
data_source:
    - AWS CloudTrail PutBucketVersioning
search: |-
    `cloudtrail` eventName= PutBucketVersioning "requestParameters.VersioningConfiguration.Status"=Suspended
      | rename user_name as user, requestParameters.bucketName as bucket_name
      | stats count min(_time) as firstTime max(_time) as lastTime
        BY signature dest user
           user_agent src vendor_account
           vendor_region vendor_product bucket_name
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `aws_disable_bucket_versioning_filter`
how_to_implement: You must install splunk AWS add on and Splunk App for AWS. This search works with AWS CloudTrail logs.
known_false_positives: It is possible that an AWS Administrator has legitimately disabled versioning on certain buckets to avoid costs.
references:
    - https://invictus-ir.medium.com/ransomware-in-the-cloud-7f14805bbe82
    - https://bleemb.medium.com/data-exfiltration-with-native-aws-s3-features-c94ae4d13436
intermediate_findings:
    entities:
        - field: user
          type: user
          score: 20
          message: Bucket Versioning is suspended for S3 buckets- $bucket_name$ by user $user$ from IP address $src$
threat_objects:
    - field: src
      type: ip_address
analytic_story:
    - Suspicious AWS S3 Activities
    - Data Exfiltration
asset_type: AWS Account
mitre_attack_id:
    - T1490
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: cloud
security_domain: threat

Stages and Predicates

Stage 1: search

`cloudtrail` eventName= PutBucketVersioning
    "requestParameters.VersioningConfiguration.Status"=Suspended

Stage 2: rename

| rename user_name as user, requestParameters.bucketName as bucket_name

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 bucket_name

Stage 4: search

| `security_content_ctime(firstTime)`

Stage 5: search

| `security_content_ctime(lastTime)`

Stage 6: search

| `aws_disable_bucket_versioning_filter`

Indicators

These rows show field, operator, and value matches.

Command Line .cmd Execution (Sysmon)

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

Adversaries may attempt to manipulate features of their artifacts to make them appear legitimate or benign to users and/or security tools. Masquerading occurs when the name or location of an object, legitimate or malicious, is manipulated or abused for the sake of evading defenses and observation. This may include manipulating file metadata, tricking users into misidentifying the file type, and giving legitimate task or service names. This use case detects the use of cmd.exe /c to execute .cmd files. This technique has been used by BazaLoader to execute malware masquerading as a PDF inside a .zip file

MITRE ATT&CK Coverage

References

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 1: Process creation

Rule Body

id: '15032.22715'
title: Command Line .cmd Execution
description: 'Adversaries may attempt to manipulate features of their artifacts to
  make them appear legitimate or benign to users and/or security tools. Masquerading
  occurs when the name or location of an object, legitimate or malicious, is manipulated
  or abused for the sake of evading defenses and observation. This may include manipulating
  file metadata, tricking users into misidentifying the file type, and giving legitimate
  task or service names. This use case detects the use of cmd.exe /c to execute .cmd
  files. This technique has been used by BazaLoader to execute malware masquerading
  as a PDF inside a .zip file. -- Threat Actor Association: Andariel, APT28, APT40,
  APT-K-47/Mysterious Elephant, GoldenJackal, Kimsuky, Rhysida, Sandworm Team, Volt
  Typhoon -- Atomics T1036 Test #2 Atomics T1059.003 Test #5'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<")
  "cmd.exe" "/c" ".cmd" | regex process="(?i)cmd.*\s+/c\s+.*?\w+\.cmd" | table _time,
  host, user, process, process_*, parent_process, parent_process_*, user | bin span=1s
  | stats values(*) as * by _time, host '
techniques:
- execution:command and scripting interpreter:windows command shell
technique_id:
- T1059.003
data_category:
- Windows Sysmon
- Process command-line parameters
references:
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1036/T1036.md#atomic-test-2---malware-masquerading-and-execution-from-zip-file
- https://twitter.com/ffforward/status/1481672378639912960

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<") "cmd.exe" "/c" ".cmd"

Stage 2: regex

| regex process="(?i)cmd.*\s+/c\s+.*?\w+\.cmd"

Stage 3: table

| table _time, host, user, process, process_*, parent_process, parent_process_*, user

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)cmd.*\s+/c\s+.*?\w+.cmd corpus 2 (splunk 2)
field:"CommandLine" kind:regex_match value:"(?i)cmd.*\s+/c\s+.*?\w+.cmd"

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"<EventID>1<"
1"cmd.exe"
1"/c"
1".cmd"

Detect SharpHound Usage

#
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 usage of the SharpHound binary by identifying its original filename, SharpHound.exe, and the process name. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process metadata and command-line executions. SharpHound is a tool used for Active Directory enumeration, often by attackers during the reconnaissance phase. If confirmed malicious, this activity could allow an attacker to map out the network, identify high-value targets, and plan further attacks, potentially leading to privilege escalation and lateral movement within the environment.

Known False Positives

  • False positives should be limited as this is specific to a file attribute not used by anything else. Filter as needed.

MITRE ATT&CK Coverage

Telemetry Coverage

Rule Body

name: Detect SharpHound Usage
id: dd04b29a-beed-11eb-87bc-acde48001122
version: 13
creation_date: '2021-06-03'
modification_date: '2026-05-13'
author: Michael Haag, Splunk
status: production
type: TTP
description: The following analytic detects the usage of the SharpHound binary by identifying its original filename, `SharpHound.exe`, and the process name. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process metadata and command-line executions. SharpHound is a tool used for Active Directory enumeration, often by attackers during the reconnaissance phase. If confirmed malicious, this activity could allow an attacker to map out the network, identify high-value targets, and plan further attacks, potentially leading to privilege escalation and lateral movement within the environment.
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=sharphound.exe
            OR
            Processes.original_file_name=SharpHound.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)`
    | `detect_sharphound_usage_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 should be limited as this is specific to a file attribute not used by anything else. Filter as needed.
references:
    - https://attack.mitre.org/software/S0521/
    - https://thedfirreport.com/?s=bloodhound
    - https://github.com/BloodHoundAD/BloodHound/tree/master/Collectors
    - https://github.com/BloodHoundAD/SharpHound3
    - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1059.001/T1059.001.md#atomic-test-2---run-bloodhound-from-local-disk
finding:
    title: Potential SharpHound binary identified on $dest$
    entity:
        field: dest
        type: system
        score: 50
analytic_story:
    - Windows Discovery Techniques
    - Ransomware
asset_type: Endpoint
mitre_attack_id:
    - T1069.001
    - T1069.002
    - T1087.001
    - T1087.002
    - T1482
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=sharphound.exe
      OR Processes.original_file_name=SharpHound.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

| `detect_sharphound_usage_filter`

Indicators

These rows show field, operator, and value matches.

Hidden Scheduled Task Created - Windows (Windows Event Log)

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

A hidden scheduled task in Windows is a task configured to run specified actions silently without displaying any visible program windows or interfaces to the user. Threat actors may abuse this feature to persistently execute malicious activities covertly, avoiding detection while maintaining a presence on the victim's system, as observed in breaches involving Industroyer2. This use case detects scheduled task creation events where the 'Hidden' setting is enabled.

MITRE ATT&CK Coverage

TacticTechniques
Execution
Persistence
Privilege Escalation

References

Telemetry Coverage

Rule Body

id: '30937.55362'
title: Hidden Scheduled Task Created - Windows
description: A hidden scheduled task in Windows is a task configured to run specified
  actions silently without displaying any visible program windows or interfaces to
  the user. Threat actors may abuse this feature to persistently execute malicious
  activities covertly, avoiding detection while maintaining a presence on the victim's
  system, as observed in breaches involving Industroyer2. This use case detects scheduled
  task creation events where the 'Hidden' setting is enabled.
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_winevent` (TERM(EventCode=4698) OR
  "<EventID>4698<") "hidden" "true" | where match(TaskContent, "(?i)Hidden(&gt;|>)true")
  | table _time, host, user, TaskName | bin span=1s | stats values(*) as * by _time,
  host '
techniques:
- execution:scheduled task/job
technique_id: 
- T1053
data_category:
- Windows event logs
references:
- https://research.splunk.com/endpoint/0b730470-5fe8-4b13-93a7-fe0ad014d0cc/
- https://www.welivesecurity.com/2022/04/12/industroyer2-industroyer-reloaded/
- https://cert.gov.ua/article/39518

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_winevent` (TERM(EventCode=4698) OR "<EventID>4698<") "hidden" "true"

Stage 2: where

| where match(TaskContent, "(?i)Hidden(&gt;|>)true")

Stage 3: table

| table _time, host, user, TaskName

Stage 4: bucket

| bin span=1s

Stage 5: stats

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

Indicators

These rows show field, operator, and value matches.

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"<EventID>4698<"
1"hidden"
1"true"

Linux Gdrive Binary Activity

#
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
Raven Tait, Splunk
Source
github.com/splunk/security_content

The following analytic detects the execution of the 'gdrive' tool on a Linux host. This tool allows standard users to perform tasks associated with Google Drive via the command line. This is used by actors to stage tools as well as exfiltrate data. The detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process names and command-line executions. If confirmed malicious, this could lead to compromise of systems or sensitive data being stolen.

Known False Positives

  • Administrator or network operator can use this application for automation purposes. Please update the filter macros to remove false positives.

MITRE ATT&CK Coverage

TacticTechniques
Exfiltration

Telemetry Coverage

PlatformRecord / event type
LinuxEvent ID 1: Process Create

Rule Body

name: Linux Gdrive Binary Activity
id: a42f8029-5472-4c33-8943-bb17bb07466a
version: 5
creation_date: '2022-04-26'
modification_date: '2026-05-13'
author: Raven Tait, Splunk
status: production
type: TTP
description: The following analytic detects the execution of the 'gdrive' tool on a Linux host. This tool allows standard users to perform tasks associated with Google Drive via the command line. This is used by actors to stage tools as well as exfiltrate data. The detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process names and command-line executions. If confirmed malicious, this could lead to compromise of systems or sensitive data being stolen.
data_source:
    - Sysmon for Linux EventID 1
search: |-
    | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Processes
      WHERE Processes.process_name="gdrive" Processes.process IN  ("* download *", "* upload *", "* list*", "* update *", "* sync *", "* share *", "* account add*", "* drives *", "* files *")
      BY Processes.action Processes.dest Processes.original_file_name
         Processes.parent_process Processes.parent_process_exec Processes.parent_process_guid
         Processes.parent_process_id Processes.parent_process_name Processes.parent_process_path
         Processes.process Processes.process_exec Processes.process_guid
         Processes.process_hash Processes.process_id Processes.process_integrity_level
         Processes.process_name Processes.process_path Processes.user
         Processes.user_id Processes.vendor_product
    | `drop_dm_object_name(Processes)`
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `linux_gdrive_binary_activity_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: Administrator or network operator can use this application for automation purposes. Please update the filter macros to remove false positives.
references:
    - https://cloud.google.com/blog/topics/threat-intelligence/uncovering-unc3886-espionage-operations
finding:
    title: An instance of $process_name$ was identified attempting to interact with Google Drive on endpoint $dest$ by $user$.
    entity:
        field: dest
        type: system
        score: 50
analytic_story:
    - China-Nexus Threat Activity
asset_type: Endpoint
mitre_attack_id:
    - T1567
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="gdrive" Processes.process IN  (
      "* download *",
      "* upload *",
      "* list*",
      "* update *",
      "* sync *",
      "* share *",
      "* account add*",
      "* drives *",
      "* files *"
  )
  BY
    Processes.action
    Processes.dest
    Processes.original_file_name
    Processes.parent_process
    Processes.parent_process_exec
    Processes.parent_process_guid
    Processes.parent_process_id
    Processes.parent_process_name
    Processes.parent_process_path
    Processes.process
    Processes.process_exec
    Processes.process_guid
    Processes.process_hash
    Processes.process_id
    Processes.process_integrity_level
    Processes.process_name
    Processes.process_path
    Processes.user
    Processes.user_id
    Processes.vendor_product

Stage 2: search

| `drop_dm_object_name(Processes)`

Stage 3: search

| `security_content_ctime(firstTime)`

Stage 4: search

| `security_content_ctime(lastTime)`

Stage 5: search

| `linux_gdrive_binary_activity_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Processes.processin
  • * account add* corpus 2 (splunk 2)
  • * download * corpus 3 (splunk 3)
  • * drives * corpus 2 (splunk 2)
  • * files * corpus 2 (splunk 2)
  • * list* corpus 2 (splunk 2)
  • * share * corpus 2 (splunk 2)
  • * sync * corpus 2 (splunk 2)
  • * update * corpus 2 (splunk 2)
  • * upload * corpus 2 (splunk 2)
field:"CommandLine" kind:in
Processes.process_nameeq
  • gdrive
field:"process_basename" kind:eq value:"gdrive"

NirCmd Execution (Sysmon)

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

NirCmd is a command line utility with capabilities to delete files from Recycling Bin, delete registry keys, take screenshots and execute command without displaying a user interface. While it has legitimate administrative uses, threat actors including Mint Sandstorm aka PHOSPHORUS have been observed using renamed NirCmd to execute malicious code. This use case detects executions of NirCmd.exe or command line argument patterns consistent with abusive activities observed with NirCmd, accounting for instances where it has been renamed. Allowlisting is recommended for executables using the same command line arguments for best results.

MITRE ATT&CK Coverage

References

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 1: Process creation

Rule Body

id: '27585.50195'
title: NirCmd Execution
description: 'NirCmd is a command line utility with capabilities to delete files from
  Recycling Bin, delete registry keys, take screenshots and execute command without
  displaying a user interface. While it has legitimate administrative uses, threat
  actors including Mint Sandstorm aka PHOSPHORUS have been observed using renamed
  NirCmd to execute malicious code. This use case detects executions of NirCmd.exe
  or command line argument patterns consistent with abusive activities observed with
  NirCmd, accounting for instances where it has been renamed. Allowlisting is recommended
  for executables using the same command line arguments for best results. '
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<")
  "NirCmd" OR ((" execmd " OR ".exe script " OR ".exe shexec " OR " runinteractive
  " OR " runinteractivecmd " OR " savescreenshot " OR " savescreenshotfull " OR "savescreenshotwin
  " OR " regdelval " OR " regdelkey " OR " regsetval ") OR ((" exec " OR " exec2 ")
  (" show " OR " hide "))) | where match(process_name, "(?i)nircmd\.exe") or match(process,
  "(?i)\s(execcmd|runinteractive(cmd)?|savescreenshot(full|win)?|regdel(val|key)|regsetval|exec2?\s+(show|hide))\s|\.exe\s+(script|shexec)")
  | table _time, host, user, process, parent_process_name, process_* | bin span=1s
  | stats values(*) as * by _time, host '
techniques:
- collection:screen capture
- execution:command and scripting interpreter
- defense-evasion:indicator removal
technique_id: 
- T1113
- T1059
- T1070
data_category:
- Windows Sysmon
references:
- https://www.microsoft.com/en-us/security/blog/2024/01/17/new-ttps-observed-in-mint-sandstorm-campaign-targeting-high-profile-individuals-at-universities-and-research-orgs/
- https://asec.ahnlab.com/ko/45153/
- https://nircmd.nirsoft.net/
- https://www.nirsoft.net/utils/nircmd.html

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<") "NirCmd" OR ((" execmd " OR ".exe script " OR ".exe shexec " OR " runinteractive " OR " runinteractivecmd " OR " savescreenshot " OR " savescreenshotfull " OR "savescreenshotwin " OR " regdelval " OR " regdelkey " OR " regsetval ") OR ((" exec " OR " exec2 ") (" show " OR " hide ")))

Stage 2: where

| where match(process_name, "(?i)nircmd\.exe")
    or match(
        process,
        "(?i)\s(execcmd|runinteractive(cmd)?|savescreenshot(full|win)?|regdel(val|key)|regsetval|exec2?\s+(show|hide))\s|\.exe\s+(script|shexec)"
    )

Stage 3: table

| table _time, host, user, process, parent_process_name, 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(execcmd|runinteractive(cmd)?|savescreenshot(full|win)?|regdel(val|key)|regsetval|exec2?\s+(show|hide))\s
    • .exe\s+(script|shexec)
    corpus 2 (splunk 2)
field:"CommandLine" kind:regex_match
process_nameregex_match
  • (?i)nircmd.exe corpus 2 (splunk 2)
field:"process_name" kind:regex_match value:"(?i)nircmd.exe"

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"<EventID>1<"
1"NirCmd"
1" execmd "
1".exe script "
1".exe shexec "
1" runinteractive "
1" runinteractivecmd "
1" savescreenshot "
1" savescreenshotfull "
1"savescreenshotwin "
1" regdelval "
1" regdelkey "
1" regsetval "
1" exec "
1" exec2 "
1" show "
1" hide "

O365 Email Reported By Admin Found Malicious

#
Status
production
Severity
medium
Group by
Subject, SubmissionContent, aws::recipientAccountId, dest, dest_user, signature, signature_id, src, user, vendor_product
Author
Steven Dick
Source
github.com/splunk/security_content

The following analytic detects when an email manually submitted to Microsoft through the Security & Compliance portal is found to be malicious. This capability is an enhanced protection feature that can be used within o365 tenants by administrative users to report potentially malicious emails. This correlation looks for any submission that returns a Phish or Malware verdict upon submission.

Known False Positives

  • Administrators that submit known phishing training exercises.

MITRE ATT&CK Coverage

Rule Body

name: O365 Email Reported By Admin Found Malicious
id: 94396c3e-7728-422a-9956-e4b77b53dbdf
version: 11
creation_date: '2024-04-07'
modification_date: '2026-05-13'
author: Steven Dick
status: production
type: TTP
description: The following analytic detects when an email manually submitted to Microsoft through the Security & Compliance portal is found to be malicious. This capability is an enhanced protection feature that can be used within o365 tenants by administrative users to report potentially malicious emails. This correlation looks for any submission that returns a Phish or Malware verdict upon submission.
data_source:
    - Office 365 Universal Audit Log
search: |-
    `o365_management_activity` Workload=SecurityComplianceCenter Operation=AdminSubmission
      | search RescanVerdict IN (Phish,Malware)
      | rename Id as signature_id, SenderIP as src, Recipients{} as dest_user, P1Sender as src_user
      | fillnull
      | stats count min(_time) as firstTime max(_time) as lastTime
        BY dest user src
           vendor_account vendor_product signature
           signature_id dest_user src_user
           Subject SubmissionContent
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `o365_email_reported_by_admin_found_malicious_filter`
how_to_implement: You must install splunk Microsoft Office 365 add-on. This search works with o365:management:activity
known_false_positives: Administrators that submit known phishing training exercises.
references:
    - https://learn.microsoft.com/en-us/microsoft-365/security/office-365-security/submissions-outlook-report-messages?view=o365-worldwide
finding:
    title: O365 security admin $user$ manually reported a suspicious email from $src_user$
    entity:
        field: src_user
        type: user
        score: 50
threat_objects:
    - field: Subject
      type: email_subject
analytic_story:
    - Spearphishing Attachments
    - Suspicious Emails
asset_type: O365 Tenant
mitre_attack_id:
    - T1566.001
    - T1566.002
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: cloud
security_domain: threat

Stages and Predicates

Stage 1: search

`o365_management_activity` Workload=SecurityComplianceCenter Operation=AdminSubmission

Stage 2: search

| search RescanVerdict IN (Phish,Malware)

Stage 3: rename

| rename Id as signature_id, SenderIP as src, Recipients{} as dest_user, P1Sender as src_user

Stage 4: fillnull

| fillnull

Stage 5: stats

| stats count min(_time) as firstTime max(_time) as lastTime
    BY dest user src
       vendor_account vendor_product signature
       signature_id dest_user src_user
       Subject SubmissionContent

Stage 6: search

| `security_content_ctime(firstTime)`

Stage 7: search

| `security_content_ctime(lastTime)`

Stage 8: search

| `o365_email_reported_by_admin_found_malicious_filter`

Indicators

These rows show field, operator, and value matches.

Output to File (PowerShell)

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

Adversaries may stage collected data in a central location or directory on the local system prior to Exfiltration. This use case looks for indicators of commands being saved to a file such as ">" or ">>". Typically a new process is not created when executed from a command prompt, however adversaries may output process results to a txt document during discovery

MITRE ATT&CK Coverage

References

Telemetry Coverage

Rule Body

id: '6144.6642'
title: Output to File
description: 'Adversaries may stage collected data in a central location or directory
  on the local system prior to Exfiltration. This use case looks for indicators of
  commands being saved to a file such as "&gt;" or "&gt;&gt;". Typically a new process
  is not created when executed from a command prompt, however adversaries may output
  process results to a txt document during discovery. -- Threat Actor Association:
  Lazarus, Mustang Panda (aka. Stately Taurus//Earth Preta/BRONZE PRESIDENT/TA416/RedDelta),
  OilRig, TeamTNT - Software Association: Bazar, Clop, Conti, DarkWatchman, EagleEye,
  Hive, Koxic, Polyglot, SysJoker Atomics T1059.003 Test #2 Atomics T1059.003 Test
  #3'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_powershell` (TERM(EventCode=4103) OR
  TERM(EventCode=4104) OR "<EventID>4103<" OR "<EventID>4104<")(TERM(Out-File) OR
  TERM(>) OR ">>") | regex process="(?i)(\s+|\;|\:\,|\d+|\|)(out-file|\>{1,2})(\s|\;|\:\,\|).{1,}"
  | table _time, host, user, signature_id, process_name, user, process | bin span=1s
  | stats values(*) as * by _time, host '
techniques:
- collection:data staged:local data staging
- defense-evasion:masquerading
- execution:command and scripting interpreter:windows command shell
technique_id:
- T1074.001
- T1036
- T1059.003
data_category:
- PowerShell logs
- Process command-line parameters
references:
- https://www.mcafee.com/blogs/other-blogs/mcafee-labs/gold-dragon-widens-olympics-malware-attacks-gains-permanent-presence-on-victims-systems/

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_powershell` (TERM(EventCode=4103) OR TERM(EventCode=4104) OR "<EventID>4103<" OR "<EventID>4104<")(TERM(Out-File) OR TERM(>) OR ">>")

Stage 2: regex

| regex process="(?i)(\s+|\;|\:\,|\d+|\|)(out-file|\>{1,2})(\s|\;|\:\,\|).{1,}"

Stage 3: table

| table _time, host, user, signature_id, process_name, user, 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
  • 4103 corpus 105 (splunk 105)
  • 4104 corpus 269 (splunk 269)
field:"EventID" kind:eq
processregex_match
  • (?i)(\s+|\;|\:\,|\d+||)(out-file|\>{1,2})(\s|\;|\:\,|).{1,}
field:"CommandLine" kind:regex_match value:"(?i)(\s+|\;|\:\,|\d+||)(out-file|\>{1,2})(\s|\;|\:\,|).{1,}"

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"<EventID>4103<"
1"<EventID>4104<"
1"Out-File"
1">"
1">>"

Permission Groups Discovery: Local Groups (PowerShell)

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

Adversaries may attempt to find local system groups and permission settings. The knowledge of local system permission groups can help adversaries determine which groups exist and which users belong to a particular group. Adversaries may use this information to determine which users have elevated permissions, such as the users found within the local administrators group

MITRE ATT&CK Coverage

TacticTechniques
Discovery

References

Telemetry Coverage

Rule Body

id: '16743.26618'
title: 'Permission Groups Discovery: Local Groups'
description: 'Adversaries may attempt to find local system groups and permission settings.
  The knowledge of local system permission groups can help adversaries determine which
  groups exist and which users belong to a particular group. Adversaries may use this
  information to determine which users have elevated permissions, such as the users
  found within the local administrators group. Atomics T1069.001 Test #3 Atomics T1069.001
  Test #5 Atomics T1069.001 Test #6'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_powershell` (TERM(EventCode=4103) OR
  "<EventID>4103<" OR TERM(EventCode=4104) OR "<EventID>4104<") TERM(Get-LocalGroup)
  OR TERM(Get-LocalGroupMember) OR (("wmic" OR TERM(Get-WMIObject) AND TERM(group)))
  | table _time, host, user, process, process_*, parent_process | bin span=1s | stats
  values(*) as * by _time, host '
techniques:
- discovery:permission groups discovery
technique_id: 
- T1069
data_category:
- PowerShell logs
references:
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1069.001/T1069.001.md#atomic-test-3---permission-groups-discovery-powershell-local

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_powershell` (TERM(EventCode=4103) OR "<EventID>4103<" OR TERM(EventCode=4104) OR "<EventID>4104<") TERM(Get-LocalGroup) OR TERM(Get-LocalGroupMember) OR (("wmic" OR TERM(Get-WMIObject) AND TERM(group)))

Stage 2: table

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

Stage 3: bucket

| bin span=1s

Stage 4: stats

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

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 4103 corpus 105 (splunk 105)
  • 4104 corpus 269 (splunk 269)
field:"EventID" kind:eq

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"<EventID>4103<"
1"<EventID>4104<"
1"Get-LocalGroup"
1"Get-LocalGroupMember"
1"wmic"
1"Get-WMIObject"
1group

Potential PowerShell Post-Exploitation Activity (Sysmon)

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

Threat actors may perform post-exploitation activities using PowerShell scripts such as ADRecon. When running ADRecon, PowerShell launches child processes to compile and execute payloads and creates several .cmdline files in AppData\Local\Temp directories. This use case detects PowerShell-invoked compilations involving csc.exe and cvtres.exe referencing multiple .cmdline files from temp directories within a 5 minute time period. This may that a malicious script like ADRecon has been executed, regardless of the script title name or cmdlets invoked

MITRE ATT&CK Coverage

References

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 1: Process creation

Rule Body

id: '27535.50074'
title: Potential PowerShell Post-Exploitation Activity
description: 'Threat actors may perform post-exploitation activities using PowerShell
  scripts such as ADRecon. When running ADRecon, PowerShell launches child processes
  to compile and execute payloads and creates several .cmdline files in AppData\Local\Temp
  directories. This use case detects PowerShell-invoked compilations involving csc.exe
  and cvtres.exe referencing multiple .cmdline files from temp directories within
  a 5 minute time period. This may that a malicious script like ADRecon has been executed,
  regardless of the script title name or cmdlets invoked. Atomics T1087.002 Test #4'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<")
  ("powershell.exe" OR "pwsh.exe") ("csc.exe" OR "cvtres.exe") ".cmdline" | regex
  parent_process_name="(?i)(powershell|pwsh)\.exe"| regex process_name="(?i)(csc|cvtres)\.exe"|
  regex process="(?i)\x5cAppData\x5cLocal\x5cTemp.+\.cmdline" | table _time, host,
  user process, parent_process_name, event_count | bin span=300s | stats values(*)
  as * by _time, host | eventstats dc(process) as dc_process by host, _time| where
  dc_process > 3 '
techniques:
- execution:command and scripting interpreter:powershell
- discovery:account discovery
- discovery:system information discovery
technique_id:
- T1059.001
- T1087
- T1082
data_category:
- Windows Sysmon
references:
- https://github.com/sense-of-security/ADRecon/tree/master
- https://www.dnif.it/en/blog/strategies-to-detect-post-exploitation-active-directory-reconnaissance
- https://symantec-enterprise-blogs.security.com/blogs/threat-intelligence/ransomware-hive-conti-avoslocker

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<") ("powershell.exe" OR "pwsh.exe") ("csc.exe" OR "cvtres.exe") ".cmdline"

Stage 2: regex

| regex parent_process_name="(?i)(powershell|pwsh)\.exe"

Stage 3: regex

| regex process_name="(?i)(csc|cvtres)\.exe"

Stage 4: regex

| regex process="(?i)\x5cAppData\x5cLocal\x5cTemp.+\.cmdline"

Stage 5: table

| table _time, host, user process, parent_process_name, event_count

Stage 6: bucket

| bin span=300s

Stage 7: stats

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

Stage 8: eventstats

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

Stage 9: where

| where dc_process > 3

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 1 corpus 226 (splunk 226)
field:"EventID" kind:eq value:"1"
dc_processgt
  • 3 corpus 4 (splunk 4)
field:"dc_process" kind:gt value:"3"
parent_process_nameregex_match
  • (?i)(powershell|pwsh).exe corpus 2 (splunk 2)
field:"parent_process_name" kind:regex_match value:"(?i)(powershell|pwsh).exe"
processregex_match
  • (?i)\x5cAppData\x5cLocal\x5cTemp.+.cmdline corpus 2 (splunk 2)
field:"CommandLine" kind:regex_match value:"(?i)\x5cAppData\x5cLocal\x5cTemp.+.cmdline"
process_nameregex_match
  • (?i)(csc|cvtres).exe corpus 2 (splunk 2)
field:"process_name" kind:regex_match value:"(?i)(csc|cvtres).exe"

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"<EventID>1<"
1"powershell.exe"
1"pwsh.exe"
1"csc.exe"
1"cvtres.exe"
1".cmdline"

ProtocolHandler.exe File Download (Sysmon)

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

ProtocolHandler.exe is a component of Microsoft Office and is typically used for accessing Microsoft Office documents from Outlook and Sharepoint. Adversaries can use ProtocolHandler.exe to download files. This use case detects executions of ProtocolHandler.exe followed by URLs in the command line. Allowlisting of expected Sharepoint domains is recommended to reduce false positives. LOLBINS/LOLBAS

MITRE ATT&CK Coverage

TacticTechniques
Command & Control

References

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 1: Process creation

Rule Body

id: '21901.38720'
title: ProtocolHandler.exe File Download
description: ProtocolHandler.exe is a component of Microsoft Office and is typically
  used for accessing Microsoft Office documents from Outlook and Sharepoint. Adversaries
  can use ProtocolHandler.exe to download files. This use case detects executions
  of ProtocolHandler.exe followed by URLs in the command line. Allowlisting of expected
  Sharepoint domains is recommended to reduce false positives. LOLBINS/LOLBAS
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<")
  "ProtocolHandler.exe" | regex process="(?i)ProtocolHandler\.exe\"?\s+\"?[A-Za-z0-9]{2,6}:\/\/"
  | table _time, host, user, signature_id, process, process_*, parent_process_path,
  parent_process_name | 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://pentera.io/blog/the-lol-isnt-so-funny-when-it-bites-you-in-the-bas/
- https://lolbas-project.github.io/lolbas/OtherMSBinaries/ProtocolHandler/

Stages and Predicates

Stage 1: search

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

Stage 2: regex

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

Stage 3: table

| table _time, host, user, signature_id, process, process_*, parent_process_path,
    parent_process_name

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)ProtocolHandler.exe"?\s+"?[A-Za-z0-9]{2,6}:\/\/ corpus 3 (splunk 3)
field:"CommandLine" kind:regex_match

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"<EventID>1<"
1"ProtocolHandler.exe"

Python PTH File Creation During Package Installation

#
Status
production
Severity
low
Group by
channel, dest, process_id
Author
Onur Mustafa Erdogan, Splunk
Source
github.com/splunk/security_content

The following analytic detects the creation of a Python path configuration (.pth) file in conjunction with a package installation process. Path configuration files placed under site-packages or dist-packages are executed with every subsequent invocation of Python, allowing adversaries to achieve persistence on the victim endpoint regardless of build method or distribution type. This technique was used by the threat actor group TeamPCP during the supply chain compromise of the litellm package. If confirmed malicious, this could result in arbitrary code execution every time Python is invoked on the compromised host.

Known False Positives

  • Legitimate packages, such as those managing namespace packages or editable installs, may create `.pth` files as part of normal installation. Investigate the file contents and parent process to determine legitimacy.

MITRE ATT&CK Coverage

Telemetry Coverage

Rule Body

name: Python PTH File Creation During Package Installation
id: bf581b86-39cd-48b7-9312-d9affb48a8bc
version: 1
creation_date: '2026-08-21'
modification_date: '2026-08-21'
author: Onur Mustafa Erdogan, Splunk
status: production
type: Anomaly
description: |-
    The following analytic detects the creation of a Python path configuration (`.pth`) file in conjunction with a package installation process.
    Path configuration files placed under `site-packages` or `dist-packages` are executed with every subsequent invocation of Python, allowing adversaries to achieve persistence on the victim endpoint regardless of build method or distribution type.
    This technique was used by the threat actor group TeamPCP during the supply chain compromise of the `litellm` package.
    If confirmed malicious, this could result in arbitrary code execution every time Python is invoked on the compromised host.
data_source:
    - Sysmon EventID 1 AND Sysmon EventID 11
search: |-
    `sysmon`
    EventID IN (1,11)
    process_name="python.exe"
    (
        process="* install *"
        OR
        (
            file_name="*.pth"
            action="created"
        )
    )
    | stats count min(_time) as firstTime
                  max(_time) as lastTime
                  values(parent_process_id) as parent_process_id
                  values(parent_process_path) as parent_process_path
                  values(parent_process_name) as parent_process_name
                  values(parent_process) as parent_process
                  values(process_path) as process_path
                  values(process_name) as process_name
                  values(process) as process
                  values(file_name) as file_name
                  values(file_path) as file_path
                  dc(EventID) as dc_event_id

      by dest source process_id

    | search dc_event_id>1 AND process!="*-- setuptools*"

    | table firstTime lastTime
            parent_process_id parent_process_path parent_process_name parent_process
            process_id process_path process_name process
            file_name file_path
            dest source

    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `python_pth_file_creation_during_package_installation_filter`
how_to_implement: |-
    This detection requires Sysmon event logs. Configure your environment to ingest Sysmon process creation (EventID 1)
    and file creation (EventID 11) events, ensuring that file creation events are collected for files with the .pth
    extension. Ingest the data via the appropriate Splunk Technology Add-on and normalize field names using the
    Splunk Common Information Model (CIM).
known_false_positives: |-
    Legitimate packages, such as those managing namespace packages or editable installs, may create `.pth` files as part of normal installation.
    Investigate the file contents and parent process to determine legitimacy.
references:
    - https://blog.talosintelligence.com/the-serpents-tongue-luring-the-python-out-of-its-den/
intermediate_findings:
    entities:
        - field: dest
          type: system
          score: 30
          message: A Python .pth file called [$file_name$] located at [$file_path$] was created on [$dest$] during package installation using [$process$].
threat_objects:
    - field: process
      type: process
    - field: file_name
      type: file_name
    - field: file_path
      type: file_path
analytic_story:
    - Malicious Python Package Installation
    - Compromised Windows Host
    - Windows Persistence Techniques
asset_type: Endpoint
mitre_attack_id:
    - T1546
    - T1195.002
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`sysmon`
EventID IN (1,11)
process_name="python.exe"
(
    process="* install *"
    OR
    (
        file_name="*.pth"
        action="created"
    )
)

Stage 2: stats

| stats count min(_time) as firstTime
              max(_time) as lastTime
              values(parent_process_id) as parent_process_id
              values(parent_process_path) as parent_process_path
              values(parent_process_name) as parent_process_name
              values(parent_process) as parent_process
              values(process_path) as process_path
              values(process_name) as process_name
              values(process) as process
              values(file_name) as file_name
              values(file_path) as file_path
              dc(EventID) as dc_event_id

  by dest source process_id

Stage 3: search

| search dc_event_id>1 AND process!="*-- setuptools*"

Stage 4: table

| table firstTime lastTime
        parent_process_id parent_process_path parent_process_name parent_process
        process_id process_path process_name process
        file_name file_path
        dest source

Stage 5: search

| `security_content_ctime(firstTime)`

Stage 6: search

| `security_content_ctime(lastTime)`

Stage 7: search

| `python_pth_file_creation_during_package_installation_filter`

Indicators

These rows show field, operator, and value matches.

Suspicious Executable by Powershell (Sysmon)

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

Detect when an executable has been launched by powershell and similar processes. Such as powershell cscript or cmd and similar processes spawning cmd.exe, cscript rundll32 and similar processes being a child process of powershell

MITRE ATT&CK Coverage

References

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 1: Process creation

Rule Body

id: '1041.11628'
title: Suspicious Executable by Powershell
description: 'Detect when an executable has been launched by powershell and similar
  processes. Such as powershell cscript or cmd and similar processes spawning cmd.exe,
  cscript rundll32 and similar processes being a child process of powershell. - Threat
  Actor Association: APT29/Nobelium/Cozy Bear, APT34/OilRig, APT41, APT43, FIN7, Flax
  Typhoon, Lancefly, MuddyWater, RedEyes - Software Association: Bazarloader, Blackbyte,
  IcedID, Qakbot/Qbot - #TrendingThreat #Russia #Ukraine'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<")
  "powershell.exe" ("cmd.exe" OR "services.exe" OR "dllhost.exe" OR "rundll32.exe"
  OR "cscript.exe" OR "mshta.exe" OR "regsvr32.exe") | regex parent_process_name="(?i)(powershell\.exe)"
  | regex process_path="(?i)((cmd)|(services)|(dllhost)|(rundll32)|(mshta)|(regsvr32)|(cscript))\.exe"
  | table _time, host, user event_id, parent_*, process_*, process, signature_id,
  src_*, dest_* | bin span=1s | stats values(*) as * by _time, host | where isnotnull(user) '
techniques:
- execution:command and scripting interpreter:powershell
- execution:command and scripting interpreter:windows command shell
technique_id:
- T1059.001
- T1059.003
data_category:
- Process command-line parameters
- Windows Sysmon
references:
- https://docs.broadcom.com/doc/increased-use-of-powershell-in-attacks-16-en
- https://www.clearskysec.com/wp-content/uploads/2018/11/MuddyWater-Operations-in-Lebanon-and-Oman.pdf

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=1) OR "<EventID>1<") "powershell.exe" ("cmd.exe" OR "services.exe" OR "dllhost.exe" OR "rundll32.exe" OR "cscript.exe" OR "mshta.exe" OR "regsvr32.exe")

Stage 2: regex

| regex parent_process_name="(?i)(powershell\.exe)"

Stage 3: regex

| regex process_path="(?i)((cmd)|(services)|(dllhost)|(rundll32)|(mshta)|(regsvr32)|(cscript))\.exe"

Stage 4: table

| table _time, host, user event_id, parent_*, process_*, process, signature_id, src_*, dest_*

Stage 5: bucket

| bin span=1s

Stage 6: stats

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

Stage 7: where

| where isnotnull(user)

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 1 corpus 226 (splunk 226)
field:"EventID" kind:eq value:"1"
parent_process_nameregex_match
  • (?i)(powershell.exe) corpus 2 (splunk 2)
field:"parent_process_name" kind:regex_match value:"(?i)(powershell.exe)"
process_pathregex_match
  • (?i)((cmd)|(services)|(dllhost)|(rundll32)|(mshta)|(regsvr32)|(cscript)).exe corpus 2 (splunk 2)
field:"process_name" kind:regex_match value:"(?i)((cmd)|(services)|(dllhost)|(rundll32)|(mshta)|(regsvr32)|(cscript)).exe"
useris_not_null
  • (no value, null check)
field:"user" kind:is_not_null

Search Terms

These SPL tokens match against raw event text.

StageTerm
1"<EventID>1<"
1"powershell.exe"
1"cmd.exe"
1"services.exe"
1"dllhost.exe"
1"rundll32.exe"
1"cscript.exe"
1"mshta.exe"
1"regsvr32.exe"

WebLogic CVE-2017-10271 (PowerShell)

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

A reverse shell is a shell session established on a connection that is initiated from a remote machine, not from the local host and in this case the session is created using the vulnerability of Weblogic app - wls-wsat Component Deserialization

MITRE ATT&CK Coverage

Telemetry Coverage

Rule Body

id: '5454.5609'
title: WebLogic CVE-2017-10271
description: 'A reverse shell is a shell session established on a connection that
  is initiated from a remote machine, not from the local host and in this case the
  session is created using the vulnerability of Weblogic app - wls-wsat Component
  Deserialization - Threat Actor Association: APT29/Nobelium/Cozy Bear -- #TrendingThreat
  #Russia #Ukraine'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_powershell` TERM(powershell) TERM(-w)
  TERM(hidden) TERM(-nop) TERM(-c) TERM(function) TERM(RSC) AND "system.net.sockets.tcpclient"
  AND "cmd.exe" AND "UseShellExecute" AND EventCode=4103 | rex field=process "\$a\=\''(?<src_ip>(?i)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
  | rex field=process "\$p\=\''(?<dest_port>(?i)\d{1,5}") | table _time, host, user,
  signature_id, process, src_ip, dest_port | bin span=1s | stats values(*) as * by
  _time, host | lookup dnslookup clientip as src_ip OUTPUT clienthost as src_dns |
  iplocation prefix="src_" src_ip| rename src_Country as src_country '
techniques:
- initial-access:exploit public-facing application
- execution:command and scripting interpreter:powershell
technique_id:
- T1190
- T1059.001
data_category:
- PowerShell logs
- Process command-line parameters
references: null

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_powershell` TERM(powershell) TERM(-w) TERM(hidden) TERM(-nop)
    TERM(-c) TERM(function) TERM(RSC) AND "system.net.sockets.tcpclient" AND "cmd.exe"
    AND "UseShellExecute" AND EventCode=4103

Stage 2: rex

| rex field=process "\$a\=\'(?<src_ip>(?i)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")

The parser skipped this rex command.

Stage 3: rex

| rex field=process "\$p\=\'(?<dest_port>(?i)\d{1,5}")

The parser skipped this rex command.

Stage 4: table

| table _time, host, user, signature_id, process, src_ip, dest_port

Stage 5: bucket

| bin span=1s

Stage 6: stats

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

Stage 7: lookup

| lookup dnslookup clientip as src_ip OUTPUT clienthost as src_dns
Lookup table
dnslookup
Key field
clientip as src_ip
Output columns
['clienthost', 'src_dns']

Stage 8: search

| iplocation prefix="src_" src_ip

Stage 9: rename

| rename src_Country as src_country

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 4103 corpus 105 (splunk 105)
field:"EventID" kind:eq value:"4103"
prefixeq
  • src_ corpus 7 (splunk 7)
field:"prefix" kind:eq value:"src_"

Search Terms

These SPL tokens match against raw event text.

StageTerm
1powershell
1"-w"
1hidden
1"-nop"
1"-c"
1function
1RSC
1"system.net.sockets.tcpclient"
1"cmd.exe"
1"UseShellExecute"
8iplocation
8src_ip

Windows AD Privileged Object Access Activity

#
Status
production
Severity
medium
Group by
subject_user_name
Author
Steven Dick
Source
github.com/splunk/security_content

The following analytic detects access attempts to privileged Active Directory objects, such as Domain Admins or Enterprise Admins. It leverages Windows Security Event Code 4662 to identify when these sensitive objects are accessed. This activity is significant because such objects should rarely be accessed by normal users or processes, and unauthorized access attempts may indicate attacker enumeration or lateral movement within the domain. If confirmed malicious, this activity could allow attackers to escalate privileges, persist in the environment, or gain control over critical domain resources.

Known False Positives

  • Service accounts or applications that routinely query Active Directory for information.

MITRE ATT&CK Coverage

Telemetry Coverage

Rule Body

name: Windows AD Privileged Object Access Activity
id: dc2f58bc-8cd2-4e51-962a-694b963acde0
version: 10
creation_date: '2023-08-18'
modification_date: '2026-05-13'
author: Steven Dick
status: production
type: TTP
description: The following analytic detects access attempts to privileged Active Directory objects, such as Domain Admins or Enterprise Admins. It leverages Windows Security Event Code 4662 to identify when these sensitive objects are accessed. This activity is significant because such objects should rarely be accessed by normal users or processes, and unauthorized access attempts may indicate attacker enumeration or lateral movement within the domain. If confirmed malicious, this activity could allow attackers to escalate privileges, persist in the environment, or gain control over critical domain resources.
data_source:
    - Windows Event Log Security 4662
search: |-
    `wineventlog_security` EventCode=4662 ObjectName IN ( "CN=Account Operators,*", "CN=Administrators,*", "CN=Backup Operators,*", "CN=Cert Publishers,*", "CN=Certificate Service DCOM Access,*", "CN=Domain Admins,*", "CN=Domain Controllers,*", "CN=Enterprise Admins,*", "CN=Enterprise Read-only Domain Controllers,*", "CN=Group Policy Creator Owners,*", "CN=Incoming Forest Trust Builders,*", "CN=Microsoft Exchange Servers,*", "CN=Network Configuration Operators,*", "CN=Power Users,*", "CN=Print Operators,*", "CN=Read-only Domain Controllers,*", "CN=Replicators,*", "CN=Schema Admins,*", "CN=Server Operators,*", "CN=Exchange Trusted Subsystem,*", "CN=Exchange Windows Permission,*", "CN=Organization Management,*")
      | rex field=ObjectName "CN\=(?<object_name>[^,]+)"
      | stats values(Computer) as dest, values(object_name) as object_name, dc(ObjectName) as object_count, min(_time) as firstTime, max(_time) as lastTime, count
        BY SubjectUserName
      | rename SubjectUserName as user
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `windows_ad_privileged_object_access_activity_filter`
how_to_implement: Enable Audit Directory Service Access via GPO and collect event code 4662. The required SACLs need to be created for the relevant objects. Be aware Splunk filters this event by default on the Windows TA.
known_false_positives: Service accounts or applications that routinely query Active Directory for information.
references:
    - https://medium.com/securonix-tech-blog/detecting-ldap-enumeration-and-bloodhound-s-sharphound-collector-using-active-directory-decoys-dfc840f2f644
    - https://learn.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4662
    - https://attack.mitre.org/tactics/TA0007/
finding:
    title: The account $user$ accessed $object_count$ privileged AD object(s).
    entity:
        field: user
        type: user
        score: 50
analytic_story:
    - Active Directory Discovery
    - BlackSuit Ransomware
asset_type: Endpoint
mitre_attack_id:
    - T1087.002
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`wineventlog_security` EventCode=4662 ObjectName IN (
    "CN=Account Operators,*",
    "CN=Administrators,*",
    "CN=Backup Operators,*",
    "CN=Cert Publishers,*",
    "CN=Certificate Service DCOM Access,*",
    "CN=Domain Admins,*",
    "CN=Domain Controllers,*",
    "CN=Enterprise Admins,*",
    "CN=Enterprise Read-only Domain Controllers,*",
    "CN=Group Policy Creator Owners,*",
    "CN=Incoming Forest Trust Builders,*",
    "CN=Microsoft Exchange Servers,*",
    "CN=Network Configuration Operators,*",
    "CN=Power Users,*",
    "CN=Print Operators,*",
    "CN=Read-only Domain Controllers,*",
    "CN=Replicators,*",
    "CN=Schema Admins,*",
    "CN=Server Operators,*",
    "CN=Exchange Trusted Subsystem,*",
    "CN=Exchange Windows Permission,*",
    "CN=Organization Management,*"
)

Stage 2: rex

| rex field=ObjectName "CN\=(?<object_name>[^,]+)"

Stage 3: stats

| stats
    values(Computer) as dest,
    values(object_name) as object_name,
    dc(ObjectName) as object_count,
    min(_time) as firstTime,
    max(_time) as lastTime,
    count
  BY SubjectUserName

Stage 4: rename

| rename SubjectUserName as user

Stage 5: search

| `security_content_ctime(firstTime)`

Stage 6: search

| `security_content_ctime(lastTime)`

Stage 7: search

| `windows_ad_privileged_object_access_activity_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 4662 corpus 8 (splunk 7, elastic 1)
field:"EventID" kind:eq value:"4662"
ObjectNamein
  • CN=Account Operators,*
  • CN=Administrators,*
  • CN=Backup Operators,*
  • CN=Cert Publishers,*
  • CN=Certificate Service DCOM Access,*
  • CN=Domain Admins,*
  • CN=Domain Controllers,*
  • CN=Enterprise Admins,*
  • CN=Enterprise Read-only Domain Controllers,*
  • CN=Exchange Trusted Subsystem,*
  • CN=Exchange Windows Permission,*
  • CN=Group Policy Creator Owners,*
  • CN=Incoming Forest Trust Builders,*
  • CN=Microsoft Exchange Servers,*
  • CN=Network Configuration Operators,*
  • CN=Organization Management,*
  • CN=Power Users,*
  • CN=Print Operators,*
  • CN=Read-only Domain Controllers,*
  • CN=Replicators,*
  • CN=Schema Admins,*
  • CN=Server Operators,*
field:"ObjectName" kind:in

Windows Content Copied from Browser was Executed

#
Status
production
Severity
medium
Group by
dest, hash_command, user
Author
Onur Mustafa Erdogan, Splunk
Source
github.com/splunk/security_content

The following analytic correlates modifications to the Windows RunMRU registry key with clipboard content changes initiated by browsers. It aims to detect ClickFix scenarios in which commands copied from a browser are subsequently executed on the Windows system through the Run dialog box.

Known False Positives

  • No false positives have been identified at this time.

MITRE ATT&CK Coverage

Telemetry Coverage

Rule Body

name: Windows Content Copied from Browser was Executed
id: 5d1fdbcb-5ed9-4190-85c8-7f9026450a0b
version: 1
creation_date: '2026-09-07'
modification_date: '2026-09-07'
author: Onur Mustafa Erdogan, Splunk
status: production
type: TTP
description: |-
    The following analytic correlates modifications to the Windows RunMRU registry key with clipboard content
    changes initiated by browsers. It aims to detect ClickFix scenarios in which commands copied
    from a browser are subsequently executed on the Windows system through the Run dialog box.
data_source:
    - Sysmon EventID 13 AND Sysmon EventID 24
search: |-
    `sysmon`
    EventID IN (13, 24)
    (
        registry_key_name=*RunMRU*
        OR
        process_name IN (
        "360se.exe", "arc.exe", "atlas.exe", "avastbrowser.exe", "avgbrowser.exe", "blpbrowser.exe", "brave.exe", "braveupdate.exe",
        "chrome.exe", "chromium.exe", "coccoc.exe", "dragon.exe", "duckduckgo.exe", "epic.exe", "firefox.exe", "ghost.exe",
        "iexplore.exe", "iridium.exe", "iron.exe", "maxthon.exe", "microsoftedge.exe", "microsoftedgeupdate.exe", "msedge.exe",
        "msedgewebview2.exe", "opera.exe", "opera_autoupdate.exe", "perplexity.exe", "rave.exe", "safari.exe", "shift.exe",
        "sidekick.exe", "thorium.exe", "torch.exe", "vivaldi.exe", "wavebrowser.exe", "whale.exe", "zen.exe"
        )
    )
    | eval trimmed_command = rtrim(registry_value_data, "\1")
    | eval utf16le_command = urldecode(replace(trimmed_command, "(.)", "\1%00"))
    | eval sha256_process=upper(sha256(utf16le_command))
    | eval hash_command=coalesce(SHA256,sha256_process)
    | stats min(_time) as firstTime max(_time) as lastTime values(process_name) as process_name
        values(trimmed_command) as process values(EventID) as EventID dc(EventID) as dc_EventID count
        by hash_command dest user
    | search dc_EventID>1
    | eval process_name = mvfilter(
        process_name IN (
        "360se.exe", "arc.exe", "atlas.exe", "avastbrowser.exe", "avgbrowser.exe", "blpbrowser.exe", "brave.exe", "braveupdate.exe",
        "chrome.exe", "chromium.exe", "coccoc.exe", "dragon.exe", "duckduckgo.exe", "epic.exe", "firefox.exe", "ghost.exe",
        "iexplore.exe", "iridium.exe", "iron.exe", "maxthon.exe", "microsoftedge.exe", "microsoftedgeupdate.exe", "msedge.exe",
        "msedgewebview2.exe", "opera.exe", "opera_autoupdate.exe", "perplexity.exe", "rave.exe", "safari.exe", "shift.exe",
        "sidekick.exe", "thorium.exe", "torch.exe", "vivaldi.exe", "wavebrowser.exe", "whale.exe", "zen.exe"
        )
      )
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `windows_content_copied_from_browser_was_executed_filter`
how_to_implement: |-
    This detection requires Sysmon event logs. Configure your environment to ingest Sysmon registry modification (Event ID 13)
    and clipboard change (Event ID 24) events. Ensure that registry modification events are collected for the RunMRU registry key
    and clipboard change events are collected from common browser processes. Ingest the data through the appropriate Splunk technology
    add-on and normalize field names using the Splunk Common Information Model (CIM).
known_false_positives: No false positives have been identified at this time.
references:
    - https://socradar.io/blog/doublecup-clickfix-loader-devicemanager-rats/
    - https://www.huntress.com/blog/clickfix-matanbuchus-astarionrat-analysis
finding:
    title: The content [$process$] was copied from [$process_name$] to the clipboard and was executed through the Run dialog box on [$dest$]
    entity:
        field: dest
        type: system
        score: 50
threat_objects:
    - field: process
      type: process
    - field: hash_command
      type: process_hash
analytic_story:
    - Fake CAPTCHA Campaigns
asset_type: Endpoint
mitre_attack_id:
    - T1202
    - T1059.001
    - T1059.003
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`sysmon`
EventID IN (13, 24)
(
    registry_key_name=*RunMRU*
    OR process_name IN (
        "360se.exe",
        "arc.exe",
        "atlas.exe",
        "avastbrowser.exe",
        "avgbrowser.exe",
        "blpbrowser.exe",
        "brave.exe",
        "braveupdate.exe",
        "chrome.exe",
        "chromium.exe",
        "coccoc.exe",
        "dragon.exe",
        "duckduckgo.exe",
        "epic.exe",
        "firefox.exe",
        "ghost.exe",
        "iexplore.exe",
        "iridium.exe",
        "iron.exe",
        "maxthon.exe",
        "microsoftedge.exe",
        "microsoftedgeupdate.exe",
        "msedge.exe",
        "msedgewebview2.exe",
        "opera.exe",
        "opera_autoupdate.exe",
        "perplexity.exe",
        "rave.exe",
        "safari.exe",
        "shift.exe",
        "sidekick.exe",
        "thorium.exe",
        "torch.exe",
        "vivaldi.exe",
        "wavebrowser.exe",
        "whale.exe",
        "zen.exe"
    )
)

Stage 2: eval

| eval trimmed_command = rtrim(registry_value_data, "\1")

Stage 3: eval

| eval utf16le_command = urldecode(replace(trimmed_command, "(.)", "\1%00"))

Stage 4: macro (not parsed)

| eval sha256_process=upper(sha256(utf16le_command))

Stage 5: eval

| eval hash_command=coalesce(SHA256,sha256_process)

Stage 6: stats

| stats min(_time) as firstTime max(_time) as lastTime values(process_name) as process_name
    values(trimmed_command) as process values(EventID) as EventID dc(EventID) as dc_EventID count
    by hash_command dest user

Stage 7: search

| search dc_EventID>1

Stage 8: eval

| eval process_name = mvfilter(
    process_name IN (
    "360se.exe", "arc.exe", "atlas.exe", "avastbrowser.exe", "avgbrowser.exe", "blpbrowser.exe", "brave.exe", "braveupdate.exe",
    "chrome.exe", "chromium.exe", "coccoc.exe", "dragon.exe", "duckduckgo.exe", "epic.exe", "firefox.exe", "ghost.exe",
    "iexplore.exe", "iridium.exe", "iron.exe", "maxthon.exe", "microsoftedge.exe", "microsoftedgeupdate.exe", "msedge.exe",
    "msedgewebview2.exe", "opera.exe", "opera_autoupdate.exe", "perplexity.exe", "rave.exe", "safari.exe", "shift.exe",
    "sidekick.exe", "thorium.exe", "torch.exe", "vivaldi.exe", "wavebrowser.exe", "whale.exe", "zen.exe"
    )
)

Stage 9: search

| `security_content_ctime(firstTime)`

Stage 10: search

| `security_content_ctime(lastTime)`

Stage 11: search

| `windows_content_copied_from_browser_was_executed_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventIDin
  • 13 corpus 3 (splunk 3)
  • 24
field:"EventID" kind:in
dc_EventIDgt
  • 1
field:"dc_EventID" kind:gt value:"1"
process_namein
  • 360se.exe
  • arc.exe
  • atlas.exe
  • avastbrowser.exe
  • avgbrowser.exe
  • blpbrowser.exe
  • brave.exe corpus 2 (splunk 2)
  • braveupdate.exe
  • chrome.exe corpus 2 (splunk 2)
  • chromium.exe
  • coccoc.exe
  • dragon.exe
  • duckduckgo.exe
  • epic.exe
  • firefox.exe
  • ghost.exe
  • iexplore.exe
  • iridium.exe
  • iron.exe
  • maxthon.exe
  • microsoftedge.exe
  • microsoftedgeupdate.exe
  • msedge.exe corpus 2 (splunk 2)
  • msedgewebview2.exe
  • opera.exe corpus 2 (splunk 2)
  • opera_autoupdate.exe
  • perplexity.exe
  • rave.exe
  • safari.exe
  • shift.exe
  • sidekick.exe
  • thorium.exe
  • torch.exe
  • vivaldi.exe corpus 2 (splunk 2)
  • wavebrowser.exe
  • whale.exe
  • zen.exe
field:"process_name" kind:in
registry_key_nameeq
  • *RunMRU*
field:"TargetObject" kind:eq value:"*RunMRU*"

Windows Credentials from Password Stores Creation

#
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
Teoderick Contreras, Splunk
Source
github.com/splunk/security_content

The following analytic detects the execution of the Windows OS tool cmdkey.exe, which is used to create stored usernames, passwords, or credentials. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process execution logs and command-line arguments. This activity is significant because cmdkey.exe is often abused by post-exploitation tools and malware, such as Darkgate, to gain unauthorized access. If confirmed malicious, this behavior could allow attackers to escalate privileges and maintain persistence on the targeted host, facilitating further attacks and potential data breaches.

Known False Positives

  • network administrator can use this tool for auditing process.

MITRE ATT&CK Coverage

TacticTechniques
Credential Access

Telemetry Coverage

Rule Body

name: Windows Credentials from Password Stores Creation
id: c0c5a479-bf57-4ca0-af3a-4c7081e5ba05
version: 12
creation_date: '2022-12-06'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: TTP
description: The following analytic detects the execution of the Windows OS tool cmdkey.exe, which is used to create stored usernames, passwords, or credentials. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process execution logs and command-line arguments. This activity is significant because cmdkey.exe is often abused by post-exploitation tools and malware, such as Darkgate, to gain unauthorized access. If confirmed malicious, this behavior could allow attackers to escalate privileges and maintain persistence on the targeted host, facilitating further attacks and potential data breaches.
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="cmdkey.exe"
        OR
        Processes.original_file_name = "cmdkey.exe"
        AND
        Processes.process = "*/generic*" Processes.process IN ("*/user*", "*/password*")
      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_credentials_from_password_stores_creation_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: network administrator can use this tool for auditing process.
references:
    - https://malpedia.caad.fkie.fraunhofer.de/details/win.darkgate
finding:
    title: a process $process_name$ was executed on $dest$ to create stored credentials
    entity:
        field: dest
        type: system
        score: 50
analytic_story:
    - Compromised Windows Host
    - DarkGate Malware
    - NetSupport RMM Tool Abuse
asset_type: Endpoint
mitre_attack_id:
    - T1555
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="cmdkey.exe"
    OR
    Processes.original_file_name = "cmdkey.exe"
    AND
    Processes.process = "*/generic*" Processes.process IN ("*/user*", "*/password*")
  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_credentials_from_password_stores_creation_filter`

Indicators

These rows show field, operator, and value matches.

Windows Find Interesting ACL with FindInterestingDomainAcl

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

The following analytic detects the execution of the Find-InterestingDomainAcl cmdlet, part of the PowerView toolkit, using PowerShell Script Block Logging (EventCode=4104). This detection leverages logs to identify when this command is run, which is significant as adversaries may use it to find misconfigured or unusual Access Control Lists (ACLs) within a domain. If confirmed malicious, this activity could allow attackers to identify privilege escalation opportunities or weak security configurations in Active Directory, potentially leading to unauthorized access or further exploitation.

Known False Positives

  • Administrators may leverage PowerSploit tools for legitimate reasons, filter as needed.

MITRE ATT&CK Coverage

Telemetry Coverage

Rule Body

name: Windows Find Interesting ACL with FindInterestingDomainAcl
id: e4a96dfd-667a-4487-b942-ccef5a1e81e8
version: 11
creation_date: '2023-09-01'
modification_date: '2026-05-13'
author: Gowthamaraj Rajendran, Mauricio Velazco, Splunk
status: production
type: TTP
description: The following analytic detects the execution of the `Find-InterestingDomainAcl` cmdlet, part of the PowerView toolkit, using PowerShell Script Block Logging (EventCode=4104). This detection leverages logs to identify when this command is run, which is significant as adversaries may use it to find misconfigured or unusual Access Control Lists (ACLs) within a domain. If confirmed malicious, this activity could allow attackers to identify privilege escalation opportunities or weak security configurations in Active Directory, potentially leading to unauthorized access or further exploitation.
data_source:
    - Powershell Script Block Logging 4104
search: |-
    `powershell` EventCode=4104 ScriptBlockText = "*Find-InterestingDomainAcl*"
      | 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)`
      | `windows_find_interesting_acl_with_findinterestingdomainacl_filter`
how_to_implement: The following Hunting analytic requires PowerShell operational logs to be imported. Modify the powershell macro as needed to match the sourcetype or add index. This analytic is specific to 4104, or PowerShell Script Block Logging.
known_false_positives: Administrators may leverage PowerSploit tools for legitimate reasons, filter as needed.
references:
    - https://powersploit.readthedocs.io/en/latest/Recon/Find-InterestingDomainAcl/
    - https://attack.mitre.org/techniques/T1087/002/
    - https://book.hacktricks.xyz/windows-hardening/basic-powershell-for-pentesters/powerview
finding:
    title: Suspicious PowerShell Find-InterestingDomainAcl was identified on endpoint $dest$ by user $user_id$.
    entity:
        field: user_id
        type: user
        score: 50
intermediate_findings:
    entities:
        - field: dest
          type: system
          score: 50
          message: Suspicious PowerShell Find-InterestingDomainAcl was identified on endpoint $dest$ by user $user_id$.
analytic_story:
    - Active Directory Discovery
asset_type: Endpoint
mitre_attack_id:
    - T1087.002
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`powershell` EventCode=4104 ScriptBlockText = "*Find-InterestingDomainAcl*"

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

| `windows_find_interesting_acl_with_findinterestingdomainacl_filter`

Indicators

These rows show field, operator, and value matches.

Windows Impair Defense Set Win Defender Smart Screen Level To Warn

#
Status
production
Severity
medium
Group by
TargetObject, computer_name, details, event_type, process_guid, process_id, registry_hive, registry_path, registry_status, registry_value_name, registry_value_type, user, vendor_product
Author
Teoderick Contreras, Splunk
Source
github.com/splunk/security_content

The following analytic detects modifications to the Windows registry that set the Windows Defender SmartScreen level to "warn." This detection leverages data from the Endpoint.Registry data model, specifically monitoring changes to the ShellSmartScreenLevel registry value. This activity is significant because altering SmartScreen settings to "warn" can reduce immediate suspicion from users, allowing potentially malicious executables to run with just a warning prompt. If confirmed malicious, this could enable attackers to execute harmful files, increasing the risk of successful malware deployment and subsequent system compromise.

Known False Positives

  • It is unusual to turn this feature off a Windows system since it is a default security control, although it is not rare for some policies to disable it. Although no false positives have been identified, use the provided filter macro to tune the search.

MITRE ATT&CK Coverage

TacticTechniques
Defense Impairment

Telemetry Coverage

Rule Body

name: Windows Impair Defense Set Win Defender Smart Screen Level To Warn
id: cc2a3425-2703-47e7-818f-3dca1b0bc56f
version: 11
creation_date: '2024-01-30'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: TTP
description: The following analytic detects modifications to the Windows registry that set the Windows Defender SmartScreen level to "warn." This detection leverages data from the Endpoint.Registry data model, specifically monitoring changes to the ShellSmartScreenLevel registry value. This activity is significant because altering SmartScreen settings to "warn" can reduce immediate suspicion from users, allowing potentially malicious executables to run with just a warning prompt. If confirmed malicious, this could enable attackers to execute harmful files, increasing the risk of successful malware deployment and subsequent system compromise.
data_source:
    - Sysmon EventID 13
search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Registry where Registry.registry_path= "*\\Microsoft\\Windows\\System\\ShellSmartScreenLevel" Registry.registry_value_data="Warn" by Registry.action Registry.dest Registry.process_guid Registry.process_id Registry.registry_hive Registry.registry_path Registry.registry_key_name Registry.registry_value_data Registry.registry_value_name Registry.registry_value_type Registry.status Registry.user Registry.vendor_product | `drop_dm_object_name(Registry)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_impair_defense_set_win_defender_smart_screen_level_to_warn_filter`'
how_to_implement: To successfully implement this search you need to be ingesting information on process that include the name of the process responsible for the changes from your endpoints into the `Endpoint` datamodel in the `Registry` node.
known_false_positives: It is unusual to turn this feature off a Windows system since it is a default security control, although it is not rare for some policies to disable it. Although no false positives have been identified, use the provided filter macro to tune the search.
references:
    - https://x.com/malmoeb/status/1742604217989415386?s=20
    - https://github.com/undergroundwires/privacy.sexy
finding:
    title: Windows Defender SmartScreen Level to Warn on $dest$.
    entity:
        field: dest
        type: system
        score: 50
analytic_story:
    - Windows Defense Evasion Tactics
    - Windows Registry Abuse
asset_type: Endpoint
mitre_attack_id:
    - T1685
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: tstats

| tstats `security_content_summariesonly`
    count
    min(_time) as firstTime
    max(_time) as lastTime
  FROM datamodel=Endpoint.Registry
  where Registry.registry_path= "*\\Microsoft\\Windows\\System\\ShellSmartScreenLevel"
    Registry.registry_value_data="Warn"
  by
    Registry.action
    Registry.dest
    Registry.process_guid
    Registry.process_id
    Registry.registry_hive
    Registry.registry_path
    Registry.registry_key_name
    Registry.registry_value_data
    Registry.registry_value_name
    Registry.registry_value_type
    Registry.status
    Registry.user
    Registry.vendor_product

Stage 2: search

| `drop_dm_object_name(Registry)`

Stage 3: search

| `security_content_ctime(firstTime)`

Stage 4: search

| `security_content_ctime(lastTime)`

Stage 5: search

| `windows_impair_defense_set_win_defender_smart_screen_level_to_warn_filter`

Indicators

These rows show field, operator, and value matches.

Windows Potential Cloudflared Network Connection

#
Status
production
Group by
All_Traffic.action, All_Traffic.app, All_Traffic.dest, All_Traffic.direction, All_Traffic.dvc, All_Traffic.protocol, All_Traffic.protocol_version, All_Traffic.src, All_Traffic.transport, All_Traffic.user, All_Traffic.vendor_product, dest_ip, destination_port, src_ip
Author
Raven Tait, Splunk
Source
github.com/splunk/security_content

This analytic detects network connection events possibly associated with the Cloudflared tool, a tool used to create tunnels via Cloudflare. Cloudflared is functionally very similar to ngrok, an ingress-as-a-service tool. It reaches out to the Cloudflare Edge Servers, creating an outbound connection over HTTPS(HTTP2/QUIC), where the tunnel's controller makes services or private networks accessible.

Known False Positives

  • Some legitimate use cases include authorized tunneling for remote access or service exposure in enterprise environments. Filter alerts for approved Cloudflared deployments to reduce false positives.

MITRE ATT&CK Coverage

TacticTechniques
Command & Control

Telemetry Coverage

ProviderRecord / event type
SysmonEvent ID 3: Network connection

Rule Body

name: Windows Potential Cloudflared Network Connection
id: 29798d45-c9c7-4240-a5ef-d7648c016024
version: 2
creation_date: '2026-05-05'
modification_date: '2026-05-13'
author: Raven Tait, Splunk
status: production
type: Hunting
description: |-
    This analytic detects network connection events possibly associated with the Cloudflared tool, a tool used to create tunnels via Cloudflare.
    Cloudflared is functionally very similar to ngrok, an ingress-as-a-service tool.
    It reaches out to the Cloudflare Edge Servers, creating an outbound connection over HTTPS(HTTP2/QUIC), where the tunnel's controller makes services or private networks accessible.
data_source:
    - Sysmon EventID 3
search: |-
    | tstats `security_content_summariesonly`
       count min(_time) as firstTime
             max(_time) as lastTime
             values(All_Traffic.src_port) as src_port

    from datamodel=Network_Traffic.All_Traffic where

    All_Traffic.dest_port=7844

    BY All_Traffic.action All_Traffic.app All_Traffic.dest
       All_Traffic.dest_ip All_Traffic.dest_port All_Traffic.direction
       All_Traffic.dvc All_Traffic.protocol All_Traffic.protocol_version
       All_Traffic.src All_Traffic.src_ip All_Traffic.transport
       All_Traffic.user All_Traffic.vendor_product

    | `drop_dm_object_name(All_Traffic)`
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `windows_potential_cloudflared_network_connection_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 use cases include authorized tunneling for remote access or service exposure in enterprise environments. Filter alerts for approved Cloudflared deployments to reduce false positives.
references:
    - https://www-bleepingcomputer-com.cdn.ampproject.org/c/s/www.bleepingcomputer.com/news/security/hackers-increasingly-abuse-cloudflare-tunnels-for-stealthy-connections/amp/
    - https://github.com/cloudflare/cloudflared
    - https://www.guidepointsecurity.com/blog/tunnel-vision-cloudflared-abused-in-the-wild/
analytic_story:
    - Reverse Network Proxy
asset_type: Endpoint
mitre_attack_id:
    - T1572
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
         values(All_Traffic.src_port) as src_port

from datamodel=Network_Traffic.All_Traffic where

All_Traffic.dest_port=7844

BY All_Traffic.action All_Traffic.app All_Traffic.dest
   All_Traffic.dest_ip All_Traffic.dest_port All_Traffic.direction
   All_Traffic.dvc All_Traffic.protocol All_Traffic.protocol_version
   All_Traffic.src All_Traffic.src_ip All_Traffic.transport
   All_Traffic.user All_Traffic.vendor_product

Stage 2: search

| `drop_dm_object_name(All_Traffic)`

Stage 3: search

| `security_content_ctime(firstTime)`

Stage 4: search

| `security_content_ctime(lastTime)`

Stage 5: search

| `windows_potential_cloudflared_network_connection_filter`

Indicators

These rows show field, operator, and value matches.

Windows Remote Service Rdpwinst Tool Execution

#
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
Teoderick Contreras, Splunk
Source
github.com/splunk/security_content

The following analytic detects the execution of the RDPWInst.exe tool, which is an RDP wrapper library used to enable remote desktop host support and concurrent RDP sessions. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process names, original file names, and specific command-line arguments. This activity is significant because adversaries can abuse this tool to establish unauthorized RDP connections, facilitating remote access and potential lateral movement within the network. If confirmed malicious, this could lead to unauthorized access, data exfiltration, and further compromise of the targeted host.

Known False Positives

  • This tool was designed for home usage and not commonly seen in production environment. Filter as needed.

MITRE ATT&CK Coverage

Telemetry Coverage

Rule Body

name: Windows Remote Service Rdpwinst Tool Execution
id: c8127f87-c7c9-4036-89ed-8fe4b30e678c
version: 14
creation_date: '2022-07-06'
modification_date: '2026-05-13'
author: Teoderick Contreras, Splunk
status: production
type: TTP
description: The following analytic detects the execution of the RDPWInst.exe tool, which is an RDP wrapper library used to enable remote desktop host support and concurrent RDP sessions. This detection leverages data from Endpoint Detection and Response (EDR) agents, focusing on process names, original file names, and specific command-line arguments. This activity is significant because adversaries can abuse this tool to establish unauthorized RDP connections, facilitating remote access and potential lateral movement within the network. If confirmed malicious, this could lead to unauthorized access, data exfiltration, and further compromise of the targeted host.
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="RDPWInst.exe"
            OR
            Processes.original_file_name="RDPWInst.exe"
        )
        AND Processes.process IN ("* -i*", "* -s*", "* -o*", "* -w*", "* -r*")
      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_remote_service_rdpwinst_tool_execution_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: This tool was designed for home usage and not commonly seen in production environment. Filter as needed.
references:
    - https://app.any.run/tasks/a6f2ffe2-e6e2-4396-ae2e-04ea0143f2d8/
finding:
    title: Rdpwinst.exe executed on $dest$.
    entity:
        field: dest
        type: system
        score: 50
analytic_story:
    - Azorult
    - Compromised Windows Host
    - Windows RDP Artifacts and Defense Evasion
    - Scattered Lapsus$ Hunters
asset_type: Endpoint
mitre_attack_id:
    - T1021.001
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="RDPWInst.exe"
      OR Processes.original_file_name="RDPWInst.exe"
  )
    AND Processes.process IN ("* -i*", "* -s*", "* -o*", "* -w*", "* -r*")
  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_remote_service_rdpwinst_tool_execution_filter`

Indicators

These rows show field, operator, and value matches.

Back to all Splunk rules