胖クライアントは、私たちがよく言う C/S アーキテクチャのアプリケーションです。その主な特徴は、クライアント側で一部のアプリケーションロジックを実行し、サーバー側がストレージと計算のサポートを提供し、両者がネットワークを介して通信と相互作用を行うことです。一方、私たちがよく言う「スリムクライアント」は、B/S アーキテクチャに基づいたブラウザベースのアプリケーションです。
胖クライアントプログラムを取得した場合、まず胖クライアントがどのようなアーキテクチャであるかを確認することができます。一般的に、拡張子が exe で終わるものは、C、C#、または.NET でコンパイルされたものが多いです。
CFF Explorer を使用して、対象プログラムのアーキテクチャを確認することができます。以下の図を参照してください。
この図から、32 ビットのプログラムであり、Microsoft Visual Studio .NET を使用してコンパイルされた.NET プログラムであることがわかります。
このような.NET プログラムは、dnspy(GitHub - dnSpy/dnSpy: .NET debugger and assembly editor)を使用して逆コンパイルすることができます。DNspy は有名な.NET デコンパイラであり、.NET でコンパイルされたファイル、実行可能ファイル(exe)、DLL ファイル、.NET アセンブリなどを逆コンパイルすることができます。DNspy を使用して exe ファイルを逆コンパイルすると、ソースコードと内部構造を簡単に表示でき、プログラムの動作メカニズムを理解し、分析するのに役立ちます。
以下の図から、SQL クエリが表示されます。ここから、SQL クエリがフィルタリングされずに直接連結されていることがわかりますが、ここではシングルクォートが直接追加されているため、クエリごとにシングルクォートが 1 つ多くなり、回避することができません。
ただし、クライアントプログラムが直接逆コンパイルできる場合、クライアントプログラムが署名されていない場合、再コンパイルして別のプログラムにパッケージ化することができます。その結果、公式のクライアントを偽装し、悪意のあるファイルを書き込むことができます。この方法を使用すると、フィッシングなどの攻撃が行われる可能性があります。
ここでは画像を掲載しませんが、変更後は通常のクライアントプログラムと同様に使用できます。
また、Wireshark や科などを使用してトラフィックを監視し、アプリケーションが転送中に機密情報を漏洩していないかを確認することもできます。
上記の図から、この胖クライアントが TDS データベースプロトコルを使用していること、ノードの IP アドレス、ポートなどがわかります。
さらに、SQL クエリが転送中に漏洩していることもわかります。
Wireshark や科などのツールを使用してトラフィックを分析する以外にも、エコーミラージュを使用してトラフィックを分析することもできます。自分でダウンロードして使用できます。
次に、この記事の本題に戻ります。DLL ハイジャックの脆弱性について書いたのは、白加黑に関する記事(https://xz.aliyun.com/t/12376)を見たからであり、以前にもこのような DLL の脆弱性に遭遇したことがあるため、記録しておきます。