
Ein Zeek-Paket, das erkennt, wenn kompromittierte eMudhra-Intermediate-Zertifikate in TLS 1.2 und darunter verwendet werden.
Dies ist ein Zeek-Paket zur Erkennung von Verbindungen, die eMudhra-Intermediate-CA-Zertifikate mit kompromittierten/allgemein bekannten privaten Schlüsseln verwenden.
Weitere Informationen finden Sie z. B. im ursprünglichen Bugzilla-Eintrag oder unter https://emudhra.we-have-a-problem.com/.
Bitte beachten Sie, dass diese Erkennung nur für Verbindungen mit TLS 1.2 und darunter funktioniert. In TLS 1.3 sind Zertifikate verschlüsselt und Zeek weiß nicht, welche Zertifikate über die Leitung gehen.
Die eMudhra-CA hat mehrere Intermediate-CA-Zertifikate mit sehr schwachen ECDSA-Privatschlüsseln ausgestellt (z. B. einem Schlüssel, der die Zahl 4 ist).
Dadurch ist es jedem trivial möglich, Zertifikate zu erstellen, die von einem der betroffenen CA-Zertifikate signiert sind. Nach heutigem Kenntnisstand gibt es 8 betroffene Schlüssel, von denen 6 in Zertifikaten stehen, die für die Web-PKI vertrauenswürdig waren.
Während große Webbrowser die betroffenen Intermediate-CA-Zertifikate sofort nicht mehr vertrauten, sind Geräte, die nicht so einfach aktualisierbar sind, der Gefahr ausgesetzt, diese bösartigen Zertifikate über potenziell erhebliche Zeiträume hinweg zu akzeptieren.
Ausführlichen Hintergrund und eine Zeitleiste finden Sie in diesem Bugzilla-Eintrag.
Dieses Paket gleicht die Subject Public Key Info (SPKI) der betroffenen Intermediate-CA-Zertifikate ab. Die SPKI ist der Teil des Zertifikats, der die kompromittierten Schlüssel enthält – daher werden auch potenziell unbekannte Cross-Signs oder andere Zertifikate erkannt, die mit denselben Schlüsseln erstellt wurden.
Liste der SPKIs:
| Intermediate | SPKI SHA-256 |
|---|---|
| EM EV TLS CA - G3B (eMudhra BV) | E0254C7FCDC265E2F0F8A428DABB75AB4AE039B4872D62F5EE57F0877D5A8A41 |
| EM OV TLS CA - G3B (eMudhra BV) | 43BFFA19D6EF651451F6841E019931E96F6F2EAEFF28AB4B6F1CE4576DE2717B |
| EM DV TLS CA - G3B (eMudhra BV) | EBED6475C2C2D80FCB199F3FE8DD6E6B3CE60B77EB15D4E42C3DEC0C6F5B5105 |
| EM EV TLS CA - G3C (eMudhra Inc) | 5C0660A2B164910D8FF589C18E14552E9E0EC237DCEFE2CB736D41A4811F81A0 |
| EM OV TLS CA - G3C (eMudhra Inc) | 63ECEFEE431D49523BC1136C4E72D0206A477086CAF606CD5CF025686C109CF8 |
| EM DV TLS CA - G3C (eMudhra Inc) | 49DD353DC2B919A3770645117D0E60C16115E7D1BC259EEFE734B00EA434FE5F |
| EM OV CS CA - G3B (eMudhra BV) | EC4FFA1AD0AC88081314B7AAFFEF6A91F97CD57291BB5BA686C5415F5EB4F6B6 |
| EM OV CS CA - G3C (eMudhra Inc) | 92C063D67E8F14DB71D288E11266FFDAF69CBF115F7BAB14F3BC2F68D25E0E30 |
zkg install corelight/emudhra-weak-keys
oder laden Sie die Skripte direkt:
zeek -r trace.pcap /path/to/emudhra-weak-keys/scripts
Das Paket prüft jedes von Zeek geparste Zertifikat gegen die Liste.
Alle Notice-Typen befinden sich unter EMudhraWeakKeys::
| Notice | Beobachtung |
|---|---|
Compromised_Intermediate_Cert | Betroffenes Intermediate-Zertifikat in Verbindung gesehen |
Compromised_Intermediate_Cert_Established | Betroffenes Zertifikat gesehen, Handshake abgeschlossen |
Compromised_Intermediate_Issuer | Zertifikat mit betroffenem Aussteller in Verbindung gesehen |
Compromised_Intermediate_Issuer_Established | Betroffener Aussteller gesehen, Handshake abgeschlossen |
Die Ergebnisse werden in notice.log geschrieben; es wird kein zusätzliches Log erstellt.
Standardmäßig werden die _Cert-Notices einmal pro Server-IP-Adresse pro Tag
ausgegeben, und die _Established-Notices werden einmal pro Client-IP-Adresse pro Tag ausgegeben.
Bitte beachten Sie, dass die Compromised_Intermediate_Cert-Notices kennzeichnen, dass
ein kompromittiertes Zertifikat in der Verbindung vorhanden war, während die
Compromised_Intermediate_Issuer-Notices nur auf den Aussteller-String
der Zertifikate abgleichen; dies ist ein schwächeres Signal.
Darüber hinaus verfolgen die Established-Notices nur, ob der Handshake abgeschlossen wurde; dies
bedeutet nicht unbedingt, dass Daten ausgetauscht wurden. Einige Clients schließen den Handshake möglicherweise ab,
selbst wenn die Zertifikatsprüfung fehlschlägt, und brechen erst danach ab.
Das Skript prüft sowohl Client- als auch Server-Zertifikatsketten. Es ist unwahrscheinlich, dass Sie diese Zertifikate in Client-Zertifikaten sehen (falls doch – bitte melden Sie sich bei uns und lassen Sie es uns wissen).
Zertifikate werden auch in Nicht-TLS-Protokollen geprüft, die Zeek unterstützt (RDP, Kerberos). Zertifikate, die als Dateien übertragen werden (z. B. per HTTP heruntergeladen), werden nicht geprüft.
Das Unterdrückungsintervall für Benachrichtigungen kann über EMudhraWeakKeys::suppression_interval geändert werden.
Es gibt viele weitere Optionen, mit denen sich z. B. die Liste der kompromittierten Schlüssel ändern lässt. Weitere Details finden Sie in der Skriptdatei.
Hinweis: Dieses Paket wurde mit Hilfe von Claude Opus 5.5 erstellt. Der gesamte Code und Text wurde manuell überprüft, bearbeitet und verifiziert.