Malicious Office (OOXML) — malware analysis report

Static analysis result for SHA-256 83f697377000fca8…

MALICIOUS

Office (OOXML)

260.4 KB Created: 1998-01-29 09:23:45 UTC Authoring application: Microsoft Excel 16.0300 First seen: 2021-07-02
MD5: 7f6da6361d31d77e964051633d31d94b SHA-1: b2bd909c0972905bb1cbd22133028e16f4a2866e SHA-256: 83f697377000fca8325fd139d9359bacc5ff5974006d322b05f677693dc85aef
150 Risk Score

Malware Insights

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

The file is an OOXML Excel document containing critical Excel 4.0 macros. These macros utilize dangerous functions such as RUN, FORMULA, RETURN, HALT, and GOTO, which are known to be used for executing arbitrary commands and downloading payloads. While VBA macros are present, the primary threat appears to stem from the XLM macros, indicating a potential downloader or initial execution stage for a more complex attack.

Heuristics 5

  • Excel 4.0 macro sheet (1 sheet(s)) critical 1 related finding OOXML_XLM_MACROSHEET
    Spreadsheet contains an Excel 4.0 (XLM) macro sheet — XLM was a major Office malware vector during 2020-2022 and evaded many VBA-focused controls before Microsoft tightened XLM defaults. Even legitimate XLM use is rare in modern workbooks.
  • Dangerous XLM formula APIs: RUN, FORMULA, RETURN, HALT, GOTO critical OOXML_XLM_DANGEROUS_FN
    Excel 4.0 macro sheet uses formula APIs that call directly into Win32 (=CALL/=EXEC/=REGISTER/=FORMULA). These are the primitives used to download payloads, write files, and start processes from an XLM macro without invoking VBA.
  • VBA project inside OOXML medium OOXML_VBA
    Document contains a VBA project — VBA macros present
  • Hidden worksheet (hidden) low OOXML_HIDDEN_SHEET
    Excel workbook contains 1 hidden sheet(s) — hidden sheets are commonly used to conceal macro code, staging data, or intermediate payload construction
  • 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/spreadsheetml/2006/main In document text (OOXML body / shared strings)
    • http://schemas.microsoft.com/office/excel/2006/mainIn document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/officeDocument/2006/relationshipsIn document text (OOXML body / shared strings)
    • http://schemas.openxmlformats.org/markup-compatibility/2006In document text (OOXML body / shared strings)
    • http://schemas.microsoft.com/office/spreadsheetml/2009/9/acIn document text (OOXML body / shared strings)

Extracted artifacts 3

Files carved from inside the sample during analysis.

FilenameKindSourceSize
macros.bas vba-macro oletools.olevba.extract_macros (decoded VBA source from OOXML) 1292 bytes
SHA-256: de652c35b31a90c73bdca9ae3130c582b3dcd2251f9211f62b10f5977a8b381f
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

Attribute VB_Name = "Sheet3"
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 = "UserForm1"
Attribute VB_Base = "0{931EDA34-5735-4A7C-B764-F382937F14C1}{53B2BD9C-5356-4AF1-BAD6-03A29D7B9F1F}"
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 TabStrip1_Change()

End Sub

