🔏
RootGuard
HomeSOC OperationsIncident ResponseWindows ForensicsLinux ForensicsKQL Investigations
  • Welcome
    • RootGuard
      • Who Am I?
        • Professional Profile
  • Resources Hub
    • Blogs
      • Articles
        • Safeguarding SMEs: The Strategic Importance of a Security Operations Center (SOC)
      • Posts
        • Roadmap to Becoming a Cybersecurity Specialist
        • Starting a Career in Cybersecurity
        • A Guide to Landing Your First Cybersecurity Analyst Role
        • Moving from Intermediate to Expert Incident Responder
  • SOC Operations
    • Introduction
      • Development Resources
        • SOC Analysts Roadmap
        • Becoming A SOC Analyst
        • SOC Analysts Prep Interview Questions
    • Essential Skills
      • Critical Windows EventIDs to Monitor
    • Junior Analyst Skills
      • Splunk Use Cases
      • KQL Use Cases
        • Reconnaissance (TA0043)
        • Initial Access (TA0001)
        • Execution (TA0002)
        • Persistence (TA0003)
        • Privilege Escalation (TA0004)
        • Defence Evasion (TA0005)
        • Credential Access (TA0006)
        • Discovery (TA0007)
        • Lateral Movement (TA0008)
        • Collection (TA0009)
        • Command and Control (TA0011)
        • Exfiltration (TA0010)
        • Impact (TA0040)
      • Investigating Common Attacks
        • Domain Dominance Attacks - Detection & Analysis
        • Investigating a Suspected AD FS Distributed Key Management (DKM) Attack
        • Authentication From Suspicious DeviceName
        • Identifying Interactive or RemoteInteractive Session From Service Account
        • Identifying Split or Part Archive File Transfers
        • Detect Potential Cleartext Credentials in Command Line
        • Detecting Command Line Interpreters Launched via Scheduled Tasks
        • Detecting Files Containing Potentially Sensitive Data
        • Detecting DeviceNetworkEvents From Windows Processes and Domains by TLD
        • Detecting Silent cmd.exe Execution With Redirected STDERR & STDOUT
        • Detecting Low Prevalence DLL Loaded From Process In User Downloads Directory
        • Detecting Virtual Drive Mounted From Archive
        • Identify Execution of Script From User's Downloads Folder
        • Identify Potential RDP Tunneled Sessions
        • Identify Instances of PowerShell Invoke-WebRequest, IWR or Net.WebClient
        • Identify Processes Launched by PowerShell Remoting (WSMProvHost.exe)
        • Detect DeviceNetworkEvents for LOLBAS with Download or Upload Functions
        • Detect Execution of PSEXESVC via Remote Systems
        • Identify Suspicious String in Service Creation ImagePath
        • Identify File with Double Extensions
        • Detect Potential Cleartext Credentials in Commandline
        • Detect When Large Number of Files Downloaded From OneDrive or SharePoint
        • Identify and Investigate Phishing Attacks with KQL
      • PowerShell for SecOps
        • Powershell Remoting
        • Reconnaissance Discovery
        • Initial Access Discovery
        • Execution Discovery
        • Persistence Discovery
        • Privilege Escalation Discovery
        • Defence Evasion Discovery
        • Credential Access Discovery
        • Discovery
        • Lateral Movement Discovery
        • Collection Discovery
        • Command & Control (C2) Discovery
        • Exfiltration Discovery
        • Impact Discovery
      • Packet Analysis (pcap)
        • Tcpdump
        • Tcpdump (Intermediate)
        • Tshark
        • Ngrep
      • Investigating Suspicious Emails Using KQL
    • Intermediate and Advanced Skills
      • Investigate Using MITRE ATT&CK Methodology
        • Reconnaissance (TA0043) Techniques
        • Resource Development (TA0042) Techniques
        • Initial Access (TA0001) Techniques
        • Command Execution (TA0002) Techniques
        • Persistence (TA0003) Techniques
        • Privilege Escalation (TA0004) Techniques
        • Defence Evasion (TA0005) Techniques
        • Credential Access (TA0006) Techniques
        • Discovery (TA0007) Techniques
        • Lateral Movement (TA0008) Techniques
        • Collection (TA0009) Techniques
        • Command and Control (C2) (TA0011) Techniques
        • Exfiltration (TA0010) Techniques
        • Impact (TA0040) Techniques
    • Vulnerability Management
    • Malware Analysis
  • DFIR
    • Incident Response
      • Incident Triage
        • Triage Types and Processes
        • PowerShell for Detection and Analysis
          • Malware or Compromise Investigation
          • Lateral Movement Discovery
        • Registry Analysis
        • Sysinternals Intrusion Analysis
        • PowerShell Intrusion Analysis
        • Velociraptor Intrusion Analysis
        • Zimmerman Tools Intrusion Analysis
      • KAPE Artifacts Analysis
      • Velociraptor Artifacts Analysis
      • Using The Unified Kill Chain Model to Analyse Individual Cyber Attacks
        • Phase 1 - Gaining an Initial Foothold
          • Gaining Access to the Network
          • Establishing a Foothold
          • Network Discovery
      • Response Strategies
        • Privilege Escalation Assessment
        • Command and Control Assessment
        • Command Execution Assessment
        • Defence Evasion Assessment
        • Detection Assessment
        • Discovery Assessment
        • Exfiltration Assessment
        • Initial Access Assessment
        • Initial Impact Assessment Techniques
        • Lateral Movement Assessment
        • Persistence Assessment
    • Windows Forensics
      • Evidence of Execution
      • Window Artifact Analysis
        • Account Usage
        • User Activity Tracking (Event Logs)
        • Program Execution
        • File and Folder Opening
        • File Download
        • Browser Usage
        • Deleted File or File Knowledge
        • External Device & USB Usage
    • Linux Forensics
      • Linux Commandline Basics
      • Host Compromise Assessment
    • KQL for Defender & Sentinel
      • MDO (Office)
      • MDI (Identity)
      • MDE (Endpoint)
    • Memory Forensics
      • Memory Forensics (Volatility 3)
    • Playbooks
      • First Responder DFIR Playbook
        • Device Isolation
        • Evidence Collection
          • Acquire Triage Image Using KAPE
          • Acquire Triage Data Using Velociraptor
          • Acquire Triage Data Using Powershell
          • Acquire Triage Memory Image
          • Acquire Image Using FTK
          • AXIOM Cyber Data Collection
        • Windows Forensic Artefacts
          • Application Execution
          • File & Folder Knowledge
          • External Device Usage
          • Network Activity
          • Windows Event Logs
        • Initial Analysis
          • Memory Analysis (Vol 3)
          • Axiom Cyber Examiner
  • Detection Engineering
    • AD Attack Detections & Mitigations
      • Kerberoasting
      • Authentication Server Response (AS-REP) Roasting
      • Password Spraying
      • MachineAccountQuota Compromise
      • Unconstrained Delegation
      • Password in Group Policy Preferences (GPP) Compromise
      • Active Directory Certificate Services (AD CS) Compromise
      • Golden Certificate
      • DCSync
      • Dumping ntds.dit
      • Golden Ticket
      • Silver Ticket
      • Golden Security Assertion Markup Language (SAML)
      • Microsoft Entra Connect Compromise
      • One-way Domain Trust Bypass
      • Security Identifier (SID) History Compromise
      • Skeleton Key
      • Active Directory Security Controls
      • Active Directory Events for Detecting Compromise
    • Attack Triage Playbooks (KQL Triage)
      • Windows Malware Detection Playbook
      • Linux Host Intrusion Detection Playbook (CLI)
      • Linux Intrusion Detection Playbook
      • Large-Scale Compromise Detection Playbook
      • Ransomware Detection Playbook
      • Phishing Email Compromise Detection Playbook
      • Scam Detection Playbook
      • Customer Phishing Detection Playbook
      • Insider Abuse Detection Playbook
      • Information Leakage Detection Playbook
      • Social Engineering Detection Playbook
      • Malicious Network Behaviour Detection Playbook
      • Windows Intrusion Detection Playbook
      • Vulnerability Detection Playbook
      • Business Email Compromise Detection Playbook
    • Process Execution (KQL Triage)
    • Threat Hunting
      • Hunting Ransomware Indicators
      • Hunting With KQL
        • Detecting Malware Infection (MITRE ATT&CK: T1566, T1059)
        • Discovery Activities (MITRE ATT&CK: T1016, T1083, T1046)
        • Credential Theft (MITRE ATT&CK: T1003, T1078)
        • Lateral Movement (MITRE ATT&CK: T1076, T1021)
        • Data Theft (MITRE ATT&CK: T1041, T1071)
        • Detecting CommandLine Executions (MITRE ATT&CK: T1059)
        • Windows Security Logs (Identity and Logon Activities)
      • Hunting With Splunk
