Win.Trojan.Paix-1 — Office (OLE) malware analysis

Static analysis result for SHA-256 0277df4c213dec72…

MALICIOUS

Office (OLE)

21.0 KB Created: 1998-01-18 10:54:47 Authoring application: Microsoft Excel First seen: 2012-06-14
MD5: b694cf730fd19819c7ecc6aa5146b00c SHA-1: b94ce6bc1e0f65e5e38132a50a7c8135bc8ab8ba SHA-256: 0277df4c213dec7236d57cb324c5d98df56b4e7d3584b743abfd5a5cd2fc8e54
200 Risk Score

Malware Insights

Win.Trojan.Paix-1 · confidence 95%

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

The sample is an Excel 4.0 macro sheet containing an Auto_Open macro, which is a known technique for executing malicious code upon opening the workbook. The presence of the 'Win.Trojan.Paix-1' ClamAV detection strongly suggests a trojan payload. The XLM macro uses dangerous functions like RUN, indicating an intent to execute external commands or download additional malware.

Heuristics 4

  • ClamAV: Win.Trojan.Paix-1 critical CLAMAV_DETECTION
    ClamAV detected this file as malware: Win.Trojan.Paix-1
  • Excel 4.0 Auto_Open defined name critical OLE_XLM_AUTOOPEN_DEFINEDNAME
    oletools recovered an Auto_Open / Auto_Close entry from an Excel 4.0 macro sheet. The raw BIFF name can be tokenized or partially opaque to byte-string checks, but the recovered macro listing confirms the workbook has an XLM auto-execution entry.
  • XLM Auto_Open with dangerous formula APIs critical OLE_XLM_DANGEROUS_FN
    Excel 4.0 macro sheet contains an Auto_Open / Auto_Close entry and dangerous XLM formula APIs that can invoke programs, write files, or transfer control without VBA.
  • Excel 4.0 (XLM) macro sheet present medium OLE_XLM_AUTOOPEN
    Workbook contains an Excel 4.0 macro sheet sub-stream — XLM is rarely seen in modern legitimate workbooks and was a major Office malware vector during 2020-2022.

Extracted artifacts 1

Files carved from inside the sample during analysis.

