web-dev-qa-db-ja.com

制御下にある(Windows)システムのすべての暗号化(SSL / TLS)トラフィックをリッスンする方法は?

私のWindowsマシンの1つ(つまり、私は管理者であり、基本的に私がやりたいことは何でもできる)で、明らかにマルウェアのC&Cサーバーに送られるトラフィックを分析したいと思います。トラフィックはTLS暗号化されており、私が知っている挿入/感染したサービスから発信されています(そのため、それを引き起こしている正確な実行可能ファイルを知っています)。

私は通常、ここで最良の(そして最も軽量な)アプローチを探しています。 Windowsマシン自体に何かをインストールしたり、何らかのミドルウェア/ TLSプロキシを使用したりします。理想的には、最終結果は復号化されたWireshark互換パッケージダンプになるはずです。

可能な限り簡単にしたいので、「軽量」のソリューションを探しているだけでなく、対処しているマルウェアが非常に回避的であるように見えるためです。私はすでにcuckooとcuckooを試しましたVM C&Cサーバーに接続することすらありません。すべてのオンラインの「ディープアナライズ」サービスで同じです。ただし、ベアメタルWindowsまたはカスタムで実行するとすぐにVMステータスを隠そうとするVMを作成し、C&C接続がポップアップする多くのハードウェアパススルーを持っています。

ブラウザのトラフィックをリッスンしたい場合はどうすればよいでしょうか( Web Security GatewayはSSL暗号化トラフィックをどのように分析しますか? )マルウェアはハードコーディングされた証明書で、TLSプロキシで使用されるシステムにインストールするルート証明書を無視します。私の考えが間違っていて、そのようなTLSプロキシが確実に機能する場合は、私にも知らせてください。

1
Jey DWork

特定のホストからのすべてのTLSトラフィックをリッスンする機能を保証する方法はありません。おっしゃるように、マルウェアはシステムセキュリティストアを使用しない場合もあります。また、ハードコードされた証明書(または少なくとも公開鍵)を持っている可能性があります。その場合、サーバーの秘密鍵を盗む(またはクラックできない)場合を除き、中間者攻撃の試みに気づきます。公開鍵)。

ただし、いくつかのオプションがあります。あなたは本当に1つの特定のプログラムからのトラフィックをクラックすることにのみ興味があるので、これはいくぶんよりもっともらしくなります。

  • バイナリをリバースエンジニアリングして、ハードコードされた証明書またはキーが含まれているかどうかを確認します。その場合は、このキーをMitMが使用するキーに置き換えてみてください。ただし、これによりバイナリのフィンガープリントが変更されるため、バイナリ自体の整合性を検証しようとする場合は、そのチェックを削除またはパッチする必要もあります。
  • マルウェアが使用している暗号ライブラリを見つけ、すべてのトラフィックをプレーンテキストに記録する「バックドア」バージョンに置き換えます。 Windowsライブラリだけを使用している場合は、そのようなバックドアされたライブラリを取得または作成する必要がありますが、プロセスに強制的に使用させることができるはずです(ただし、これらのバイナリのフィンガープリントまたは署名をチェックしている場合は、これが勝ちますパッチを適用するまで機能しません)。 OpenSSLなどのサードパーティライブラリを使用している場合は、簡単に置き換えることができますが、信頼性のチェックに注意してください。静的にリンクされたコードを使用している場合、このアプローチはよりトリッキーですが、実行時にプロセスイメージに動的にパッチを適用してTLSコードのエントリポイントをバックドアされた関数に置き換えることでまだ可能かもしれません(ただし、これには大幅なリバースエンジニアリングが必要になります)。
  • マルウェアをリバースエンジニアリングして、TLSの使用にパッチを適用し、代わりにトラフィックをプレーンテキストで送信するように指示してください。サーバーは明らかにこれを受け入れませんが、送信トラフィックを暗号化(および応答を復号化)し、プレーンテキストを双方向で記録する非表示のプロキシを使用できます。繰り返しになりますが、整合性チェックに注意してください。また、サーバーは、バイナリから取得する必要があるクライアント証明書を予期している場合があります。
  • 静的分析から何をするかを伝えるのに十分なプログラムのリバースエンジニアリングを試みます。これは、サーバーが何を言うかはわかりませんが、理論的には、その部分にも興味がある場合にサーバーが信頼する独自のクライアントを記述できるはずです。ただし、ハーフコンピテントマルウェアの作成者は、バイナリのリバースエンジニアリングを非常に困難にするための保護と難読化を含めます(もちろん、これはリバースエンジニアリングを必要とする以前のすべてのアプローチにも当てはまります)。
5
CBHacking