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
browsertunnel — Exfiltrer subrepticement des données du navigateur via DNS | Kitploit
Outils/GitHubGitHub/veggiedefender/browsertunnel
Exfiltration de DonnéesSécurité WebRed TeamingAnalyse DNS
GitHubveggiedefender/browsertunnel

browsertunnel

Exfiltrer subrepticement des données du navigateur via DNS

Voir le dépôtSite web
42230il y a 6 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

browsertunnel

CircleCI

Browsertunnel est un outil permettant d'exfiltrer des données depuis le navigateur via le protocole DNS. Il y parvient en abusant de dns-prefetch, une fonctionnalité conçue pour réduire la latence perçue des sites web en effectuant des résolutions DNS en arrière-plan pour des domaines spécifiés. Le trafic DNS n'apparaît pas dans les outils de débogage du navigateur, n'est pas bloqué par la Content Security Policy (CSP) d'une page, et est souvent ignoré par les pare-feu ou proxys d'entreprise, ce qui en fait un vecteur idéal pour faire transiter furtivement des données dans des scénarios contraints.

C'est une technique ancienne — le tunneling DNS lui-même remonte aux années 90, et Patrick Vananti a écrit sur l'utilisation de dns-prefetch à cette fin en 2016, mais à ma connaissance, browsertunnel est le premier client/serveur open source prêt pour la production qui en fait la démonstration. Comme dns-prefetch ne renvoie aucune donnée au JavaScript client, la communication via browsertunnel est uniquement unidirectionnelle. De plus, certains navigateurs désactivent dns-prefetch par défaut, et dans ce cas, browsertunnel échoue silencieusement.

Le projet se compose de deux parties :

  1. Un serveur, écrit en Go, qui agit comme un serveur DNS faisant autorité, collectant et décodant les messages envoyés par browsertunnel.
  2. Une petite bibliothèque JavaScript, située dans le dossier html/, qui encode et envoie les messages côté client.

Fonctionnement

Browsertunnel peut envoyer des chaînes de caractères arbitraires via DNS en encodant la chaîne dans un sous-domaine, qui est transmis au serveur browsertunnel lorsque le navigateur tente de résoudre récursivement le domaine.

Les messages plus longs qui ne tiennent pas dans un seul domaine (253 octets) sont automatiquement divisés en plusieurs requêtes, qui sont réassemblées et décodées par le serveur.

Configuration et utilisation

Commencez par configurer des enregistrements DNS pour déléguer un sous-domaine à votre serveur. Par exemple, si l'IP de votre serveur est 192.0.2.123 et que vous souhaitez tunneliser via le sous-domaine t1.example.com, alors votre configuration DNS ressemblera à ceci :

root@kitploit:~
t1		IN	NS	t1ns.example.com.
t1ns		IN	A	192.0.2.123

Sur votre serveur, installez browsertunnel à l'aide de go get. Sinon, compilez browsertunnel sur votre propre machine et copiez le binaire sur votre serveur.

root@kitploit:~
go get github.com/veggiedefender/browsertunnel

Ensuite, exécutez browsertunnel en spécifiant le sous-domaine à tunneliser.

root@kitploit:~
browsertunnel t1.example.com

Pour l'utilisation complète, exécutez browsertunnel -help :

root@kitploit:~
$ browsertunnel -help
Usage of browsertunnel:
  -deletionInterval int
    	seconds in between checks for expired messages (default 5)
  -expiration int
    	seconds an incomplete message is retained before it is deleted (default 60)
  -maxMessageSize int
    	maximum encoded size (in bytes) of a message (default 5000)
  -port int
    	port to run on (default 53)

Pour des descriptions détaillées et la justification de ces paramètres, vous pouvez également consulter la godoc.

Enfin, testez votre tunnel ! Vous pouvez utiliser ma page de démonstration ici ou cloner ce dépôt et charger html/index.html localement. Si tout fonctionne, vous devriez voir les messages s'afficher dans la sortie standard (stdout).

Pour des applications réelles de ce projet, vous voudrez peut-être forker et adapter le code selon vos besoins. Quelques pistes :

  • Écrire les messages dans une base de données plutôt que de les imprimer sur stdout
  • Transpiler ou réécrire le code client pour fonctionner avec des navigateurs plus anciens
  • Agrandir ou réduire la partie ID du domaine, en fonction du volume de trafic et des collisions d'ID attendues
  • Authentifier et chiffrer les messages pour garantir la confidentialité et la résistance aux falsifications (rappel : DNS est un protocole en texte clair)
Télécharger l’outil