
Outil de chiffrement HTA pour RedTeams
Publié en open source par NCC Group Plc - http://www.nccgroup.trust/
Développé par Richard Warren, richard [point] warren [at] nccgroup [point] trust
http://www.github.com/nccgroup/demiguise
Publié sous licence AGPL, voir LICENSE pour plus d'informations
Le but de ce projet est de générer des fichiers .html qui contiennent un fichier HTA chiffré. L'idée est que lorsque votre cible visite la page, la clé est récupérée et le HTA est déchiffré dynamiquement dans le navigateur et poussé directement à l'utilisateur. C'est une technique d'évasion pour contourner l'inspection de contenu/type de fichier mise en œuvre par certains dispositifs de sécurité. Cet outil n'est pas conçu pour créer un super contenu HTA. Il existe de nombreux autres outils/techniques qui peuvent vous aider avec cela. Ce qu'il peut vous aider à faire, c'est d'abord d'introduire votre HTA dans un environnement, et (si vous utilisez des clés environnementales) d'éviter qu'il ne soit exécuté dans un sandbox.
Ceci est réalisé en chiffrant le fichier HTA avec RC4, puis en utilisant navigator.msSaveBlob pour "sauvegarder" le fichier au moment de l'exécution - plutôt que de récupérer le HTA directement depuis le serveur. Cela signifie qu'à aucun moment il n'y a de requête/réponse HTTP contenant votre fichier HTA en texte clair - le proxy verra simplement un fichier text/html contenant votre blob chiffré. Dans la dernière version d'Edge, cela amènera l'utilisateur à être invité à "exécuter" le HTA.
Bien que ce ne soit pas l'objectif principal de cet outil, il existe quelques options de payload pour le HTA sous-jacent. Chaque option utilise des techniques différentes documentées précédemment par Matt Nelson, Matthew Demaske, Ryan Hanson et Etienne Stalmans. L'avantage d'utiliser ces techniques est que votre code ne s'exécute pas en tant qu'enfant de mshta.exe. Comme mentionné précédemment, le contenu du HTA n'est pas l'objectif principal de cet outil. Je vous encourage à modifier le modèle HTA pour y mettre votre propre code :)
Exécutez le fichier demiguise.py, en lui fournissant votre clé de chiffrement, le type de payload, le nom du fichier de sortie et la commande que vous voulez que le HTA exécute.
Exemple : python demiguise.py -k hello -c "notepad.exe" -p Outlook.Application -o test.hta


Pour éviter les sandboxes, vous ne devez pas intégrer votre clé directement dans le HTA. Au lieu de cela, vous devez l'obtenir dynamiquement depuis l'environnement de la cible. Un exemple pourrait être d'utiliser l'adresse IP externe du client comme clé. L'avantage est que si le code est exécuté dans un sandbox tiers, le HTA ne se déchiffrera pas. En fait, même le nom du fichier ne se déchiffrera pas, ce qui signifie que personne ne saura ce que votre payload est/fait :)
Quelques exemples de clés environnementales sont donnés dans examples/externalip.js et examples/virginkey.js.
Étant donné que l'outil génère un fichier HTML contenant du JavaScript, vous pouvez simplement prendre ce JS et l'héberger où vous voulez. Cela signifie que si le site web de votre client est vulnérable à une XSS réfléchie, vous pouvez l'utiliser pour servir votre fichier HTA depuis leur domaine (hautement fiable).
De plus, Outlook ne bloque pas les pièces jointes .html par défaut, tout comme certaines autres applications - utilisez votre imagination ! :)
Actuellement, il n'est pas détecté sur VT :
Bien que les techniques d'obfuscation puissent être difficiles à signer, une façon de se défendre contre les attaques HTA est d'empêcher le HTA lui-même de pouvoir s'exécuter en premier lieu. Cela peut être réalisé soit en utilisant Software Restriction Policy (SRP), Device Guard (sur Windows 10 et Server 2016), ou en modifiant le gestionnaire de fichiers par défaut associé aux fichiers .hta.
Veuillez noter que ces modifications peuvent potentiellement affecter l'exécution des logiciels qui dépendent de l'exécution HTA. Il est donc recommandé de tester complètement une solution dans votre propre environnement.
Utilisation de SRP :

Modification du gestionnaire de fichiers par défaut :
ftype htafile=%SystemRoot%\system32\NOTEPAD.EXE %1

Pour le remettre (x64) :
ftype htafile=C:\Windows\SysWOW64\mshta.exe "%1" {1E460BD7-F1C3-4B2E-88BF-4E770A288AF5}%U{1E460BD7-F1C3-4B2E-88BF-4E770A288AF5} %*

WbemScripting.SWbemLocator et ShellBrowserWindowWbemScripting.SWbemLocatorExcel.Application.RegisterXLLOutlook.Application.CreateObject