FilenameKindSourceSize
xlm_macros.txt xlm-macro oletools.olevba.extract_all_macros (XLM macro listing) 6172 bytes
SHA-256: 82d6fa7e149204c83b15a7a7e9240dc9d660fd7babebdcb03b1b12462f332887
Preview script
First 1,000 lines of the extracted script
' 0085     12 BOUNDSHEET : Sheet Information - Excel 4.0 macro sheet, very hidden - !!!GO
' 0085     13 BOUNDSHEET : Sheet Information - worksheet or dialog sheet, visible - Sheet1
' 0018     50 LABEL : Cell Value, String Constant - activation_feuille hidden len=18 ptgRef3d 65535!¤Z1 *UNKNOWN TOKEN* 0x009d *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x00\x05\x80\x00\x00\x00\x00%\x00\x00'
' 0018     33 LABEL : Cell Value, String Constant - built-in-name 2 Auto_Close hidden len=18 ptgRef3d 65535!¨B1 *UNKNOWN TOKEN* 0x009d *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x00\x05\x80\x00\x00\x00\x00f\x00\x00'
' 0018     33 LABEL : Cell Value, String Constant - built-in-name 1 Auto_Open hidden len=18 ptgRef3d 65535!°B1 *UNKNOWN TOKEN* 0x009d *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x00\x05\x80\x00\x00\x00\x00\x01\x00\x00'
' 0018     27 LABEL : Cell Value, String Constant - create_xla len=3 ptgInt 0 
' 0018     23 LABEL : Cell Value, String Constant - existe len=3 ptgInt 1 
' 0018     39 LABEL : Cell Value, String Constant - feuille_base len=13 ptgStr ptgFuncCEA  *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'lsheet.xla'
' 0018     34 LABEL : Cell Value, String Constant - GO hidden len=18 ptgRef3d 65535!¸F1 *UNKNOWN TOKEN* 0x009d *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x00\x05\x80\x00\x00\x00\x00P\x00\x00'
' 0018     18 LABEL : Cell Value, String Constant - i len=3 ptgInt 4 
' 0018     68 LABEL : Cell Value, String Constant - liste_classeur len=8 ptgArrayA  *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x03\x01\x00\x90\x0b\x9d\x00'
' 0018     41 LABEL : Cell Value, String Constant - noprotect hidden len=18 ptgRefErr3d  *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\xff\xff\x00\x00\xf7\x0c\x9d\x00\x05\x80\x00\x00\x00\x00LL\x00'
' 0018     33 LABEL : Cell Value, String Constant - nouveau_classeur hidden len=3 ptgStr ptgAreaErr3d 
' 0018     40 LABEL : Cell Value, String Constant - nouvelle_feuille len=10 ptgStr ptgMemErrA  *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'oat.xls'
' 0018     34 LABEL : Cell Value, String Constant - path_xla len=12 ptgStr ptgNameV  *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b':\\WINDOWS'
' 0018     39 LABEL : Cell Value, String Constant - protect hidden len=18 ptgRef3d 65535!A1 *UNKNOWN TOKEN* 0x0000 *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x00\x05\x80\x00\x00\x00\x00=\x00\x00'
' 002a      2 PRINTHEADERS : Print Row/Column Labels
' 0204     19 LABEL : Cell Value, String Constant
' 0204     26 LABEL : Cell Value, String Constant
' 0204     15 LABEL : Cell Value, String Constant
' 0204     13 LABEL : Cell Value, String Constant
' 0204     19 LABEL : Cell Value, String Constant
' 002a      2 PRINTHEADERS : Print Row/Column Labels
' Sheet,Reference,Formula,Value
' !!!GO,A3,"<ERROR>",""
' !!!GO,A4,"<ERROR>",""
' !!!GO,A5,ERROR(FALSE),""
' !!!GO,A6,ECHO(FALSE),""
' !!!GO,A7,"['GET.DOCUMENT(88)', '"<ERROR>"']",""
' !!!GO,A8,"",""
' !!!GO,A9,*STACKERROR* not enough arguments for function: END.IF,""
' !!!GO,A10,"<ERROR>",""
' !!!GO,A11,"<ERROR>",""
' !!!GO,A12,liste_classeur,""
' !!!GO,A13,liste_classeur,""
' !!!GO,A14,"<ERROR>",""
' !!!GO,A15,*STACKERROR* not enough arguments for function: END.IF,""
' !!!GO,A16,"<ERROR>",""
' !!!GO,A17,NEXT(),""
' !!!GO,A18,[],""
' !!!GO,A19,"['LEFT(GET.DOCUMENT(2),1)', '"<ERROR>"']",""
' !!!GO,A20,"<ERROR>",""
' !!!GO,A21,*STACKERROR* not enough arguments for function: ELSE,""
' !!!GO,A22,"<ERROR>",""
' !!!GO,A23,*STACKERROR* not enough arguments for function: END.IF,""
' !!!GO,A24,[],""
' !!!GO,A25,*UNKNOWN FUNCTION*("<ERROR>"),""
' !!!GO,A26,3,""
' !!!GO,A27,"['1', '"<ERROR>"']",""
' !!!GO,A28,"ADDIN.MANAGER(1,"<ERROR>")",""
' !!!GO,A29,*STACKERROR* not enough arguments for function: END.IF,""
' !!!GO,A30,"<ERROR>",""
' !!!GO,A31,*STACKERROR* not enough arguments for function: ELSE,""
' !!!GO,A32,"<ERROR>",""
' !!!GO,A33,*STACKERROR* not enough arguments for function: END.IF,""
' !!!GO,
... (truncated)