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

Static analysis result for SHA-256 78f96b1a07093f8f…

MALICIOUS

Office (OLE) / .XLS

185.5 KB Created: 1996-12-17 01:32:42 Authoring application: Microsoft Excel
MD5: bbae1e84b8577102cf91c849ff3bec48 SHA-1: 030f66272f54cdb7de2aac30cfea9c0e838e9318 SHA-256: 78f96b1a07093f8f948b1a33ba8c893164ea82f73aa412949f041ae943aec061
280 Risk Score

Malware Insights

MITRE ATT&CK
T1203 Exploitation for Client Execution

The file is a malicious Microsoft Excel spreadsheet that leverages the CVE-2009-3129 vulnerability. This exploit allows for arbitrary code execution by overflowing the FEATHEADER record. The presence of WinExec, LoadLibrary, and GetProcAddress API references, along with XOR-encoded strings, further indicates malicious intent to load and run a payload.

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 189,952 bytes but its declared streams total only 24,565 bytes — 165,387 bytes (87%) 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).