
Инструмент шифрования HTA для RedTeams
Выпущен как open source компанией NCC Group Plc - http://www.nccgroup.trust/
Разработан Richard Warren, richard [dot] warren [at] nccgroup [dot] trust
http://www.github.com/nccgroup/demiguise
Распространяется под лицензией AGPL, см. LICENSE для дополнительной информации
Цель этого проекта — генерировать .html файлы, которые содержат зашифрованный HTA файл. Идея в том, что когда ваша цель посещает страницу, ключ извлекается и HTA динамически расшифровывается в браузере и передаётся непосредственно пользователю. Это метод обхода проверок содержимого / типа файла, реализованных некоторыми средствами безопасности. Этот инструмент не предназначен для создания крутого HTA-контента. Существует множество других инструментов/техник, которые могут вам в этом помочь. Что он может вам дать — это возможность изначально доставить ваш HTA в среду и (если вы используете привязку к окружению) избежать его песочницы.
Это достигается шифрованием HTA-файла с помощью RC4 и последующим использованием navigator.msSaveBlob для «сохранения» файла во время выполнения — вместо извлечения HTA напрямую с сервера. Это означает, что ни в один момент нет HTTP-запроса/ответа, содержащего ваш HTA-файл в открытом виде — прокси увидит только файл text/html, содержащий ваш зашифрованный блоб. В последней версии Edge это приведет к тому, что пользователю будет предложено «запустить» HTA.
Хотя это не является основной целью инструмента, есть несколько вариантов полезной нагрузки для базового HTA. Каждый вариант использует различные техники, ранее описанные Мэттом Нельсоном, Мэттью Демаске, Райаном Хэнсоном и Этьеном Сталмансом. Преимущество использования этих техник в том, что ваш код выполняется не как дочерний процесс mshta.exe. Как уже упоминалось, содержание HTA не является основной целью этого инструмента. Я призываю вас изменить шаблон HTA, чтобы он содержал ваш собственный код :)
Запустите файл demiguise.py, указав ваш ключ шифрования, тип полезной нагрузки, имя выходного файла и команду, которую должен выполнить HTA.
Пример: python demiguise.py -k hello -c "notepad.exe" -p Outlook.Application -o test.hta


Чтобы обойти песочницы, вам не следует встраивать ключ непосредственно в HTA. Вместо этого его нужно динамически получать из среды, в которой находится цель. Примером может служить использование внешнего IP-адреса клиента в качестве ключа. Преимущество этого в том, что если код выполняется в сторонней песочнице, HTA не расшифруется. Фактически, даже имя файла не расшифруется, поэтому никто не узнает, что делает ваша полезная нагрузка :)
Некоторые примеры привязки к окружению приведены в examples/externalip.js и examples/virginkey.js.
Поскольку инструмент выводит HTML-файл, содержащий JavaScript, вы можете просто взять этот JS и разместить его где угодно. Это означает, что если сайт вашего клиента уязвим для отраженного XSS, вы можете использовать его для доставки вашего HTA-файла с их (высокодоверенного) домена.
Кроме того, Outlook по умолчанию не блокирует вложения .html, и некоторые другие приложения тоже — используйте своё воображение! :)
В настоящее время он не обнаруживается на VT:
Хотя методы обфускации может быть трудно сигнатурировать, один из способов защиты от HTA-атак — предотвратить сам запуск HTA. Это можно сделать с помощью Политики ограниченного использования программ (SRP), Device Guard (на Windows 10 и Server 2016) или изменив обработчик файлов по умолчанию, связанный с файлами .hta.
Обратите внимание, что эти изменения могут повлиять на работу программного обеспечения, которое зависит от выполнения HTA. Поэтому рекомендуется полностью протестировать исправление в вашей собственной среде.
Использование SRP:

Изменение обработчика файлов по умолчанию:
ftype htafile=%SystemRoot%\system32\NOTEPAD.EXE %1

Возврат обратно (x64):
ftype htafile=C:\Windows\SysWOW64\mshta.exe "%1" {1E460BD7-F1C3-4B2E-88BF-4E770A288AF5}%U{1E460BD7-F1C3-4B2E-88BF-4E770A288AF5} %*
WbemScripting.SWbemLocator и ShellBrowserWindowWbemScripting.SWbemLocatorExcel.Application.RegisterXLLOutlook.Application.CreateObject