Detection rules › Splunk

Windows Dir Piped to Findstr Activity

Status
production
Group by
CurrentDirectory, IntegrityLevel, command_line, computer_name, event_action, original_file_name, parent_command_line, parent_process_guid, parent_process_id, parent_process_name, 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 dir command piped to findstr on Windows systems. This technique is commonly used by attackers during the reconnaissance phase to enumerate files, directories, or sensitive data by filtering directory listings for specific strings or patterns. While this command combination can have legitimate administrative uses, adversaries frequently leverage it to locate credentials, configuration files, or other high-value targets on a compromised system. If confirmed malicious, this activity could indicate an attacker is actively mapping the file system in preparation for data exfiltration, lateral movement, or further exploitation.

Known false positives

  • Legitimate administrative tasks and scripts may use `dir` piped to `findstr` for routine file searches. Filter based on known user behavior and approved administrative activity.

MITRE ATT&CK coverage

TacticTechniques
Collection

Telemetry coverage

Rule body

name: Windows Dir Piped to Findstr Activity
id: 43cd7a59-3d52-4969-a01a-d677630b1426
version: 1
creation_date: '2026-07-30'
modification_date: '2026-07-30'
author: Raven Tait, Splunk
status: production
type: Hunting
description: |-
    The following analytic detects the execution of the `dir` command piped to `findstr` on Windows systems.
    This technique is commonly used by attackers during the reconnaissance phase to enumerate files, directories, or sensitive data by filtering directory listings for specific strings or patterns.
    While this command combination can have legitimate administrative uses, adversaries frequently leverage it to locate credentials, configuration files, or other high-value targets on a compromised system.
    If confirmed malicious, this activity could indicate an attacker is actively mapping the file system in preparation for data exfiltration, lateral movement, or further 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.process="*dir *|*findstr *"
    
    by Processes.process Processes.vendor_product Processes.user_id Processes.process_hash
       Processes.parent_process_name Processes.parent_process_exec Processes.action
       Processes.dest Processes.process_current_directory Processes.process_path
       Processes.process_integrity_level Processes.original_file_name
       Processes.parent_process Processes.parent_process_path Processes.parent_process_guid
       Processes.parent_process_id Processes.process_guid
       Processes.process_id Processes.user Processes.process_name
    
    | `drop_dm_object_name(Processes)`
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `windows_dir_piped_to_findstr_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: |-
    Legitimate administrative tasks and scripts may use `dir` piped to `findstr` for routine file searches.
    Filter based on known user behavior and approved administrative activity.
analytic_story:
    - Suspicious Command-Line Executions
    - Windows Discovery Techniques
    - Active Directory Discovery
asset_type: Endpoint
mitre_attack_id:
    - T1119
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="*dir *|*findstr *"

by Processes.process Processes.vendor_product Processes.user_id Processes.process_hash
   Processes.parent_process_name Processes.parent_process_exec Processes.action
   Processes.dest Processes.process_current_directory Processes.process_path
   Processes.process_integrity_level Processes.original_file_name
   Processes.parent_process Processes.parent_process_path Processes.parent_process_guid
   Processes.parent_process_id Processes.process_guid
   Processes.process_id Processes.user Processes.process_name

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_dir_piped_to_findstr_activity_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Processes.processeq
  • "*dir *|*findstr *"
field:"CommandLine" kind:eq