FireEye が CVE-2017-8759 を発見: FINSPY の配布に実際に使用されたゼロデイ

Vulnerable WSDL Parser news

FireEye は最近、SOAP WSDLパーサー コード インジェクションの脆弱性であるCVE-2017-8759を利用した、悪意のある Microsoft Office RTF ドキュメントを検出しました。この脆弱性により、悪意のあるアクターは、SOAP WSDL 定義コンテンツの解析中に任意のコードを挿入することができます。 Mandiantは、攻撃者が任意のコード インジェクションを使用して、PowerShell コマンドを含む Visual Basic スクリプトをダウンロードして実行する Microsoft Word 文書を分析しました。

FireEye は脆弱性の詳細を Microsoft と共有し、脆弱性とセキュリティ ガイダンスに対処するためのパッチのリリースに合わせて一般公開を調整しています

FireEye の電子メール、エンドポイント、およびネットワーク製品は、悪意のあるドキュメントを検出しました。

ロシア語話者を標的とする脆弱性

悪意のあるドキュメント「Проект.doc」(MD5: fe5c4d6bb78e170abf5cf3741868ea4c) は、ロシア語話者を標的にするために使用された可能性があります。 CVE-2017-8759 の悪用に成功すると、ドキュメントは複数のコンポーネントをダウンロードし (詳細は後述)、最終的に FINSPY ペイロード (MD5: a7b990d5f57b244dd17e9a937a41e7f5) を起動します。

FinFisher またはWingBirdとしても報告されている FINSPY マルウェアは、「合法的な傍受」機能の一部として購入できます。今回の FINSPY の使用と以前のFINSPYの使用に基づいて、この悪意のあるドキュメントがサイバー スパイ目的でロシア語を話すエンティティを標的とする国家によって使用されたことを、ある程度の確信を持って評価します。 FireEye の Dynamic Threat Intelligence システムによる追加の検出は、関連するアクティビティが、別のクライアントに対する可能性がありますが、早ければ 2017 年 7 月に発生した可能性があることを示しています。

CVE-2017-8759 WSDL パーサー コード インジェクション

PrintClientProxy メソッド内の WSDL パーサー モジュールにコード インジェクションの脆弱性が存在します ( http://referencesource.microsoft.com/ – System.Runtime.Remoting/metadata/wsdlparser.cs,6111 )。 CRLF シーケンスを含むデータが提供された場合、IsValidUrl は正しい検証を実行しません。これにより、攻撃者は任意のコードを挿入して実行できます。脆弱なコードの一部を図 1 に示します。

Vulnerable WSDL Parser
図 1: 脆弱な WSDL パーサー

SOAP 応答で複数のアドレス定義が提供される場合、コードは最初のアドレスの後に「//base.ConfigureProxy(this.GetType(),」文字列を挿入し、残りのアドレスをコメント化します。ただし、CRLF シーケンスが追加のアドレスの場合、CRLF に続くコードはコメント アウトされません。図 2 は、CRLF の検証が不足しているため、System.Diagnostics.Process.Start メソッド呼び出しが挿入されることを示しています。生成されたコードは、csc.exe によってコンパイルされます。 NET フレームワークであり、Office 実行可能ファイルによって DLL として読み込まれます。

SOAP 定義 VS 生成コード
図 2: SOAP 定義 VS 生成コード

野生の攻撃

FireEye が実際に確認した攻撃は、以前に報告したCVE-2017-0199ドキュメントと同様に、Rich Text Format (RTF) ドキュメントを利用していました。悪意のあるサンプルには、悪用を容易にする埋め込みの SOAP モニカが含まれていました (図 3)。

SOAPモニカ
図 3: SOAP モニカー

ペイロードは、攻撃者が制御するサーバーから悪意のある SOAP WSDL 定義を取得します。 .NET フレームワークの System.Runtime.Remoting.ni.dll に実装されている WSDL パーサーは、コンテンツを解析し、作業ディレクトリに .cs ソース コードを生成します。次に、.NET フレームワークの csc.exe が、生成されたソース コードをライブラリ、つまり http[url path].dll にコンパイルします。 Microsoft Office は次にライブラリをロードし、悪用段階を完了します。図 4 は、エクスプロイトの結果として読み込まれたライブラリの例を示しています。

DLLがロードされました
図 4: DLL のロード

悪用に成功すると、挿入されたコードは新しいプロセスを作成し、mshta.exe を利用して、同じサーバーから「word.db」という名前の HTA スクリプトを取得します。 HTA スクリプトは、ソース コード、コンパイルされた DLL、および PDB ファイルをディスクから削除し、「left.jpg」という名前の FINSPY マルウェアをダウンロードして実行します。実際には実行可能ファイルです。図 5 は、このマルウェア転送の PCAP の詳細を示しています。

ライブリクエスト
図 5: ライブ リクエスト

マルウェアは、%appdata%MicrosoftWindowsOfficeUpdte-KB[ 6 つの乱数].exe に配置されます。図 6 は、Process Monitor の下のプロセス作成チェーンを示しています。

プロセス作成チェーン
図 6: プロセスによって作成されたチェーン

マルウェア

「left.jpg」(md5: a7b990d5f57b244dd17e9a937a41e7f5) は FINSPY の亜種です。これは、ビルトインの仮想マシンを使用する非常に難読化されたコードを活用し、他の分析防止手法の中でも特に、元に戻すことをより困難にします。おそらく別の独自の分析防止手法として、独自のフル パスを解析し、独自の MD5 ハッシュの文字列表現を検索します。分析ツールやサンドボックスなどの多くのリソースでは、一意のファイル名を確保するために、ファイル/サンプルの名前を MD5 ハッシュに変更しています。この亜種は、「WininetStartupMutex0」のミューテックスで実行されます。

結論

CVE-2017-8759 は、2017 年に FireEye によって発見された FINSPY の配布に使用された 2 番目のゼロデイ脆弱性です。これらの露出は、「合法的な傍受」企業とその顧客が利用できる重要なリソースを示しています。さらに、FINSPY は複数のクライアントに販売されており、この脆弱性が他の標的に対して使用されていたことを示唆しています。

CVE-2017-8759 が追加のアクターによって使用された可能性があります。この証拠は見つかっていませんが、2017 年 4 月にゼロデイが FINSPY の配布に使用され、CVE-2017-0199 が金銭目的の攻撃者によって同時に使用されていました。 FINSPY の背後にいるアクターが、以前に使用したのと同じソースからこの脆弱性を取得した場合、そのソースが別のアクターにそれを販売した可能性があります。

了承

このブログに貢献してくれた Dhanesh Kizhakkinan、Joseph Reyes、FireEye Labs Team、FireEye FLARE Team、 FireEye iSIGHT Intelligenceに感謝します。また、この問題に協力してくださったマイクロソフト セキュリティ レスポンス センター (MSRC) の皆様にも感謝いたします。

参照: https://www.mandiant.com/resources/blog/zero-day-used-to-distribute-finspy

Comments

タイトルとURLをコピーしました