最初は特に問題がないように見えても、関係が深まったり、対立が生じたりすると、さりげなく避ける。プレッシャーを受けると姿を隠す。このような人を一般的に 「回避型」 と呼ぶ。一度離れたかと思えば、再び現れる行動を繰り返し、相手の感情やエネルギーを消耗させ、最終的には関係を疲弊させる。
最近確認されたバックドア 「MoiClient」 の攻撃パターンもこれと似た特徴を示している。大金請求書を装ってユーザーの警戒心を緩め、正常なプログラムに隠れて実行された後、セキュリティ対策に阻まれるたびに別の経路を探して活動する。権限制御を回避し、脆弱なドライバーを悪用して自身を遮断するセキュリティ製品まで無力化した上で、タスクスケジューラを利用して繰り返し実行される。
阻止されれば回避し、捕まえようとすると再び姿を隠す MoiClient の攻撃手法を詳しく見ていこう。
大金請求書の仮面をかぶった 「回避型」 バックドア
最近、アンラボは BYOVD (Bring Your Own Vulnerable Driver) と RPC ベースの UAC Bypass 技術を使用するバックドアの拡散事例を確認した。BYOVD とは、脆弱性が存在する正常なドライバーを攻撃に持ち込み、悪用する手法である。アンラボは、このバックドアが BYOVD の手法を実行する際に使用する 「moimoi」 という文字列に基づき、このマルウェアを 「MoiClient」 と命名した。
攻撃は、電子メールで送付される大金請求書から始まる。MoiClient は、大金請求書を装った .vhdx ファイル形式で拡散され、内部には PDF 文書のように見える Invoice.pdf.exe と uxtheme.dll が含まれている。このうち uxtheme.dll が MoiClient の悪性 DLL である。Invoice.pdf.exe は正常な PDF ビューアである SumatraPDF であり、これを除く残りのファイルにはシステム隠し属性が設定されているため、一般ユーザーは uxtheme.dll などの関連ファイルの存在に気付きにくい。
ユーザーが Invoice.pdf.exe を PDF 文書だと思って実行すると、同じパスに存在する uxtheme.dll が DLL サイドローディング (DLL Side-Loading) によって同時にロードされ、MoiClient が実行される。その後、MoiClient は攻撃者の C&C サーバーから追加ペイロードを受信し、メモリ上で実行する。分析時点では、このペイロードはブラウザ情報を窃取する 「MoiXD Stealer」 であることが確認された。

[図1] .vhdx ファイルの内容
正常なプロセスに隠れて侵入する MoiClient
MoiClient は初回実行後、以下のように複数段階のインジェクション処理を経て、最終的な悪性ペイロードを実行する。
一時停止 (Suspended) 状態の explorer.exe プロセスを生成
↓
explorer.exe プロセスの Entry Point (EP) に、同一パスの data.dat ファイルに格納されたシェルコードを挿入
↓
挿入されたシェルコードが追加のインジェクションルーチンを実行
↓
最終ペイロードをメモリにロードして実行
つまり、ユーザーに馴染みのある正常なプログラムを利用して最初の実行を行った後、Windows の正規プロセス内へ実行領域を移し、次の攻撃段階へ移行する手法である。

[図2] EP Overwrite と実行ルーチン

[図3] Shellcode Injection の結果
正面から対決しない権限昇格
MoiClient は、セキュリティ製品の無力化など、高い権限を必要とする処理を実行するため、RPC ベースの UAC Bypass 技術も使用する。この手法は、 Google Project Zero で紹介された AppInfo ローカル RPC インターフェースの悪用手法と類似している。
MoiClient は、ncalrpc プロトコルシーケンスを使用して AppInfo サービスの RPC インターフェースに接続した後、winver.exe をデバッグ対象として実行し、デバッグオブジェクトハンドルを取得する。その後、同じ AppInfo RPC 経路を介して自動的に権限が昇格されるシステムバイナリである ComputerDefaults.exe を実行し、関連するデバッグイベントを受信する。この過程で、ComputerDefaults.exe のプロセスハンドルを取得して複製する。

[図4] AppInfo RPC インターフェースへの接続

[図5] デバッグオブジェクト取得ルーチン

[図6] ComputerDefaults.exe のプロセスハンドル取得ルーチン
複製されたハンドルは、sc.exe と PowerShell プロセスの親プロセスとして指定される。これにより、これらのプロセスはすでに高い権限で実行されている ComputerDefaults.exe の権限を継承し、UAC を回避できるようになる。

