
HTA-Verschlüsselungstool für RedTeams
Als Open Source veröffentlicht von NCC Group Plc - http://www.nccgroup.trust/
Entwickelt von Richard Warren, richard [punkt] warren [at] nccgroup [punkt] trust
http://www.github.com/nccgroup/demiguise
Veröffentlicht unter AGPL, siehe LICENSE für weitere Informationen
Ziel dieses Projekts ist es, .html-Dateien zu generieren, die eine verschlüsselte HTA-Datei enthalten. Die Idee ist, dass Ihr Ziel beim Besuch der Seite den Schlüssel abruft und die HTA dynamisch im Browser entschlüsselt und direkt an den Benutzer weitergeleitet wird. Dies ist eine Umgehungstechnik, um die von einigen Sicherheitsappliances implementierte Inhalts-/Dateityp-Inspektion zu umgehen. Dieses Tool ist nicht dafür ausgelegt, großartige HTA-Inhalte zu erstellen. Es gibt viele andere Tools/Techniken, die Ihnen dabei helfen können. Wobei es Ihnen helfen kann, ist, Ihre HTA überhaupt erst in eine Umgebung zu bringen und (wenn Sie Umgebungsschlüssel verwenden) zu vermeiden, dass sie in einer Sandbox ausgeführt wird.
Dies wird erreicht, indem die HTA-Datei mit RC4 verschlüsselt wird und dann navigator.msSaveBlob verwendet wird, um die Datei zur Laufzeit zu "speichern" – anstatt die HTA direkt vom Server abzurufen. Das bedeutet, dass es zu keinem Zeitpunkt eine HTTP-Anfrage/-Antwort gibt, die Ihre HTA-Datei im Klartext enthält – der Proxy sieht lediglich eine text/html-Datei mit Ihrem verschlüsselten Blob. In der neuesten Version von Edge führt dies dazu, dass der Benutzer aufgefordert wird, die HTA "auszuführen".
Obwohl dies nicht das Hauptziel dieses Tools ist, gibt es ein paar Payload-Optionen für die zugrunde liegende HTA. Jede Option verwendet unterschiedliche Techniken, die zuvor von Matt Nelson, Matthew Demaske, Ryan Hanson und Etienne Stalmans dokumentiert wurden. Der Vorteil dieser Techniken ist, dass Ihr Code nicht als Kindprozess von mshta.exe ausgeführt wird. Wie bereits erwähnt, ist der Inhalt der HTA nicht das Hauptziel dieses Tools. Ich empfehle Ihnen, das HTA-Template zu ändern, um Ihren eigenen Code einzufügen :)
Führen Sie die Datei demiguise.py aus und geben Sie Ihren Verschlüsselungsschlüssel, den Payload-Typ, den Ausgabedateinamen und den Befehl an, den die HTA ausführen soll.
Beispiel: python demiguise.py -k hello -c "notepad.exe" -p Outlook.Application -o test.hta


Um Sandboxen zu umgehen, sollten Sie Ihren Schlüssel nicht direkt in die HTA einbetten. Stattdessen sollten Sie diesen dynamisch aus der Umgebung des Ziels beziehen. Ein Beispiel hierfür könnte die Verwendung der externen IP-Adresse des Clients als Schlüssel sein. Der Vorteil ist, dass die HTA nicht entschlüsselt wird, wenn der Code in einer Sandbox eines Drittanbieters ausgeführt wird. Tatsächlich wird nicht einmal der Dateiname entschlüsselt, sodass niemand weiß, was Ihr Payload ist/macht :)
Einige Beispiele für Umgebungsschlüssel sind in examples/externalip.js und examples/virginkey.js angegeben.
Da das Tool eine HTML-Datei mit JavaScript ausgibt, können Sie dieses JS einfach überall hosten, wo Sie möchten. Das bedeutet, dass Sie, wenn die Website Ihres Kunden anfällig für Reflected-XSS ist, dies nutzen können, um Ihre HTA-Datei von ihrer (hochvertrauenswürdigen) Domain auszuliefern.
Außerdem blockiert Outlook .html-Anhänge standardmäßig nicht, und einige andere Anwendungen auch nicht – lassen Sie Ihrer Fantasie freien Lauf! :)
Derzeit wird es auf VT nicht erkannt:
Obwohl Verschleierungstechniken schwer zu signieren sein können, besteht eine Möglichkeit, sich gegen HTA-Angriffe zu verteidigen, darin, zu verhindern, dass die HTA selbst überhaupt ausgeführt werden kann. Dies kann entweder durch die Verwendung von Software Restriction Policy (SRP), Device Guard (unter Windows 10 und Server 2016) oder durch Ändern des Standard-Dateihandlers für .hta-Dateien erreicht werden.
Bitte beachten Sie, dass diese Änderungen möglicherweise die Ausführung von Software beeinträchtigen können, die auf HTA-Ausführung angewiesen ist. Daher wird empfohlen, eine Änderung in Ihrer eigenen Umgebung vollständig zu testen.
Verwendung von SRP:

Ändern des Standard-Dateihandlers:
ftype htafile=%SystemRoot%\system32\NOTEPAD.EXE %1

Rückgängig machen (x64):
ftype htafile=C:\Windows\SysWOW64\mshta.exe "%1" {1E460BD7-F1C3-4B2E-88BF-4E770A288AF5}%U{1E460BD7-F1C3-4B2E-88BF-4E770A288AF5} %*
WbemScripting.SWbemLocator & ShellBrowserWindow COM-AusführungstechnikenWbemScripting.SWbemLocator COM-Ausführung PoCExcel.Application.RegisterXLL COM-AusführungstechnikOutlook.Application.CreateObject COM-Ausführungstechnik