エクスプロイトキット「Capesand EK」の難読化機能を解説

トレンドマイクロは、Adobe FlashとMicrosoft Internet Explorer(IE)の脆弱性を悪用するエクスプロイトキット「Capesand EK」を確認しました。概要については既にブログ記事(英語)をまとめておりますが、その後の詳細解析により、2つの難読化ツールを組み合わせた難読化機能を持つことがわかりました。このような複雑な難読化は標的型などの攻撃キャンペーンの準備段階である可能性があります。今回の記事では、この難読化機能についての詳細解析に基づいた解説を行います。

図1:エクスプロイトキット「Capesand EK」の操作パネル
図1:エクスプロイトキット「Capesand EK」の操作パネル

図2:エクスプロイトキット「Capesand EK」のトラフィックパターン
図2:エクスプロイトキット「Capesand EK」のトラフィックパターン

トレンドマイクロでは、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」内で示される画像のイメージとなります。

図3:エクスプロイトキット「Capesand EK」での難読化のフロー
図3:エクスプロイトキット「Capesand EK」での難読化のフロー

この検体では、ConfuserExのカスタマイズバージョンにおいてCyaX_Sharpが難読化されています。下図は、難読化で生成されたCyaX_Sharpのプロパティを示しています。

図4:生成されたアセンブリモジュール「CyaX_Sharp」のプロパティ
図4:生成されたアセンブリモジュール「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」という値のみが生成されます。

図5:Gitの外部で作成されたConfuserExのソースコード
図5:Gitの外部で作成されたConfuserExのソースコード

「[module: KurdishCoderProducts(“ConfuserEx v1.0.0-custom”)]」の表示から、今回確認したモジュールプロパティには、「ConfuserEx v1.0.0-custom」の文字列が記されています。この点から、今回確認した検体のモジュールとしてのCyaX_Sharpに使用された難読化ツールのConfuserExの特定バージョンは、Gitの外部でビルドされたと考えることができます。

2. ウォーターマークの作成

ConfuserExが難読化を実行する際、操作の1つとしてウォーターマーク(ソフトウェア内の識別子)を作成します。このウォーターマークは、最終バージョンのバイナリに存在しています。ウォーターマークの作成機能は、アセンブリモジュール属性として実装されます。下図は、ソースコードのスクリーンショットであり、ウォーターマークがどのように実装されるかを示しています。

図6:ウォーターマークがアセンブリモジュールを介して実装される様子を示したソースコード
図6:ウォーターマークがアセンブリモジュールを介して
実装される様子を示したソースコード

図2で示した箇所の初期設定を確認するため、入手した検体をテストすると、「KurdishCoderProducts」ではなく、下図のように「ConfusedBy」と表示されることが確認されました。

図7:入手した検体のConfuserExのテストにより表示された初期設定
図7:入手した検体のConfuserExのテストにより表示された初期設定

このことから2つの重要な側面が把握できます。1つは、該当の文字列は、ハードコード化されており、もう1つは、下図のとおり、文字列「ConfusedBy」は、バイナリの最終バージョンのクリアテキスト上で表示されていることから本来の文字列であったという点です。

図8:バイナリの最終バージョンのクリアテキスト上での表示
図8:バイナリの最終バージョンのクリアテキスト上での表示

これらは、該当するモジュールのCyaX_Sharpが、何らかの変更が施されたConfuserExにより難読化されたことを示す明確な証拠と言えます。

■ 難読化ツールCassandraのモジュール「CyaX」

次に実行ファイル「NotepadEx」の難読化に使用されたもう1つのモジュールであるCyaXについて確認します。解析の結果、CyaXの今回のバージョンでは、2つの特徴が確認されました。1つは、デバッガーのシンボルパス情報がリークしていた点です。このことからCyaXへさらなる変更が施されることで何らかのカスタムビルドが実行されている可能性が示唆されます。

図9:リークしたデバッガーのシンボルパス情報
図9:リークしたデバッガーのシンボルパス情報

もう1つは、CyaXが行う機能の一部に変更が施されていた点です。この場合、メモリ内にバイナリ情報が組み込まれていました。下図は、変更が施された箇所の名称を示しています。

図10:変更された機能は、イラクの都市名である「Kirkuk」へ改称されている
図10:変更された機能は、イラクの都市名である「Kirkuk」へ改称されている

