
Embutir e ocultar qualquer arquivo em um arquivo HTML
Autor: Arno0x0x - @Arno0x0x
O que esta ferramenta faz é pegar um arquivo (qualquer tipo de arquivo), criptografá-lo e incorporá-lo em um arquivo HTML como recurso, juntamente com uma rotina de download automático simulando um clique do usuário no recurso incorporado.
Então, quando o usuário navega pelo arquivo HTML, o arquivo incorporado é descriptografado em tempo real, salvo em uma pasta temporária, e o arquivo é então apresentado ao usuário como se estivesse sendo baixado do site remoto. Dependendo do navegador do usuário e do tipo de arquivo apresentado, o arquivo pode ser aberto automaticamente pelo navegador.
Esta ferramenta vem em duas versões, fornecendo a mesma funcionalidade geral, mas com algumas pequenas diferenças na forma de uso:
Um script em Python que gera o arquivo HTML de saída baseado em um template, usando rotinas de criptografia RC4, e incorporando a chave de descriptografia no arquivo de saída. O HTML resultante pode ser navegado pelo usuário alvo ou enviado como anexo.
Um HTML/JavaScript no qual você pode arrastar o arquivo para ser criptografado, gerando o arquivo HTML de saída, usando a API WebCrypto, mas NÃO incorporando o material de descriptografia (chave e contador). Em vez disso, o material de descriptografia é exibido como um conjunto de parâmetros de URL a serem adicionados em uma URL que aponta para o arquivo HTML resultante: http(s)://hosting.server.com/result.html#hexencodedkey!hexencodedcounter. Portanto, o arquivo HTML resultante não pode ser enviado como anexo.
A principal vantagem desta técnica é que o material de descriptografia não está incorporado no próprio arquivo, evitando assim a análise e até mesmo a recuperação do payload por qualquer sistema que não tenha a URL completa (por exemplo, proxy de interceptação).
Notas adicionais:
Esta ferramenta foi inspirada e derivada da excelente ferramenta 'demiguise' : https://github.com/nccgroup/demiguise
A função b64AndRC4 usada na entrada binária (do arquivo XLL) é uma mistura de: https://gist.github.com/borismus/1032746 e https://gist.github.com/farhadi/2185197
Veja https://gist.github.com/Arno0x/f71a9db515ddea686ccdd77666bebbaa para uma criação fácil de um XLL malicioso, que é um exemplo perfeito de um documento malicioso que se poderia tentar entregar com este método.
No template HTML (arquivo html.tpl) é aconselhável inserir sua própria função de derivação de chave do ambiente abaixo no lugar da 'keyFunction'. Você deve derivar sua chave do ambiente para que funcione apenas no seu alvo pretendido (e não em um sandbox).
Alguns exemplos de arquivos de payload são fornecidos no diretório payloads_examples. Por exemplo, o calc.xll é um arquivo de add-in do Excel (XLL) que contém um shellcode do metasploit para processos x86 para executar o processo calc.exe.
Usando o script Python
1/ Gere o arquivo HTML malicioso a partir do arquivo XLL, juntamente com uma chave secreta:
python embedInHTML.py -k mysecretkey -f example_calc.xll -o index.html
2/ Exponha o arquivo HTML em um servidor web (um pode ser iniciado opcionalmente para você com a flag -w)
Usando o HTML/JavaScript
1/ Abra o arquivo embedInHTML.html em um navegador
2/ Simplesmente arraste o arquivo de payload para a página (você pode opcionalmente alterar o nome do arquivo de saída)
3/ Salve o arquivo resultante e anote o material de descriptografia como parâmetros de URL a serem adicionados ao nome do arquivo no formato: http(s)://hosting.server.com/result.html#hexencodedkey!hexencodedcounter
Por fim...
Aponte o navegador do alvo para o arquivo HTML e deixe a magia acontecer:
Esta ferramenta destina-se a ser usada apenas de forma legal e legítima:
Citando os autores do Empire: Não há como construir ferramentas ofensivas úteis para a indústria de segurança da informação legítima enquanto simultaneamente impede que atores maliciosos as abusem.