
Strumento di crittografia HTA per RedTeams
Rilasciato come open source da NCC Group Plc - http://www.nccgroup.trust/
Sviluppato da Richard Warren, richard [dot] warren [at] nccgroup [dot] trust
http://www.github.com/nccgroup/demiguise
Rilasciato sotto AGPL, vedi LICENSE per maggiori informazioni
L'obiettivo di questo progetto è generare file .html che contengono un file HTA crittografato. L'idea è che quando il tuo target visita la pagina, la chiave viene recuperata e l'HTA viene decifrato dinamicamente nel browser e inviato direttamente all'utente. Questa è una tecnica di evasione per superare l'ispezione del contenuto/tipo di file implementata da alcuni dispositivi di sicurezza. Questo strumento non è progettato per creare contenuti HTA eccezionali. Ci sono molti altri strumenti/tecniche che possono aiutarti in questo. Ciò con cui potrebbe aiutarti è inizialmente ottenere il tuo HTA in un ambiente e (se usi la chiave ambientale) evitare che venga eseguito in sandbox.
Ciò si ottiene crittografando il file HTA usando RC4, e poi utilizzando navigator.msSaveBlob per "salvare" il file in fase di esecuzione - invece di recuperare l'HTA direttamente dal server. Ciò significa che in nessun momento c'è una richiesta/risposta HTTP che contenga il tuo file HTA in forma di testo semplice - il proxy vedrà semplicemente un file text/html contenente il tuo blob crittografato. Nell'ultima versione di Edge, ciò porterà l'utente a essere invitato a "eseguire" l'HTA.
Sebbene non sia l'obiettivo principale di questo strumento, ci sono un paio di opzioni di payload per l'HTA sottostante. Ogni opzione utilizza tecniche diverse come documentato in precedenza da Matt Nelson, Matthew Demaske, Ryan Hanson e Etienne Stalmans. Il vantaggio di usare queste tecniche è che il tuo codice non viene eseguito come figlio di mshta.exe. Come detto in precedenza, il contenuto dell'HTA non è l'obiettivo principale di questo strumento. Ti incoraggio a modificare il template HTA per contenere il tuo codice personalizzato :)
Esegui il file demiguise.py, fornendo la tua chiave di crittografia, il tipo di payload, il nome del file di output e il comando che vuoi che l'HTA esegua.
Esempio: python demiguise.py -k hello -c "notepad.exe" -p Outlook.Application -o test.hta


Per eludere le sandbox, non dovresti incorporare la tua chiave direttamente nell'HTA. Invece dovresti ottenerla dinamicamente dall'ambiente in cui si trova il target. Un esempio potrebbe essere usare l'indirizzo IP esterno del client come chiave. Il vantaggio è che se il codice viene eseguito in una sandbox di terze parti, l'HTA non verrà decifrato. In effetti, nemmeno il nome del file verrà decifrato, il che significa che nessuno saprà cosa fa/è il tuo payload :)
Alcuni esempi di chiave ambientale sono forniti in examples/externalip.js e examples/virginkey.js.
Poiché lo strumento produce un file HTML contenente JavaScript, puoi semplicemente prendere questo JS e ospitarlo dove preferisci. Ciò significa che se il sito web del tuo cliente è vulnerabile a XSS riflesso, puoi usarlo per servire il tuo file HTA dal loro dominio (altamente affidabile).
Inoltre, Outlook non blocca gli allegati .html per impostazione predefinita, e nemmeno alcune altre applicazioni - usa la tua immaginazione! :)
Attualmente non viene rilevato su VT:
Sebbene le tecniche di offuscamento possano essere difficili da firmare, un modo per difendersi dagli attacchi HTA è impedire che l'HTA stesso possa essere eseguito in primo luogo. Ciò può essere ottenuto tramite l'uso di Software Restriction Policy (SRP), Device Guard (su Windows 10 e Server 2016), o modificando il gestore di file predefinito associato ai file .hta.
Si noti che queste modifiche potrebbero potenzialmente influenzare l'esecuzione di software che si basa sull'esecuzione degli HTA. Pertanto si raccomanda di testare completamente la soluzione nel proprio ambiente.
Usando SRP:

Modificando il gestore di file predefinito:
ftype htafile=%SystemRoot%\system32\NOTEPAD.EXE %1

Ripristino (x64):
ftype htafile=C:\Windows\SysWOW64\mshta.exe "%1" {1E460BD7-F1C3-4B2E-88BF-4E770A288AF5}%U{1E460BD7-F1C3-4B2E-88BF-4E770A288AF5} %*
WbemScripting.SWbemLocator e ShellBrowserWindowWbemScripting.SWbemLocatorExcel.Application.RegisterXLLOutlook.Application.CreateObject