macos-process-injection は何をしますか?
macOSプロセスインジェクションのプレイブック。実行中または起動中のmacOSプロセスに、dylibハイジャック、DYLD環境変数、XPCエクスプロイト、Machポート操作、Electron/Chromium悪用などを通じてコードを注入する必要がある場合に使用します。
概要
このスキルは、macOS環境でプロセスインジェクションを実行するための様々な手法をカバーしています。各手法は、その仕組み、必要な前提条件、および実際の実装手順とともに説明されています。
インジェクション手法
1. Dylibハイジャック
DYLD_INSERT_LIBRARIES環境変数を使用して、ターゲットプロセスにカスタムdylibを強制的に読み込ませる手法。
サポート対象: ターミナルから起動されるプロセス、スクリプトや別のプロセスから起動されるプロセス。
制限事項: ハードニング付きランタイムが有効なプロセスや、com.apple.security.cs.disable-library-validation権限を持たないプロセスでは機能しません。
使用例:
DYLD_INSERT_LIBRARIES=/path/to/inject.dylib /Applications/App.app/Contents/MacOS/App
2. DYLD環境変数
DYLD環境変数(DYLD_FRAMEWORK_PATH、DYLD_LIBRARY_PATHなど)を悪用して、正当なライブラリを悪意のあるバージョンで置き換える手法。
サポート対象: 動的リンクを使用するmacOSアプリケーション。
制限事項: SIP(システム整合性保護)が有効なシステムでは、保護されたディレクトリ内のライブラリの読み込みを防止する場合があります。
使用例:
DYLD_FRAMEWORK_PATH=/path/to/malicious /Applications/App.app/Contents/MacOS/App
3. XPCエクスプロイト
XPCサービスに不正コードを注入する手法。XPCサービスはアプリケーション間通信のためのメカニズムであり、これにより特権昇格が可能になります。
サポート対象: XPCサービスを使用するmacOSアプリケーション。
制限事項: XPCサービスのエントロピーポリシーによる制限や、サンドボックス化されたサービスには対応していない場合があります。
使用例:
# XPCサービスに接続
launchctl load /path/to/malicious.plist
4. Machポート操作
Machポートを介して、ターゲットプロセスのアドレス空間にアクセスし、コードを注入する手法。
サポート対象: 同一ユーザーが所有するプロセス、またはルート権限を持つプロセス。
制限事項: task_for_pid 権限が必要であり、macOS Mojave以降では制限されています。
使用例:
// Mach APIを使用したプロセスインジェクションの例
task_t target_task;
task_for_pid(mach_task_self(), target_pid, &target_task);
// ... メモリ割り当てとコード注入
5. Electron/Chromiumの悪用
ElectronおよびChromiumベースのアプリケーションのJavaScriptエンジンまたはNode.js統合機能を悪用して、コードを注入する手法。
サポート対象: Electronベースのアプリケーション(例:Slack、Discord、Visual Studio Code)。
制限事項: nodeIntegrationやcontextIsolationなどのElectronのセキュリティ設定によって制限されます。
使用例:
// アプリのプリロードスクリプトを介したコード注入
document.addEventListener('DOMContentLoaded', function() {
// ここに悪意のあるコード
});
注意事項
- 使用する前に、各手法の法的および倫理的な影響を理解してください。
- テスト目的でのみ使用し、承認された環境でのみ実行してください。
- macOSのセキュリティアップデートにより、手法が機能しなくなる可能性があります。