Attribute VB_Name = "Sheet2"
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 24576 bytes
SHA-256: 99500b4748e48c918ea9c139c46b6414cc4d9493e2bbce5b8958faf9c98efa86
xlm_sheet_00.xml xlm-macrosheet OOXML XLM macro sheet: xl/macrosheets/sheet1.xml 368661 bytes
SHA-256: 0fd48b95806d47434b16608821668ef5936a6a1c8f4854490b70db8b76ce4422
Preview script
First 1,000 lines of the extracted script
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xm:macrosheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:xm="http://schemas.microsoft.com/office/excel/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><dimension ref="A1:CA220"/><sheetViews><sheetView showFormulas="1" zoomScaleNormal="100" workbookViewId="0"/></sheetViews><sheetFormatPr defaultRowHeight="12.75" x14ac:dyDescent="0.2"/><cols><col min="1" max="1" width="14.42578125" customWidth="1"/><col min="2" max="2" width="12.85546875" customWidth="1"/><col min="3" max="3" width="10.42578125" customWidth="1"/><col min="4" max="4" width="31.140625" bestFit="1" customWidth="1"/><col min="5" max="5" width="21.42578125" bestFit="1" customWidth="1"/><col min="6" max="6" width="18" bestFit="1" customWidth="1"/><col min="7" max="7" width="18.28515625" customWidth="1"/><col min="8" max="8" width="26.5703125" customWidth="1"/><col min="10" max="10" width="8.7109375" customWidth="1"/><col min="11" max="11" width="12.140625" bestFit="1" customWidth="1"/><col min="12" max="12" width="16.140625" customWidth="1"/><col min="13" max="13" width="14.140625" customWidth="1"/><col min="14" max="14" width="16.85546875" customWidth="1"/><col min="15" max="15" width="10.28515625" bestFit="1" customWidth="1"/><col min="16" max="16" width="23.28515625" bestFit="1" customWidth="1"/><col min="17" max="17" width="9.85546875" customWidth="1"/><col min="18" max="18" width="19" bestFit="1" customWidth="1"/><col min="19" max="19" width="21" customWidth="1"/><col min="20" max="20" width="16.42578125" customWidth="1"/><col min="21" max="21" width="23.7109375" customWidth="1"/><col min="22" max="22" width="23" customWidth="1"/><col min="23" max="23" width="18.85546875" bestFit="1" customWidth="1"/><col min="24" max="24" width="14.5703125" bestFit="1" customWidth="1"/><col min="25" max="25" width="20" customWidth="1"/><col min="26" max="26" width="20.28515625" customWidth="1"/><col min="27" max="27" width="29.7109375" bestFit="1" customWidth="1"/><col min="33" max="34" width="9.140625" customWidth="1"/><col min="36" max="36" width="37.85546875" customWidth="1"/><col min="37" max="37" width="57.28515625" bestFit="1" customWidth="1"/><col min="39" max="39" width="6.85546875" customWidth="1"/><col min="40" max="40" width="11" customWidth="1"/><col min="41" max="41" width="10.42578125" customWidth="1"/><col min="42" max="42" width="11.7109375" customWidth="1"/><col min="43" max="44" width="9.140625" customWidth="1"/><col min="45" max="45" width="12.5703125" bestFit="1" customWidth="1"/><col min="47" max="47" width="67.28515625" bestFit="1" customWidth="1"/><col min="48" max="48" width="22.5703125" bestFit="1" customWidth="1"/><col min="49" max="49" width="18.28515625" customWidth="1"/><col min="51" max="51" width="70.140625" bestFit="1" customWidth="1"/><col min="52" max="52" width="9.140625" customWidth="1"/><col min="53" max="53" width="14.7109375" customWidth="1"/><col min="55" max="66" width="21.140625" customWidth="1"/><col min="68" max="68" width="12.85546875" customWidth="1"/><col min="73" max="74" width="9.140625" customWidth="1"/><col min="76" max="76" width="12.42578125" bestFit="1" customWidth="1"/><col min="77" max="77" width="27.5703125" customWidth="1"/><col min="78" max="78" width="31.42578125" bestFit="1" customWidth="1"/><col min="79" max="79" width="25.42578125" customWidth="1"/></cols><sheetData><row r="1" spans="1:79" ht="12.75" customHeight="1" x14ac:dyDescent="0.2"><c r="A1" s="2" t="s"><v>24</v></c><c r="B1" s="2" t="s"><v>25</v></c><c r="C1" s="3" t="s"><v>26</v></c><c r="D1" s="3" t="s"><v>27</v></c><c r="E1" s="3" t="s"><v>28</v></c><c r="F1" s="3" t="s"><v>29</v></c><c r="G1" s="3" t="s"><v>30</v></c><c r="H1" s="3" t="s"><v>525</v></c><c r="J1" s="2" t="s"><v>31</v></c><c r="K1" s="3"/><c r="N1" s="4" t="s"><v>32</v></c><c r="P1" s="4" t="s"><
... (truncated)