Windows標準機能WMIを利用するファイルレス仮想通貨発掘マルウェア「GhostMiner」-セキュリティブログ
利用者のコンピュータリソースを盗用して仮想通貨発掘ツール(コインマイナー)を実行する「不正マイニング」の手法は、サイバー犯罪者が金銭利益を得る手法として常套手段化しています。不正マイニングの利益を得続けるためには、その存在を気づかれないようにすることが重要です。そのため2017年にはすでに、ウイルス対策ソフトウェアによる検出と監視を難航させるファイルレス技術を不正マイニングに適用した事例が確認されています。
トレンドマイクロは、2019年8月2日、Windowsの正規ツール「Windows Management Instrumentation(WMI)」オブジェクトを悪用することによってファイルレス活動を持続化し、ペイロードのコインマイナーを送り込み、ウイルス対策ソフトによる検出を回避する機能を備えた仮想通貨発掘マルウェア「GhostMiner」の亜種を確認しました。また、この亜種は、過去に確認された「Mykings」、「PowerGhost」、「PCASTLE」、「BULEHERO」その他の仮想通貨発掘マルウェアの手法にも共通して見られたように、感染システムのhostsファイルを改変します。
このマルウェアは仮想通貨「Monero」をマイニングすることが確認されましたが、本記事執筆時点では、侵入経路の詳細はわかっていません。2018年3月に報告されているGhostMinerの事例では、「Microsoft SQL Server」、「phpMyAdmin」、および「Oracle WebLogic」のアプリケーションの脆弱性を利用した攻撃によるサーバを狙った侵入が確認されています。
「GhostMiner」について解説
GhostMinerは、イベントを管理する機能「WMI Event Subscriptions」を使用して自身を実行します。これにより、感染コンピュータにおける活動の永続化、つまり、コンピュータの再起動後も活動を継続できるようにします。この際、感染コンピュータ内で以下の設定を行います。
Event Filter\\.\ROOT\subscription:__EventFilter.Name=”PowerShell Event Log Filter”EventNamespace : root\cimv2
Query : SELECT * FROM __InstanceModificationEvent WITHIN 3600 WHERE TargetInstance ISA ‘Win32_PerfFormattedData_PerfOS_System’
QueryLanguage : WQL
FilterToConsumerBinding
\\.\ROOT\subscription:__FilterToConsumerBinding.Consumer=”CommandLineEventConsumer. Name=\”PowerShell Event Log Consumer\””,Filter=”__EventFilter.Name=\”PowerShell Event Log Filter\””
Consumer : CommandLineEventConsumer.Name=”PowerShell Event Log Consumer”
Filter : __EventFilter.Name=”PowerShell Event Log Filter”
Event Consumer
\\.\ROOT\subscription:CommandLineEventConsumer.Name=”PowerShell Event Log Consumer”
CommandLineTemplate : C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.eXe -NoP -NonI -EP ByPass -W Hidden -E <Base-64 encoded script>
GhostMinerは、名前空間(namespace)「root ¥ Default」にWMIクラス「PowerShell_Command」もインストールします。 このWMIクラスには、base-64エンコード関数を含むエントリ「Command」および「CCBot」が含まれます。
「EventConsumer」がトリガーされると、インストールされたWMIクラス「 PowerShell_Command」オブジェクトからエントリ「Command」および「CCBot」を読み取ります。
この「Command」スクリプトが実行されると、以下の動作を行います。
関数 | タスク |
WMI_KillFake | 条件一覧に基づいてプロセスを終了し、対応するファイルを削除する。 |
WMI_KillService | 一連の条件に基づいてサービスを終了する。 |
WMI_Scanner | プロセスメモリ内の既知のコインマイナープロセスを終了する。 |
WMI_CheckFile | ドロップするファイルの整合性を検証する。 |
- Mykings
- PowerGhost
- PCASTLE
- BULEHERO
- BlackSquid他複数のマルウェアファミリで利用される「MALXMR」の亜種
図1:WMI_Killerが終了および削除するサービス名の一覧
図2:WMI_Killerが削除するスケジュールされたタスク一覧
図3:WMI_Killerが終了させる仮想通貨マイニング関連プロセス一覧
図4:WMI_Killerが監視するポート一覧
図5:競合の仮想通貨発掘マルウェアに関連付けられたエントリに基づいて、感染したコンピュータのhostsファイルを改変する「WMI_CheckHosts」関数
本記事執筆時点で、弊社の調査からバックドア通信はシステム時刻午前12時から午前5時の間のみ有効であることが判明しました。 C&Cサーバが応答を受信すると、「Invoke-Expression(IEX)」を使用します。 応答がない場合、URIパス「/ Update / CC / CC.php」を使用して、30秒毎に上記のIPアドレスへの接続を継続的に試行します。
「Command」および「CCBot」の他に、「PowerShell_Command」クラスには、以下のオブジェクトも含まれます。
Miner : < Base-64エンコードされたバイナリコード>
Ver : <バージョンナンバー> (現在のバージョンはv2.13.0)
mPId : <実行中のコインマイナーのプロセスID >
nPId : <インストーラのプロセスID >
このMiner(コインマイナー)は、コマンドがデコードおよび実行されるとドロップされる64ビットのペイロードです。 ただし、コインマイナーがドロップされる前に、GhostMinerはルートドライブの空きディスク領域を決定します。 空き領域が1 GB未満の場合、10 MBサイズのペイロードであるコインマイナーがドロップされます。それ以外の場合、100 MBサイズのコインマイナーがドロップされます。その後、GhostMinerは2,130バイトのランダム値を追加します。 ファイルは「C:\Windows \Temp\lsass.exe」として保存されます。
マルウェアは、コインマイナーの実行における動作の一部として以下のコマンドを実行します。
Takeown.exe /f C:\Windows\Temp
iCACLs.exe C:\Windows\Temp /Reset /T /C
iCACLs.exe C:\Windows\Temp /Grant Everyone:F /T /C
iCACLs.exe C:\Windows\Temp\lsass.exe /E /G Everyone:F /C
NetSH Firewall Add AllowedProgram C:\Windows\Temp\lsass.exe “Windows Update”
Start-Process –FilePath C:\Windows\Temp\lsass.exe –WindowStyle Hidden –PassThru
本記事執筆時点で、今回確認した不正マイニング活動で利用されたXMRウォレットへの総支払額は、50.278384965000 XMR(2019 年 11 月5日のレートで約42万円)のみでした。
参考記事:
- 「Fileless Cryptocurrency-Miner GhostMiner Weaponizes WMI Objects, Kills Other Cryptocurrency-Mining Payloads」
By Carl Maverick Pascual (Threats Analyst)
翻訳: 下舘 紗耶加(Core Technology Marketing, Trend Micro™ Research)
本記事は、トレンドマイクロ様の許諾により「トレンドマイクロ・セキュリティブログ」の内容を元に作成しております。
ソース:https://blog.trendmicro.co.jp/archives/22792