Powered by GitBook
On this page
  • KQL Queries:
  • Splunk Queries:
Edit on GitHub
  1. SOC Operations
  2. Junior Analyst Skills
  3. Investigating Common Attacks

Detecting Command Line Interpreters Launched via Scheduled Tasks

KQL Queries:

KQL query to discover command line interpreters launched via scheduled tasks:

// Define patterns to identify command line interpreters
let CommandLineInterpreters = dynamic(["cmd.exe", "powershell.exe", "pwsh.exe", "wmic.exe", "mshta.exe", "cscript.exe", "wscript.exe"]);
// Query DeviceProcessEvents table
DeviceProcessEvents
| where ((InitiatingProcessFileName =~ "taskeng.exe") // For anything pre-Windows 10 version 1511
    or (InitiatingProcessFileName =~ "svchost.exe" and InitiatingProcessCommandLine has "Schedule")) // For anything post Windows 10 version 1511
| where FileName in~ (CommandLineInterpreters) // Match command line interpreters
| summarize
    Devices = make_set(DeviceName),
    NumberOfDevices = dcount(DeviceName),
    UniqueUsers = dcount(AccountName),
    TotalEvents = count()
    by ProcessCommandLine, FileName, FolderPath, InitiatingProcessFileName, bin(TimeGenerated, 1h)
