PebbleDash バックドアマルウェアは、2020年に米国国土安全保障省傘下機関である CISA が命名した Lazarus(Hidden Corba)のバックドアマルウェアである。当時は Lazarus グループのマルウェアで知られていたが、最近では Lazarus グループの攻撃事例よりも、個人を対象にマルウェアの配布を繰り返し行う Kimsuky グループの攻撃事例として多数確認されている。このブログでは Kimsuky グループの PebbleDash マルウェアの最新配布プロセスと PebbleDash と共に確認されるマルウェア、さらなるモジュールについて紹介する。
過去の TI 報告書で何度も言及したように、Kimsuky 攻撃グループは PebbleDash と共にリモートコントロールのため、オープンソースである RDP Wrapper を使用すると知られている。しかし、近年にはターミナルサービスの役割を担う termsrv.dll を攻撃者が直接パッチし、使用する事例が多数確認されている。
以下の[図1]は、近年 Kimsuky グループの PebbleDash マルウェアを活用した攻撃プロセスである。

[図1] Kimsuky グループの最新 PebbleDash マルウェア攻撃プロセス
攻撃プロセス
1. 初期侵入、持続性維持、拠点確保
PebbleDash を悪用した事例において、攻撃者の攻撃プロセスは大きく初期侵入、持続性維持、拠点確保、さらなるマルウェア生成、合計4つに分類できる。まず、攻撃者は初期侵入のため、特定の個人を対象にスピアフィッシング攻撃を実行する。そして、ユーザーがスピアフィッシングに添付されたショートカットファイル(LNK)のマルウェアを実行すると、LNK の内部 Cmdline によって mshta.exe プロセスを通じた JavaScript が実行される。実行された JavaScript は PowerShell を実行し、システムの持続性維持のためのタスクスケジューラ登録、自動実行登録、レジストリキー登録、Dropbox(Dropbox)および攻撃者の C&C サーバーとのソケット通信を実行し、PebbleDash のようなバックドアマルウェアと RDP ツールを生成する。

[図2] 初期侵入のプロセス
2. 感染 PC の操作のためのさらなるマルウェアをインストール
LNK マルウェアから PowerShell が実行されると、攻撃者は Dropbox と TCP ソケット通信を通じてさらなるマルウェアと CMD コマンドを感染 PC に送信する。攻撃者が感染 PC を操作するために使用するマルウェアは PebbleDash と AsyncRAT であり、RDP 接続認証のバイパスのためにパッチされた termsrv.dll、権限昇格のための UAC バイパスマルウェア、データ流出のための ForceCopy ユーティリティが確認された。
2.1. PebbleDash
PebbleDash マルウェアは、2021年から Kimsuky グループにより持続的に使用されている。実行方式には、過去のバージョンと最新バージョンの間に若干の違いがある。例えば、2021年には PIF ファイルを通じておとりドキュメントファイルと PebbleDash を直接実行する方式であり、最近の事例で確認されたのは、以下の図のように PowerShell を通じて直接 advconf2.dll を作成した。

[図3] PowerShell の PebbleDash マルウェア作成ログ
advconf2.dll が作成された後は cmd.exe と reg.exe を利用して advconf2.dll をサービスに登録して実行する。最終的に実行された PebbleDash 機能は、過去の ASEC ブログを通じて掲載した PebbleDash の機能と同様である。

[図4] サービス関連レジストリキーの登録
2.2. UAC バイパスマルウェア
Kimsuky グループは以前から様々な権限昇格ツールを活用してきており、主に UACMe を使用していた。2024年にも複数の権限昇格ツールを使用しているが、1つのタイプが多数を占めていることが特徴である。攻撃者は UACMe が対応している複数の UAC バイパス手法のうち、「AppInfo ALPC」手法のみを利用してマルウェアを製作した。この手法は、特定のプロセスのデバッグオブジェクトに対するハンドルを取得できる場合、そのプロセスに対する全アクセスが可能なハンドルを取得できるようになるという点を悪用する方式である。この権限昇格ツールもまた、PowerShell によって作成および実行されたログが当社 ASD インフラで確認された。

[図5] PowerShell を利用した権限昇格ツールの作成および実行

[図6] 権限昇格のための AppInfo ALPC 手法使用コードルーチン
2.3. 改ざんされた termsrv.dll
攻撃者は PowerShell を利用し、改ざんされた termsrv.dll ファイルを感染 PC に追加作成した。正常な termsrv.dll と比較したところ、特定の関数がパッチされており、分析の結果、RDP ライセンス認証の比較を担う関数(CDefPolicy::Query)が無力化された。これは、そのシステムに接続するどのユーザーであっても無条件に RDP 接続が許可されることを意味する。

