
Ferramenta de criptografia HTA para Red Teams
Lançado como código aberto pela NCC Group Plc - http://www.nccgroup.trust/
Desenvolvido por Richard Warren, richard [dot] warren [at] nccgroup [dot] trust
http://www.github.com/nccgroup/demiguise
Lançado sob AGPL, veja LICENSE para mais informações
O objetivo deste projeto é gerar arquivos .html que contêm um arquivo HTA criptografado. A ideia é que quando seu alvo visitar a página, a chave seja buscada e o HTA seja descriptografado dinamicamente no navegador e enviado diretamente ao usuário. Esta é uma técnica de evasão para contornar a inspeção de conteúdo/tipo de arquivo implementada por alguns appliances de segurança. Esta ferramenta não foi projetada para criar conteúdo HTA incrível. Existem muitas outras ferramentas/técnicas que podem ajudá-lo com isso. O que ela pode ajudá-lo é a colocar seu HTA em um ambiente em primeiro lugar e (se você usar chaveamento ambiental) a evitar que ele seja executado em sandbox.
Isso é alcançado criptografando o arquivo HTA usando RC4 e, em seguida, usando navigator.msSaveBlob para "salvar" o arquivo em tempo de execução - em vez de buscar o HTA diretamente do servidor. Isso significa que em nenhum momento há qualquer requisição/resposta HTTP que contenha seu arquivo HTA em texto simples - o proxy simplesmente verá um arquivo text/html contendo seu blob criptografado. Na versão mais recente do Edge, isso resultará em o usuário ser solicitado a "executar" o HTA.
Embora não seja o objetivo principal desta ferramenta, existem algumas opções de payload para o HTA subjacente. Cada opção usa técnicas diferentes, conforme documentado anteriormente por Matt Nelson, Matthew Demaske, Ryan Hanson e Etienne Stalmans. O benefício de usar essas técnicas é que seu código não é executado como filho de mshta.exe. Como mencionado anteriormente, o conteúdo do HTA não é o objetivo principal desta ferramenta. Encorajo você a modificar o modelo HTA para conter seu próprio código personalizado :)
Execute o arquivo demiguise.py, fornecendo sua chave de criptografia, tipo de payload, nome do arquivo de saída e o comando que você deseja que o HTA execute.
Exemplo: python demiguise.py -k hello -c "notepad.exe" -p Outlook.Application -o test.hta


Para evadir sandboxes, você não deve embutir sua chave diretamente no HTA. Em vez disso, você deve obtê-la dinamicamente do ambiente em que o alvo está baseado. Um exemplo disso pode ser usar o endereço IP externo do cliente como chave. O benefício disso é que, se o código for executado em uma sandbox de terceiros, o HTA não será descriptografado. Na verdade, o nome do arquivo nem será descriptografado, o que significa que ninguém saberá o que seu payload é/faz :)
Alguns exemplos de chaveamento ambiental são fornecidos em examples/externalip.js e examples/virginkey.js.
Como a ferramenta gera um arquivo HTML contendo JavaScript, você pode simplesmente pegar esse JS e hospedá-lo onde quiser. Isso significa que se o site do seu cliente for vulnerável a XSS refletido, você pode usar isso para servir seu arquivo HTA a partir do domínio deles (altamente confiável).
Além disso, o Outlook não bloqueia anexos .html por padrão, e alguns outros aplicativos também não - use sua imaginação! :)
Atualmente não é detectado no VT:
Embora as técnicas de ofuscação possam ser difíceis de assinar, uma maneira de se defender contra ataques HTA é impedir que o próprio HTA seja executado em primeiro lugar. Isso pode ser alcançado através do uso da Política de Restrição de Software (SRP), Device Guard (no Windows 10 e Server 2016), ou alterando o manipulador de arquivo padrão associado a arquivos .hta.
Observe que essas alterações podem potencialmente afetar a execução de software que depende da execução de HTA. Portanto, recomenda-se que uma correção seja totalmente testada em seu próprio ambiente.
Usando SRP:

Alterando o manipulador de arquivo padrão:
ftype htafile=%SystemRoot%\system32\NOTEPAD.EXE %1

Alterando de volta (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