
Un assistente multipiattaforma per creare documenti MS Office dannosi. Può nascondere macro VBA, sovrascrivere codice VBA (tramite P-Code) e confondere gli strumenti di analisi delle macro. Funziona su Linux, OSX e Windows.
Questo strumento è stato rilasciato durante il nostro talk al BlackHat Asia (28 marzo 2019). Una registrazione video di questo talk è disponibile su https://www.youtube.com/watch?v=9ULzZA70Dzg.
Un assistente multipiattaforma per creare documenti MS Office malevoli. Può nascondere macro VBA, eseguire lo stomp del codice VBA (tramite P-Code) e confondere gli strumenti di analisi delle macro. Funziona su Linux, OSX e Windows.
Se sei nuovo a questo strumento, potresti voler iniziare leggendo il nostro post sul blog su Evil Clippy: https://outflank.nl/blog/2019/05/05/evil-clippy-ms-office-maldoc-assistant/
Questo progetto dovrebbe essere utilizzato solo per test autorizzati o scopi educativi.
Se non hai idea di cosa sia tutto questo, consulta prima le seguenti risorse:
Al momento della scrittura, questo strumento è in grado di far bypassare una macro Cobalt Strike predefinita alla maggior parte dei principali prodotti antivirus e a vari strumenti di analisi dei maldoc (utilizzando lo stomp VBA in combinazione con nomi di moduli casuali).
Evil Clippy utilizza la libreria OpenMCDF per manipolare file in formato Compound File Binary Format (CFBF) di MS Office, e abusa delle specifiche MS-OVBA e delle relative funzionalità. Riutilizza codice da Kavod.VBA.Compression per implementare l'algoritmo di compressione utilizzato nei flussi dir e module (vedi MS-OVBA per le specifiche pertinenti).
Evil Clippy compila perfettamente con il compilatore Mono C# ed è stato testato su Linux, OSX e Windows.
Non forniamo una release binaria per EvilClippy. Si prega di compilare gli eseguibili autonomamente:
OSX e Linux
Assicurati di avere Mono installato. Quindi esegui il seguente comando dalla riga di comando:
mcs /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
Ora esegui Evil Clippy dalla riga di comando:
mono EvilClippy.exe -h
Windows
Assicurati di avere Visual Studio installato. Quindi esegui il seguente comando da un prompt dei comandi per sviluppatori di Visual Studio:
csc /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
Ora esegui Evil Clippy dalla riga di comando:
EvilClippy.exe -h
Stampa dell'aiuto
EvilClippy.exe -h
Nascondi/Mostra le macro dalla GUI
Nasconde tutti i moduli di macro (tranne il modulo predefinito "ThisDocument") dall'editor GUI VBA. Ciò si ottiene rimuovendo le righe del modulo dal flusso del progetto [MS-OVBA 2.3.1].
EvilClippy.exe -g macrofile.doc
Annulla le modifiche effettuate con l'opzione di nascondere (-g) in modo da poter eseguire il debug della macro nell'IDE VBA.
EvilClippy.exe -gg macrofile.doc
Stomp VBA (abuso di P-code)
Inserisce codice VBA falso dal file di testo fakecode.vba in tutti i moduli, lasciando intatto il P-code. Questo abusa di una caratteristica non documentata dei flussi dei moduli [MS-OVBA 2.3.4.3]. Nota che la versione del progetto VBA deve corrispondere al programma host affinché il P-code venga eseguito (vedi l'esempio successivo per la corrispondenza delle versioni).
EvilClippy.exe -s fakecode.vba macrofile.doc
Nota: Lo stomp VBA non funziona per i file salvati nel formato Excel 97-2003 Workbook (.xls)
Imposta la versione di Office di destinazione per lo stomp VBA
Stesso procedimento di sopra, ma ora mirando esplicitamente a Word 2016 su x86. Ciò significa che Word 2016 su x86 eseguirà il P-code, mentre altre versioni di Word eseguiranno invece il codice da fakecode.vba. Ottenuto impostando i byte di versione appropriati nel flusso _VBA_PROJECT [MS-OVBA 2.3.4.1].
EvilClippy.exe -s fakecode.vba -t 2016x86 macrofile.doc
Imposta/resetta nomi di moduli casuali (inganna gli strumenti di analisi)
Imposta nomi ASCII casuali per i moduli nel flusso dir [MS-OVBA 2.3.4.2]. Questo abusa dell'ambiguità nei record MODULESTREAMNAME [MS-OVBA 2.3.4.2.3.2.3] – la maggior parte degli strumenti di analisi utilizza i nomi ASCII dei moduli specificati qui, mentre MS Office utilizza la variante Unicode. Impostando un nome ASCII casuale, la maggior parte degli strumenti di analisi P-code e VBA va in crash, mentre il P-code e il VBA effettivi continuano a funzionare correttamente in Word ed Excel.
EvilClippy.exe -r macrofile.doc
Nota: è noto che questo sia efficace per ingannare pcodedmp e VirusTotal
Imposta i nomi ASCII dei moduli nel flusso dir per farli corrispondere alle loro controparti Unicode. Inverte le modifiche apportate con l'opzione (-r) di EvilClippy.
EvilClippy.exe -rr macrofile.doc
Servire un modello con VBA stomp via HTTP
Serve macrofile.dot tramite porta HTTP 8080 dopo aver eseguito lo stomp VBA. Se questo file viene recuperato, corrisponde automaticamente alla versione di Office del target (utilizzando i suoi header HTTP e impostando di conseguenza i byte _VBA_PROJECT).
EvilClippy.exe -s fakecode.vba -w 8080 macrofile.dot
Nota: Il file che stai servendo deve essere un modello (.dot invece di .doc). Puoi impostare un modello tramite un URL (l'estensione .dot non è richiesta!) dalla barra degli strumenti dello sviluppatore in Word. Inoltre, fakecode.vba deve avere un attributo VB_Base impostato per una macro proveniente da un modello (ciò significa che il tuo fakecode.vba deve iniziare con una riga come Attribute VB_Base = "0{00020906-0000-0000-C000-000000000046}").
Imposta/Rimuovi la protezione "Bloccato/Non visualizzabile" del progetto VBA
Per impostare gli attributi "Bloccato/Non visualizzabile" usa l'opzione '-u':
EvilClippy.exe -u macrofile.doc
Per rimuovere gli attributi "Bloccato/Non visualizzabile" usa l'opzione '-uu':
EvilClippy.exe -uu macrofile.doc
Nota: Puoi rimuovere gli attributi "Bloccato/Non visualizzabile" anche su file che non sono stati bloccati con EvilClippy.
Sviluppato per la manipolazione di documenti Microsoft Word ed Excel.
Come notato sopra, lo stomp VBA non è efficace contro il formato Excel 97-2003 Workbook (.xls).
Stan Hegt (@StanHacked) / Outflank
Con contributi significativi di Carrie Roberts (@OrOneEqualsOne / Walmart).
Un ringraziamento speciale a Nick Landers (@monoxgas / Silent Break Security) per avermi indicato OpenMCDF.