ステルス性の高さと破壊力の大きさで知られるTermiteランサムウェア攻撃グループは、サプライチェーンベンダーのBlue Yonder社に対する攻撃の犯行声明を出したことで話題になりました。現時点で、セキュリティ研究者は、Cleo社のファイル転送ソフトウェア、LexiCom、VLTransfer、Harmonyの脆弱性を悪用するアクティビティの急増とTermiteとの関連を指摘しています[1]。この脆弱性は以前にパッチが提供されているものの、脅威は再燃している状況です。
この攻撃は2024年12月3日に始まっており、Huntress Labsの研究者が特定したところでは、消費財、トラック輸送、海運、食品サービスなどの業界で少なくとも10社が被害に遭っています。さらに、インターネットからアクセス可能で脆弱性のあるCleo製品を使用しているシステムの広範囲な調査によると、侵害を受けた組織の実際の数はもっと多い可能性があります。セキュリティ企業のRapid7社も、Cleo社製品の脆弱性(CVE-2024-50623)が関係する侵入後のアクティビティを確認しています。この脆弱性は、未認証のリモートコード実行(RCE)につながる可能性があり、Cleo Harmony、VLTrader、LexiComに影響します。Cleo社は10月にパッチをリリースしましたが、完全にアップデートした後のバージョン5.8.0.21を実行するシステムでも脆弱性が残ることを研究者が突き止めました。Cleo社製のソフトウェアは、New Balance社、Barilla America社、TaylorMade社などの大手ブランドを含む4,200社以上の企業で使われています。さらに、オーストラリアの不妊治療サービスプロバイダーであるGenea社も攻撃を受け、病歴や連絡先情報を含む約940GBの機密患者データが流出しました。これらのインシデントは、Termiteが複数の業界にわたる企業や組織に対して財務面、運用面、評判面で深刻な被害を及ぼす能力を備えていることを物語っています。
以下のセクションでは、Splunk脅威調査チームが、Termiteランサムウェアの分析から特定したMITRE ATT&CK®戦術と技法について詳しく解説し、Splunkでの検出とテスト方法をご紹介します。
他のランサムウェアと同様に、Termiteランサムウェアも、侵害したホストでシャドウ削除コマンドvssadmin.exeを実行して、シャドウコピーの削除を試みます(図01)。この戦術は、被害者がWindows内蔵のボリュームシャドウコピーサービス(VSS)を使ってファイルを復元するのを阻止するために、ランサムウェアでよく使われます。攻撃者は、これらのバックアップを消去して容易にリカバリできないようにすることで、暗号化されたデータを取り戻すために被害者が身代金を支払う確率を高めようとします。

図01:シャドウコピーの削除
Termiteランサムウェアは、複数のWindowsサービス、特にセキュリティソフトウェアやバックアップアプリケーションに関連するサービスの停止を試みます。この戦術により、重要な保護メカニズムを無効にして、脅威の検出や被害の軽減を阻害します。また、バックアップ関連のサービスを停止することで、バックアップファイルの破損やバックアップファイルへのアクセス遮断が発生する可能性を高めて、ファイルの復元をさらに難しくします。
次の表は、Termiteランサムウェアが停止または無効化を試みるWindowsサービスのリストを示したものです。図02は、ControlService() APIを通じてこれらのサービスを停止するためにこのランサムウェアが使用する関数のコードスニペットを示したものです。列挙の中で、標的のサービスがアクティブだった場合、このランサムウェアはSERVICE_CONTROL_STOP制御コードを呼び出して、そのサービスを強制的に停止します。この戦術は、セキュリティソフトウェアやバックアップソリューションを無効にすることで、検出を回避し、ファイルの復元を阻止します。こうしたセキュリティ対策を無効化することにより、被害者がファイルを容易には復元できないようにして暗号化の効果を最大限に高め、身代金支払いへのプレッシャーを高めているのです。
| HvHost, vm3dservice, vmcompute, vmicguestinterface, vmicheartbeat, vmickvpexchange, vmicrdv, vmicshutdown, vmictimesync, vmicvmsession, vmicvss, vmms, vss, sql, svc$, memtas, mepocs, sophos, veeam, backup, GxVss, GxBlr, GxFWD, GxCVD, GxCIMgr, DefWatch, ccEvtMgr, ccSetMgr, SavRoam, RTVscan, QBFCService, QBIDPService, Intuit.QuickBooks.FCS, QBCFMonitorService, YooBackup, YooIT, sophos, stc_raw_agent, VSNAPVSS, VeeamTransportSvc, VeeamDeploymentService, VeeamNFSSvc, veeam, PDVFSService, BackupExecVSSProvider, BackupExecAgentAccelerator, BackupExecAgentBrowser, BackupExecDiveciMediaService, BackupExecJobEngine, BackupExecManagementService, BackupExecRPCService, AcrSch2Svc, AcronisAgent, CASAD2DWebSvc, CAARCUpdateSvc |
表:標的のWindowsサービス

