Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
mitm-proxy-ja3-ja4 — Proxy MITM HTTP configurable en Rust avec usurpation d'empreinte TLS, HTTP/2 et TCP. | Kitploit
Outils/GitHubGitHub/3radiance/mitm-proxy-ja3-ja4
Sniffing et Analyse de PaquetsOutils de Chiffrement/DéchiffrementProxies Web et InterceptionSécurité WebSécurité RéseauProtection de la Vie PrivéeUtilitaires et FrameworksCrawlerAnti-BotUsurpation d'Empreinte Numérique
GitHub
558il y a 22 joursPas encore vérifié
3radiance/mitm-proxy-ja3-ja4

mitm-proxy-ja3-ja4

Proxy MITM HTTP configurable en Rust avec usurpation d'empreinte TLS, HTTP/2 et TCP.

Voir le dépôt

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

mitm-proxy-ja3-ja4

English | Русский

Un proxy MITM HTTP construit avec Rust, tokio et btls.

Ce projet a été entièrement réécrit pour tirer parti de btls (BoringSSL) afin d'obtenir des capacités avancées d'empreinte TLS. La couche d'empreinte TLS (JA3/JA4) est désormais entièrement falsifiable — les suites de chiffrement, les courbes, les algorithmes de signature, l'ALPN, la limite de taille d'enregistrement, la compression de certificat, GREASE, la permutation/ordonnancement des extensions, l'agrafage OCSP, la Certificate Transparency (SCT), les tickets de session, ALPS et Encrypted Client Hello (ECH, résolu en direct via DoH, avec repli sur GREASE) sont tous pilotés par un profil YAML. L'empreinte HTTP/2 (Akamai) ainsi que l'ordonnancement/réécriture des en-têtes HTTP/1.1 sont également entièrement configurables. L'empreinte TCP (L4) est aussi opérationnelle : les paquets SYN des connexions amont sont réécrits dans NFQUEUE (TTL, taille de fenêtre, MSS, window scale, drapeau DF, horodatages, ordre exact des options TCP, marques par domaine) avec gestion automatique d'iptables.

Configuration de la falsification d'empreinte TLS

TLS

Configuration de la falsification d'empreinte HTTP/2

HTTP/2

Configuration de la falsification d'empreinte TCP

TCP