■ 攻撃キャンペーン「KurdishCoder」の不正活動

Capesand EKの検体複数を解析することで、下表のとおり、さまざまな不正活動が確認されました。なお、これらの不正活動で入手した検体のすべてを網羅しているわけではない点には注意が必要です。その他にも多くの不正活動を備えている可能性があります。

エクスプロイトキットの検体で使用された
実行ファイルの名称
展開される
マルウェア
KurdishCoderの
メインとなるファイルか?
CyaX_Sharpにより
難読化が施されていたか?
CyaXの機能に施された別名
CustomIncreaseX phoenix_keylogger Yes Yes Kirkuk
NotePadEx Njrat No Yes Kirkuk
QuickTranslation Agent Tesla Yes Yes Kurd
SandiwchGenerator Agent Tesla Yes Yes Kirkuk
SimpleGame Remcos Yes Yes Kirkuk
AnimalGames Hawkeye Rebord Keylogger Yes Yes Kurd

表1:入手した検体によっては、ファイル名や、展開されるマルウェア、
検出回避のための難読化機能の変更名などが異なる

■ 検出回避オンラインサービス「Cassandra Crypter」

Capesand EKで使用された2つの難読化ツールと関連するものとして、検出回避のための難読化サービス「Cassandra Crypter」が挙げられます。このサービスは、下図のとおり、「Premium Plan」と「Private Stub」という2種類のサブスクリプションプランを提供しています。前者は有料で自動化の機能を備えています。後者の場合、利用者は、カスタマイズ化に際してサポートへの連絡が必要になります。

図11:「Cassandra Crypter」のサブスクリプションプラン
図11:「Cassandra Crypter」のサブスクリプションプラン

難読化ツールのConfuserExとアセンブリモジュールのCyaXの組み合わせは、上述の痕跡で確認したとおり、特定のカスタマイズ化が施されていると考えられます。これらのツールが特定の攻撃キャンペーンの一部として使用されているという明確な証拠は現時点ではありませんが、これまでに入手した複数の検体の解析から、特定のキャンペーンに関連している可能性は指摘できます。なお、攻撃キャンペーン「KurdishCoder」を示唆するこれらの痕跡は、単一の攻撃事例としてですが、イタリアのCERT(Computer Emergency Response Team)「 Pubblica Amministrazione(CERT-PA)」でも報告されています。

難読化機能を備えたエクスプロイトであるCapesand EKおよび関連する攻撃キャンペーン等の可能性については、引き続き、当記事で言及したこれらのツールやモジュールの使用状況を監視していきます。

■ トレンドマイクロの対策

トレンドマイクロのネットワーク挙動監視ソリューション「Deep Discovery™」は、ネットワーク内に侵入した標的型攻撃などの脅威による活動の兆候を可視化することができます。今日の気づけない標的型攻撃や巧妙化する脅威をリアルタイムで検出および分析し、対処できます。専用のエンジンとカスタムサンドボックス機能を使用し、攻撃のライフサイクル全体に対する相関分析を可能にします。

統合型サーバセキュリティソリューション「Trend Micro Deep Security™」、およびエンドポイントセキュリティ「Trend Micro Apex One™」では、仮想パッチ機能によって脆弱性を狙う攻撃からサーバやエンドポイントを防御します。トレンドマイクロ製品に組み込まれたクロスジェネレーション(XGen)セキュリティアプローチは、高度な機械学習型検索を活用しエンドポイントのデータとゲートウェイおよびアプリケーションを守ります。XGenは、従来の検出技術を回避し、既知、未知および未公開の脆弱性を突くなどの今日の目的に特化した脅威からユーザを保護します。

Trend Micro Hosted Email Security™」は、Microsoft Exchange、Microsoft Office 365、Google Apps などの SaaS およびオンプレミスのメール環境を保護する、メンテナンス不要のクラウドソリューションです。継続的に更新される保護機能が、スパム、マルウェア、標的型メール、ランサムウェアなど、より高度な攻撃がネットワークに到達する前に阻止します。

■ 侵入の痕跡(Indicators of Compromise、IoC)

今回の記事に関する侵入の痕跡はこちらを参照してください。

参考記事:

翻訳: 与那城 務(Core Technology Marketing, Trend Micro™ Research)