[図7] UAC Bypass によるプロセス実行
自身を阻止するセキュリティ製品まで無力化
権限を取得した MoiClient は、自身を検知または遮断できるセキュリティ製品を無力化するため、BYOVD の手法を使用する。
今回の攻撃では、Lenovo PC Manager の脆弱なドライバーである BootRepair.sys 2.5.30.11281 バージョンが悪用された。MoiClient は、このドライバーを %Public% パスに moimoi.sys という名前で作成した後、先に実行した UAC Bypass を利用してカーネルドライバーサービスを登録し実行する。

[図8] BootRepair.sys ファイルのドロップ

[図9] カーネルドライバーサービスの登録および実行
その後、実行中のプロセス一覧を確認し、セキュリティ製品に関連するプロセスが見つかると、その PID を \.\BootRepair デバイスに渡して終了させる。終了対象には Windows Defender 系をはじめ、Malwarebytes、Bitdefender、Kaspersky、Avast・AVG、McAfee など、さまざまなセキュリティ製品のプロセスが含まれている。

[図10] BootRepair.sys dispatch ルーチンの一部
Windows Defender に対しては、別の手法も使用する。MoiClient は C&C サーバーから defendnot.dll と defendnot-loader.exe をダウンロードした後、UAC Bypass によって取得した権限を利用し PowerShell からこれらを実行して Windows Defender の無力化を試みる。

[図11] Defendnot プログラムのダウンロードおよび実行

[図12] 無力化された Windows Defender
消えたかと思えば30分ごとに再び現れる
MoiClient は、一度実行された後も攻撃を継続するため、タスクスケジューラを登録する。
まず、すでに登録されているタスクスケジューラの一覧を確認する。既存のタスクがない場合は、MicrosoftWindowsUpdateTask の後ろに任意の4桁の数字を付けてタスク名を生成し、既存のタスクが存在する場合は、そのタスク名の後ろにピリオド (.) を付けて名前を設定する。
- 既存のタスクがない場合 : MicrosoftWindowsUpdateTask1234
- 既存のタスクがある場合 : Task Name.
登録されたタスクは30分ごとに実行される。このとき、demo.exe という名前の SumatraPDF が実行され、同じパスに存在する uxtheme.dll、すなわち MoiClient が再びロードされる。その結果、初回実行時に使用された DLL サイドローディングの処理がタスクスケジューラを通じて繰り返される。

[図13] 作成されたタスクスケジューラ
回避の果てにたどり着くブラウザ情報の窃取
セキュリティ製品を無力化し、永続化まで確保した MoiClient は、C&C サーバーから c.txt という名前の追加ペイロードをダウンロードする。

[図14] 追加 C&C ペイロードのダウンロード
ダウンロードしたペイロードは、CreateThread() を利用してメモリ上で実行される。分析時点では、c.txt は 「MoiXD Stealer」 であることが確認されており、ChromeElevator を利用してブラウザに保存されたパスワードなどの情報を窃取する。

[図15] 追加 C&C ペイロードのインメモリ実行
結局、今回の攻撃は単純な電子メール添付ファイルの実行だけで終わらない。大金請求書を装ってユーザーに実行を促した後、正規のプログラムやプロセスを利用し権限制御を回避するとともに、脆弱なドライバーを利用してセキュリティ製品まで無力化する。その後、タスクスケジューラによって繰り返し実行されながら追加のマルウェアをダウンロードし、ブラウザ情報の窃取へと攻撃を継続する。
悪質な 「回避型」 MoiClient の感染が疑われる場合
MoiClient の感染が疑われる場合は、以下の項目を順番に確認する必要がある。
- 意図しない explorer.exe プロセスの確認
意図しない explorer.exe プロセスが実行されていないか確認し、発見された場合は直ちに終了する。 - タスクスケジューラの確認
不審なタスクが登録されていないか確認し、発見された場合は削除する。特に、以下のように demo.exe が実行されるよう設定された項目が存在するか確認する必要がある。
– LocalAppData%\demo.exe -print-to-default -silent file.pdf - 関連ファイルの存在確認
以下のファイルがシステム上に存在するか確認する。該当ファイルが確認された場合、今回の攻撃に使用された悪性ファイルである可能性があるため、直ちに削除する必要がある
- %Public%\moimoi.sys
- %LocalAppData%\uxtheme.dll
- %LocalAppData%\data.dat
- %LocalAppData%\defendnot-loader.exe
- %LocalAppData%\defendnot.dll
Categories: マルウェア, フィッシング/スキャム