Wie kann ich die STARTTLS-Kommunikation über SMTP in einer Paketerfassung entschlüsseln (wenn ich den privaten Schlüssel habe)?

7

Zur Fehlerbehebung muss ich sehen, wie eine E-Mail aussieht, wenn sie über SMTP an meinen sendmail-Server gesendet wird. Für den Upstream-Server muss die SMTP-Verbindung STARTTLS verwenden, sodass bei einer Paketerfassung nur verschlüsselte Daten angezeigt werden.

Gibt es eine Möglichkeit, Wireshark zu verwenden, um die Übertragung zu entschlüsseln und zu sehen? Angenommen, ich habe den privaten Schlüssel auf meinem sendmail-Server verwendet?

Ich sehe mehrere online verfügbare Verfahren, die auf die RSA key listsFunktion in wireshark verweisen (zum Beispiel: https://support.citrix.com/article/CTX116557 ). Aber das scheint immer noch nicht für mich zu funktionieren.

Bezieht sich das auf das Vorwärtsgeheimnis? Kann ich dies bei neueren Protokollen / Chiffren einfach nicht tun?

Mike B.
quelle
3
Dies hängt von der verwendeten Chiffre ab, insbesondere vom Schlüsselaustausch. Wenn der RSA-Schlüsselaustausch verwendet wird, können Sie ihn mit dem privaten Schlüssel des Serverzertifikats entschlüsseln. Wenn DHE / ECDHE verwendet wird (Vorwärtsgeheimnis), können Sie dies nicht.
Steffen Ullrich
2
Besser geeignet auf security.stackexchange.com
sebix
@SteffenUllrich Möchten Sie Ihre Antwort als Antwort posten? Ich werde abstimmen. :-)
Mike B

Antworten:

2

Die Kenntnis des privaten RSA-Schlüssels ist nur dann ausreichend, wenn der Austausch des RSA-Schlüssels erfolgt. Moderne Systeme verwenden stattdessen den Diffie Helmann-Schlüsselaustausch (DHE *, ECDHE * -Verschlüsselung), um Vorwärtsgeheimnis zu gewährleisten. In diesem Fall wird der private Schlüssel nur zur Authentifizierung des Servers verwendet, nicht jedoch für den Schlüsselaustausch. Daher hilft die Kenntnis des privaten Schlüssels nicht beim Abrufen der Verschlüsselungsschlüssel.

Stattdessen wird das SSL- Pre-Master-Geheimnis benötigt, da hiermit die Verschlüsselungsschlüssel abgeleitet werden. Während einige Browser das Exportieren dieses Geheimnisses in einigen speziellen Debug-Modi unterstützen, tun dies andere Clients normalerweise nicht.

Was Ihr spezifisches Problem betrifft, würde ich stattdessen einen Mann im mittleren "Angriff" versuchen, der den gesamten Datenverkehr im Klartext protokolliert, obwohl der Client verschlüsselten Datenverkehr erhält. Dies funktioniert ähnlich wie bei Man in den mittleren Proxys für HTTPS, nur dass es die anfängliche einfache Verbindung unterstützt und versteht, dass STARTTLS auf TLS aktualisiert wird. Durch eine schnelle Suche habe ich starttls-mitm gefunden und dass sslsplit einige Beta-Unterstützung dafür hat. Natürlich muss der Client eine Verbindung zu dem Mann im mittleren Proxy herstellen und dem erhaltenen Zertifikat vertrauen. Dies kann das ursprüngliche Serverzertifikat sein, da Sie anscheinend Zugriff darauf haben.

Eine andere Möglichkeit wäre, das Debuggen in dem spezifischen MTA zu aktivieren, falls dies ausreichend detaillierte Informationen für Ihr spezifisches Problem liefert.

Steffen Ullrich
quelle
2

Möglicherweise weiß der Wireshark-SMTP-Protokollparser nicht, wie er mit TLS / SSL umgehen soll. Aber vielleicht können Sie stattdessen den HTTP-Protokollparser verwenden. Gehen Sie zu Bearbeiten-> Einstellungen-> Protokolle-> HTTP und fügen Sie den Port zu SSL / TLS-Ports hinzu

ptman
quelle