図02:セキュリティとバックアップに関連するWindowsサービスの強制終了
Termiteランサムウェアは、セキュリティやバックアップ関連のWindowsサービスに加えて、仮想ディスク、データベース、電子メール、ドキュメントエディターに関連するプロセスの停止も試みます。これにより、重要なファイルが使用されていない状態にして、侵害したホスト上の重要なデータの暗号化が干渉を受けることなく確実に実行されるようにします。
次の表は、Termiteランサムウェアが停止を試みるプロセスのリストを示しています。また、図03は、その技法で使用される関数のコードを示しています。
| vmmem.exe, vmwp.exe, sqlservr.exe, sql.exe, oracle.exe, ocssd.exe, dbsnmp.exe, synctime.exe, agntsvc.exe, isqlplussvc.exe, xfssvccon.exe, mydesktopservice.exe, ocautoupds.exe, encsvc.exe, firefox.exe, tbirdconfig.exe, mydesktopqos.exe, ocomm.exe, dbeng50.exe, sqbcoreservice.exe, excel.exe, infopath.exe, msaccess.exe, mspub.exe, onenote.exe, outlook.exe, powerpnt.exe, steam.exe, thebat.exe, thunderbird.exe, visio.exe, winword.exe, wordpad.exe, notepad.exe |

図03:プロセスの強制終了
Termiteランサムウェアのコードには、実行するタスクや暗号化するファイルの場所を指定するための、設定可能なパラメーターがいくつか含まれます。これらのパラメーターを使用することにより、攻撃の柔軟性と効果を高めています。次の表は、使用される主なパラメーターの概要を示しています。
| パラメーター | 説明 |
|---|---|
| --debug=<debug_log_path> | デバッグログを生成する |
| --onefile=<encrypt_file_path> | 特定のファイルを暗号化する |
| --shares=<net_share_path> | 特定のネットワーク共有パスを暗号化する |
| --paths=<remote_drive> | 特定のリモートドライブパスを暗号化する |
Termiteランサムウェアは、侵害したシステム内のデータをできるだけ多く暗号化するように設計されています。複数のディレクトリやストレージをスキャンして、被害と影響を最大化します。さまざまなパスにある重要なファイルを体系的に探って暗号化することにより、標的の環境内で広範囲に混乱をもたらします。以下では、暗号化の標的になりやすいファイル保存先での攻撃について説明します。
図04は、ネットワーク共有内のファイルとデータを体系的に列挙して暗号化するためにTermiteランサムウェアが使用するコードを示しています。このコードでは、ADMIN$共有が標的になっています。ADMIN$は、Windowsで非表示にされる管理共有で、システムディレクトリ(C:\Windows)へのリモートアクセスを許可します。主に、IT管理者がリモート管理、ソフトウェアのデプロイ、トラブルシューティングで使用します。このランサムウェアは、ADMIN$内のファイルを暗号化することで影響を最大化します。ローカルシステムに被害を与えるだけでなく、ネットワークに接続されたさまざまなデバイスに拡散するので、攻撃の深刻度が高まることになります。

図04:管理共有でのファイル暗号化
図05は、WNetOpenEnum()とWNetEnumResourcesW()を使って、侵害したシステムまたはネットワークを対象に、ネットワーク共有とマップされたドライブを列挙する関数のコードを示しています。Termiteランサムウェアはこれらの関数を使って、重要なデータが保存されている可能性のある、アクセス可能な共有フォルダー、ネットワークドライブ、その他のリソースを洗い出します。WNetOpenEnum()を呼び出して、利用可能なネットワークリソースを検出するプロセスを開始します。WNetEnumResourcesW()を呼び出して、それらの共有ディレクトリやドライブを列挙およびリストします。この技法を用いることで、ローカルマシンだけでなく、同じネットワークに接続されているリモートシステムやリモートサーバーも標的にして、攻撃範囲を拡大します。

図05:ネットワーク共有でのファイル暗号化
図06は、ドライブを列挙するとともに、各パスのドライブタイプがリモートドライブかどうかをチェックするためにTermiteランサムウェアが使用するコードを示しています。ドライブがリモートドライブだと判明した場合は、そのドライブ上のすべてのファイルとデータを列挙して、暗号化の対象としてマークします。
リモートドライブとは、ローカルマシンには直接接続されておらず、ネットワーク経由でアクセス可能なストレージデバイスまたはネットワーク共有を指します。一般的な例としては、ネットワーク共有(SMB共有、NFS共有など)や、マップされたネットワークドライブ(他のマシンまたはサーバー上に保存されたファイルにリモートアクセスするために割り当てられたドライブ)が挙げられます。Termiteランサムウェアは、リモートドライブを標的にすることで、ネットワーク内のより広い範囲で暗号化を実行して、複数のシステムに影響を与え、攻撃全体の被害を拡大しようと試みます。

