実行可能ファイルのBCryptEncrypt
およびBCryptDecrypt
呼び出しをフックしました。これらの関数の入力引数と出力値を取得できます。このプログラムはBCryptEncrypt
を呼び出してTLS経由で送信されるデータを暗号化し、BCryptDecrypt
を呼び出してTLSから受信したデータを復号化します。そのため、このフックにより、TLSチャネル経由で暗号化されていない大量のデータが提供されました。
ただし、1つのHTTPSリクエストが複数のTLSパケットに分割される可能性があるため、上記の関数を呼び出すたびに、フックはHTTPSストリーム全体の一部しか取得できません。
TLSパケットのすべての暗号化されたデータのプレーンテキストを既に取得しているので、WireSharkでTLSキャプチャを「復号化」する方法があるかどうか疑問に思っています。キャプチャーの分析に役立つように、フォローHTTPストリーム、Gzip解凍、およびWireSharkの他の多くの便利な機能を利用できるようにします。
Wiresharkに、取得したアプリケーションレベルのデータを直接操作させる方法はありません。ただし、これらのデータに基づいて新しいpcapを作成し、Wiresharkを使用してこのpcapを分析できます。たとえば、これは少しのPerlと Net :: PcapWriter モジュールを使用して行うことができます。これにより、pcapを簡単に作成し、独自のアプリケーションデータとTCP接続を追加できます。それに:
use strict;
use Net::PcapWriter;
my $pcap = Net::PcapWriter->new('test.pcap');
my $conn = $pcap->tcp_conn('1.1.1.1',1234,'2.2.2.2',80);
$conn->write(0,"GET / HTTP/1.0\r\nHost:..."); # HTTP request from client
$conn->write(1,"HTTP/1.1 200 ok\r\n..."); # HTTP response from server
Pythonと有名な scapy ライブラリでも同様のことができるでしょう。