
Browser-in-the-Middle (BitM) armé pour les testeurs de pénétration

Navigateur-dans-le-milieu (BitM) multi-utilisateur armé pour les testeurs d'intrusion. Cette attaque peut être utilisée pour contourner l'authentification multi-facteurs sur de nombreuses applications Web à haute valeur ajoutée. Elle fonctionne même pour les applications qui n'utilisent pas de jetons de session et qui ne seraient donc pas exploitables via des attaques traditionnelles de vol de jetons. Il s'agit d'un outil d'ingénierie sociale et n'exploite aucune faille technique dans le service cible.
Cet outil est un serveur Web spécialisé. Il est conçu pour fonctionner sur un serveur Linux Debian 11 (Bullseye) et repose sur les informations d'adresse IP publique pour protéger les fonctionnalités d'administration. Ne vous attendez pas à pouvoir le tester localement sans passer par des contraintes importantes.
Attention : Chromium n'est pas pris en charge sur ARM. Bien qu'il soit techniquement possible de forcer l'utilisation d'un binaire Chromium ARM, vous perdrez toutes les fonctionnalités/protections supplémentaires de puppeteer-extra.
Cet exemple de configuration utilise Caddy pour gérer TLS, SNI et ajouter quelques en-têtes personnalisés comme 'X-Real-IP' à chaque requête. Vous n'êtes pas obligé d'utiliser Caddy avec Cuddlephish, car le même proxy inverse peut être configuré avec Nginx, Apache, etc. J'aime Caddy car il est facile à installer avec Docker et dispose de plugins pour gérer les certificats Letsencrypt pour la plupart des registraires de domaines. Le fichier Caddyfile d'exemple montre comment le configurer pour Gandi. Consultez la documentation de votre registraire.
Installez Docker, Node, XVFB et d'autres dépendances :
git clone https://github.com/fkasler/cuddlephish
cd cuddlephish
sudo bash install_deps.sh
Vous pouvez ensuite utiliser Docker pour construire Caddy avec un plugin de certificat wildcard pour votre registraire. L'exemple est pour Gandi. Consultez la documentation ici et la liste des modules de fournisseurs DNS ici. Vous pouvez modifier le Dockerfile pour votre registraire avant la construction :
sudo docker build -t caddy .
Maintenant, modifiez le fichier Caddyfile pour échanger votre domaine et votre clé API Gandi (ou autre registraire), puis démarrez Caddy. Je recommande de le lancer dans une fenêtre screen ou tmux afin de pouvoir exécuter le serveur Node dans une autre fenêtre dans un instant :
sudo docker run -p 80:80 -p 443:443 -p 2019:2019 -v $PWD/Caddyfile:/etc/caddy/Caddyfile --network=host caddy:latest
Avec Caddy qui gère le trafic pour nous sur les ports 80 et 443, nous pouvons enfin exécuter l'outil !
Installez les dépendances Node :
npm install
Quelques ajustements de configuration : ÉTAPE CRITIQUE : Assurez-vous de modifier le fichier config.json d'exemple pour ajouter votre/vos adresse(s) IP publique(s) approuvée(s) pour l'accès administrateur. Cette liste blanche d'IP est ce qui détermine l'accès à l'interface Web "/admin". Vous devez également changer la clé de socket par défaut pour quelque chose de plus sécurisé.
L'outil n'est pas configuré pour cibler des connexions par défaut, vous devrez donc en ajouter. Il existe un script 'add_target.js' pour faciliter cette étape. Exécutez simplement le script et collez l'URL du portail de connexion que vous souhaitez cibler lorsque vous y êtes invité :
node add_target.js
Cela récupérera le nom du service, le titre de l'onglet et le favicon pour vous, et ajoutera une entrée à 'targets.json'. Vous pouvez exécuter ce script plusieurs fois et il ajoutera vos nouvelles cibles. Le script nommera chaque service en fonction du domaine, sans le niveau supérieur. Ainsi, pour 'https://www.example.com/login.php', le service serait simplement 'example' lorsque vous spécifiez votre cible lorsque vous...
Exécutez-le !
node index.js example
Après quelques secondes, vous devriez voir un message dans la console lorsque votre première instance Chrome automatisée se connecte via websockets. Désormais, les visiteurs de votre site de phishing devraient voir ce qui semble être la page de connexion cible mais qui est en réalité un flux vidéo de votre instance de navigateur automatisée. Ils peuvent également interagir avec votre instance de navigateur et se connecter pour vous.
Si vous avez correctement configuré votre/vos IP(s) d'administration dans config.json, vous devriez pouvoir consulter une interface Web spéciale '/admin' pour suivre les utilisateurs, consulter les journaux de frappe, prendre le contrôle des instances de navigateur connectées, voler des cookies et supprimer les instances de navigateur indésirables.
Remarque : Vous ne verrez rien dans la page d'administration tant que vous n'aurez pas de victimes. Une fois que vous avez une victime, son instance de navigateur devrait apparaître dans l'interface administrateur.
Plusieurs personnes ont ouvert des problèmes concernant une "Page blanche", ce qui est plutôt un symptôme de nombreux problèmes possibles, et non un problème en soi. Veuillez ne pas ouvrir de problèmes sous des noms de symptômes vagues. Au lieu de cela, si vous avez une page blanche côté utilisateur, essayez d'abord d'examiner les points suivants :