2010-12-16 6 views
0

Ich habe eine Clientanwendung, die auf meinem Computer ausgeführt wird, der openssl verwendet, um mit Server unter Verwendung von SSLv3 zu kommunizieren. Ich muss sehen, was sie sprechen, also will ich im Grunde die openssl Bibliothek redigieren und neu kompilieren, um relevante Verschlüsselungsschlüssel zu erwerben.Entschlüsseln von SSL-Netzwerkpaketen mit den von openssl api erworbenen Schlüsseln

Die Anwendung verwendet TLS-DHE-RSA-WITH-AES-256-CBC-SHA als Chiffre-Suite. Manchmal verwendet es aes128 anstelle von aes256, aber das ist in diesem Stadium nicht kritisch. Ich habe die Datei s3_enc.c bisher bearbeitet. Am Ende der ssl3_setup_key_block -Funktion schreibe ich den Hauptschlüssel, Schlüsselblock (also die Client-Server-Schreibschlüssel, Mac-Schlüssel und IV's), Server und Client-Randoms in eine Datei. http://www.ietf.org/rfc/rfc2246.txt sagt, wenn die Stromchiffre exportierbar ist, müssen Client-Server-Schreibschlüssel als endgültige Client-Server-Schreibschlüssel entsprechend aktualisiert werden. Ich bin mir nicht sicher, ob diese Cipher-Suite als exportierbar gilt (was auch immer das bedeutet), aber ich erstelle trotzdem endgültige Schreib-Schlüssel.

Das Problem ist, was auch immer ich versuchte, konnte ich kein Paket erfolgreich entschlüsseln, die ich mit Wireshark erworben. Die Ausgabe ist bedeutungslos, egal was passiert und ich stecke fest. Ich überlege, die Mac-Felder von Paketen nach der Entschlüsselung zu überprüfen, um zu sehen, ob die Entschlüsselung korrekt war. Aber das scheint auch eine Sackgasse zu sein.

Hat jemand eine Idee, was ich vermisse, was ich falsch machen könnte?

Antwort

1

Wenn Sie OpenSSL modifizieren und Ihre Client-Anwendung verwenden können, müssen Sie nur Ihre modifizierten OpenSSL-Dumps die entschlüsselten Daten in die Datei speichern. Eine noch einfachere Alternative wäre, OpenSSL einen der NULL-Verschlüsselungssätze zu verwenden, selbst wenn die Anwendung eine bestimmte Verschlüsselung anfordert.

+0

Danke für Ihre Antwort. Ich hatte auch versucht, entschlüsselte Pakete in Datei zu drucken, aber da die openssl-Quelle eine Menge Müll ohne Code-Kommentare und zuverlässige Dokumentation ist, konnte ich nicht finden, wo ich diese entschlüsselten Pakete erfolgreich finden kann. Ich glaube nicht, dass der Server eine verschlüsselte Null-Verbindung akzeptiert, aber es ist einen Versuch wert. Vielen Dank. – Yigit

+0

@Yigit: Patch 'SSL_read()' und 'SSL_write()' in 'ssl_lib.c' - das sind die Funktionen, die die App aufrufen wird, um die Klartext-Seite der Verbindung zu lesen und zu schreiben. – caf

+0

@caf auf den Kommentator antworten, Zeichen setzen, dann Name des Kommentators und KEIN Semikolon nach. So funktioniert Stackoverflow-Engine. –

Verwandte Themen