最近、AhnLab Security intelligence Center (ASEC) は、見積書の確認依頼を装ったフィッシングメールの拡散事例を確認した。攻撃者は海外の特定企業の営業担当者を装い、既存の見積書の修正および製品バージョンの確認が必要であるかのように案内することで、受信者に添付ファイルを開かせようとする。メールには、悪性ファイルを含む 「7200_Quantum_Enterprise_LLC_SSO-0661.GZ」 という圧縮ファイルが添付されている。

[図1] フィッシングメール本文
添付ファイルの内部には、7200_Quantum_Enterprise_LLC_SSO-0661.exe ファイルが存在する。このファイルはインジェクター (Injector) 型のマルウェアであり、脆弱なドライバーを利用してセキュリティ製品を無力化した後、PhantomStealer マルウェアを正常なプロセスに挿入して実行する。

[図2] 圧縮ファイル
1. UAC 権限昇格
マルウェアはまず、現在のプロセスが管理者権限で実行されているか確認する。すでに管理者トークンを保有している場合は、UAC 回避処理を省略して後続の悪意のある動作を実行する。一方、一般ユーザー権限で実行されている場合は、SSPI ベースの権限昇格と CMSTPLUA COM 自動昇格を順番に試行し、自動昇格に失敗した場合は ShellExecuteExW の runas 動作を最終的な代替手段として使用する。
1.1. SSPI ベースの UAC 回避
マルウェアは、管理者グループに所属しているものの、UAC によって中程度の整合性レベルで実行されている環境において NTLM または Negotiate ベースの SSPI Datagram 認証を独自に実行し、ネットワーク認証トークンを取得する。その後、取得したトークンを偽装した状態で \127.0.0.1\pipe\ntsvcs に接続し、ループバック認証の過程で昇格されたトークンが使用されるよう誘導する。その後、確保したパイプを介して SCM RPC を呼び出し、現在のサンプルを実行するサービスを作成して開始する。この過程では別途サービスアカウントを指定しないため、サンプルは最終的に LocalSystem 権限で実行される。

[図3] CreateFileW を利用して \127.0.0.1\pipe\ntsvcs Named Pipe を開くコード
1.2. CMSTPLUA COM ベースの UAC 回避
SSPI ベースの権限昇格に失敗した場合、または利用できない場合、マルウェアは以下の Elevation Moniker を構成する。
- Elevation:Administrator!new:{3E5FC7F9-9A51-4367-9063-A120244FBEC7}
その後、CoGetObject を呼び出し、自動昇格対象として登録されている CMSTPLUA COM オブジェクトを高権限のローカルサーバーとしてアクティベートし、ICMLuaUtil インターフェースを取得する。最後に ICMLuaUtil::ShellExec を呼び出し、現在のサンプルまたは指定されたペイロードを高い整合性レベルの管理者権限で実行する。

[図4] CoGetObject を利用した CMSTPLUA COM オブジェクトのアクティベート
1.3. ShellExecuteExW runas による代替実行
CMSTPLUA 方式にも失敗した場合、ShellExecuteExW に runas 動作を指定し、管理者権限での実行を要求する。この方式では通常 UAC の承認画面が表示されるため、自動 UAC 回避ではなくユーザーの承認による代替的な権限昇格方式に該当する。
2. BYOVD
インジェクターは CreateFileW 関数を呼び出し、C:\Windows\Temp\DCRCVDrv.sys パスに BYOVD (Bring Your Own Vulnerable Driver、脆弱なドライバーを利用した攻撃) 攻撃に使用されるカーネルドライバーファイルを作成する。これは、脆弱なドライバーをシステム上に作成した後、カーネル権限の機能を悪用するための事前段階である。

[図5] C:\Windows\Temp\DCRCVDrv.sys ファイルの作成
その後、CreateServiceW 関数を呼び出して、作成した DCRCVDrv.sys ファイルをサービス制御マネージャー (SCM) にカーネルドライバーサービスとして登録する。サービス名は NvStreamKmd_dcrcv であり、サービスを開始してドライバーをカーネルにロードした後、ユーザーモードからドライバー機能を呼び出せるよう準備する。

[図6] NvStreamKmd_dcrcv カーネルドライバーサービスの登録

[図7] 登録された NvStreamKmd_dcrcv サービス
ドライバーがロードされると、CreateFileW 関数を介して \.\DCRCVDRV_U デバイスオブジェクトにアクセスする。これは通常のファイルを開く操作ではなく、DCRCVDrv.sys が提供するユーザーモードとカーネルモード間の通信チャネルのハンドルを取得する処理である。

