マルウェア
正規のWindows用デバッグツールに偽装するトロイの木馬「PlugX」を分析
Trend MicroのManaged Extended Detection and Response(MxDR)チームは、x32dbg.exeというファイルがPlugXの変種として特定された悪意のあるDLLをサイドロードするために使用されていることを発見しました。
はじめに
トレンドマイクロの「Managed Extended Detection and Response(MxDR)」チームでは、PlugX(弊社では「Trojan.Win32.KORPLUG.AJ.enc」として検知)と呼ばれる不正なDLLをサイドロード(DLL検索順序またはT1574.001の不正使用による)する不審なファイル「x32dbg.exe」を発見しました。x32dbg.exeは、オープンソースによる正規なWindows用デバッグツールであり、カーネルモードのコードやユーザモードのコード、クラッシュダンプ、CPUレジスタの解析機能を提供します。一方、PlugXはリモートアクセス型のトロイの木馬(RAT:Remote Access Trojan)として良く知られ、標的端末をリモートから操作する目的で使用されます。攻撃者はこのPlugXを使用して標的端末に不正アクセスし、機密情報を窃取する他、当該の端末を踏み台としてさまざまな不正行為に及ぶ可能性があります。今回、MxDRチームでは、一連の攻撃に関する全体的な実像を解明するため、高度なセキュリティ技術やソリューションに基づく分析を実施しました。本稿では、その結果について解説します。
MxDRに基づく攻撃の調査と解析
以下のハッシュ値のx32dbg.exe自体は有効なデジタル署名が付与された正規なアプリケーションであり、セキュリティツール側からは正常なファイルと認識されます。しかし、攻撃者はそれを逆手にとり、永続化や権限昇格、ファイル実行の制限回避といった不正な活動の隠れ蓑として、当該ファイルを不正利用する場合があります。
SHA256:ec5cf913773459da0fd30bb282fb0144b85717aa6ce660e81a0bad24a2f23e15
今回の調査ではまず、コマンドライン「D:\RECYCLER.BIN\files\x32dbg.exe」が実行されたことに注目しました。この事象は、「Vision One Workbench」の監視対象として挙がったものです。解析の結果、この実行ファイルはUSBストレージ内の隠しフォルダにアクセスすることが判明しました。また、そこにはさまざまな攻撃用のコンポーネントが格納されていました。
解析を続けた結果、上記の不審なコマンドラインを起点とする一連の事象が明確に特定されました。本コマンドラインを起動したのは「cmd.exe」であり、その結果としてフォルダ「D:\RECYCLER.BIN\files」の配下にある以下のSHA256のx32dbg.exeが実行されました。x32dbg.exeの署名者は「OpenSource Developer, Duncan Ogilvie」であり、その証明書の発行機関は「Certum Code Signing」であることが分かりました。図3に、一連の事象を可視化した結果を示します。
SHA256:ec5cf913773459da0fd30bb282fb0144b85717aa6ce660e81a0bad24a2f23e15
コマンドライン:"C:\Windows\System32\cmd.exe" /q /c "\ \RECYCLER.BIN\files\x32dbg.exe"
ファイルパス:"D:\ \ \RECYCLER.BIN\files\x32dbg.exe"
SHA256:ec5cf913773459da0fd30bb282fb0144b85717aa6ce660e81a0bad24a2f23e15
署名者:Open-Source Developer, Duncan Ogilvie
「D:\RECYCLER.BIN\files\x32dbg.exe」が呼び出されると、全ての攻撃用コンポーネントが、以下のフォルダの配下にコピーされました。
C:\ProgramData\UsersDate\Windows_NT\Windows\User\Desktop
続いて、元のファイルのコピーである以下のファイルが呼び出されました。この際に用いられたコマンドは下記の通りです。
C:\ProgramData\UsersDate\Windows_NT\Windows\User\Desktop\x32dbg.exe
コマンドライン:"C:\Windows\System32\cmd.exe" /q /c"
C:\ProgramData\UsersDate\Windows_NT\Windows\User\Desktop//x32dbg.exe”
以下のファイルも同様の処理を行うことが分かりました。
C:\Users\Public\Public Mediae\Mediae.exe
図7に示す通り、新規フォルダ「C:\Users\{ユーザ名}\Users\」を作成し、そこに先ほどと同一のファイルをコピーしました。
以上の結果、同じファイルのセットが、3つの異なるフォルダ配下に作成されました。こうした挙動からは、攻撃者が不正なファイルを複数の場所にコピーすることで、標的システム内での永続化や検知の回避を目論んでいることが明確に読み取れます。下記に、当該の3フォルダを示します。
C:\ProgramData\UsersDate\Windows_NT\Windows\User\Desktop
C:\Users\Public\Public Mediae\
C:\Users\ユーザ名\Users\
永続化に関する分析:標的端末へのアクセスを維持する手段
標的端末へのアクセスを維持する手段として、今回の攻撃者は、レジストリ設定による永続化、タスクスケジュールの追加(システム再起動もアクセスできるように)、認証情報の変更、アクセスが消失する事態を妨害する各種技術を利用しました。
図8の通り、タスクスケジュールの追加には、コマンド「schtasks」が使用されました。この際、タスク起動時に実行するファイルとして、PlugXのサイドロードを行うオープンソースによるデバッグツール「x32dbg.exe」が指定されました。また、起動間隔としては「5分」が指定されました。なお、検知を回避する手段として、本タスクは「LKUFORYOU_1」の名前で偽装されていました。
コマンドライン:schtasks /create /sc minute /mo 5 /tn LKUFORYOU_1 /tr
C:\ProgramData\UsersDate\Windows_NT\Windows\User\Desktop\x32dbg.exe /f
上記に記載したパラメータの意味は、下記の通りです。
- /create:タスクスケジュールを「新規」に追加する。
- /sc minute:タスクの起動間隔として「分単位(minute)」を使用する。
- /mo 5:上記単位で起動間隔を指定する。今回の場合は、「5」分毎に起動する。
- /tn LKUFORYOU_1:タスク名を「LKUFORYOU_1」に設定する。
- /tr C:\ProgramData\UsersDate\Windows_NT\Windows\User\Desktop\x32dbg.exe:タスク起動時に実行する「ファイルのパス」を指定する。
- /f:ユーザの確認なしで強制的にタスクを追加する。
タスクスケジュールの追加によって永続化が達成されたことは、イベントログからも確認できました。図10に示す通り、設定したファイルの実行に成功したことが、イベント「100」の情報として明確に記録されています。
永続化を目的としてレジストリキー「run」が設定された際の状況を図11に示します。これらのレジストリキーや値の設定により、ユーザが被害端末にログインするたびにx32dbg.exeが自動起動するようになり、脅威の永続化が実現します。
レジストリキー:HKCU\Software\Microsoft\Windows\CurrentVersion\Run
レジストリ値の名前:x32dbg
レジストリ値のデータ:C:\ProgramData\UsersDate\Windows_NT\Windows\User\Desktop\x32dbg.exe
白日のもとに身を隠す:x32dbg.exeを用いたDLLサイドローディング
x32dbge.exeは、PlugX(トレンドマイクロでは「Trojan.Win32.KORPLUG.AJ」として検知)の以下のファイルをサイドロードするために用いられます。
x32bridge.dll(SHA256:0490ceace858ff7949b90ab4acf4867878815d2557089c179c9971b2dd0918b9)
サイドローディングによる攻撃では、DLLの読み込み優先度を考慮し、不正なDLL(ペイロード)をユーザのアプリケーションと同じ場所に配備します。これにより、正規なDLLを差し置いて、当該の不正なDLLがアプリケーションから呼ばれるようになります。攻撃者がDLLサイドローディングを用いるメリットとして、信頼される正規な環境を隠れ蓑に不正な活動を展開できる点や、高い実行権限を掌握できる点が挙げられます。
「akm.dat」という名前の以下のファイルも、「rundll32」を中継して登録、実行されたことが判明しました。
SHA256:0e9071714a4af0be1f96cffc3b0e58520b827d9e58297cb0e02d97551eca3799、トレンドマイクロでは「Trojan.Win32.KROPLUG.AJ」として検知
rundll32はWindowsのコンポーネントですが、不正なコードの実行手段として利用されることがあります。今回の攻撃者は、不正なファイルの実行時に正規なrundll32.exeを中継させることで、セキュリティツールによる監視を回避しようとします。
rundll32 SHELL32.DLL, ShellExec_RunDLL rundll32
C:\ProgramData\UsersDate\Windows_NT\Windows\User\Desktop\akm.dat,Start
戦略の解明:詳細な脅威分析
解析により、本攻撃で使用された各種ファイルの具体的な挙動が解明されました。攻撃者が用いる戦略やテクニックを知ることで、将来的に似たような攻撃が発生した場合にも、それを検知して阻止することが可能です。
Vision Oneを用いた解析結果として、今回の攻撃者は、DLLサイドローディングを重用していたことが判明しました。DLLサイドローディングはPlugXがよく用いる手口ですが、今回報告した亜種は、永続化やプロパゲーション(自己の複製)、バックドア通信といった機能をコンポーネント別に切り分けていた点で特徴的です。結果として、攻撃者が用いたさまざまなファイルを区別し、その役割を特定することが可能となりました。
永続化と複製:x32dbg.exe(x32bridge.dllとx32bridge.datを含む)
実行ファイル「x32dbg.exe」は正規なデバッグ用ソフトウェアであり、起動すると、ライブラリ「x32bridge.dll」をインポート(読み込み)し、その関数「BridgeStart」と「BridgeInit」を呼び出します。今回の攻撃者はそこに目を付け、同じ関数名でも全く内容の異なるライブラリを用意し、本来のライブラリをすげ替える手段を講じました。攻撃者が用意したライブラリに含まれる関数の内容は、下記の通りです。
- BridgeStart:何も処理をしないダミーのコード
- BridgeInit:「x32bridge.dat」を読み込み、その内容を復号し、復号後のコードを実行
x32bridge.datの復号に用いる鍵は「HELLO_USA_PRISIDENT」であり、ハードコーディングで埋め込まれています。復号後のコードは、そのまま実行されます。
この後、「LKU_Test_0.1」の名前を持つイベントオブジェクトが存在するかどうかを確認します(無ければ作成する)。続いて、同じフォルダ内にある「akm.dat」を実行します。
次に、先述のVision Oneによる解析結果で示した通り、x32dbg.exeの起動を持続化させる目的でタスクスケジュール「LKUFORYOU_1」を作成します。
この後、自身の複製先を探すため、全ドライブ中からリムーバブル(取り外し可能)ドライブに相当するものを検索します。該当するものが見つかった場合、そのドライブ内から「RECYCLER.BIN」という名前のフォルダを完全に削除し、新規に再作成します。この新規フォルダ内には、「.exe」、「.dll」、「.dat」のいずれかの拡張子を持つコンポーネントをコピーした上で、ファイル「desktop.ini」をドロップします。
続いて、インストール処理に進みます。ここでは、Vision Oneの解析結果で示した通り、全てのコンポーネントを複数のフォルダにコピーします。
インストールの完了後、Mediae.exe(x32dbg.exeと同じ)が起動されます。本プロセスは、メモリ内で上述した処理を繰り返します。
また、Midiae.exeは、「LKU_Test_0.2」という名前のイベントオブジェクトを作成します。これは、インストールの成功を通知するためと考えられます。
また、Vision Oneの解析結果で示した通り、本マルウェアは、レジストリキー「AutoStart(x32dbg)」の存在を確認し、なければ新規に作成します。なお、自動起動させるファイルのパスは、マルウェア(x32dbg.exeまたはMediae.exe)の場所に応じて異なる場合があります。
第二段目のローダ:akm.dat
ファイル「akm.dat」の実体はDLLであり、DLLサイドローディングにおける第二段目の処理を実行します。その処理自体は簡潔であり、当該DLLのエクスポート関数「Start」が、実行ファイル「AUG.exe(x32dbg.exeによるインストール対象に含まれる)」を起動します。
バックドア型UDP通信シェル:AUG.exe(DismCore.dllとGroza_1.datを含む)
AUG.exeの実体は、DLLサイドローディングへの脆弱性を持つMicrosoft社の正規なファイル「DISM.EXE」をリネームしたものです。AUG.exeは、DismCore.dllの関数「DllGetClassObject」を使用して、「Groza_1.dat」の内容を復号します。復号鍵としては、ハードコーディングで埋め込まれた「Hapenexx is very bad」を使用します。
復号後のコードはUDP通信シェルクライアントとして機能し、おおまかには下記を行います。
- 標的システムの情報として、ホスト名、IPアドレス、MACアドレスを収集し、コマンドコントロール(C&C:Command and Control)サーバ(160[.]20[.]147[.]254)に送信する。
- C&Cサーバからの指示を待つためのスレッドを作成する。
- ハードコーディングされた鍵「Happiness is a way station between too much and too little.」を用いて、C&Cサーバからの通信データを復号する。
- ハードコーディングによるデバッグ情報を以下のパスに書き込む。
C:\Users\guss\Desktop\Recent Work\UDP SHELL\0.7 DLL\UDPDLL\Release\UDPDLL.pdb
結論および推奨事項
本調査では、オープンソースのデバッグツール「x32dbg.exe」を起点としてマルウェアが展開される攻撃について分析しました。その結果、DLLサイドローディングの手口が依然として攻撃者によって利用され続けている実態が明らかになりました。この理由として、当該の手口が、セキュリティ保護の回避やアクセス権の掌握に際して効果を発揮しているという実情が挙げられます。DLLサイドローディング攻撃の発想は、正規なアプリケーションに寄せられる信頼性を、隠れ蓑として利用することです。そのため、セキュリティ技術が進歩したとしても、この種の攻撃は止まないものと考えられます。システムやアプリケーションがダイナミックリンクライブラリを信頼して実行する限り、DLLサイドローディングは有力な攻撃手段として存続し、マルウェアの配布や機密情報の窃取といった目的に利用され続けるでしょう。
攻撃者が脆弱性を巧みに利用して高度な攻撃手段を模索し続ける中、今回の事例は、強力で堅固なサイバーセキュリティシステムがいかに重要であるかを示すものです。トレンドマイクロの「Managed Extended Detection and Response(MxDR)」では、セキュリティ事象の検知、調査、応答に向けた包括的なアプローチを用いることで、DLLサイドローディングを始めとする攻撃からシステムを保護します。
「Trend XDR」では、エンドポイント保護、ネットワーク・セキュリティ、クラウドセキュリティをはじめとするさまざまなセキュリティ技術を統合し、企業や組織が用いるシステムの安全性を総合的に分析します。これによりMxDRでは、攻撃の段階を問わず、DLLサイドローディングをはじめとする不正な活動を未然に検知してブロックし、攻撃を阻止します。また、セキュリティ事象に際してXDRが提供する詳細な解析結果は、企業や組織が攻撃の影響を把握して適切な対応を取る上での情報源としても役立ちます。
DLLサイドローディングの攻撃を防ぐためにIT管理者が実施できる対策として、下記が挙げられます。
- ホワイトリストの設定:システム内では信頼できる既知のアプリケーションのみ実行を許可し、未知または不審なものは全てブロックする。
- 署名付きのコードを使用:全てのDLLについて、整合性と真正性を担保するため、信頼されるデジタル署名が付与されていることを確認する。
- 実行されるアプリケーションの監視と制御:不正な活動を検知して阻止するため、アプリケーションやDLLを含む依存コンポーネントの実行を監視、制御する。
- エンドユーザ向けの教育を実施:ユーザに対してはDLLサイドローディング攻撃の危険性について周知し、さらに、馴染みのないソフトウェアをインストールまたは起動することで生じるリスクについて日頃から警戒するように促す。
- エンドポイントの保護:挙動解析や予測型機械学習の機能を備えたエンドポイント保護ソリューションを利用し、セキュリティを強化する。
- 適切なインシデント対応計画の確立:セキュリティ事象に対する検知、隔離、応答をできる限り迅速に実施するため、明瞭かつ適切なインシデント対応計画を確立する。
侵入の痕跡(Indicators of Compromise、IoC)
侵入の痕跡(IoC)はこちらで確認してください。
参考記事:
Investigating the PlugX Trojan Disguised as a Legitimate Windows Debugger Tool
By: Buddy Tancio, Jed Valderama, Catherine Loveria
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)