Detection rules › Splunk

Windows Process Injection Remote Thread

Status
production
Severity
medium
Group by
StartFunction, StartModule, dest, process_guid, process_id, signature, signature_id, source_process_name, target_process_name, vendor_product
Author
Teoderick Contreras, Splunk
Source
github.com/splunk/security_content

The following analytic detects suspicious remote thread execution in processes such as Taskmgr.exe, calc.exe, and notepad.exe, which may indicate process injection by malware like Qakbot. This detection leverages Sysmon EventCode 8 to identify remote thread creation in specific target processes. This activity is significant as it often signifies an attempt by malware to inject malicious code into legitimate processes, potentially leading to unauthorized code execution. If confirmed malicious, this could allow attackers to execute arbitrary code, escalate privileges, or maintain persistence on the compromised host.

Known false positives

  • No false positives have been identified at this time.

MITRE ATT&CK coverage

Telemetry coverage

ProviderRecord / event type
SysmonEvent ID 8: CreateRemoteThread

Rule body

name: Windows Process Injection Remote Thread
id: 8a618ade-ca8f-4d04-b972-2d526ba59924
version: 14
creation_date: '2022-10-28'
modification_date: '2026-06-29'
author: Teoderick Contreras, Splunk
status: production
type: TTP
description: |
    The following analytic detects suspicious remote thread execution in processes such as Taskmgr.exe, calc.exe, and notepad.exe, which may indicate process injection by malware like Qakbot. This detection leverages Sysmon EventCode 8 to identify remote thread creation in specific target processes. This activity is significant as it often signifies an attempt by malware to inject malicious code into legitimate processes, potentially leading to unauthorized code execution. If confirmed malicious, this could allow attackers to execute arbitrary code, escalate privileges, or maintain persistence on the compromised host.
data_source:
    - Sysmon EventID 8
search: |-
    `sysmon`
    EventCode=8
    TargetImage IN (
        "*\\calc.exe",
        "*\\CalculatorApp.exe",
        "*\\cmd.exe",
        "*\\dxdiag.exe",
        "*\\explorer.exe",
        "*\\mobsync.exe",
        "*\\msra.exe",
        "*\\notepad.exe",
        "*\\OneDriveSetup.exe",
        "*\\ping.exe",
        "*\\powershell.exe",
        "*\\rdpclip.exe",
        "*\\Taskmgr.exe",
        "*\\wermgr.exe",
        "*\\win32calc.exe",
        "*\\xwizard.exe"
    )
    | stats count min(_time) as firstTime
                  max(_time) as lastTime
                  values(NewThreadId) as "NewThreadId"
                  values(StartAddress) as "StartAddress"
      by dest signature_id signature
         SourceProcessGuid SourceProcessId SourceImage
         TargetProcessGuid TargetProcessId TargetImage
         StartModule StartFunction vendor_product
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `windows_process_injection_remote_thread_filter`
how_to_implement: To successfully implement this search, you must be ingesting data that records process activity from your hosts like remote thread EventCode=8 of sysmon. If you are using Sysmon, you must have at least version 6.0.4 of the Sysmon TA.
known_false_positives: No false positives have been identified at this time.
references:
    - https://twitter.com/pr0xylife/status/1585612370441031680?s=46&t=Dc3CJi4AnM-8rNoacLbScg
    - https://thedfirreport.com/2023/06/12/a-truly-graceful-wipe-out/
finding:
    title: process $SourceImage$ created a remote thread in target process $TargetImage$ on host $dest$
    entity:
        field: dest
        type: system
        score: 50
threat_objects:
    - field: SourceImage
      type: process
analytic_story:
    - Qakbot
    - Graceful Wipe Out Attack
    - Warzone RAT
    - Earth Alux
    - Water Gamayun
    - Phantom Stealer
asset_type: Endpoint
mitre_attack_id:
    - T1055.002
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`sysmon`
EventCode=8
TargetImage IN (
    "*\\calc.exe",
    "*\\CalculatorApp.exe",
    "*\\cmd.exe",
    "*\\dxdiag.exe",
    "*\\explorer.exe",
    "*\\mobsync.exe",
    "*\\msra.exe",
    "*\\notepad.exe",
    "*\\OneDriveSetup.exe",
    "*\\ping.exe",
    "*\\powershell.exe",
    "*\\rdpclip.exe",
    "*\\Taskmgr.exe",
    "*\\wermgr.exe",
    "*\\win32calc.exe",
    "*\\xwizard.exe"
)

Stage 2: stats

| stats count min(_time) as firstTime
              max(_time) as lastTime
              values(NewThreadId) as "NewThreadId"
              values(StartAddress) as "StartAddress"
  by dest signature_id signature
     SourceProcessGuid SourceProcessId SourceImage
     TargetProcessGuid TargetProcessId TargetImage
     StartModule StartFunction vendor_product

Stage 3: search

| `security_content_ctime(firstTime)`

Stage 4: search

| `security_content_ctime(lastTime)`

Stage 5: search

| `windows_process_injection_remote_thread_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 8 corpus 10 (splunk 9, elastic 1)
field:"EventID" kind:eq value:"8"
TargetImagein
  • "*\\CalculatorApp.exe"
  • "*\\OneDriveSetup.exe"
  • "*\\Taskmgr.exe"
  • "*\\calc.exe"
  • "*\\cmd.exe"
  • "*\\dxdiag.exe"
  • "*\\explorer.exe"
  • "*\\mobsync.exe"
  • "*\\msra.exe"
  • "*\\notepad.exe"
  • "*\\ping.exe"
  • "*\\powershell.exe"
  • "*\\rdpclip.exe"
  • "*\\wermgr.exe"
  • "*\\win32calc.exe"
  • "*\\xwizard.exe"
field:"TargetImage" kind:in