図06:リモートドライブでのファイル暗号化
Termiteランサムウェアは、暗号化の影響を最大化するための戦略として、侵害したシステム上でできるだけ多くのルートドライブを標的にします。保護されたドライブやアクセスが難しいドライブが見つかった場合は、SetVolumeMountPoint() APIを使用します。このAPIを使用すると、特定のボリュームのマウントポイントを作成して、実質的にアクセス可能なドライブとしてマウントできます。これにより、一部のアクセス制限を回避し、当初は攻撃が難しかったドライブでもすべてのデータを暗号化できるようになります。

図07:ルートドライブでのファイル暗号化
Termiteランサムウェアは、悪質なアクティビティの一環として、図08に示すようにランサムノートを生成します。このノートは、被害者に確実に見てもらえるように、侵害したホストの複数のディレクトリに置かれます。

図08:ランサムノートの設定
図09に示すように、ランサムノートは、侵害されたホスト上に、暗号化されたファイルとともに置かれます。これはTermiteランサムウェアの戦略を示しています。被害者に対して暗号化されたファイルとランサムノートを同時に見せることで、攻撃が発生しておりデータへのアクセスを回復するために身代金の支払いを要求されていることを常に意識させるのが狙いなのです。

図09:Termiteランサムウェアに侵害されたホスト上のファイル
この分析では、感染したマシンでのランサムウェアノート(.txt、.html、.htaファイルなど)の一括作成を検出します。Sysmonイベントコード11に基づいて、これらのファイルタイプのインスタンスが短時間で複数作成されたことを検出します。このアクティビティは非常に重要です。なぜなら、多くの場合、現在ランサムウェア攻撃が発生しており、ファイルを暗号化したことを攻撃者が被害者に知らせている可能性があるからです。
`sysmon` EventCode=11 file_name IN ("*\.txt","*\.html","*\.hta")
|bin _time span=10s
| stats min(_time) as firstTime max(_time) as lastTime dc(TargetFilename)
as unique_readme_path_count values(TargetFilename) as list_of_readme_path by Computer Image file_name
| rename Computer as dest
| where unique_readme_path_count >= 15
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`

図10:ランサムノートの一括作成の検出
この分析では、vssadmin.exeまたはwmic.exeユーティリティを使ったシャドウコピーの削除を検出します。エンドポイント検出/対応(EDR)エージェントのデータを利用して、プロセス名とコマンドライン引数を重点的に調べます。シャドウコピーの削除は、ファイルの復元を阻害するとともに攻撃の痕跡を隠すために攻撃者がよく使う戦術なので、このアクティビティを検出することは非常に重要です。
| tstats `security_content_summariesonly` count values(Processes.process) as process values(Processes.parent_process) as parent_process min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where (Processes.process_name=vssadmin.exe OR Processes.process_name=wmic.exe) Processes.process=*delete* Processes.process=*shadow* by Processes.user Processes.process_name Processes.parent_process_name Processes.dest | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `deleting_shadow_copies_filter`

図11:シャドウコピーの削除の検出
Termiteランサムウェアの分析ストーリーは、この脅威を特定するための6つの検出で構成されます。
| SHA256 | 説明 |
|---|---|
| 30a8cf3e6863030c762b468bf48d679f3dd053a80793770443938fa18de89617 | Termiteランサムウェア |
このブログは、セキュリティアナリスト、ブルーチーム、およびSplunkのお客様に、Termiteランサムウェアを検出するために役立てていただくことを目的としています。このブログを読むことで、攻撃者が使用する戦術、技法、手順(TTP)への理解を深めることができます。このブログで紹介した検出は、Splunk Enterprise Security Content Updates AppまたはSplunk Security Essentials Appを使って導入できます。Splunk脅威調査チームが提供するすべてのセキュリティコンテンツは、research.splunk.comのリポジトリでご確認いただけます。
ご意見やご要望がございましたら、GitHubから遠慮なくお寄せください。Slackチャネル「#security-research」にご参加いただくこともできます。SlackのSplunkユーザーグループへの招待が必要な場合は、こちらの手順でどうぞ。
この記事の執筆にあたってご協力いただいた以下の方々に感謝を申し上げます。Teoderick Contrerasと、Splunk脅威調査チームのMichael Haag、Jose Hernandez、Lou Stella、Bhavin Patel、Rod Soto、Eric McGinnis、Patrick Bareiss、Nasreddine Bencherchali。