[図7] 正常とパッチされた不正なファイルの BinDiff 比較値(sub_18002F300 関数の不一致)

[図8] 正常、パッチされたモジュールの比較(CDefPolicy::Query 関数)
Windows パスの正常なシステム DLL を改ざんされた DLL に置き換えるため、攻撃者は RDP サービスに関連するレジストリキーの値を変更した。
-
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\TermService\Parameters
すなわち、RDP サービスは基本的に %SystemRoot%\System32\termsrv.dll ファイルをロードするため、改竄された DLL をロードするには改竄された DLL のパスに変更する必要がある。このほかにも攻撃者は DLL 交換のため takeown.exe を通じて既存システムパスの termsrv.dll ファイルの所有権を Administrators に変更した。
-
takeown /F C:\Windows\System32\termsrv.dll /A
対応ガイド
1. 二重拡張子
このように Kimsuky グループは二重拡張子をメールに添付し、正常なドキュメントのように見えるよう偽装した LNK 不正なショートカットファイルを配布している。例えば、「pdf.lnk」ファイルはファイル名が PDF ドキュメントのように見えるが、実際には Windows ショートカット(.lnk)ファイルであり、実行すると不正なスクリプトやプログラムが動作する場合がある。したがって、一般ユーザーは実際の拡張子を確認し、こうした疑わしいファイルが実行されないように事前に予防する必要がある。
[ファイル拡張子の表示を有効にする方法]
ファイルエクスプローラーを開き、上部メニューの「表示」タブで「ファイル名の拡張子」チェックボックスを選択するか、Windows 設定の Group Policy を通じて強制的に表示させることができる。
2. 改ざんされた termsrv.dll ファイルの処理
ハッシュ計算を通じて不正な termsrv.dll ファイルで正常なファイルが置き換えられていないか確認する必要がある。検証のためにコマンドプロンプト(管理者権限)で以下のように実行し、改ざんされたファイルのハッシュ値(MD5)を計算する。
-
certutil -hashfile C:\Windows\System32\termsrv.dll MD5
計算されたハッシュ値が「641593eea5f235e27d7cff27d5b7ca2a」、「70d92e2b00ec6702e17e266b7742bbab」であるかどうかを比較する。値が同じであればファイルが改ざんされたため、正常な termsrv.dll と置き換える必要がある。Windows では正常なプログラムの復元のために sfc プログラムを提供している。そのため、ユーザーは管理者権限で CMD を実行した状態で以下のコマンドを入力することで、パッチが適用された termsrv.dll を正常なプログラムに戻すことができる。
-
sfc /scannow
3. 隠された管理者アカウント(「Root」)の対応
管理者が作成していない「Root」という名前の疑わしいアカウントが存在する場合、そのアカウントを無効化するか、削除する必要がある。コマンドプロンプト(管理者権限)で以下のように実行し、アカウント情報を確認する。
-
net user
標準管理者アカウント以外、「Root」のように名前が特異、または、作成日時およびプロパティが疑わしいアカウントを探す。その後、疑わしいアカウントが存在する場合は、隠し属性の除去およびアカウント削除/非活性化の対応を実行する。
レジストリ編集ツールを開き、以下のパスにアクセスして“Root”のように隠し処理されたアカウントに該当する項目を削除する。
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList
アカウントを削除し、さらなる攻撃者への活用を予防する。
-
net user Root /delete
結論
Kimsuky グループは様々なマルウェアを使用しているが、PebbleDash の配布事例の場合、初期侵入段階においてスピアフィッシングにより LNK ファイルベースのマルウェアを実行させ、攻撃を開始する。その後、PowerShell スクリプトを活用し、タスクスケジューラと自動実行登録を実行、Dropbox および TCP ソケットベースの C&C サーバーとの通信によって PebbleDash を含む多数のマルウェアやツールをインストールする。近年には従来のオープンソース RDP Wrapper を使用した方式から、攻撃者がシステム DLL(termsrv.dll)を直接改ざんすることで RDP 認証を無力化する手法が登場した。これは Kimsuky グループが攻撃環境に合わせて攻撃手法を進化させ続けていることを示している。
当ブログでは、最新の Kimsuky グループの PebbleDash マルウェアの配布および実行プロセスを分析した。また、主に個人を対象に活動する特性を考慮すると、個人ユーザーはスピアフィッシングのような初期侵入手法への警戒心を高め、セキュリティ製品の最新アップデートを維持することで類似の攻撃に対して事前に予防する必要がある。
Categories: マルウェア