Malicious Office (OLE) / .XLS — malware analysis report

Static analysis result for SHA-256 074b2fdc60814178…

MALICIOUS

Office (OLE) / .XLS

155.0 KB Created: 1996-12-17 01:32:42 Authoring application: Microsoft Excel
MD5: 261d2c8590038a7ad3d86c5445674fc4 SHA-1: 16f9a4a43e476d929aa70ea9ed8c1c9a777962e7 SHA-256: 074b2fdc608141782468d18ea37b811e9cb2545cf0b86c11691f473721ff1371
280 Risk Score

Malware Insights

MITRE ATT&CK
T1203 Exploitation for Client Execution

The sample is an Excel file that triggers the CVE-2009-3129 vulnerability, which is known to allow for arbitrary code execution. Heuristics indicate the use of WinExec, LoadLibrary, and GetProcAddress, suggesting the execution of a malicious payload. The XOR-encoded strings further support the presence of obfuscated malicious code.

Heuristics 6

  • CVE-2009-3129 — Excel FEATHEADER record overflow critical CVE exact CVE_2009_3129
    Workbook BIFF stream contains a FEATHEADER (Feature Header) record with anomalous size (record_size=23, isf=2, cbHdrData=4294967295). Legitimate FEATHEADER records are tiny (<100 bytes) and carry cbHdrData values that fit in the record body; the value here is the documented CVE-2009-3129 exploit primitive — cbHdrData drives a memcpy with attacker-controlled size, leading to memory corruption and code execution in Excel 2007/2003.
  • XOR-encoded strings (key 0x03) critical SC_XOR_ENCODED
    Found 8 Windows library/API name(s) XOR-encoded with single-byte key 0x03: 'VirtualAlloc', 'VirtualAlloc', 'VirtualAllocEx', 'VirtualProtect', 'VirtualProtectEx', 'CreateProcessA', 'WriteProcessMemory', 'ReadProcessMemory'
  • Reference to WinExec API high SC_STR_WINEXEC
    Reference to WinExec API
  • Reference to LoadLibrary API high SC_STR_LOADLIBRARY
    Reference to LoadLibrary API
  • Reference to GetProcAddress API high SC_STR_GETPROCADDRESS
    Reference to GetProcAddress API
  • OLE document has large unaccounted-for region high OLE_SLACK_ANOMALY
    OLE file is 158,720 bytes but its declared streams total only 24,565 bytes — 134,155 bytes (85%) live in unallocated sector slack. This is the canonical hiding place for pre-macro-era Office exploit payloads (XOR-encoded shellcode reached via a parser pointer-corruption bug in the document structure).