T1055.004 Google Chronicle · YARA-L

Detect Asynchronous Procedure Call in Google Chronicle

Adversaries may inject malicious code into processes via the asynchronous procedure call (APC) queue in order to evade process-based defenses as well as possibly elevate privileges. APC injection is commonly performed by attaching malicious code to the APC Queue of a process's thread. Queued APC functions are executed when the thread enters an alterable state. A handle to an existing victim process is first created with native Windows API calls such as OpenThread. At this point QueueUserAPC can be used to invoke a function (such as LoadLibraryA pointing to a malicious DLL). A variation called Early Bird injection involves creating a suspended process in which malicious code is written and executed before the process' entry point via an APC. AtomBombing is another variation that utilizes APCs to invoke malicious code previously written to the global atom table.

MITRE ATT&CK

Tactic
Defense Evasion Privilege Escalation
Technique
T1055 Process Injection
Sub-technique
T1055.004 Asynchronous Procedure Call
Canonical reference
https://attack.mitre.org/techniques/T1055/004/

YARA-L Detection Query

Google Chronicle (YARA-L)
yaral
rule t1055_004_apc_injection_process_access {
  meta:
    author = "Detection Engineering"
    description = "Detects T1055.004 APC Injection via cross-process access with injection-capable rights targeting common Early Bird victim processes"
    severity = "HIGH"
    mitre_attack_tactic = "Defense Evasion, Privilege Escalation"
    mitre_attack_technique = "T1055.004"
    confidence = "high"
    reference = "https://attack.mitre.org/techniques/T1055/004/"

  events:
    $e.metadata.event_type = "PROCESS_OPEN"
    $e.target.process.file.full_path = /(?i)(svchost|rundll32|EhStorAuthn|ctfmon|conhost|dllhost)\.exe$/
    (
      $e.principal.process.file.full_path = /(?i)(powershell|cmd|wscript|cscript|mshta|rundll32|regsvr32)\.exe$/ or
      not $e.principal.process.file.full_path = /(?i)^c:\\windows\\/
    )
    (
      $e.target.process.access_mask = "0x1FFFFF" or
      $e.target.process.access_mask = "0x001F0FFF" or
      $e.target.process.access_mask = "0x1F3FFF" or
      $e.target.process.access_mask = "0x1410" or
      $e.target.process.access_mask = "0x143A" or
      $e.target.process.access_mask = "0x1F1FFF"
    )
    $e.principal.hostname = $hostname

  condition:
    $e
}
high severity high confidence

Google Chronicle YARA-L 2.0 rule detecting T1055.004 APC Injection via UDM PROCESS_OPEN events. Correlates injection-capable process access masks (PROCESS_ALL_ACCESS 0x1FFFFF, PROCESS_VM_WRITE+PROCESS_VM_OPERATION+PROCESS_CREATE_THREAD 0x001F0FFF/0x1F3FFF, and thread-level masks 0x1410/0x143A/0x1F1FFF) from LOLBin or non-Windows source processes against known Early Bird APC target processes. Covers QueueUserAPC-based shellcode delivery, Early Bird suspended-process injection, and AtomBombing APC dispatch variants. Uses UDM target.process.access_mask mapped from Sysmon GrantedAccess via Chronicle Sysmon parser.

Data Sources

Google Chronicle UDM (PROCESS_OPEN events)Sysmon via Chronicle ForwarderMicrosoft Defender for Endpoint via Chronicle connector

Required Tables

UDM events with metadata.event_type = PROCESS_OPEN

False Positives & Tuning

  • EDR and endpoint security agents deployed outside C:\Windows\ that require PROCESS_ALL_ACCESS (0x1FFFFF) to enumerate and scan memory regions of svchost.exe, dllhost.exe, and conhost.exe for malicious code patterns
  • Managed service provider RMM tools that use PowerShell or scripting hosts to open elevated handles to Windows host processes for health monitoring, remote remediation, or configuration management tasks
  • Authorized red team and penetration testing frameworks operating in sanctioned assessment engagements that probe process access controls against system processes to validate detection coverage
Download portable Sigma rule (.yml)

Other platforms for T1055.004


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Early Bird Injection - Suspended Process Creation

    Expected signal: Sysmon Event ID 1: rundll32.exe spawned by PowerShell with empty/minimal CommandLine. This alone is suspicious — rundll32.exe should always have arguments specifying the DLL and function to execute.

  2. Test 2QueueUserAPC API Call via PowerShell P/Invoke

    Expected signal: Sysmon Event ID 1: PowerShell execution with the command line. When using the actual API chain: ETW NtQueueApcThread event, Sysmon Event ID 10 (ProcessAccess) with PROCESS_ALL_ACCESS.

  3. Test 3AtomBombing Variant - Global Atom Table Write

    Expected signal: Sysmon Event ID 1: PowerShell execution. ETW: GlobalAddAtomW API call logged. In a full AtomBombing attack, this would be followed by NtQueueApcThread to copy atom data into the target process.

Unlock Pro Content

Get the full detection package for T1055.004 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections