SOC Prime Bias:

30 3月 2026 15:41

私の名前を言って:MioLabがどのようにMacOSステーラーエンパイアを築いているか

Author Photo
Ruslan Mikhalov SOC Primeの脅威リサーチ責任者 linkedin icon フォローする
私の名前を言って:MioLabがどのようにMacOSステーラーエンパイアを築いているか
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

MioLabは、ソフトウェアエンジニア、重役、暗号通貨投資家などの高価値の被害者をターゲットにした、商業的に配布されるmacOSの情報窃取ツールです。悪意のある広告とClickFix感染チェーンを介して広がり、コンパクトなCベースのバイナリを起動します。このバイナリはブラウザーの資格情報、パスワードマネージャーの記録、暗号通貨ウォレットのファイル、macOSのキーチェーンデータを盗みます。盗まれた情報は一時ディレクトリにステージングされ、アーカイブに圧縮され、curlのPOSTリクエストを使用して悪意のあるドメインに送信されます。この操作は、ウェブベースのコントロールパネル、プロキシサポート、大規模なサイバー犯罪グループ向けのAPIアクセスも含まれます。

調査

この報告書は、マルウェアの静的特性、実行時の動作、およびChrome、Firefox、Safari、Telegram、Discord、Apple Notes、ハードウェアウォレットアプリケーションなど、幅広いターゲットデータソースについて概説しています。インフラストラクチャ分析では、ロシアのバレットプルーフホスティング、反復ドメイン回転、およびWeb3トークンエアドロップフィッシング操作と関連する共有バックエンドが指摘されています。調査官はまた、コマンドライン、一時フォルダパス、エクスフィルトレーションURLなどの主要インジケータも抽出しました。

緩和策

防御者はユーザーが偽の資格情報プロンプトを認識するよう訓練し、dscl、osascript、curlなどの組み込みバイナリの悪用を監視し、既知の悪意のあるドメインをブロックし、コード署名を強化し、ブラウザープロファイルデータとキーチェーンファイルへのアクセスを制限する必要があります。検出ロジックはまた、マルウェアのプロセス実行パターンと/var/folders以下でのアーカイブステージングの動作にも焦点を当てるべきです。

対応策

MioLabが検出された場合、影響を受けたMacを隔離し、揮発性メモリとファイルシステムのアーティファクトをキャプチャし、関連するC2ドメインとIPをブロックし、漏洩した資格情報と暗号通貨ウォレットキーを取り消し、全てのターゲットデータの場所を完全な法医学レビューを行います。エンドポイント検出コンテンツは、観察されたコマンドラインで更新され、チームは環境全体で類似の感染チェーンを探します。

"graph TB %% クラス定義 classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% マルウェアノード malware_miolab["<b>マルウェア</b> – <b>名前</b>: MioLab Infostealer<br/><b>説明</b>: 複数ステージのmacOS情報窃取ツール"] class malware_miolab malware %% 初期アクセス initial_access["<b>アクション</b> – <b>T1204.002 ユーザー実行</b>: 被害者がソーシャルエンジニアリングを介して配信された悪意のあるDMGまたはUnix実行ファイルを開く"] class initial_access action %% 実行 execution_unix_shell["<b>アクション</b> – <b>T1059.004 Unixシェル</b>: ペイロードがsh、systemおよびAppleScriptを介してシェルコマンドを実行"] class execution_unix_shell action %% 防御回避 defense_evasion["<b>アクション</b> – <b>T1564.011 アーティファクトの隠蔽</b>: ターミナルを終了し、隔離属性を削除し、XOR文字列難読化を適用(T1027)"] class defense_evasion action %% 発見 discovery_info["<b>アクション</b> – <b>T1589 被害者ホスト情報の収集</b>: ハードウェアおよびOSの詳細を収集するために<code>system_profiler</code>を使用"] class discovery_info action %% 資格情報アクセス credential_access["<b>アクション</b> – <b>T1056 入力キャプチャ</b>および<b>T1555.001/002 資格情報のダンプ</b>: AppleScriptを介した偽のシステム環境設定パスワードダイアログを表示し、dsclで検証し、キーチェーンファイルをダンプし、ブラウザーデータベース、クッキーおよびセッショントークンを抽出"] class credential_access action %% 収集 collection_staging["<b>アクション</b> – <b>T1074.001 ローカルデータステージング</b>および<b>T1560 収集データのアーカイブ</b>: ファイル、ノートおよび暗号ウォレットの収集を一時ディレクトリにステージングし、ZIPアーカイブに圧縮"] class collection_staging action %% エクスフィルトレーション exfiltration_curl["<b>アクション</b> – <b>T1041 C2チャネルを介したエクスフィルトレーション</b>および<b>T1102.003 ウェブプロトコル</b>: <code>curl</code>のPOSTで悪意のあるウェブサービスにZIPアーカイブをアップロード"] class exfiltration_curl action %% 指令制御 c2_proxy["<b>アクション</b> – <b>T1090.002 プロキシ</b>および<b>T1659 動的コンテンツインジェクション</b>: 攻撃者が制御するプロキシサーバおよびインジェクションドメインを介してルーティング"] class c2_proxy action %% ツールノード tool_applescript["<b>ツール</b> – <b>名前</b>: AppleScript<br/><b>目的</b>: 資格情報プロンプトUIの表示"] class tool_applescript tool tool_dscl["<b>ツール</b> – <b>名前</b>: dscl<br/><b>目的</b>: 捕獲された資格情報の検証"] class tool_dscl tool tool_curl["<b>ツール</b> – <b>名前</b>: curl<br/><b>目的</b>: 収集されたアーカイブをリモートサーバーに送信"] class tool_curl tool tool_system_profiler["<b>ツール</b> – <b>名前</b>: system_profiler<br/><b>目的</b>: システム情報の取得"] class tool_system_profiler tool %% 攻撃フローを示す接続 malware_miolab –>|配信| initial_access initial_access –>|トリガー| execution_unix_shell execution_unix_shell –>|有効化| defense_evasion defense_evasion –>|許可| discovery_info discovery_info –>|データ提供| credential_access credential_access –>|使用| tool_applescript credential_access –>|使用| tool_dscl credential_access –>|による| collection_staging collection_staging –>|圧縮およびステージング| exfiltration_curl exfiltration_curl –>|使用| tool_curl exfiltration_curl –>|のデータ送信| c2_proxy c2_proxy –>|ルート通過| tool_curl %% スタイリングの割り当て class initial_access,execution_unix_shell,defense_evasion,discovery_info,credential_access,collection_staging,exfiltration_curl,c2_proxy action class tool_applescript,tool_dscl,tool_curl,tool_system_profiler tool class malware_miolab malware "

攻撃の流れ

シミュレーション実行

事前条件:テレメトリとベースラインのプリフライトチェックが通過している必要があります。

理由:このセクションは、検出ルールをトリガーするために設計された正確な攻撃者技術(TTP)の実行を詳細に説明します。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって予想される正確なテレメトリを生成することを目指します。

  • 攻撃の説明&コマンド:

    1. ユーザーのターミナルセッションを終了 – マルウェアは最初に標準のコマンドプロンプトを無効にして、ユーザーを制御されたUIフローに誘導します。
      killall Terminal
    2. 偽の資格情報プロンプトを表示 – 使用して osascript、攻撃者はシステム設定の警告を模倣したAppleScriptダイアログを表示し、ユーザーにパスワードの入力を促します。
      osascript -e 'display dialog "このアプリケーションを実行する前にシステム設定を構成する必要があります。" default answer "" with hidden answer'
    3. 収集した資格情報を検証 – 捕獲されたパスワードは、でローカルディレクトリサービスに対して検証されます dscl . -authonly。成功したリターンは、資格情報が正しいことを確認します。
      dscl . -authonly "$USER" "$HARVESTED_PASSWORD"
    4. エクスフィルトレーションペイロードのステージングと圧縮 – 攻撃者は収集したデータ(例: ~/.ssh/id_rsa)を、を使用して dittoにZIPアーカイブにまとめ、アップロードの準備をします。
      ditto -c -k --sequesterRsrc /var/folders/*/DataStaging /tmp/exfil.zip
  • リグレッションテストスクリプト: (Bash – ルールをトリガーする正確なシーケンスを実行)

    #!/usr/bin/env bash
    set -euo pipefail
    
    echo "[*] MioLabのシミュレーションを開始します..."
    
    # 1. ターミナルの強制終了
    echo "[+] ターミナルを終了させます"
    killall Terminal
    
    # 2. 偽のAppleScriptプロンプトを表示(シミュレーション - ユーザー操作はありません)
    echo "[+] 偽の資格情報プロンプトを表示"
    osascript -e 'display dialog "このアプリケーションを実行する前にシステム設定を構成する必要があります。" default answer "" with hidden answer' >/dev/null 2>&1
    
    # 3. 資格情報の検証(現在のユーザーとダミーパスワードを使用)
    echo "[+] 収集した資格情報を検証します"
    HARVESTED_PASSWORD="P@ssw0rd!"   # 実際のシナリオではこれが盗まれたパスワードになります
    dscl . -authonly "$USER" "$HARVESTED_PASSWORD" || true   # デモのために失敗を無視
    
    # 4. データのステージングと圧縮
    echo "[+] ステージングされたデータを圧縮します"
    STAGING_DIR=$(mktemp -d)
    echo "サンプルデータ" > "$STAGING_DIR/sample.txt"
    ditto -c -k --sequesterRsrc "$STAGING_DIR" /tmp/exfil.zip
    
    echo "[*]シミュレーションが完了しました。SIEMでアラートを確認してください。"
  • クリーンアップコマンド: (生成されたアーティファクトを削除し、セッションを復元)

    #!/usr/bin/env bash
    set -euo pipefail
    
    echo "[*] MioLabシミュレーションのアーティファクトをクリーンアップしています..."
    
    # 偽のZIPアーカイブを削除
    rm -f /tmp/exfil.zip
    
    # 存在する場合は一時ステージングディレクトリを削除
    [[ -d "$STAGING_DIR" ]] && rm -rf "$STAGING_DIR"
    
    # 必要に応じてユーザーのためにターミナルを再起動
    open -a Terminal
    
    echo "[*] クリーンアップが終了しました。"