| order by TotalEvents desc
| project TimeGenerated, ProcessCommandLine, FileName, FolderPath, InitiatingProcessFileName, Devices, NumberOfDevices, UniqueUsers, TotalEvents

Explanation:

  1. Pattern Matching: The CommandLineInterpreters dynamic array contains common command line interpreters.

  2. Filtering: The where clauses filter the DeviceProcessEvents table to retain only events where command line interpreters were launched via scheduled tasks.

  3. Summarisation: The summarise statement aggregates the data to count the number of devices and list the devices for each command line.

  4. Ordering: The results are ordered by the number of devices in descending order.

  5. Projection: The project statement selects the relevant columns for the final output.

KQL (Kusto Query Language) query to discover command-line interpreters (e.g., cmd.exe, powershell.exe, pwsh.exe, wscript.exe, cscript.exe, bash.exe) launched via scheduled tasks:

DeviceProcessEvents
| where Timestamp > ago(7d)  // Adjust time range as needed
| where InitiatingProcessFileName has "schtasks.exe" or InitiatingProcessCommandLine has "Task Scheduler"
| where FileName in ("cmd.exe", "powershell.exe", "pwsh.exe", "wscript.exe", "cscript.exe", "bash.exe")
| extend ScheduledTaskName = extract(@"\s*/TN\s*(\S+)", 1, InitiatingProcessCommandLine)
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, ScheduledTaskName
| summarize Count = count() by DeviceName, AccountName, FileName, ScheduledTaskName
| order by Count desc

Explanation:

  1. Filter by Time Range:

    • The query examines events from the last 7 days (adjustable).

  2. Scheduled Task Detection:

    • Matches processes where the parent process is schtasks.exe or has "Task Scheduler" in its command line.

  3. Target Command-Line Interpreters:

    • Filters child processes to include common command-line interpreters (cmd.exe, powershell.exe, etc.).

  4. Scheduled Task Extraction:

    • Uses a regex (/TN) to extract the name of the scheduled task from the initiating process’s command line.

  5. Projection:

    • Displays relevant details such as the device, account, command line, and scheduled task name.

  6. Aggregation:

    • Groups results by DeviceName, AccountName, FileName, and ScheduledTaskName, with a count of occurrences.

  7. Sorting:

    • Sorts by the number of occurrences (Count) to highlight the most frequent events.

