Ssl bumping (#5)

* SSL Bumping post
This commit is contained in:
D. Arnodo
2025-06-23 19:19:47 +02:00
committed by GitHub
parent e578d22811
commit edb0c5c034
6 changed files with 344 additions and 1 deletions

View File

@@ -9,3 +9,7 @@ cascade:
{{< cards >}}
{{< card link="/documentation/securité/cadenas_vert/ssl/" title="SSL : Décryptage du Cadenas Vert" subtitle="Comment fonctionne le HTTPS (SSL/TLS)" icon="banknotes" >}}
{{< /cards >}}
{{< cards >}}
{{< card link="/documentation/securité/ssl_bumping/ssl_bumping/" title="SSL Bumping" subtitle="Comment analyser le traffic SSL" icon="clever" >}}
{{< /cards >}}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 222 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 336 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 304 KiB

View File

@@ -0,0 +1,327 @@
---
title: "SSL Bumping : Comment analyser le trafic SSL"
date: 2025-06-22T20:00:00+02:00
weight: 3
cascade:
type: docs
---
## Introduction : Quand le Cadenas Vert Devient Transparent 🔓🔍
Vous vous souvenez de notre fameux [**cadenas vert**](/documentation/securité/cadenas_vert/ssl/) dont on a parlé dans l'article précédent ? Cette petite icône qui nous rassure, qui nous dit "tout va bien, vos secrets sont en sécurité" ? Eh bien aujourd'hui, on va voir comment certains acteurs arrivent à **regarder à travers** ce cadenas ! 😱
Mais rassurez-vous, on ne va pas devenir des pirates ! On va explorer une technique légitime (mais controversée) appelée **SSL Bumping** ou **SSL/TLS Interception**. C'est un peu comme avoir des lunettes à rayons X pour voir ce qui se cache derrière le chiffrement HTTPS.
**Pourquoi c'est important ?** 🤔 Parce que cette technique est utilisée partout : dans les entreprises pour sécuriser leurs réseaux, dans les écoles pour filtrer le contenu, et même parfois... par des acteurs moins bien intentionnés. Comprendre comment ça fonctionne, c'est comprendre à la fois comment se protéger et comment protéger les autres.
Prêts pour une plongée dans les coulisses du HTTPS ? On va décortiquer ensemble cette technique fascinante, et je vous montrerai même comment la mettre en pratique avec un lab que j'ai préparé : [squid-ssl-bumping-lab](https://github.com/darnodo/squid-ssl-bumping-lab) 🧪
## Partie 1 : Le SSL Bumping, C'est Quoi au Juste ? 🎭
### Le Principe : L'Homme du Milieu... Mais Gentil ! 👤
Imaginez cette scène : vous voulez envoyer une lettre secrète à votre ami(e). Normalement, vous la mettez dans une enveloppe scellée (le chiffrement HTTPS) et hop, direction la boîte aux lettres. Personne ne peut la lire en chemin, n'est-ce pas ?
Maintenant, imaginez que le facteur (disons, le proxy de votre entreprise) ait besoin de vérifier que vous n'envoyez pas de plans secrets de l'entreprise à la concurrence. Comment fait-il ? Il ne peut pas lire à travers l'enveloppe !
C'est là qu'intervient le **SSL Bumping** :
![SSL Bumping Expliqué](images/ssl_bumping_explique.fr.svg#center)
Le proxy va :
1. **Intercepter** votre connexion HTTPS
2. **Déchiffrer** votre trafic (comme ouvrir l'enveloppe)
3. **Analyser** le contenu
4. **Re-chiffrer** et transmettre au serveur final
En gros, au lieu d'avoir **une** connexion sécurisée de bout en bout, vous en avez **deux** : une entre vous et le proxy, une autre entre le proxy et le serveur final. Le proxy peut voir tout ce qui passe !
> [!NOTE] **Terminologie : SSL Bumping, HTTPS Interception, MITM... Késako ? 🤓**
>
> Ces termes désignent tous la même chose :
> - **SSL Bumping** : Le terme historique utilisé par Squid (un proxy populaire)
> - **TLS Interception** : La version moderne (on utilise TLS, pas SSL)
> - **HTTPS Inspection** : Le terme "corporate-friendly"
> - **MITM (Man-In-The-Middle)** : Le terme technique général
>
> Dans cet article, j'utiliserai principalement "SSL Bumping" par habitude, mais c'est bien de TLS qu'on parle !
### Pourquoi Faire Ça ? Les Cas d'Usage Légitimes 🏢
Avant de crier au scandale, sachez que le SSL Bumping a des utilisations parfaitement légitimes :
1. **Sécurité d'Entreprise 🛡️**
- Détecter les malwares qui se cachent dans le trafic HTTPS
- Empêcher les fuites de données sensibles
- Bloquer l'accès à des sites malveillants
2. **Conformité et Contrôle 📋**
- Respecter les réglementations (certains secteurs doivent tout archiver)
- Filtrer le contenu inapproprié dans les écoles
- Optimiser la bande passante en cachant le contenu
3. **Débogage et Développement 🐛**
- Analyser les API de vos applications
- Debugger les problèmes de connexion
- Tester la sécurité de vos services
> [!WARNING] **Attention : Avec de Grands Pouvoirs... 🚨**
>
> Le SSL Bumping est une technique **très puissante** qui peut être utilisée à mauvais escient :
> - Espionnage des employés
> - Vol d'identifiants et de données personnelles
> - Violation de la vie privée
>
> Son utilisation doit **toujours** être transparente, légale et éthique !
## Partie 2 : Comment Ça Marche Techniquement ? 🔧⚙️
Bon, assez de théorie ! Rentrons dans le vif du sujet. Comment un proxy arrive-t-il à se faire passer pour le serveur légitime sans que votre navigateur ne crie au loup ? C'est toute une chorégraphie !
### Étape 1 : La Fausse Identité 🎭
Pour que le SSL Bumping fonctionne, le proxy doit pouvoir **créer de faux certificats** à la volée. Comment ? Il devient sa propre Autorité de Certification (CA) !
Le proxy génère :
1. **Sa propre CA** avec une paire de clés (publique/privée)
2. **Un faux certificat** pour chaque site que vous visitez
3. Ce faux certificat est signé par sa CA "maison"
### Étape 2 : Le Tour de Passe-Passe 🎩✨
Voici la danse complète quand vous visitez `https://www.example.com` :
![SSL Bumping Expliqué](images/generation_des_faux_certificats.fr.svg)
Le proxy joue un double jeu :
- Côté serveur : Il se fait passer pour un client normal
- Côté client : Il se fait passer pour le serveur !
> [!TIP] **Mais Attendez... Mon Navigateur N'est Pas Stupide ! 🤨**
>
> Exactement ! Normalement, votre navigateur devrait hurler "CERTIFICAT INVALIDE !"
> Pour que ça fonctionne, il faut que le certificat de la CA du proxy soit **installé comme CA de confiance** sur votre machine.
>
> C'est pourquoi :
> - Les entreprises installent leur CA sur tous les postes
> - Les antivirus vous demandent d'installer leur certificat
> - Vous devez faire super attention aux CA que vous installez !
### Étape 3 : L'Analyse du Trafic 🔍
Une fois le tunnel établi, le proxy peut voir **tout** :
- Les URL complètes (pas juste le domaine)
- Les données POST (formulaires, mots de passe...)
- Les cookies et tokens d'authentification
- Le contenu des pages
- Les fichiers téléchargés
Il peut alors :
- **Logger** tout pour analyse ultérieure
- **Bloquer** certains contenus
- **Modifier** les requêtes/réponses (dangereux !)
- **Scanner** pour des malwares
## Partie 3 : Mise en Pratique avec Squid 🦑
Assez parlé, passons à la pratique ! J'ai créé un lab complet pour que vous puissiez tester le SSL Bumping dans un environnement contrôlé : [squid-ssl-bumping-lab](https://github.com/darnodo/squid-ssl-bumping-lab).
### Qu'est-ce que Squid ? 🦑
Squid est un proxy cache très populaire qui supporte le SSL Bumping. C'est l'outil parfait pour notre expérimentation !
### Architecture du Lab 🏗️
![SSL Bumping Expliqué](images/architecture_du_lab_ssl.fr.svg)
### Installation Rapide 🚀
1. **Clonez le repository** :
```bash
git clone https://github.com/darnodo/squid-ssl-bumping-lab
cd squid-ssl-bumping-lab
```
2. **Générez votre CA** (ou utilisez une existante) :
```bash
# Créer le dossier ssl/
mkdir -p ssl
# Générer une CA auto-signée
openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \
-keyout ssl/squid-ca-key.pem \
-out ssl/squid-ca-cert.pem \
-subj "/CN=Squid CA/O=Mon Lab/C=FR"
```
3. **Lancez le lab** :
```bash
# Sans export de logs
docker-compose up --build -d
# Ou avec Fluent Bit pour exporter les logs
docker-compose --profile logging up --build -d
```
4. **Configurez votre navigateur** :
- Proxy HTTP/HTTPS : `localhost:3128`
- Importez `ssl/squid-ca-cert.pem` comme CA de confiance
> [!WARNING] **Lab Only ! Ne Faites Jamais Ça en Production ! 🚫**
>
> Ce lab est **uniquement** pour l'apprentissage !
> - N'utilisez JAMAIS cette CA en dehors du lab
> - Ne faites pas de SSL Bumping sans autorisation explicite
> - Supprimez la CA de votre système après les tests
### Ce Que Vous Verrez 👀
Une fois configuré, visitez n'importe quel site HTTPS et regardez les logs :
```bash
# Voir les logs en temps réel
docker-compose exec squid tail -f /var/log/squid/access.log
```
Vous verrez quelque chose comme :
```
1719151234.567 342 192.168.1.100 TCP_MISS/200 15234 GET https://www.example.com/api/data - HIER_DIRECT/93.184.216.34
```
Magie ! Vous voyez l'URL **complète** même en HTTPS ! 🎉
### Analyser les Certificats 🔍
Pour voir le faux certificat en action :
1. Visitez un site HTTPS via le proxy
2. Cliquez sur le cadenas dans votre navigateur
3. Regardez les détails du certificat
4. Surprise ! Il est signé par "Squid CA" et non par la vraie CA !
## Partie 4 : Se Protéger du SSL Bumping 🛡️
Maintenant qu'on sait comment ça marche, comment s'en protéger ? Ou du moins, comment le détecter ?
### Pour les Utilisateurs : Les Signaux d'Alerte 🚨
1. **Vérifiez les Certificats** 📜
- Cliquez sur le cadenas et examinez le certificat
- L'émetteur devrait être une CA connue (Let's Encrypt, DigiCert...)
- Méfiez-vous des CA d'entreprise ou inconnues
2. **Certificate Pinning** 📌
- Certaines applis vérifient que le certificat est EXACTEMENT celui attendu
- Si c'est différent = refus de connexion
- Les apps bancaires utilisent souvent cette technique
> [!TIP] **Le Test Ultime : Comparez les Empreintes ! 🔬**
>
> 1. Notez l'empreinte (fingerprint) SHA-256 du certificat depuis votre réseau
> 2. Comparez avec l'empreinte depuis un autre réseau (4G mobile par exemple)
> 3. Si elles sont différentes = SSL Bumping probable !
### Pour les Entreprises : Les Bonnes Pratiques 💼
Si vous DEVEZ utiliser le SSL Bumping :
1. **Transparence Totale** 📢
- Informez clairement les utilisateurs
- Affichez une politique claire d'utilisation
- Respectez la législation locale
2. **Sécurité Maximale** 🔒
- Protégez la clé privée de votre CA comme un trésor
- Utilisez un HSM (Hardware Security Module) si possible
- Limitez la durée de vie des certificats
3. **Exceptions Nécessaires** ⛔
- Ne bumpez JAMAIS les sites bancaires
- Excluez les sites de santé
- Respectez la vie privée (messageries, etc.)
### L'Alternative : Le SNI Filtering 🎯
Plutôt que de décrypter, pourquoi ne pas simplement filtrer par nom de domaine ?
```
Client ──"Je veux example.com" (en clair)──> Proxy ──> Décision
SNI Header
(Server Name Indication)
```
Le SNI permet de voir le domaine sans décrypter. C'est moins intrusif mais aussi moins précis (on ne voit que le domaine, pas l'URL complète).
## Partie 5 : L'Éthique et la Légalité ⚖️
### Les Questions Éthiques 🤔
Le SSL Bumping soulève des questions profondes :
1. **Vie Privée vs Sécurité** 🔐 vs 👁️
- Où placer le curseur ?
- La sécurité justifie-t-elle tout ?
- Quid du consentement éclairé ?
2. **Confiance Brisée** 💔
- HTTPS promettait du "bout en bout"
- Le SSL Bumping brise cette promesse
- Impact sur la confiance numérique globale
3. **Pente Glissante** 🎿
- Commencer par la sécurité...
- Finir par la surveillance ?
- Qui surveille les surveillants ?
### Le Cadre Légal 📜
Le SSL Bumping n'est pas illégal en soi, MAIS :
- **Consentement** : Les utilisateurs doivent être informés
- **Proportionnalité** : L'usage doit être justifié
- **Protection des données** : RGPD et autres réglementations s'appliquent
- **Contexte** : Entreprise ≠ Café public ≠ Domicile
> [!WARNING] **Rappel Important : La Légalité Varie ! 🌍**
>
> Les lois diffèrent selon les pays et les contextes :
> - En entreprise : Généralement OK avec information
> - Dans le public : Très réglementé voire interdit
> - À la maison : Complexe (enfants, invités...)
>
> Consultez toujours un juriste avant déploiement !
## Conclusion : Le Cadenas Vert a-t-il Encore un Sens ? 🔒❓
Alors, après tout ça, que penser de notre petit cadenas vert ? Est-il devenu obsolète ? Pas du tout !
Le SSL Bumping nous rappelle que :
1. **La Sécurité est Relative** 🎭
- Aucune technologie n'est infaillible
- Le contexte est crucial
- La vigilance reste de mise
2. **La Technologie est Neutre** ⚖️
- SSL Bumping peut protéger ou espionner
- L'intention fait la différence
- L'éthique guide l'usage
3. **L'Éducation est Essentielle** 📚
- Comprendre pour mieux se protéger
- Démystifier pour mieux décider
- Partager pour progresser ensemble
Le cadenas vert reste un excellent indicateur de sécurité. Mais comme toute technologie, il a ses limites. Le SSL Bumping nous montre qu'entre vous et le serveur, il peut y avoir des intermédiaires... parfois légitimes, parfois moins.
**Mon conseil ?** Restez curieux, restez vigilants, et n'hésitez pas à expérimenter (dans un lab, bien sûr !). La sécurité informatique est un domaine fascinant où l'attaque et la défense s'enrichissent mutuellement.
---
**Ressources pour aller plus loin :**
- 🧪 [Mon Lab SSL Bumping](https://github.com/darnodo/squid-ssl-bumping-lab)
- 📖 [Documentation Squid SSL Bump](http://www.squid-cache.org/Doc/config/ssl_bump/)
- 🔐 [OWASP sur l'Inspection TLS](https://cheatsheetseries.owasp.org/cheatsheets/Transport_Layer_Security_Cheat_Sheet.html)
*Stay safe, stay curious!* 🚀🔒

View File

@@ -115,4 +115,4 @@ hexo: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="cu
hugo: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M11.754 0a3.998 3.998 0 00-2.049.596L3.33 4.532a4.252 4.252 0 00-2.017 3.615v8.03c0 1.473.79 2.838 2.067 3.574l6.486 3.733a3.88 3.88 0 003.835.018l7.043-3.966a3.817 3.817 0 001.943-3.323V7.752a3.57 3.57 0 00-1.774-3.084L13.817.541a3.998 3.998 0 00-2.063-.54zm.022 1.674c.413-.006.828.1 1.2.315l7.095 4.127c.584.34.941.96.94 1.635v8.462c0 .774-.414 1.484-1.089 1.864l-7.042 3.966a2.199 2.199 0 01-2.179-.01l-6.485-3.734a2.447 2.447 0 01-1.228-2.123v-8.03c0-.893.461-1.72 1.221-2.19l6.376-3.935a2.323 2.323 0 011.19-.347zm-4.7 3.844V18.37h2.69v-5.62h4.46v5.62h2.696V5.518h-2.696v4.681h-4.46V5.518Z"/></svg>
html: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M1.5 0h21l-1.91 21.563L11.977 24l-8.564-2.438L1.5 0zm7.031 9.75l-.232-2.718 10.059.003.23-2.622L5.412 4.41l.698 8.01h9.126l-.326 3.426-2.91.804-2.955-.81-.188-2.11H6.248l.33 4.171L12 19.351l5.379-1.443.744-8.157H8.531z"/></svg>
mdbook: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M22.77 5.343c.023.337 0 .613-.073.817l-4.314 14.227c-.072.252-.24.445-.504.6a1.67 1.67 0 0 1-.805.23H3.772c-1.154 0-1.839-.337-2.079-1.01-.096-.264-.096-.469.012-.625.108-.144.288-.216.553-.216h12.52c.89 0 1.514-.168 1.85-.493.337-.324.686-1.07 1.034-2.21l3.954-13.05c.216-.71.12-1.334-.265-1.875-.384-.54-.937-.817-1.646-.817H8.735c-.12 0-.373.048-.734.132l.012-.048A2.458 2.458 0 0 0 7.33.933a.979.979 0 0 0-.517.168 1.794 1.794 0 0 0-.385.337c-.096.12-.18.264-.276.456a5.76 5.76 0 0 0-.228.517 7.95 7.95 0 0 1-.217.505c-.084.18-.156.324-.24.444-.06.073-.144.18-.24.3-.096.121-.193.241-.265.337a.776.776 0 0 0-.132.265c-.024.084-.012.216.024.384.036.168.048.289.048.373-.036.36-.168.829-.396 1.394-.229.564-.433.973-.613 1.213a5.201 5.201 0 0 1-.312.325c-.169.168-.277.312-.313.444-.036.048-.036.18-.012.409.036.216.048.372.036.456-.036.325-.156.757-.36 1.298a9.47 9.47 0 0 1-.601 1.322c-.024.06-.108.168-.24.336-.133.168-.217.3-.24.409-.025.072-.013.216.011.408.024.193.024.337-.012.433-.072.36-.216.805-.432 1.322-.217.516-.433.949-.65 1.321-.06.097-.131.205-.24.337-.096.132-.18.24-.24.336a.927.927 0 0 0-.12.3.53.53 0 0 0 .048.277c.036.132.048.228.048.313-.012.132-.024.312-.06.528-.024.216-.048.349-.048.385-.216.576-.204 1.19.024 1.826.264.745.745 1.382 1.43 1.899.685.516 1.406.769 2.139.769H17.05c.625 0 1.214-.205 1.767-.625.553-.42.925-.937 1.105-1.55l3.966-13.05c.216-.696.12-1.31-.265-1.862-.204-.3-.48-.505-.853-.649ZM7.16 15.677l1.707-5.143h1.297c.457 0 3.46-.204 3.052 2.103-.408 2.307-2.259 3.028-4.422 3.052-2.162.024-1.634-.012-1.634-.012zm2.283-.721c.565-.012 2.271-.349 2.656-2.055.384-1.706-1.382-1.61-1.382-1.61h-1.07l-1.225 3.665c.012.012.469.012 1.021 0zm-.396-5.78 1.646-5.107h1.178l.096 4.086 2.835-4.086h1.19l-1.634 5.107h-.853l1.502-4.253-2.944 4.253h-.817l-.096-4.205-1.298 4.205z"/></svg>
nuxt: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M13.4642 19.8295h8.9218c.2834 0 .5618-.0723.8072-.2098a1.5899 1.5899 0 0 0 .5908-.5732 1.5293 1.5293 0 0 0 .216-.783 1.529 1.529 0 0 0-.2167-.7828L17.7916 7.4142a1.5904 1.5904 0 0 0-.5907-.573 1.6524 1.6524 0 0 0-.807-.2099c-.2833 0-.5616.0724-.807.2098a1.5904 1.5904 0 0 0-.5907.5731L13.4642 9.99l-2.9954-5.0366a1.5913 1.5913 0 0 0-.591-.573 1.6533 1.6533 0 0 0-.8071-.2098c-.2834 0-.5617.0723-.8072.2097a1.5913 1.5913 0 0 0-.591.573L.2168 17.4808A1.5292 1.5292 0 0 0 0 18.2635c-.0001.2749.0744.545.216.783a1.59 1.59 0 0 0 .5908.5732c.2454.1375.5238.2098.8072.2098h5.6003c2.219 0 3.8554-.9454 4.9813-2.7899l2.7337-4.5922L16.3935 9.99l4.3944 7.382h-5.8586ZM7.123 17.3694l-3.9083-.0009 5.8586-9.8421 2.9232 4.921-1.9572 3.2892c-.7478 1.1967-1.5972 1.6328-2.9163 1.6328z"/></svg>
nuxt: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M13.4642 19.8295h8.9218c.2834 0 .5618-.0723.8072-.2098a1.5899 1.5899 0 0 0 .5908-.5732 1.5293 1.5293 0 0 0 .216-.783 1.529 1.529 0 0 0-.2167-.7828L17.7916 7.4142a1.5904 1.5904 0 0 0-.5907-.573 1.6524 1.6524 0 0 0-.807-.2099c-.2833 0-.5616.0724-.807.2098a1.5904 1.5904 0 0 0-.5907.5731L13.4642 9.99l-2.9954-5.0366a1.5913 1.5913 0 0 0-.591-.573 1.6533 1.6533 0 0 0-.8071-.2098c-.2834 0-.5617.0723-.8072.2097a1.5913 1.5913 0 0 0-.591.573L.2168 17.4808A1.5292 1.5292 0 0 0 0 18.2635c-.0001.2749.0744.545.216.783a1.59 1.59 0 0 0 .5908.5732c.2454.1375.5238.2098.8072.2098h5.6003c2.219 0 3.8554-.9454 4.9813-2.7899l2.7337-4.5922L16.3935 9.99l4.3944 7.382h-5.8586ZM7.123 17.3694l-3.9083-.0009 5.8586-9.8421 2.9232 4.921-1.9572 3.2892c-.7478 1.1967-1.5972 1.6328-2.9163 1.6328z"/></svg>