web-dev-qa-db-ja.com

キャプチャしたマルウェア(Meterpreter)HTTPS / SSLトラフィックをメモリのキーで復号化できますか?

ネットワーク上のマシンがMeterpreterに感染しました。

感染の全期間からのトラフィックキャプチャと、接続が確立された時点での感染したマシンのメモリダンプがあります。

キャプチャしたHTTPS/SSLトラフィックをデコードできますか?


これまでのところ、私たちはVolatilityのdumpcertsプラグインを使用していくつかのパブリック証明書を抽出しましたが、プライベートな証明書は明らかではありません。接続がまだ確立されているので、秘密鍵はメモリのどこかになければなりませんか?

TLSバージョンはTLSv1 1.0です。アルゴリズム識別子はsha256WithRSAEncryptionです。

6
Yara

はい、キーを抽出できます。秘密キーと対称キーは、暗号ライブラリ(OpenSSLなど)のメモリに存在します。 TLSトラフィックを復号化するには、対称鍵を抽出する必要があります。 OpenSSLはこれをstruct SSL->session->master_key。使用されているライブラリーが正確にわからない場合、単純な総当たりのアプローチは、適切なサイズのすべてのバッファーをメモリーから抽出し、成功するまでそれぞれのTLSストリームを復号化することです。

OpenSSLアプリケーションからプリマスターキーを抽出する で説明されているように、GDBを使用することもできます。これにより、Wiresharkにプラグインできるプリマスターシークレットを提供できます。その答えはライブメモリダンプに焦点を当てていますが、コアダンプがある場合も同様に機能します。揮発性を使用して、TLSライブラリにリンクされているプロセスメモリをダンプします。これにより、GDBを使用できるようになります。 OpenSSLがデバッグシンボルを使用してコンパイルされていない場合は、ブルートフォースメソッドを使用する必要があります。

1
forest

それは、メモリにまだ残っているデータの種類と、ハンドシェイク中にネゴシエートされたTLS機能によって多少異なります。 Wiresharkは、たとえばTLSチャネルのマ​​スターシークレットを提供できる場合、トラフィックの復号化を支援します。

0
ic0ns