Detect Embedded Payloads in Google Chronicle
Adversaries may embed payloads within other files to conceal malicious content from defenses. Otherwise seemingly benign files (such as scripts and executables) may be abused to carry and obfuscate malicious payloads and content. Adversaries have been observed embedding payloads as PE overlays, within resource sections of legitimate binaries, inside LNK file ExtraData fields, within Office VBA macros, and nested inside other file types. Notable examples include Emotet embedding executables in dropper binaries, DEADEYE embedding payloads in compiled binaries, Lazarus Group distributing malicious payloads in PNG files, Pikabot loading encrypted chunked PE sections, and Uroburos storing executable payloads in encrypted Queue files.
MITRE ATT&CK
- Tactic
- Defense Evasion
- Technique
- T1027 Obfuscated Files or Information
- Sub-technique
- T1027.009 Embedded Payloads
- Canonical reference
- https://attack.mitre.org/techniques/T1027/009/
YARA-L Detection Query
rule t1027_009_embedded_payloads {
meta:
author = "Detection Engineering"
description = "Detects T1027.009 - Embedded Payloads: certutil decode/urlcache targeting executables or binary file creation by document and script host processes"
mitre_attack_tactic = "Defense Evasion"
mitre_attack_technique = "T1027.009"
severity = "HIGH"
confidence = "MEDIUM"
events:
$proc.metadata.event_type = "PROCESS_LAUNCH"
re.regex($proc.target.process.file.full_path, `(?i)certutil\.exe$`)
re.regex($proc.target.process.command_line, `(?i)-(decode|urlcache)`)
re.regex($proc.target.process.command_line, `(?i)\.(exe|dll|bin|dat|cfg)`)
$proc_host = $proc.principal.hostname
$drop.metadata.event_type = "FILE_CREATION"
re.regex($drop.target.file.full_path, `(?i)\.(exe|dll|bin|shellcode)$`)
re.regex(
$drop.principal.process.file.full_path,
`(?i)(WINWORD|EXCEL|POWERPNT|AcroRd32|FoxitPDFReader|wscript|cscript|mshta)\.exe$`
)
$drop_host = $drop.principal.hostname
condition:
$proc or $drop
} Chronicle YARA-L 2.0 rule detecting T1027.009 Embedded Payloads with two independent UDM detection branches matched via OR in the condition: (1) PROCESS_LAUNCH events where certutil.exe is invoked with -decode or -urlcache against a binary file extension; (2) FILE_CREATION events where an executable is written to disk by a known document-handling or script host process. Either branch firing independently triggers the rule.
Data Sources
Required Tables
False Positives & Tuning
- Legitimate certutil.exe usage by system administrators to decode base64-encoded certificate blobs or download CRL files with .bin extensions from internal enterprise PKI distribution points
- Microsoft Office template or add-in initialization workflows that write helper executables or COM surrogate DLLs to the user's AppData directory during first-run or update processing
- Script-based software packaging tools (wscript.exe or cscript.exe driven VBScript installers) that extract application binaries from self-extracting archive scripts as part of a sanctioned deployment procedure
Other platforms for T1027.009
Testing Methodology
Validate this detection against 4 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.
- Test 1Extract Embedded Payload from PE Overlay with certutil
Expected signal: Sysmon Event ID 1: certutil.exe with -encode and then -decode arguments. Sysmon Event ID 11: encoded_payload.txt and extracted_payload.exe created in %TEMP%. The -decode operation creates an executable from a text file.
- Test 2Office Macro Dropping Embedded Executable
Expected signal: Sysmon Event ID 1: PowerShell spawning Word COM object. Word process creating a document with VBA code. File creation of macro_test.doc.
- Test 3Embed Payload in PE Resources Section
Expected signal: PowerShell process creation demonstrating the concept. Binary data file creation in %TEMP%.
- Test 4Extract Payload from LNK ExtraData Field
Expected signal: Sysmon Event ID 11: embedded_lnk.lnk created in %TEMP%. Sysmon Event ID 1: cmd.exe spawned from LNK execution with arguments. Sysmon Event ID 11: lnk_output.txt created.
References (5)
- https://attack.mitre.org/techniques/T1027/009/
- https://github.com/peewpw/Invoke-PSImage
- https://www.cisa.gov/uscert/ncas/analysis-reports/ar20-303a
- https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-shllink/c41e062d-f764-4f13-bd4f-ea812ab9a4d1
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1027.009/T1027.009.md
Unlock Pro Content
Get the full detection package for T1027.009 including response playbook, investigation guide, and atomic red team tests.