Example Use Cases:

  • Threat Hunting: Detect unauthorised or malicious use of scheduled tasks to launch command-line interpreters.

  • Anomaly Detection: Identify unusual behaviour where interpreters are invoked via scheduled tasks.

  • Forensic Analysis: Investigate post-compromise activities involving scheduled tasks.

Splunk Queries:

To detect Command Line Interpreters launched via Scheduled Tasks in Splunk using the sysmon index, you can use the following SPL (Search Processing Language) query. It leverages Sysmon Event IDs, processes commonly associated with command-line interpreters, and their execution context.

index=sysmon EventCode=1 
| eval is_scheduled_task=if((ParentImage="*\\taskeng.exe" OR ParentImage="*\\svchost.exe" OR CommandLine="schtasks*"), "true", "false")
| search is_scheduled_task="true"
| eval is_interpreter=if((Image="*\\cmd.exe" OR Image="*\\powershell.exe" OR Image="*\\wscript.exe" OR Image="*\\cscript.exe" OR Image="*\\pwsh.exe" OR Image="*\\bash.exe"), "true", "false")
| search is_interpreter="true"
| table _time ComputerName User Image ParentImage CommandLine
| rename Image as "Interpreter", ParentImage as "Parent Process"
| sort - _time

Explanation of the Query:

  1. Index and Event Filtering:

    • index=sysmon filters to only events within the sysmon index.

    • EventCode=1focuses on process creation events.

  2. Parent Process Check (Scheduled Tasks):

    • ParentImage="*\\taskeng.exe" or ParentImage="*\\svchost.exe" indicates the process is potentially related to Scheduled Tasks.

    • CommandLine="schtasks*"captures executions directly involving schtasks.

  3. Command-Line Interpreter Filtering:

    • Filters for commonly abused command-line interpreters, including cmd.exe, powershell.exe, wscript.exe, cscript.exe, pwsh.exe, and bash.exe.

  4. Conditional Evaluation and Final Filtering:

    • Uses eval to tag events based on parent process or interpreter usage.

    • Filters only events where is_scheduled_task and is_interpreter are both true.

  5. Tabular Results:

    • Displays relevant fields: Interpreter, Parent Process, CommandLine, User, ComputerName, and _time.

  6. Sorting:

    • Sort results by timestamp for analysis.

The following Splunk query will search for command line interpreters launched via scheduled tasks using the sysmon index:

index=sysmon
sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
EventCode=1
| eval CommandLineInterpreters=mvappend("cmd.exe", "powershell.exe", "pwsh.exe", "wmic.exe", "mshta.exe", "cscript.exe", "wscript.exe")
| eval IsInterpreter=if(match(CommandLine, mvjoin(CommandLineInterpreters, "|")), 1, 0)
| where IsInterpreter=1
| eval IsScheduledTask=if(match(ParentCommandLine, "schtasks.exe") OR match(ParentCommandLine, "taskeng.exe"), 1, 0)
| where IsScheduledTask=1
| stats count as TotalEvents, dc(host) as UniqueDevices, dc(user) as UniqueUsers by CommandLine, ParentCommandLine, Image, ParentImage
| sort - TotalEvents
| table _time, CommandLine, ParentCommandLine, Image, ParentImage, TotalEvents, UniqueDevices, UniqueUsers

Explanation:

  1. Index and Sourcetype: The query filters the sysmon index and XmlWinEventLog:Microsoft-Windows-Sysmon/Operational sourcetype for process creation events (EventCode=1).

  2. Pattern Matching: The CommandLineInterpreters array contains common command line interpreters.

  3. Evaluation: The eval statements create flags (IsInterpreter and IsScheduledTask) to identify command lines containing interpreters and those launched via scheduled tasks.

  4. Filtering: The where clauses filter the events to retain only those with command line interpreters launched via scheduled tasks.

  5. Aggregation: The statscommand aggregates the data to count the total number of events, unique devices, and unique users for each command line, parent command line, image, and parent image.

  6. Sorting and Display: The results are sorted by the total number of events in descending order and displayed in a table format.

PreviousDetect Potential Cleartext Credentials in Command LineNextDetecting Files Containing Potentially Sensitive Data

Last updated 4 months ago