EK」を確認しました。概要については既にブログ記事(英語)をまとめておりますが、その後の詳細解析により、2つの難読化ツールを組み合わせた難読化機能を持つことがわかりました。このような複雑な難読化は標的型などの攻撃キャンペーンの準備段階である可能性があります。今回の記事では、この難読化機能についての詳細解析に基づいた解説を行います。EKのIoCに基づいて収集活動を実施し、合計300を超える検体を入手しました。検出状況は活発であり、2019年8月に最初の検出が確認された後、何度か急増しながら今なお活動が継続中である状況がうかがえました。今回、検出回避を実現するための難読化機能を備えた検体の急増が確認されました。EK作成者が何らかの攻撃キャンペーンを意図した隠ぺい手法を画策している可能性が示唆されます。トレンドマイクロでは、検体に含まれていたアセンブリモジュールのプロパティ名に基づき、活動が示唆される攻撃キャンペーンを「KurdishCoder」と名付けました。EKは、マルウェア「njRat」(「NJRAT」ファミリとして検体対応)の拡散に利用されているものと判明しました。このRAT本体の実行ファイル「NotepadEx.exe」には、オープンソースの.NET難読化ツールである「ConfuserEx」とアンダーグラウンドの難読化ツール「Cassandra」の2つを組み合わせた複数層の難読化が駆使されていることが判明しました。下図のダイアグラムからも、この難読化が確認できます。この場合、エクスプロイトキット上で難読化ツールとして実行されるConfuserEx(グレー部分)の第二層にアセンブリモジュール「CyaX_Sharp」が組み込まれています。これは、もう1つのモジュール「CyaX」と合わせて難読化ツールCassandraの一部を構成しています。2016」は「NvidiaCatalysts.dll」内で示される画像のイメージとなります。EK」での難読化のフローこの検体では、ConfuserExのカスタマイズバージョンにおいてCyaX_Sharpが難読化されています。下図は、難読化で生成されたCyaX_Sharpのプロパティを示しています。v1.0.0-custom」という値が示されています。この値の意味を理解するためにはまず、オープンソースの.NETアプリケーションの難読化ツールであるConfuserExにおいて該当箇所の値がどのように作成されるかを確認する必要があります。これにより一定の仮説を立てることができます。難読化ツール「ConfuserEx」の詳細ConfuserExは、難読化対象のバイナリに対して複数の変換を適用できますが、今回は、特に以下の2つの機能での相関関係が注目されました。ソースコードのビルドConfuserExは、ソフトウェア開発のプラットフォーム「Github」でホストされているオープンソースの難読化ツールとして複数のバージョンが存在します。Githubのコミュニティでサポートされているバージョンの1つを調べると、コマンドラインからさらにConfuserExをビルドする更新用ツールが存在することが分かります。このビルドのコマンドラインには、分散型バージョン管理システム「Git」のタグを付記して最終バージョンを更新する機能がありますが、ConfuserExがGitの外部でビルドされている場合、下図のとおり、バージョン更新時、ツールには「version-custom」という値のみが生成されます。v1.0.0-custom」の文字列が記されています。この点から、今回確認した検体のモジュールとしてのCyaX_Sharpに使用された難読化ツールのConfuserExの特定バージョンは、Gitの外部でビルドされたと考えることができます。ウォーターマークの作成ConfuserExが難読化を実行する際、操作の1つとしてウォーターマーク(ソフトウェア内の識別子)を作成します。このウォーターマークは、最終バージョンのバイナリに存在しています。ウォーターマークの作成機能は、アセンブリモジュール属性として実装されます。下図は、ソースコードのスクリーンショットであり、ウォーターマークがどのように実装されるかを示しています。図6:ウォーターマークがアセンブリモジュールを介して実装される様子を示したソースコード図2で示した箇所の初期設定を確認するため、入手した検体をテストすると、「KurdishCoderProducts」ではなく、下図のように「ConfusedBy」と表示されることが確認されました。図7:入手した検体のConfuserExのテストにより表示された初期設定このことから2つの重要な側面が把握できます。1つは、該当の文字列は、ハードコード化されており、もう1つは、下図のとおり、文字列「ConfusedBy」は、バイナリの最終バージョンのクリアテキスト上で表示されていることから本来の文字列であったという点です。図8:バイナリの最終バージョンのクリアテキスト上での表示これらは、該当するモジュールのCyaX_Sharpが、何らかの変更が施されたConfuserExにより難読化されたことを示す明確な証拠と言えます。次に実行ファイル「NotepadEx」の難読化に使用されたもう1つのモジュールであるCyaXについて確認します。解析の結果、CyaXの今回のバージョンでは、2つの特徴が確認されました。1つは、デバッガーのシンボルパス情報がリークしていた点です。このことからCyaXへさらなる変更が施されることで何らかのカスタムビルドが実行されている可能性が示唆されます。図9:リークしたデバッガーのシンボルパス情報もう1つは、CyaXが行う機能の一部に変更が施されていた点です。この場合、メモリ内にバイナリ情報が組み込まれていました。下図は、変更が施された箇所の名称を示しています。EKの検体複数を解析することで、下表のとおり、さまざまな不正活動が確認されました。これらの不正活動で入手した検体のすべてを網羅しているわけではない点には注意が必要です。その他にも多くの不正活動を備えている可能性があります。Crypter」が挙げられます。Stub」という2種類のサブスクリプションプランを提供しています。前者は有料で自動化の機能を備えています。後者の場合、利用者は、カスタマイズ化に際してサポートへの連絡が必要になります。Crypter」のサブスクリプションプラン難読化ツールのConfuserExとアセンブリモジュールのCyaXの組み合わせは、上述の痕跡で確認したとおり、特定のカスタマイズ化が施されていると考えられます。これらのツールが特定の攻撃キャンペーンの一部として使用されているという明確な証拠は現時点ではありませんが、これまでに入手した複数の検体の解析から、特定のキャンペーンに関連している可能性は指摘できます。Amministrazione(CERT-PA)」でも報告されています。EKおよび関連する攻撃キャンペーン等の可能性については、引き続き、当記事で言及したこれらのツールやモジュールの使用状況を監視していきます。DiscoveryTM」は、ネットワーク内に侵入した標的型攻撃などの脅威による活動の兆候を可視化することができます。今日の気づけない標的型攻撃や巧妙化する脅威をリアルタイムで検出および分析し、対処できます。専用のエンジンとカスタムサンドボックス機能を使用し、攻撃のライフサイクル全体に対する相関分析を可能にします。OneTM」では、仮想パッチ機能によって脆弱性を狙う攻撃からサーバやエンドポイントを防御します。トレンドマイクロ製品に組み込まれたクロスジェネレーション(XGen)セキュリティアプローチは、高度な機械学習型検索を活用しエンドポイントのデータとゲートウェイおよびアプリケーションを守ります。XGenは、従来の検出技術を回避し、既知、未知および未公開の脆弱性を突くなどの今日の目的に特化した脅威からユーザを保護します。オンプレミスのメール環境を保護する、メンテナンス不要のクラウドソリューションです。継続的に更新される保護機能が、スパム、マルウェア、標的型メール、ランサムウェアなど、より高度な攻撃がネットワークに到達する前に阻止します。Compromise、IoC)今回の記事に関する侵入の痕跡はこちらを参照してください。