Fonctionnalités (implémentation actuelle)

  • MITM (Man-in-the-Middle) — Interception HTTPS transparente. Il utilise rcgen pour émettre et signer dynamiquement des certificats à la volée, en les mettant en cache via moka pour la performance.

  • Intégration BoringSSL — Utilise btls et tokio-btls pour la gestion de la poignée de main TLS et l'interception MITM.

  • Falsification d'empreinte TLS (JA3/JA4) — complète. La connexion TLS amont est entièrement construite à partir d'un profil YAML passé via -c / --config <path> (voir config.yaml pour le format) :

    • Suites de chiffrement, dans un ordre strict défini par l'appelant.
    • Courbes elliptiques.
    • Algorithmes de signature.
    • Négociation ALPN basée sur le protocole réellement sélectionné par le serveur amont.
    • Limite de taille d'enregistrement.
    • Compression de certificat (brotli, zlib, zstd) avec prise en charge réelle de la décompression.
    • GREASE.
    • Ordre exact des extensions TLS dans le ClientHello, ou permutation aléatoire de style Chrome.
    • Options d'agrafage OCSP, Certificate Transparency (SCT), ticket de session et ALPS (Application-Layer Protocol Settings).
    • Encrypted Client Hello (ECH) — la véritable configuration ECH est résolue en direct via DoH (recherche d'enregistrement HTTPS/SVCB) pour chaque hôte amont, en utilisant le même profil d'empreinte TLS/HTTP2 pour la requête DoH elle-même ; se replie sur ECH GREASE (ou rien) lorsqu'aucune configuration n'est trouvée, configurable indépendamment — voir TLS.md pour les détails.
  • Négociation ALPN amont d'abord — Le proxy établit et négocie le TLS avec le serveur amont avant de terminer la poignée de main TLS côté navigateur. L'ALPN sélectionné par le serveur amont est ensuite utilisé pour configurer l'accepteur TLS côté client, empêchant le navigateur de sélectionner un protocole que la connexion amont ne prend pas en charge.

  • Falsification d'empreinte HTTP/2 (Akamai) — Empreinte HTTP/2 entièrement configurable via le profil YAML :

    • Valeurs SETTINGS HTTP/2 et ordre exact des SETTINGS.
    • Mises à jour de la fenêtre de contrôle de flux au niveau de la connexion.
    • ID de flux initial configurable avec calcul automatique lorsque des trames de priorité sont configurées.
    • Trames de priorité HTTP/2 et priorité des en-têtes de requête.
    • Placement configurable de END_STREAM pour les requêtes vides.
    • Ordonnancement des pseudo-en-têtes.
    • Ordonnancement des en-têtes HTTP.
    • Remplacement, ajout et suppression d'en-têtes HTTP.
    • Transfert en streaming des corps de requête et de réponse sans mise en mémoire tampon du corps complet.
    • Prise en charge des trailers HTTP/2.
  • Falsification d'en-têtes HTTP/1.1 — Ordre et contenu des en-têtes configurables pour les connexions amont HTTP/1.1 en clair (lorsque l'ALPN ne négocie pas h2), reproduisant la même sémantique de remplacement/suppression que celle utilisée pour HTTP/2.

  • Falsification d'empreinte TCP (L4) — complète. Les connexions amont sortantes sont empreintées au niveau des paquets via Linux NFQUEUE (src/tcp_fingerprint/) :

    • Réécriture SYN : TTL, taille de fenêtre, indicateur DF, valeurs MSS / window-scale, bascule du timestamp, ordre exact des options TCP (ou patch de valeurs sur place lorsqu'aucun ordre n'est défini), avec recalcul des checksums.
    • Patch de la file des flux établis pour TTL/DF uniquement (limite de saut IPv6 prise en charge) ; chaque paquet reçoit un verdict Accept par défaut afin que les files ne se bloquent jamais.
    • Routage basé sur SO_MARK vers des profils TCP par domaine, gestion automatique d'iptables (inséré en tête au-dessus d'outils comme zapret/nfqws, dédupliqué, supprimé à l'arrêt par Ctrl+C) avec la sécurité --queue-bypass.
    • Voir TCP.md et le bloc tcp dans config.yaml.
  • Prise en charge d'un proxy HTTP amont — Peut relayer les connexions via un proxy HTTP amont grâce à la méthode CONNECT.

  • Routage de profils par domaine — Passez -d / --domain <path> avec une table de motifs de domaines vers des surcouches partielles de profil (voir domain.yaml). Chaque connexion est mise en correspondance par SNI (exact → *.root → *.label.* → label.* → profil de base) et servie avec ses propres paramètres TCP/TLS/HTTP2/HTTP1/amont, préconstruits une fois au démarrage. Seuls les champs qui diffèrent du profil de base doivent être spécifiés ; tout le reste est hérité.

  • Asynchrone — Repose sur tokio pour des E/S asynchrones non bloquantes et hautes performances.

Prérequis

  • Rust (édition 2021)
  • Linux (requis pour les fonctionnalités NFQUEUE L4)
  • Root ou cap_net_admin,cap_net_raw=+eip (pour SO_MARK, la liaison NFQUEUE et iptables automatique ; sans cela, définissez "auto_iptables": false dans le bloc tcp et appliquez les règles mangle manuellement — voir TCP.md)
  • Firefox avec Multi-Account Containers (fortement recommandé pour exploiter plusieurs empreintes simultanément)

Journalisation

Le proxy utilise tracing avec un filtrage par module via RUST_LOG.

Exemples :

RUST_LOG='H2=error' cargo run --release -- -c profile.yaml
RUST_LOG='TCP=debug,H2=error,TLS=warn' cargo run --release -- -c profile.yaml
RUST_LOG='CA=info,TLS=warn,H2=error' cargo run --release -- -c profile.yaml

Les tags pris en charge correspondent aux mêmes noms de modules que ceux utilisés dans le code : TCP, HTTP, H1, H2, TLS, CA, ECH, CFG, IPT, NFQUEUE, Runtime.

Les lignes de journal incluent un horodatage par défaut, ce qui facilite la corrélation des sessions de débogage.

Installation et utilisation

1. Compilation

git clone https://github.com/3Radiance/mitm-proxy-ja3-ja4.git
cd mitm-proxy-ja3-ja4
cargo build --release

2. Exécution

Tous les paramètres — port, proxy amont et chemins des fichiers CA — se trouvent dans le fichier de configuration YAML transmis via -c / --config <path>. Il n'existe aucune option CLI --port / --upstream.

config: 
  port: 9090
  upstream_proxy: "127.0.0.1:10808"
  cert: "/path/to/ca.crt"
  key: "/path/to/ca.key"

Pour exécuter sans proxy amont, définissez upstream_proxy: null.

Télécharger l’outil