FlashやIEはご用心、難読化するエクスプロイトキット「Capesand EK」-セキュリティブログ
トレンドマイクロは、Adobe FlashとMicrosoft Internet Explorer(IE)の脆弱性を悪用するエクスプロイトキット「Capesand EK」を確認。その後の詳細解析により、2つの難読化ツールを組み合わせた難読化機能を持つことがわかった。このような複雑な難読化は標的型などの攻撃キャンペーンの準備段階である可能性が高いという。今回の記事では、この難読化機能についての詳細解析に基づいた解説を行う。
トレンドマイクロでは、Capesand EKのIoCに基づいて収集活動を実施し、合計300を超える検体を入手した。検出状況は活発であり、2019年8月に最初の検出が確認された後、何度か急増しながら今なお活動が継続中である状況がうかがえる。
そして今回、検出回避を実現するための難読化機能を備えた検体の急増が確認された。この点から、Capesand EK作成者が何らかの攻撃キャンペーンを意図した隠ぺい手法を画策している可能性が示唆される。トレンドマイクロでは、検体に含まれていたアセンブリモジュールのプロパティ名に基づき、活動が示唆される攻撃キャンペーンを「KurdishCoder」と名付けた。
そして検体の1つを解析したところ、Capesand EKは、マルウェア「njRat」(「NJRAT」ファミリとして検体対応)の拡散に利用されているものと判明した。また、このRAT本体の実行ファイル「NotepadEx.exe」には、オープンソースの.NET難読化ツールである「ConfuserEx」とアンダーグラウンドの難読化ツール「Cassandra」の2つを組み合わせた複数層の難読化が駆使されていることも判明した。
この記事の目次
■ エクスプロイトキット「Capesand EK」の検体を解析
下図のダイアグラムからも、この難読化が確認できる。この場合、エクスプロイトキット上で難読化ツールとして実行されるConfuserEx(グレー部分)の第二層にアセンブリモジュール「CyaX_Sharp」が組み込まれていることがわかる。これは、もう1つのモジュール「CyaX」と合わせて難読化ツールCassandraの一部を構成している。「SV VORWARTRS WIEN 2016」は「NvidiaCatalysts.dll」内で示される画像のイメージとなっている。
この検体では、ConfuserExのカスタマイズバージョンにおいてCyaX_Sharpが難読化されていました。下図は、難読化で生成されたCyaX_Sharpのプロパティを示しています。
上図のとおり、CyaX_Sharpのプロパティ名は「KurdishCoderProducts」となっており、「ConfuserEx v1.0.0-custom」という値が示されている。この値の意味を理解するためにはまず、オープンソースの.NETアプリケーションの難読化ツールであるConfuserExにおいて該当箇所の値がどのように作成されるかを確認する必要がある。これにより一定の仮説を立てることができるという。
■ 難読化ツール「ConfuserEx」の詳細
ConfuserExは、難読化対象のバイナリに対して複数の変換を適用できますが、今回は、特に以下の2つの機能での相関関係が注目された。
1. ソースコードのビルド
ConfuserExは、ソフトウェア開発のプラットフォーム「Github」でホストされているオープンソースの難読化ツールとして複数のバージョンが存在する。Githubのコミュニティでサポートされているバージョンの1つを調べると、コマンドラインからさらにConfuserExをビルドする更新用ツールが存在することが分かります。このビルドのコマンドラインには、分散型バージョン管理システム「Git」のタグを付記して最終バージョンを更新する機能があるが、ConfuserExがGitの外部でビルドされている場合、下図のとおり、バージョン更新時、ツールには「version-custom」という値のみが生成される。
「[module: KurdishCoderProducts(“ConfuserEx v1.0.0-custom”)]」の表示から、今回確認したモジュールプロパティには、「ConfuserEx v1.0.0-custom」の文字列が記されている。この点から、今回確認した検体のモジュールとしてのCyaX_Sharpに使用された難読化ツールのConfuserExの特定バージョンは、Gitの外部でビルドされたと考えることができる。
2. ウォーターマークの作成
ConfuserExが難読化を実行する際、操作の1つとしてウォーターマーク(ソフトウェア内の識別子)を作成する。このウォーターマークは、最終バージョンのバイナリに存在しています。ウォーターマークの作成機能は、アセンブリモジュール属性として実装される。下図は、ソースコードのスクリーンショットであり、ウォーターマークがどのように実装されるかを示している。
図2で示した箇所の初期設定を確認するため、入手した検体をテストすると、「KurdishCoderProducts」ではなく、下図のように「ConfusedBy」と表示されることが確認された。
このことから2つの重要な側面が把握できるという。1つは、該当の文字列は、ハードコード化されており、もう1つは、下図のとおり、文字列「ConfusedBy」は、バイナリの最終バージョンのクリアテキスト上で表示されていることから本来の文字列であったという点である。
これらは、該当するモジュールのCyaX_Sharpが、何らかの変更が施されたConfuserExにより難読化されたことを示す明確な証拠と言える。
■ 難読化ツールCassandraのモジュール「CyaX」
次に実行ファイル「NotepadEx」の難読化に使用されたもう1つのモジュールであるCyaXについて確認します。解析の結果、CyaXの今回のバージョンでは、2つの特徴が確認されました。1つは、デバッガーのシンボルパス情報がリークしていた点である。このことからCyaXへさらなる変更が施されることで何らかのカスタムビルドが実行されている可能性が示唆される。
■ 攻撃キャンペーン「KurdishCoder」の不正活動
Capesand EKの検体複数を解析することで、下表のとおり、さまざまな不正活動が確認された。尚、これらの不正活動で入手した検体のすべてを網羅しているわけではない点には注意が必要である。その他にも多くの不正活動を備えている可能性は否定できない。
検出回避のための難読化機能の変更名などが異なる
■ 検出回避オンラインサービス「Cassandra Crypter」
Capesand EKで使用された2つの難読化ツールと関連するものとして、検出回避のための難読化サービス「Cassandra Crypter」が挙げられる。このサービスは、下図のとおり、「Premium Plan」と「Private Stub」という2種類のサブスクリプションプランを提供している。前者は有料で自動化の機能を備えている。後者の場合、利用者は、カスタマイズ化に際してサポートへの連絡が必要になる。
難読化ツールのConfuserExとアセンブリモジュールのCyaXの組み合わせは、上述の痕跡で確認したとおり、特定のカスタマイズ化が施されていると考えられる。これらのツールが特定の攻撃キャンペーンの一部として使用されているという明確な証拠は現時点ではないが、これまでに入手した複数の検体の解析から、特定のキャンペーンに関連している可能性は指摘できる。
尚、攻撃キャンペーン「KurdishCoder」を示唆するこれらの痕跡は、単一の攻撃事例であるが、イタリアのCERT(Computer Emergency Response Team)「 Pubblica Amministrazione(CERT-PA)」でも報告されている。
難読化機能を備えたエクスプロイトであるCapesand EKおよび関連する攻撃キャンペーン等の可能性については、引き続き、当記事で言及したこれらのツールやモジュールの使用状況を監視していく。
本記事は、トレンドマイクロ様の許諾により「トレンドマイクロ・セキュリティブログ」の内容を元に作成しております。
ソース:https://blog.trendmicro.co.jp/archives/23216