マルウェア
ローダ型マルウェア「Gootkit」がオーストラリアの医療業界に対する攻撃を活発化
オーストラリアの医療業界に対する最近のローダ型マルウェア「Gootkit」の攻撃で使用された感染フローを解析したところ、初期侵入にSEOポイズニングを利用し、VLC Media Playerなどの正規ツールを悪用していることが判明しました。
初期アクセスの手段にSEO(検索エンジン最適化:Search Engine Optimization)ポイズニングを用いることで知られるローダ型マルウェア「Gootkit(別称Gootloader)」は、最近になってオーストラリアの医療関連企業や組織に波状攻撃を仕掛けるなど、その活動を再び活発化させています。
トレンドマイクロでは2022年の12月初頭、一連の攻撃に関する情報をオーストラリアのサイバー・セキュリティ・センター(ACSC:Australian Cyber Security Center)に伝達しました。これに対しACSC側からは、提供された情報を確認の上、標的への侵害があった場合には関係する企業や組織に連絡するという旨の回答がありました。
弊社は2022年9月の記事において、Gootkitによる新しい戦略や、攻撃ツール「Cobalt Strike」のファイルレスによる配布方法、そして不正なペイロードについて解説しました。また、最近の攻撃キャンペーンからは、当該グループがより多くの手口を隠し持っていることが示唆されます。
Gootkitは、感染を進行させる手段として、正規の製品「VLC Media Player」を不正使用しました。この製品を不正使用した手口としては、他にも攻撃グループ「APT10」による事例が報告されています。以降、Gootkitに関する重要な発見事項について解説します。
感染の進行
主な発見事項
オーストラリアの医療業界を標的とするSEOポイズニングの利用
今回調査したSEOサイトでは、「hospital(病院)」、「health(健康)」、「medical(医療)」、「enterprise agreement(労働協約)」といった言葉が、オーストラリアにある都市名とのセットで使用されていました。この他、オーストラリアにある医療業者の名前も確認されました。Gootkitはキーワード「agreement(契約)」によって従来の標的である法務部門を狙い続ける一方で、最近では医療業界にも攻撃対象を拡大していることが分かります。
2022年10月、オーストラリアの民間健康保険会社がサイバー攻撃によって970万件に及ぶ顧客情報が流出したことを報告しました。この件は、先に述べたオーストラリアの医療業界を狙った攻撃キャンペーンと関連するようにも見えますが、当該保険会社への初期アクセスに用いられた手段について、オフィシャルWebサイト上では公表されていません。さらに、オーストラリアの医療組織が攻撃される前に、SEOポイズニング用のダミーコンテンツがホストされていた可能性もあり、両攻撃キャンペーンを関連付ける明確な証拠はありません。
VLC Media Playerの不正使用
今回の攻撃におけるもう1つの特徴として、正規のツール「VLC Media Player」の不正使用が挙げられます。VLC Media Playerは広く利用されている有名なソフトウェアであり、Windowsだけでも35億に及ぶダウンロード数を記録しています。本ツールは、過去のAPT10による攻撃でも不正使用されたことが報告されています。今回の攻撃者はVLC Media Playerを利用することで不正なDLLをサイドロードし、それをCobalt Strikeの一部として稼働させました。これに関連するファイルは、下記の通りです。
- msdtc.exe (「VLC Media Player」の正規なファイルをリネームしたもの)
- libvlc.dll(不正なファイルであり、「Trojan.Win64.COBEACON.SWG」として検知)
上記のいずれも、最初の時点では被害端末に存在していませんでした。しかし、感染が進む過程で攻撃者によってインストールされました。
感染の進行過程を分析
初期アクセス:SEOポイズニングによって不正なファイルをダウンロードさせる
セキュリティプラットフォームを提供する「Red Canary」が以前報告したように、不正なZIPファイルやその中にあるJavaScript(JS)ファイルの名前には、「agreement(契約)」と強く関連すると思われる検索キーワードが含まれていました。
今回調査した事例の1つからは、SEOポイズニングの手口が発見されました。下図の赤枠に示すように、「agreement」を含むキーワードで検索した結果画面の1ページ目には、不正なリンクが2件含まれていました。当該部には、オーストラリアの州都名「Brisbane」や地元の医療グループ名といったオーストラリア関連のキーワードに加え、「hospital」、「nursing」、「midwifery」といった医療関連のキーワードも埋め込まれていました。
ユーザがこれらのサイトにアクセスすると、図3のように正規のフォーラムを装った画面が表示されます。画面内には不正なZIPファイルのダウンロード用リンクが表示され、ユーザはこれをクリックするように誘導されます。
図4に、今回の調査で発見した不正なファイルの例を示します。ZIPファイルやJSファイルの名前には各種キーワードが含まれ、スペースやアンダースコアで区切られていることが分かります。ZIPファイルの末尾には5桁のランダムな数値が、JSファイルの末尾には3桁または5桁の文字が、括弧付きで添えられています。さらに、不正な処理によって作成されたタスクスケジュールの名前には、標的の企業または組織の名前が含まれていました。
なお、ファイル名やタスクスケジュール名に含まれているキーワードは、セキュリティ対策チームにとっては攻撃の識別に役立つという側面もあります。図2のように、「agreement」というキーワードは、標的地域(今回の場合はオーストラリア)の医療部門と密接な相関関係にあることが、今日に至るまで継続的に確認されています。さらに、図4からは、ジェネリック医薬品に関するキーワードとの明確な相関関係が示唆されます。
侵害
SEOポイズニングによって不正なファイルをダウンロードさせるWebサイトは、正規のWordPressサイトのように見え、それが侵害を受けてから不正使用されたものと推測されます。Twitterユーザの「@GootLoader Sites」によると、侵害されたサイトがすでにこうした用途で不正使用され、検知回避の機能も埋め込まれています。
弊社が調査した検体の中にも、解析回避を行うものが確認されました。この侵害されたサイトでは、SEOポイズニングに用いられる特徴的なキーワードを含む複数のページがホストされています。ユーザが不正な検索結果のリンクを不用意にクリックすると、問題の偽フォーラム画面に転送されます。しかし、この後で同じURLに再アクセスすると、今度はSEO対策用のWebサイトが表示されるようになります。この状態は、しばらくの間継続します。
ファイルの比較
今回の不正なJavaScriptは、侵害したWebサイトにある正規のJSファイル内のランダムな箇所に、コードを埋め込みます。図6に、JavaScriptのツールキットにコードが埋め込まれた際の様子を示します。
下図の緑色の部分は、元のJavaScriptファイルに対して不正な目的で埋め込まれた関数に該当します。
難読化
コードの難読化は解析を妨害する目的で攻撃者が良く用いる手段ですが、セキュリティ対策チームにとっても、攻撃者を特定する上での有力な情報源となります。Gootkitの検体に施された難読化の手法は、Gootkitが現在行っている活動の特徴を示すものです。セキュリティ対策チームはこうした特徴を用いることで、Gootkitによる攻撃を識別しやすくなります。
図8に、不正なJSファイルの一部を示します。2つ目の匿名関数では、数字や小文字(aからzまで)、大文字(AからZまで)を組み合わせた無意味な言葉による難読化が施されています。3つ目の匿名関数は、主に小文字(aからzまで)と大文字(AからZまで)によって難読化されています。数値の使用は稀ですが、機能の一端を担っているように見えます。また、実行する処理内容が、意味のある言葉同士をパイプ文字で繋ぎ合わせた文字列によってコントロールされます。この他にも、意味のある言葉が所々で用いられています。
図9に、上述の実行内容をコントロールする文字列の定義(frKIw)と、それに関連する制御を示します。なお、このコードは、JS NICEによって難読化を解除した後の状態です。先述の通り、この文字列は意味のある言葉同士をパイプ文字で繋ぎ合わせた形式で表現されています。
感染の第一段階:タスクスケジュールの登録によって永続化
感染の第一段階における目的は、タスクスケジュールを登録して永続化を図ることです。
図4のフローの通り、ユーザが不正なZIPファイルをダウンロードして、その中のJSファイルを実行すると、スケジュールタスクが作成され、後に起動されます。スケジュールタスクとして設定されたJSファイルは、スクリプト起動用プログラム「wscript.exe」からWindows 8.3形式の短い名前で呼び出されます。
例として、このパスは、
C:\Users\[ユーザ名]\AppData\Roaming\Entrust Security Store\Object Relations.js
以下のの形式で呼び出されます。
C:\WINDOWS\system32\wscript.EXE OBJECT~1.JS
先述したJavaScriptと同様、この新しくドロップされたJSファイルにも、強力な難読化が施されています。
本JavaScriptで目を引くもう1つの特徴は、その50メガバイトにも及ぶ容量であり、これはJSファイルとしては異例の大きさです。その容量の多くは文字列で埋め尽くされています。こうした作りとなっている理由を明確に知ることはできませんが、ファイルの操作や解析を妨げる狙いがあったと推測されます。
スケジュールタスクから始まるスクリプトの呼び出し階層を下記に示します。
スケジュールタスク→wscript.exe→cscript.exe→PowerShell
PowerShellは、コマンドコントロール(C&C:Command and Control)サーバにアクセスします。
C&Cサーバへのアクセス
スケジュールタスクとして起動されたプロセスは、PowerShellスクリプトを実行します。このPowerShellスクリプトは、正規サイトのWordPressを不正使用したサーバにアクセスし、後続の処理に必要なファイルを取得します。
アクセス先URLとして、さまざまな国のトップレベルドメイン直下に置かれた「xmlrpc.php」が指定されます。スクリプト毎にURLは10個用意されているようであり、その中からランダムで数回に渡ってアクセスが試みられます。
待機時間
感染の第一段階と第二段階の間には、待機時間が存在します。待機時間中も、スケジュールタスクによってC&Cサーバへのアクセスが1日に約2回の頻度で発生しますが、それ以外の処理はありません。今回の調査において、待機時間の長さは数時間の場合もあれば、2日間に及ぶ場合も見られました。
この待機時間は第一段階と第二段階を明確に切り分けるものであり、Gootkitが有する特徴の1つと言えます。これまでに調査した範囲で、同じ期間に発見された第二段階の活動内容は、全て類似しています。従って、現状では、複数の異なる攻撃グループが第二段階の活動に踏み入っている可能性は、低いと考えられます。
感染の第二段階:Cobalt Strikeの使用
PowerShellスクリプトによるC&Cサーバへの接続が成功し、待機時間が経過すると、2つのファイル「msdtc.exe」と「libvlc.dll」がドロップされます。1つ目のファイル「msdtc.exe」は、その名前によってWindowsの正規コンポーネントに偽装していますが、実体は「VLC Media Player」です。なお、この「VLC Media Player」自体も、正規のアプリケーションです。
正規ファイル「msdtc.exe(VLC Media Playerをリネームしたもの」は、「libvlc.dll」の関数を読み込み、Cobalt Strike関連のモジュールとして利用します。この手口はDLLサイドローディングに相当します。結果として、msdtc.exe自体は有効な署名付き実行ファイルでありながらも、Cobalt Strikeの一部として稼働するようになります。
Cobalt Strike導入後の感染処理
msdtc.exeのランタイムがlibvlc.dllを読み込む際の処理をダンプし解析しました。解析には、Didier StevensのCobalt Strikeビーコン用解析ツール「1768.py」を使用しました。この結果、Cobalt Strikeは「dllhost.exe」の内部にインジェクトされ、そのC&Cサーバは「193[.]106[.]191[.]187」であることが判明しました。
プロセスインジェクション
VLC Media Playerの不正使用によって、2種の実行ファイル「dllhost.exe」と「wabimg.exe」が呼び出されたことが判明しました。これらのファイルは、プロセスインジェクションの手口で埋め込まれた不正なコードを実行することでCobalt Strike用ビーコンとして機能する他、後続の攻撃活動を実行します。
正規ツールの不正使用
「感染の第二段階」の冒頭で述べたVLC Media Playerと、「プロセスインジェクション」で述べたdllhost.exeとwabmig.exeは、全て正規ファイルに相当します。
正規ファイルの不正利用は、攻撃の手口としてすでに一般的に見かけるものとなりました。この手口の狙いとして、解析作業での誤判断や労力消耗による見逃しを誘発させるといった人的な効果と、アンチウイルス製品による検知を回避(パターン検知と挙動監視の双方)するといった技術的な効果が挙げられます。
探索
今回の攻撃者は、標的システムを探索する手段として、下記のツールを追加導入しました。
- PSHound.ps1:SharpHoundの「HackTool.PS1.BloodHound.C」として検出、Cobalt Strike経由で実行
- soo.ps1:「Trojan.Win32.FRS.VSNW0EK22」として検出
- 内部端末のポート389、445、3268宛てに複数の外部接続を確立
- ポート445:SMB(Server Message Block)によるネットワーク上でのデータ共有
- ポート389、3268:LDAP(Lightweight Directory Access Protocol)用のポート
認証情報アクセス
インジェクトされたプロセスの1つによって、複数アカウント分のKerberos認証ハッシュ値を含むファイル「krb.txt」が作成されました。しかし、プロセステレメトリ情報を確認したところ、ファイルダンプの挙動は見られませんでした。従って、当該ファイルの作成処理は密かにメモリ内でのみ実行され、追加の実行ファイルやツールの利用はなかったと考えられます。
影響
今回の事例は感染処理の中途で検知、対処されたため、最終的なペイロードについてはまだ確認されていません。
結論
SEOポイズニングを用いるローダ「Gootkit」の活動状況を調査した結果、当該グループが積極的に攻撃キャンペーンの実装を進めていることが判明しました。標的は特定の業務や産業または地域に集中し、その攻勢は強まりつつあります。「agreement」のキーワードによって法務部門を狙い続ける一方、最近では「hospital」、「health」、「medical」、さらにはオーストラリアの地名を用いることで、標的を絞り込む能力がさらに向上していることが分かりました。
VLC Media Playerの不正使用は、APT10による過去の事例でも報告されていました。今回取り上げたGootkitの手口は、この事例を思い起こさせるものかも知れません。DLLサイドローディングは標的型サイバー攻撃(APT:Advanced Persistent Threat)の基本技術であり、もはや脅威調査チームにとって驚くべきものではなくなりました。しかし、正規ツールを不正利用する手口が常用化した結果、今日ではAPT以外の攻撃にも用いられるなど、その対処範囲は拡大傾向にあります。
サイバー攻撃の脅威を軽減する上では、上述の戦略や戦術に基づく攻撃が実際に行われていることを認識し、注意する必要があります。本稿で述べた事例に関しては、不正なファイルをダウンロードさせるために検索結果がSEOポイズニングによって操作されている可能性や、正規なツールを踏み台に不正な処理が行われる可能性が考えられます。以上に加え、正規なツールの不正使用が常套手段となっていることを踏まえ、セキュリティチームでは、不正なDLLのサイドローディングやコードインジェクションに対して常に警戒することを推奨します。
新しい攻撃手段が発見される度に、対策技術も変化します。この点を踏まえ、セキュリティチームでは、ご利用のセキュリティソリューションを適宜設定し、業界のベストプラクティスを実施することを推奨します。時間差などによってセキュリティ対策技術が攻撃者の技術に追いついていない場合、人手による作業や監視、判断が必要になる可能性があります。
企業や組織のセキュリティソリューションが適切に設定されていても、脅威を食い止めるには不十分な場合も考えられます。攻撃者は検知回避の技術を利用することで、新しい高度なマルウェアの亜種を導入する可能性があります。こうした課題に迅速に対処するため、企業や組織のセキュリティオペレーションセンター(SOC:Security Operation Center)や脅威分析チームでは、ネットワーク上の不正な活動を見逃すことなく的確に発見し、タイムリーに対処することが求められます。
セキュリティ推奨事項
対象業界向け
本稿で述べた通り、ローダ「Gootkit」は、現在オーストラリアの法務部門に加えて医療業界を狙っています。攻撃を完全に回避することは容易ではありませんが、今回の事例については、こうした状況を顧客側に伝えることも、有用な一手となる可能性があります。
標的とされた法務部門やオーストラリアの医療業界に対して、検索結果が不正に操作されていることを報告し、図2や図3のスクリーンショットを用いて対処法を指導することも、被害の軽減に繋がる可能性があります。以上に加えて、セキュリティ製品を適切に設定し、最新版にアップデートしておくことが重要です。
セキュリティチーム向け
攻撃者が正規のツールを不正使用する際に用いる技術はさまざまですが、いずれの場合も、不正なコードを準備し、それを標的システム側に読み込ませ、実行させる点は同じです。こうした正規なツール自体の検知は困難かも知れませんが、従来からのアンチウイルス製品でも、不正なコードを含むファイルの発見は可能です。さらに、EDR(Extended Detection and Response)の技術や人的なインシデント対応によって、正規なツールから呼び出される不正な処理を検知し、その影響を抑止することが可能です。
その一例が、VLC Media Playerによってサイドロードされたlibvlc.dllの検知です。この種のDLLサイドローディングでは通常、コード署名付きのプロセスによって、署名なしの不明なDLLが読み込まれます。セキュリティ対策チームではこうした事象を監視することで、脅威に対処しやすくなるでしょう。
今回の攻撃で注目すべきもう1つの技術として、wabmig.exeに対するプロセスインジェクションが挙げられます。プロセスインジェクションにおいて、不正なコードはメモリ内にのみ存在し、スタンドアローンなファイルとしては存在しません。wabmig.exeはアドレスブックをインポートするWindowsの標準ツールであるため、現代の企業システムがこれを直接使用することは、あまり考えられません。そのため、wabmig.exeが起動された場合、それ自体を不正使用の兆候と見なすことを推奨します。なお、Cobalt Strikeを動かすためにwabmig.exeを不正使用する手口は、Microsoft社の事例「Follina」でも報告されています。
Web管理者向け
Web管理者は、立ち上げたWordPressサイトに脆弱性があると、今回のような攻撃の一端を担ってしまう可能性があることに留意してください。そのため、Webサイトの立ち上げ時には、最新のセキュリティベストプラクティスに従うことが重要です。「Hardening WordPress」でも触れられているように、提供元の信頼性を確認できないプラグインやテーマの使用を避けることを検討してください。WordPress.orgのリポジトリ、またはよく知られた企業の提供物を用いることを推奨します。もちろんこれに加え、プラグインを最新版にアップデートしておくことも重要です。
今回の攻撃による被害を受けているかを確認する場合は、まず「agreement」などの言葉が生成されているページ数を調べてください。該当するページ数が多い場合は、Webサイトが侵害されている可能性が疑われるため、被害を未然に抑え込む対策を迅速に行うことを推奨します。
トレンドマイクロによるソリューション
今回の攻撃を含むさまざまな脅威を防ぐ上では、企業システムを包括的に保護することが可能なセキュリティソリューションの導入を推奨します。
セキュリティチームは「Trend Vision One™」を用いることで、電子メールやエンドポイント、サーバ、クラウドワークロードなど複数のレイヤーで発生した事象同士の関連を紐解き、攻撃キャンペーンの活動に関する全体像を把握できます。単一レイヤーの視点では無害と見なされていた不審な挙動も、本ソリューションでは、見過ごすことなく検知されます。これにより、攻撃活動の実態を幅広い視点から的確に確認することが可能です。
「Trend Service One」は、「Trend Micro XDR」や保護ソリューションによって採取されたデータを毎日24時間無休で監視、解析します。電子メールやエンドポイント、サーバ、クラウドワークロード、さらにネットワークソースの事象を互いに関連付けることで強力な検知機能を実現し、各種リソースの状態や複雑な標的型攻撃の実態を明確に把握することが可能です。
侵入の痕跡(Indicators of Compromise、IoC)
侵入の痕跡(IoC)はこちらで確認してください。
参考記事:
Gootkit Loader Actively Targets Australian Healthcare Industry
By: Hitomi Kimura, Ryan Maglaque, Fe Cureg, Trent Bessell
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)