[図8] \.\DCRCVDRV_U デバイスオブジェクトのハンドル取得
取得したデバイスハンドルに対して DeviceIoControl API を呼び出し、対象プロセスの終了要求を渡す。このとき使用される 0x2205C0は、DCRCVDrv.sys においてプロセス終了要求を意味するドライバー固有の IOCTL コードであり、入力バッファには終了対象プロセスの PID が渡される。要求を受けたドライバーはその PID からプロセスハンドルを取得した後、カーネルモードで ZwTerminateProcess を呼び出してプロセスを終了する。これにより、インジェクターはユーザーモードの権限では終了が制限されるセキュリティ製品をカーネル権限で終了させる。

[図9] DeviceIoControl による対象プロセス終了要求
終了対象となるセキュリティ製品の1つである SecurityHealthService.exeのPID (5296) が、DeviceIoControl API の入力値として渡される。その後、DeviceIoControl API が呼び出されると DCRCVDrv.sys が該当する要求を処理し、SecurityHealthService.exe プロセスを終了させることが確認された。終了対象となるセキュリティ製品のプログラム名は [表1] のとおりである。

[図10] DeviceIoControl API 実行前の SecurityHealthService.exe

[図11] DeviceIoControl API 実行後に終了した SecurityHealthService.exe
| notepad.exe, CSFalconService.exe, CSSensorSettings.exe, MsMpEng.exe, MsSense.exe, MsSenseS.exe, smartscreen.exe, SecurityHealthService.exe, SecurityHealthTray.exe, SentinelAgent.exe, SentinelCtl.exe, cb.exe, CyveraService.exe, cytool.exe, sfc.exe, iptraytool.exe, ipsupporttool.exe, McShield.exe, mfevtps.exe, mfemms.exe, mcagent.exe, masvc.exe, macmnsvc.exe, mcods.exe, McUICnt.exe, ccSvcHst.exe, Smc.exe, SmcGui.exe, SymCorpUI.exe, SavService.exe, SophosFS.exe, SophosFileScanner.exe, SSPService.exe, SEDService.exe, SophosAgent.exe, SophosUI.exe, hmpalert.exe, TmListen.exe, NTRtScan.exe, TmPfw.exe, TMBMSRV.exe, TmCCSF.exe, TmProxy.exe, PccNTMon.exe, avp.exe, avpui.exe, ekrn.exe, egui.exe, emsw.exe, esets_psi.exe, esets_main.exe, bdagent.exe, bdservicehost.exe, vsserv.exe, bdwtxag.exe, bdntwrk.exe, seccenter.exe, AvastSvc.exe, AvastUI.exe, aswidsagent.exe, aswToolsSvc.exe, afwServ.exe, wsc_proxy.exe, aswEngSrv.exe, avgsvc.exe, avgwdsvc.exe, MBAMService.exe, mbam.exe, mbamtray.exe, WRSA.exe, fctservctl2.exe, fctsched.exe, FortiEDRCollectorService.exe, elastic-endpoint.exe, fshoster32.exe, PSANHost.exe, PSUAService.exe, CylanceSvc.exe, CylanceUI.exe, CybereasonService.exe, CybereasonLauncher.exe, CybereasonRansomFreeServiceHost.exe, xagt.exe, avcenter.exe, avguard.exe, sched.exe, avshadow.exe, webrootsecureanywhere.exe, wrusrsvc.exe, wrusrv.exe, panda_url_filtering.exe, pavsrvx86.exe, aviramain.exe, avscan.exe, avira.servicehost.exe, trgui.exe, coreServicesShell.exe, sophosav.exe, surfshark.exe, surfsharkservice.exe, clamd.exe, freshclam.exe, drweb32w.exe, drwtsn32.exe, vipreui.exe, sbamsvc.exe, fprottray.exe, gdatasecuritycenter.exe, K7TSecurity.exe, K7TSMngr.exe, K7SysMon.exe, K7CrvSvc.exe, K7AVScan.exe, K7AVMScn.exe, K7RTScan.exe, K7CTScan.exe, K7AVQrnt.exe, K7FWSrvc.exe, K7NDFHlpr.exe, K7EmlPxy.exe, K7PSSrvc.exe, K7SpmSrc.exe, K7APHlpr.exe, K7TLActiveHsty.exe, K7DisinfectorGUI.exe, K7MebezatEncRemovalTool.exe, K7QuervarCleaningTool.exe, K7TSMain.exe, 360Tray.exe, QHSafeMain.exe, QHActiveDefense.exe, QHWatchdog.exe, QHSafeTray.exe, 360rp.exe, 360rps.exe, 360Safe.exe, zhudongfangyu.exe, 360AdvToolExecutor.exe, HipsDaemon.exe, HipsMain.exe, HipsTray.exe, HRUpdate.exe, HipsLog.exe, HRConfig.exe |
[表1] 終了対象となるセキュリティ製品のプログラム名一覧
3. Process Hollowing
インジェクターは、正常なプロセスである C:\Windows\Microsoft.NET\Framework\v4.0.30319\AddInProcess32.exe を対象として Process Hollowing を実行する。その後、VirtualAllocEx を介して対象プロセスにメモリ領域を割り当て、WriteProcessMemory で PhantomStealer ペイロードを挿入した後、ResumeThread を呼び出して実行を再開する。

