[[start|zurück]] # Man-in-the-Middle-Angriff bei HTTPS (TLS) ## Ziel des Artikels Dieser Artikel beschreibt **schrittweise**, wie ein klassischer **Man-in-the-Middle-Angriff (MITM)** auf eine HTTPS-Verbindung funktioniert, **wenn der Client einem manipulierten Zertifikat vertraut**. Der Fokus liegt auf: * dem TLS-Handshake * der Rolle von Zertifikaten * der **korrekten Interpretation der Sitzungsschlüssel-Erzeugung** --- ## Beteiligte Rollen ^ Rolle ^ Beschreibung ^ | **Alice** | Client (Browser, App) | | **Bob** | Echter HTTPS-Server | | **Mallory** | Angreifer im Datenpfad (MITM) | --- ## Wichtige Voraussetzung für den Angriff **Der Angriff funktioniert nur, wenn Alice das MITM-Zertifikat akzeptiert.** Beispiele: * Installierte Root-CA (Unternehmens-Proxy, Malware) * Ignorierte Browser-Warnung * Fehlendes Certificate Pinning --- ## TLS-MITM – Ablauf (ASCII-Sequenzdiagramm, a2s) Alice (Client) Mallory (MITM) Bob (Server) | | | | | | o--- HTTPS Request --->+ | | | | | o--- HTTPS Request -->+ | | | | +<-- Server Cert -----o | | | | o-- Fake Cert | | | | +<-- Fake Cert --------o | | | | | | | |-- Verify Cert OK --->+ | | | | | PreMasterSecret ---o | | (encrypted with | | | Public Key from | | | received cert) | | | o---- Decrypt | | | | | | | | o-- New PreMaster --->+ | | (own TLS session) | | | | +<==== TLS Tunnel =====|<=== TLS Tunnel =====o | | | --- ## Schritt-für-Schritt-Erklärung ### 1. Client startet HTTPS Alice möchte eine HTTPS-Verbindung zu Bob aufbauen. ### 2. MITM übernimmt die Verbindung Mallory sitzt im Datenpfad (z. B. WLAN, Proxy, Router) und leitet die Anfrage weiter. ### 3. Bob sendet sein echtes Zertifikat Bob schickt sein **legitimes TLS-Zertifikat** an Mallory. ### 4. Mallory erzeugt ein eigenes Zertifikat * Gleicher Hostname * Eigenes Schlüsselpaar * Signiert durch eine CA, der Alice vertraut ### 5. Mallory sendet Fake-Zertifikat an Alice Alice erhält **nicht Bobs Zertifikat**, sondern Mallorys. ### 6. Alice prüft das Zertifikat Das Zertifikat wird akzeptiert → Angriff läuft weiter. --- ## 🔴 Kritischer Punkt: Sitzungsschlüssel (korrigiert) ### 7. Alice erzeugt das Pre-Master-Secret Standard-TLS-Vorgang. ### 8. **Alice verschlüsselt das Pre-Master-Secret** **Korrekt:** > Alice verschlüsselt das Pre-Master-Secret mit dem **öffentlichen Schlüssel aus dem Zertifikat, das sie für das Serverzertifikat hält**. **Wichtig:** * Alice weiß **nicht**, dass es ein MITM-Zertifikat ist * Sie verwendet **keinen „MITM-Schlüssel“ bewusst** ➡ **Begriff „MITM-Public-Key“ ist aus Client-Sicht falsch** ### 9. Mallory entschlüsselt das Pre-Master-Secret Da Mallory den **Private Key** besitzt, kann sie den Schlüssel lesen. ### 10. Mallory startet eine zweite TLS-Verbindung Mallory baut eine **eigene, echte TLS-Verbindung** zu Bob auf. --- ## Ergebnis: Zwei getrennte TLS-Tunnel ^ Verbindung ^ Inhalt ^ | Alice ↔ Mallory | Vollständig entschlüsselbar für Mallory | | Mallory ↔ Bob | Reguläre TLS-Verbindung | Mallory kann: * Daten lesen * Daten verändern * Daten neu verschlüsseln Ohne dass Alice oder Bob es merken. --- ## Merksätze (prüfungsrelevant) > **TLS schützt nicht vor MITM, sondern vor unbekannten MITM.** > > **Der Client weiß nie, dass es ein MITM ist – sonst wäre der Angriff gescheitert.** > > **HTTPS-Sicherheit basiert auf Vertrauen in Zertifikate, nicht auf Verschlüsselung allein.** --- ## Typische Schutzmechanismen ^ Maßnahme ^ Wirkung ^ | HSTS | Erzwingt HTTPS | | Certificate Pinning | Blockiert fremde Zertifikate | | Keine fremden Root-CAs | Verhindert Proxy-MITM | | Benutzer ignoriert Warnungen nicht | effektiv, aber selten 😄 | --- ## Fazit Ein MITM-Angriff auf HTTPS ist **kein Kryptobruch**, sondern ein **Vertrauensbruch**. Wer die Zertifikatskette kontrolliert, kontrolliert die Verbindung.