エクスプロイト&脆弱性
脆弱性攻撃ツール「Purple Fox」によるSQL serverを狙った攻撃手法を解説
今回の追跡調査では、Trend Micro Managed XDR(XDR)を介して観測されたPurple Foxの感染チェーンの後期段階、特に、悪意のあるSQL CLRアセンブリを注入(インジェクション)してSQLデータベースに感染したのち、不正活動の持続化やステルス性の高い活動を可能にする手法に焦点を当てました。
■ はじめに
本ブログでは2021年11月8日の記事で、脆弱性攻撃ツール「Purple Fox」により構築されたボットネットの仕組みについて概説したほか、初期アクセス時に用いられた手法や関連性の高いバックドア型マルウェアについても一部検証しました。
今回の追跡調査では、Trend Micro Managed XDR(XDR)を介して観測されたPurple Foxの感染チェーンの後期段階、特に、悪意のあるSQL CLRアセンブリを注入(インジェクション)してSQLデータベースに感染したのち、不正活動の持続化やステルス性の高い活動を可能にする手法に焦点を当てました。今回の攻撃で使用されるファイルの多くは、感染システムのディスク上に保存されない点に注意が必要です。これらの不正ファイルは、遠隔操作サーバ(C&Cサーバ)から引き出されるか、暗号化された後、メモリから実行されたのち別のプロセスによって読み込まれます。
さらにトレンドマイクロは、Purple Foxボットネットの基盤となるC&Cサーバのインフラストラクチャや、Purple Foxの背後にいるオペレータが最近の攻撃活動でSQL serverを標的として選択した動機についても解説します。
前回記事や本記事の調査結果を基にPurple Foxの攻撃手法や挙動を検証することで、インシデント対応チーム、セキュリティオペレーションセンター(SOC)、セキュリティリサーチャが自組織のネットワーク内におけるPurple Foxの感染被害の発見・駆除にお役立ていただけることを願っています。
■ 脆弱性攻撃ツール「Purple Fox」によるプロセス・インジェクションの手法
まずはPurple Foxによるプロセス・インジェクションの手法を解説します。このマルウェアは最初に中断状態のプロセス「svchost.exe」(付随するルートキットにより「fontdrvhost.exe」に変更される)を生成することで、自身のさまざまなコンポーネントを読み込みます。そして、プロセスのアドレス空間内にDLLコンポーネントを読み込んだ後、読み込まれたDLLに実行をリダイレクトします。
図1:プロセスツリーの概要
■ Purple Foxが用いるC&Cサーバとの通信方法
このマルウェアは、C&Cサーバとの通信のやり取りを行うために3つの異なる方法を備えています。それらの方法は、さまざまな目的を実行するために特定の段階で用いられます。
DNSを用いた通信方法
DNS(Domain Name System)は、各プロセスの実行開始時にC&CサーバのIPアドレスリストを取得するために使用されるほか、現段階 / 後述の段階ですべてのサーバが応答しなかった場合に、取得したリストを更新するためにも使用されます。注意すべき点の1つは、DNS要求により受信したIPアドレスは、C&Cサーバに用いられる実際のIPアドレスではないことです。DNS要求により受信したそれらのIPアドレスはエンコードされている一方で、IPアドレスから定数を引くことでデコードすることができます。以下の表1にその具体例を示します。
DNS要求により受信したIPアドレス | デコードされたIPアドレス |
178[.]195.162.94 | 216[.]189.159.94:12113 |
79[.]222.214.20 | 117[.]216.211.20:10669 |
145[.]68.65.106 | 183[.]62.62.106:13600 |
73[.]127.195.228 | 111[.]121.192.228:14640 |
53[.]238.137.143 | 91[.]232.134.143:18372 |
表1:DNS要求により受信したIPアドレスおよび実際にデコードされたIPアドレスの例
DNS要求に用いられたドメインは以下の通りです。
- 「Kew[.]8df[.]us」:「m[.]tet[.]kozow[.]com」を指すドメイン
- 「ret[.]6bc[.]Us」:「a[.]keb[.]kozow[.]com」を指すドメイン
返されたIPアドレスのリストは、ボットネットのC&Cインフラを循環させるために、数分ごとに変更されます。
UDPを用いた通信方法
2つ目の通信方法であるUDP(User Datagram Protocol)は、様々な種類のメッセージに使用されるほか、さらなる通信のやり取りで用いられるキャッシュのIPアドレスリストの作成にも使用されます。加えてUDPは、ツールを実行するために構成情報を引き出したり、次のセクションで説明するHTTPトラフィックで使用される「IP:PORT」のリストを取得するためにも用いられます。
DNSからIPアドレスを選択した後、実際のIPアドレスとポート番号にデコードされます。その後キャッシュのIPアドレスリストの取得要求が行われます。キャッシュリストの取得に失敗した場合、このマルウェアは再びDNS要求を送って新たなIPアドレスを取得し、別のキャッシュのIPアドレスリストを作成しようと試みます。
HTTPを用いた通信方法
このマルウェアは、感染システム上で自身の不正活動を開始するために「hxxp://IP:PORT/xxxx[.]moe」の形式でGET要求を発行することで暗号化されたDLLを引き出します。「IP:PORT」はUDPメッセージによって選択され、「xxxx[.]moe」はworker.dllの1つから選択されます。これらのDLLはファイル内に保存された後、復号 / 解凍 / 実行を行うワーカープロセスによって読み込まれます。
■worker.dll
SQL Serverスキャナ [32A7E157.moe]
1つ目のworker.dllは、上記のHTTPを用いた通信方法を使って「/3FE8E22C.moe」からコアモジュールを引き出すSQL Serverスキャナです。このコアモジュールは、新たなプロセスにインジェクションされ、スキャナ構成情報はUDPを用いた通信方法を使って引き出されます。この構成は、スキャンを開始するためのパブリックIPアドレスを持っています。
このスキャナは、ポート番号1433を介してSQL Serverのローカル / パブリックIPアドレスをスキャンします。開いているポートを発見した場合、このスキャナは、1000万語強の単語リストを用いてSQL Server認証に対する辞書攻撃を開始します。
このマルウェアは認証を突破すると、SQLスクリプトを実行してSQL serverデータベース上にバックドア・アセンブリ(evilclr.dll)をインストールします。このアセンブリは、SQL文を使ったコマンド実行を手助けするために用いられます。このアセンブリを用いてSQL Server上でPowerShellコマンドが実行されると、前回記事で解説したようにPurple Foxの感染チェーンが開始されます。
図3:SQL server認証に対する辞書攻撃が失敗した場合の応答例
図4:SQL server認証に対する辞書攻撃が成功した場合の応答例
図5:SQL文を実行している様子
図6:感染前のデータベース
図7:感染後のデータベース
XMRコインマイナー [F30DC9EB.moe]
2つ目のworker.dllは暗号資産(旧仮想通貨)「Monero(XMR)」を採掘するコインマイナーで、UDPを介して構成情報を取得することで自身の不正活動を開始します。その後、取得した構成情報に埋め込まれたXMRigバイナリの実行を開始し、ボットを「108[.]177[.]235[.]90:443」上のマイニングプールに参加させます。
図8:フォアグラウンド内で実行されるXMRigコインマイナー
■ SQL Serverを介してOSを実行する手口
これまでPurple Foxは、自身の不正マイニング活動のために一般的なシステムを標的としていましたが、今回はSQL serverに重点を置いています。これは主に、SQL serverに搭載されるCPUとメモリの双方がより強力なハードウェアで構成されているからです。より具体的に言えば、SQL serverの場合は特にパフォーマンスのボトルネックを回避するために、CPU、メモリ、ディスクによる構成要素の組み合わせをデータベース関連の運用管理に合わせて拡張する必要があります。
これらのSQL serverには基本的に、一般的なデスクトップ端末に比べてはるかに優れたコンピューティング能力が備わっています。このようなサーバには通常、Intel社のCPU「Xeon」などの採掘速度(ハッシュレート)の非常に高いハードウェアが搭載されているため、SQL serverは一般的なデスクトップ端末に比べてコインマイニングにより有利なものとなります。
SQLデータベースがOSコマンドを直接実行するためのさまざまな経路をサポートしている為、Purple Foxは、TSQLコマンドを介して実行可能なバイナリをSQL server データベース内にインジェクションさせるという最もステルス性の高い手法を用いました。攻撃者はSQL serverを標的とする際に、SQLコンポーネントの中から以下のインターフェースを悪用することができます。
メソッド | 詳細 |
NET |
|
C++ | ShellExecute/ShellExecuteEx xp_cmdshell |
COMオブジェクト | wscript.shell shell.application |
表2:SQLコンポーネントの中から攻撃者が悪用可能なインターフェース
Purple Foxの感染チェーンには、セキュリティアナリストの監視が厳しくよく知られている「xp_cmdshell」ではなく、SQL Server内にインポート可能なDLL群であるCLRアセンブリを用いる「.NETメソッド」が選択されました。DLLがインポートされると、TSQLスクリプトを介して実行可能なストアドプロシージャへの関連付けが可能になります。この感染経路の影響を受けるバージョンは、SQL Server2008以降のものです。
デフォルトでシステム管理者の役割を必要とする.NETメソッドは、SQL Serverのサービスアカウントとして実行されます。攻撃者はこのインターフェースを悪用することで、.NETアセンブリDLLをコンパイルしてSQL server内にインポートさせることができます。また、SQL Serverテーブル内にアセンブリを格納し、CLRメソッドに関連付けるプロシージャを作成して実行することも可能になります。
CLRアセンブリを使用するメソッドは、「MrbMiner」や「Lemon Duck」など、Purple Fox以外のサイバー犯罪者グループも以前に悪用していたことが報告されています。
■ ボットネットインフラストラクチャ
本記事で解説する通信手段に用いられたC&Cサーバは、Purple Foxの様々なペイロードを設置するボットネットの一部として構成される感染サーバです。
このことは、次の事実から推測されました。
- C&CサーバはSQL Serverそのものである。
- HTTPサーバのヘッダはmORMotです。これはさまざまなコンポーネントに用いられている言語と同じDelphiで書かれています。
- 今回の事例では、数多くのサーバが存在します(1週間余りで1,000台以上)。
最初のDNS要求はどちらも「dynu[.]com」が提供する無料のダイナミックDNSサービスである「kozow[.]com」のサブドメインに対する正規名(CNAME)です。このサービスは、APIを使用して更新することで、さまざまなIPアドレスを指定することができます。これは、攻撃者が定期的にIPアドレスを変更するために悪用する技術です。
■ その他の注目すべき特徴
トレンドマイクロは調査のなかで収集したテレメトリを用いることで、サーバ以外のシステムがPurple Foxに感染していることを発見しました。これは、SQL Serverに対する辞書攻撃以外にもマルウェアを拡散させる初期アクセスの手法が存在する可能性を示しています。
今回の攻撃活動は、Lemon Duck攻撃で確認されたものと類似しており、ペネトレーションテストツール「PowerSploit」を使って反射型ポータブル実行可能ファイルを読み込んだり、SQL Serverアセンブリに同一バックドア「evilclr.dll」を実装したりするなど、いくつかの手法が共有されています。どちらの攻撃活動も、Moneroを採掘するという同じ目的を共有しています。
■ セキュリティに関する推奨事項
SQL server上でPurple Foxボットネットに関連する不審な活動を観測した際は、感染サーバからすべてのマルウェアを完全に削除するために、以下の手順を実施することが推奨されます。
- データベース管理者が認識していない不審なアセンブリがないかどうか、SQL Serverに存在するストアドプロシージャおよびアセンブリをすべて再確認すること。不審なアセンブリが検出された場合はすべて削除すること。
- 以下のTSQLスクリプトを実行し、データベース内にインジェクションされている不正なCLRアセンブリを削除すること。
- USE [master]
- GO
- DROP ASSEMBLY [fscbd]
- GO
- データベースサーバ上に存在する不明なアカウントをすべて無効化し、定期的にすべてのパスワードを変更すること。
- 防御体制として、外部に露出したポート番号TCP1433を信頼できないゾーンに公開しないこと。また、組織が定めたアクセスポリシーに従い、非武装地帯(DeMilitarized Zone、DMZ)ゾーンに設置された境界型ファイアウォールを介してSQL serverホストを保護すること。
- 適切なネットワークマイクロセグメンテーションおよびネットワークにおけるゾーニングを実装すると同時に、ネットワークセキュリティ制御を介したゼロトラストポリシーを適用すること。
- SQL serverを行き来するトラフィックを制限すること。これらのサーバは非常に特殊な機能を備えているため、信頼できるホストとの通信だけを許可する必要があります。インターネットへのインバウンド / アウトバウンド・トラフィックも制御する必要があります。
■ トレンドマイクロの対策
「Trend Micro Vision One™」は、XDR(Extended Detection and Response)ソリューションを超える付加価値と新たなメリットを提供し、企業が「より多くを把握し、迅速に対応する」という目的を実現する脅威防御のプラットフォームです。メール、エンドポイント、サーバ、クラウドワークロード、ネットワークといった複数のセキュリティレイヤーにまたがる情報を収集し、自動的に相関させる深く幅広いXDR機能を提供する「Trend Micro Vision One™」は、自動化された防御機能によって攻撃の大半を防ぐことが可能となります。
- サーバには予測を可能にするネットワーク上の足跡や挙動が残るため、通常と異なる / 予期せぬネットワークパターンは、ボットネットによる拡散の兆候である可能性があります。
- 同様に、通常と異なる / 予期せぬSQL serverアプリケーションへのログインの失敗は、辞書攻撃やアカウントリスト攻撃によるものである場合があります。Purple FoxがSQL serverに感染する際に用いる主な拡散手法は、脆弱なサービスのみを悪用するワームとして動作する手法ではなく、辞書攻撃です。
- SQL serverがUDPやTCPに関連する異常なトラフィックを持ち始めると、パブリックIPアドレスやローカルネットワークをスキャンするためにトラフィックが大幅に増加する可能性があります。多くの組織は、スタンバイサーバやバックアップサーバなど、複数のSQLサーバを使用しているため、同ネットワーク環境内でドミノ効果が発生することになります。
- 通常と異なるネットワークトラフィックのパターンやSQL serverへのログインに失敗した記録も、脅威を判断するための指標となります。
- SQL server上のCPU使用率が突然、予想外に急上昇した場合も、SQL serverにおけるボトルネックあるいはXMRコインマイナーに感染した兆候である可能性があります。さらに、SQL serverがマイニングプールに参加した際に、サーバ上では異常な量のネットワークトラフィックが発生する可能性があります。
参考記事:
- 「A Look Into Purple Fox’s Server Infrastructure」
by Jay Yaneza, Abdelrhman Sharshar, Sherif Magdy