[図12] AddInProcess32.exe プロセスへの PhantomStealer ペイロードのインジェクション

[図13] AddInProcess32.exe プロセスにインジェクションされた PhantomStealer
4. PhantomStealer
インジェクションされた PhantomStealer は、AddInProcess32.exe プロセスのコンテキストで実行され、キーロギングや画面キャプチャをはじめ、ブラウザやアプリケーションに保存されたアカウント情報、ログインセッション Cookie、システムおよびネットワーク情報などを収集する。また、暗号資産ウォレットデータやクリップボードの内容を窃取し、クリップボードに保存された暗号資産ウォレットアドレスを攻撃者のアドレスに置き換えるクリッパー機能も実行する。
C&C
- Mail Sever : mail.trimnt[.]com:587
- Username : phan@trimnt.com

[図14] PhantomStealer の情報窃取機能
| 情報窃取および関連項目 | 窃取・改ざん対象 |
|---|---|
| キーロギング | ユーザーが入力したキーボード文字および入力内容 |
| 画面キャプチャ | メインモニターに表示される画面イメージ |
| 保存アカウント情報 | Chromium・Gecko ベースのブラウザ、および FileZilla・FoxMail・WinSCP・Outlook に保存されたアカウント名、パスワード、接続先ホスト |
| システム・ネットワーク情報 | OS、ユーザー名、コンピューター名、ロケール、アンチウイルス、デフォルトゲートウェイ、内部 IP および外部 IP |
| Cookie | ブラウザに保存されたログインセッション Cookie |
| クレジットカード情報 | ブラウザなどに保存されたクレジットカード情報 |
| ファイルの収集 | 指定された拡張子またはパスに存在するファイルおよびドキュメント |
| ブラウザウォレット情報 | ブラウザ拡張機能ベースの暗号資産ウォレットデータ |
| デスクトップウォレット情報 | システムにインストールされた暗号資産ウォレットアプリケーションのデータ |
| クリップボード履歴 | ユーザーがコピーしたクリップボードテキスト |
| クリッパー | クリップボードに保存された暗号資産ウォレットアドレスを攻撃者のアドレスに置き換える |
[表2] PhantomStealer の機能
対応ガイド
即時対応事項
- 添付ファイル
7200QuantumEnterpriseLLCSSO-0661.GZと内部の7200QuantumEnterpriseLLCSSO-0661.exeを悪性ファイルとみなす。 - 該当メールを受信した端末で添付ファイルが実行されたか確認し、実行履歴がある場合は感染が疑われる対象として分類する。
- セキュリティ製品のプロセス終了の兆候を確認する。報告書に記載された対象には
SecurityHealthService.exeを含む複数のセキュリティ製品のプログラム名が含まれる。 - システム上に
C:\Windows\Temp\DCRCVDrv.sysファイルが作成されているか確認する。 NvStreamKmd_dcrcvサービスが登録されているか確認する。\\.\DCRCVDRV_Uデバイスオブジェクトへのアクセス痕跡とDeviceIoControl呼び出しの痕跡を確認する。- 対象プロセス終了に使用される IOCTL コード
0x2205C0の使用痕跡を確認する。 AddInProcess32.exeに対する Process Hollowing の痕跡を確認する。- PhantomStealer の情報窃取対象に該当するキーロギング、画面キャプチャ、ブラウザアカウント情報、ログインセッション Cookie、システムおよびネットワーク情報、暗号資産ウォレットデータ、クリップボードの内容について、情報流出の可能性を確認する。
Categories: マルウェア