macos-security-bypass
macOSのセキュリティ機構を回避するためのプレイブック。正規のレッドチームやペネトレーションテスト活動において、TCC・Gatekeeper・SIP・サンドボックス・コード署名・エンタイトルメントベースの保護機構を回避する必要がある場合に使用する。
description の原文を見る
>- macOS security bypass playbook. Use when targeting macOS endpoints and need to bypass TCC, Gatekeeper, SIP, sandbox, code signing, or entitlement-based protections during authorized red team or pentest engagements.
SKILL.md 本文
SKILL: macOS Security Bypass — Expert Attack Playbook
AI LOAD INSTRUCTION: macOS セキュリティ迂回の高度なテクニック。TCC 迂回、Gatekeeper 回避、SIP 制限、サンドボックス脱出、エンタイトルメント悪用をカバーします。基本モデルはバージョン固有の迂回の微妙さと保護間の相互作用効果を見落としています。
0. 関連ルーティング
詳しく掘り下げる前に、以下の読み込みを検討してください:
macos-process-injection- dylib インジェクション、XPC 悪用、または初期アクセス後の Electron 悪用が必要な場合linux-privilege-escalation- macOS にも適用される Unix レイヤーの特権昇格テクニック (SUID、cron、書き込み可能なパス)linux-security-bypass- 共有 Unix セキュリティ迂回コンセプト
高度なリファレンス
以下が必要な場合は TCC_BYPASS_MATRIX.md も読み込んでください:
- macOS バージョンごとの TCC 迂回マッピング
- 保護タイプ固有のテクニック (カメラ、マイク、FDA、オートメーション)
- MDM/設定プロファイル悪用パターン
1. TCC (TRANSPARENCY, CONSENT, CONTROL) 概要
TCC は macOS のパーミッションフレームワークで、カメラ、マイク、連絡先、フルディスクアクセスなどの機密リソースへのアクセスを制御します。
1.1 TCC データベースの場所
| データベース | パス | 制御対象 | 保護 |
|---|---|---|---|
| ユーザーレベル | ~/Library/Application Support/com.apple.TCC/TCC.db | ユーザーごとの同意決定 | Catalina 以降 SIP 保護 |
| システムレベル | /Library/Application Support/com.apple.TCC/TCC.db | システム全体の同意決定 | SIP 保護 |
| MDM 管理 | 設定プロファイル経由 | PPPC (Privacy Preferences Policy Control) をプッシュ | デバイス管理 |
-- TCC データベースをクエリ (FDA または SIP なしが必要)
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db \
"SELECT service, client, allowed FROM access;"
1.2 TCC 迂回カテゴリ
| カテゴリ | メカニズム | 典型的な前提条件 |
|---|---|---|
| FDA アプリ悪用 | すでに Full Disk Access が付与されたアプリに相乗り | FDA アプリのバンドルまたはプラグインディレクトリへの書き込みアクセス |
| 直接 DB 修正 | TCC.db を編集して同意を付与 | SIP 無効化または FDA |
| 継承パーミッション | 子プロセスが親の TCC 権限を継承 | FDA 付与アプリのコンテキストでのコード実行 |
| オートメーション悪用 | Apple Events / osascript で TCC 付与アプリを制御 | オートメーションパーミッション (直接 TCC より低い) |
| マウント トリック | 修正された TCC.db を含むカスタムディスクイメージをマウント | ローカルアクセス、Ventura 前 |
| TCC の SQL インジェクション | TCC サブシステムで SQL インジェクションをトリガーする不正なバンドル ID | CVE-2023-32364 など |
1.3 既知の TCC 迂回パターン
Terminal / iTerm FDA 継承: Terminal.app が FDA 付与 → 実行されたコマンドは FDA を継承 → 任意のファイルを読取可能。
# Terminal が FDA を持つ場合、保護されたファイルを直接読取
cat ~/Library/Mail/V*/MailData/Envelope\ Index
cat ~/Library/Messages/chat.db
Finder オートメーション: Finder を自動化 (より低いパーミッション) して保護されたロケーションのファイルにアクセス。
tell application "Finder"
set f to POSIX file "/Users/target/Library/Mail/V9/MailData/Envelope Index"
duplicate f to desktop
end tell
System Preferences / System Settings インジェクション: すでに TCC パーミッションを持つプロセスのアプリケーション スクリプト フォルダに書き込むことでインジェクション。
MDM プロファイル悪用: PPPC プロファイルは事前に TCC パーミッションを承認できます。不正な MDM 登録または侵害された MDM サーバー → PPPC ペイロードをプッシュ。
2. GATEKEEPER 迂回
Gatekeeper は未署名または未検証のアプリの実行をブロックします。コア実装は com.apple.quarantine 拡張属性に依存します。
2.1 隔離属性の削除
# 隔離属性を確認
xattr -l /path/to/app
# 出力: com.apple.quarantine: 0083;...
# 隔離を削除 (書き込みアクセスが必要)
xattr -d com.apple.quarantine /path/to/app
# アプリバンドルの場合は再帰的に
xattr -rd com.apple.quarantine /path/to/MyApp.app
2.2 迂回テクニック
| テクニック | 仕組み | macOS バージョン |
|---|---|---|
xattr -d 削除 | 実行前に隔離を削除 | すべて (ローカルアクセス必要) |
| アプリ転置迂回 | 特定ロケーションのアプリは転置をスキップ | Catalina 前 |
| 隔離を削除するアーカイブツール | 一部の展開ツールは隔離を伝播しない | ツール依存 |
| 署名されたバンドル内の未署名コード | 検証されたアプリバンドルに未署名の補助ツール | Ventura 前 (CVE-2022-42821) |
| Safari 自動展開 + 開く | ダウンロードされた ZIP は自動展開、隔離が完全に適用される前にアプリが開かれる | Safari 固有、パッチ済み |
| ACL 悪用 | com.apple.quarantine はダウンロード前に設定された ACL でブロック可能 | 事前配置が必要 |
| ディスクイメージ (DMG) トリック | ネットワーク共有からマウントされた DMG は隔離を保持しない可能性 | ネットワーク共有コンテキスト |
| BOM (Bill of Materials) 迂回 | pkg 内のカスタム BOM は展開されたファイルの隔離をスキップ | CVE-2022-22616 |
2.3 Gatekeeper チェック フロー
アプリ起動
│
├── com.apple.quarantine 属性が存在?
│ ├── いいえ → 実行 (Gatekeeper チェックなし)
│ └── はい ↓
│
├── コード署名が有効?
│ ├── いいえ → ブロック
│ └── はい ↓
│
├── 検証済み (ステープルされたチケットまたはオンラインチェック)?
│ ├── いいえ → ブロック (Catalina+)
│ └── はい → 実行
│
└── ユーザー オーバーライド? (右クリック → 開く → 確認)
└── このアプリに対してオーバーライド
3. SIP (SYSTEM INTEGRITY PROTECTION)
SIP は保護されたシステムロケーションの修正、未署名カーネル拡張の読み込み、システムプロセスのデバッグから root を制限します。
3.1 SIP 保護ロケーション
/System/
/usr/ (/usr/local/ を除く)
/bin/
/sbin/
/var/ (選択されたサブディレクトリ)
/Applications/ (プリインストール Apple アプリ)
3.2 SIP ステータスと設定
csrutil status # SIP ステータスを確認
csrutil disable # リカバリモードのみ
csrutil enable --without fs # 部分的に無効化 (リスキー)
3.3 SIP をバイパスするエンタイトルメント
| エンタイトルメント | 効果 |
|---|---|
com.apple.rootless.install | SIP 保護パスへの書き込み |
com.apple.rootless.install.heritable | 子プロセスが SIP バイパスを継承 |
com.apple.security.cs.allow-unsigned-executable-memory | JIT/メモリ内の未署名コード |
com.apple.private.security.clear-library-validation | 未署名ライブラリの読み込み |
3.4 過去の SIP バイパス
| CVE | macOS | テクニック |
|---|---|---|
| CVE-2021-30892 (Shrootless) | Monterey 12.0.1 前 | system_installd + 署名された pkg のインストール後スクリプト |
| CVE-2022-22583 | Monterey 12.2 前 | packagekit + マウントポイント操作 |
| CVE-2022-46689 (MacDirtyCow) | Ventura 13.1 前 | Copy-on-write でのレース条件、SIP ファイル上書き |
| CVE-2023-32369 (Migraine) | Ventura 13.4 前 | Migration Assistant TCC/SIP バイパス via systemmigrationd |
| CVE-2024-44243 | Sequoia 15.2 前 | StorageKit デーモン悪用 |
4. サンドボックス脱出
macOS サンドボックス (App Sandbox、sandbox-exec またはエンタイトルメント経由) はアプリのファイルシステム、ネットワーク、IPC へのアクセスを制限します。
4.1 Office サンドボックス脱出パターン
| ベクトル | 説明 |
|---|---|
| 開く/保存ダイアログ悪用 | ユーザーがダイアログ経由でファイルアクセスを許可 → マクロがサンドボックス外を読取/書込 |
~/Library/LaunchAgents/ 永続化 | 一部のサンドボックスプロファイルは LaunchAgent plist の書き込みを許可 |
| ログイン項目の操作 | サンドボックス外のペイロードを指す ログイン項目を追加 |
| 共有コンテナ悪用 | 複数のアプリが同じアプリグループコンテナを共有 |
4.2 IPC ベースの脱出
| IPC メカニズム | 脱出ベクトル |
|---|---|
| XPC Services | クライアント検証が不十分な特権 XPC サービスに接続 |
| Mach ポート | 特権タスク ポートへの送信権を取得 |
| Apple Events | 未サンドボックスのアプリを自動化してアクションを実行 |
| 分散通知 | 未サンドボックスのヘルパーに信号を送ってペイロードを実行 |
| ペーストボード | ペーストボードにペイロードを書き込み、未サンドボックスのアプリに消費させる |
4.3 ブラウザ サンドボックス
- Chromium: マルチプロセス モデル、レンダラーはサンドボックス化、ブラウザプロセスはそうでない
- Safari: WebContent プロセスはサンドボックス化、親 Safari プロセスはより多くの特権
- エクスプロイト チェーン: レンダラー RCE → サンドボックス脱出 (ブラウザプロセスへの IPC バグ経由) → システムアクセス
5. コード署名とエンタイトルメント
5.1 署名とエンタイトルメントの検査
codesign -dv --verbose=4 /path/to/app # 署名の詳細
codesign -d --entitlements :- /path/to/app # エンタイトルメントをダンプ
security cms -D -i /path/to/mobileprovision # プロビジョニング プロファイル
# 署名の有効性を検証
codesign --verify --deep --strict /path/to/app
spctl --assess --type execute /path/to/app # Gatekeeper の評価
5.2 特権昇格のためのエンタイトルメント悪用
| エンタイトルメント | 悪用シナリオ |
|---|---|
com.apple.security.cs.disable-library-validation | 攻撃者 dylib を付与されたプロセスに読み込む |
com.apple.security.cs.allow-dyld-environment-variables | DYLD_INSERT_LIBRARIES インジェクション |
com.apple.security.get-task-allow | デバッガをアタッチ、コードをインジェクト |
com.apple.security.cs.debugger | 任意のプロセスをデバッグ |
com.apple.private.apfs.revert-to-snapshot | APFS スナップショットを巻き戻し、修正をバイパス |
5.3 強化ランタイムバイパス
強化ランタイムは以下を防止: DYLD 環境変数、デバッグ、未署名メモリ実行。バイパス:
- 強化ランタイムを弱める付与されたアプリを見つける (
disable-library-validation) - JIT 付与のアプリ (ブラウザ、VM) を悪用して未署名コード実行
- 本番環境に残された
get-task-allow付与デバッグビルドを使用
5.4 ライブラリ検証バイパス
ライブラリ検証は Apple 署名またはチーム間署名 dylib のみの読み込みを確認します。
# ライブラリ検証が無効化されたアプリを見つける
codesign -d --entitlements :- /Applications/*.app/Contents/MacOS/* 2>/dev/null | \
grep -l "disable-library-validation"
6. バイパス後の永続化
| 方法 | ロケーション | 再起動後も有効 | 注記 |
|---|---|---|---|
| LaunchAgent | ~/Library/LaunchAgents/ | はい | ユーザーレベル、ログイン時に実行 |
| LaunchDaemon | /Library/LaunchDaemons/ | はい | ルートレベル、ブート時に実行 |
| ログイン項目 | ~/Library/Application Support/com.apple.backgroundtaskmanagementagent/ | はい | System Settings で表示 |
| Cron | crontab -e | はい | ディフェンダーが見落とすことが多い |
| Dylib ハイジャック | 書き込み可能な dylib 検索パス | はい | ターゲット アプリ起動時にトリガー |
| フォルダ アクション | ~/Library/Scripts/Folder Action Scripts/ | はい | フォルダ イベント時にトリガー |
7. macOS セキュリティバイパス デシジョンツリー
macOS エンドポイントをターゲット
│
├── 信頼されていないバイナリを実行する必要がある?
│ ├── 隔離属性が存在?
│ │ ├── はい → xattr -d com.apple.quarantine (§2.1)
│ │ └── いいえ → 直接実行
│ └── Gatekeeper がまだブロック?
│ ├── 署名済みだが未検証 → 右クリック → 開く オーバーライド
│ └── 未署名 → 署名されたバンドルに埋め込むまたはアーカイブ トリック (§2.2)
│
├── TCC 保護リソースへのアクセスが必要?
│ ├── FDA 付与アプリが利用可能?
│ │ ├── はい → FDA アプリ コンテキストを悪用 (§1.3)
│ │ └── いいえ ↓
│ ├── オートメーション パーミッション が取得可能?
│ │ ├── はい → TCC 付与アプリに Apple Events (§1.3)
│ │ └── いいえ ↓
│ ├── SIP が無効化されている?
│ │ ├── はい → 直接 TCC.db 修正 (§1.2)
│ │ └── いいえ → バージョン固有の TCC 迂回を確認 (→ TCC_BYPASS_MATRIX.md)
│ └── MDM が存在?
│ └── 侵害された MDM → PPPC プロファイルをプッシュ (§1.3)
│
├── SIP をバイパスする必要?
│ ├── macOS バージョンを確認 → 過去の SIP CVE? (§3.4)
│ ├── SIP バイパス エンタイトルメント付与の Apple バイナリを見つける (§3.3)
│ └── リカバリモード アクセス? → csrutil disable (§3.2)
│
├── サンドボックス脱出が必要?
│ ├── Office マクロ コンテキスト → ダイアログ/LaunchAgent トリック (§4.1)
│ ├── XPC サービス (検証が弱い) → IPC 脱出 (§4.2)
│ └── ブラウザ コンテキスト → レンダラー → サンドボックス脱出チェーン (§4.3)
│
├── 署名されたプロセスへのインジェクション が必要?
│ ├── disable-library-validation エンタイトルメント? → dylib インジェクション
│ ├── allow-dyld-environment-variables? → DYLD_INSERT_LIBRARIES
│ ├── get-task-allow? → デバッガ アタッチ
│ └── なし → macos-process-injection SKILL.md を確認
│
└── 永続化が必要?
└── アクセスレベル別にメソッドを選択 (§6)
8. クイック リファレンス: ツール コマンド
# TCC パーミッションの列挙
tccutil reset All # すべての TCC をリセット (管理者権限)
sqlite3 TCC.db "SELECT * FROM access;" # TCC DB を読取
# Gatekeeper ステータス
spctl --status # Gatekeeper 有効?
spctl --assess -v /path/to/app # アプリ評価を確認
# SIP ステータス
csrutil status
# システム全体で興味深いエンタイトルメントを見つける
find /System/Applications /Applications -name "*.app" -exec sh -c \
'codesign -d --entitlements :- "$1" 2>/dev/null | grep -q "disable-library-validation" && echo "$1"' _ {} \;
# 読み込まれたカーネル拡張 (kext) をリスト
kextstat | grep -v com.apple
# サンドボックス プロファイル検査
sandbox-exec -p "(version 1)(allow default)" /bin/ls # サンドボックス ルールをテスト
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- yaklang
- リポジトリ
- yaklang/hack-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/yaklang/hack-skills / ライセンス: MIT
関連スキル
secure-code-guardian
認証・認可の実装、ユーザー入力の保護、OWASP Top 10の脆弱性対策が必要な場合に使用します。bcrypt/argon2によるパスワードハッシング、パラメータ化ステートメントによるSQLインジェクション対策、CORS/CSPヘッダーの設定、Zodによる入力検証、JWTトークンの構築などのカスタムセキュリティ実装に対応します。認証、認可、入力検証、暗号化、OWASP Top 10対策、セッション管理、セキュリティ強化全般で活用できます。ただし、構築済みのOAuth/SSO統合や単独のセキュリティ監査が必要な場合は、より特化したスキルの検討をお勧めします。
claude-authenticity
APIエンドポイントが本物のClaudeによって支えられているか(ラッパーやプロキシ、偽装ではないか)を、claude-verifyプロジェクトを模した9つの重み付きルールベースチェックで検証できます。また、Claudeの正体を上書きしているプロバイダーから注入されたシステムプロンプトも抽出します。完全に自己完結しており、httpx以外の追加パッケージは不要です。Claude APIキーまたはエンドポイントを検証したい場合、サードパーティのClaudeサービスが本物か確認したい場合、APIプロバイダーのClaude正当性を監査したい場合、複数モデルを並行してテストしたい場合、またはプロバイダーが注入したシステムプロンプトを特定したい場合に使用できます。
anth-security-basics
Anthropic Claude APIのセキュリティベストプラクティスを適用し、キー管理、入力値の検証、プロンプトインジェクション対策を実施します。APIキーの保護、Claudeに送信する前のユーザー入力検証、コンテンツセーフティガードレールの実装が必要な場合に活用できます。「anthropic security」「claude api key security」「secure anthropic」「prompt injection defense」といったフレーズでトリガーされます。
x-ray
x-ray.mdプレ監査レポートを生成します。概要、強化された脅威モデル(プロトコルタイプのプロファイリング、Gitの重み付け攻撃面分析、時間軸リスク分析、コンポーザビリティ依存関係マッピング)、不変条件、統合、ドキュメント品質、テスト分析、開発者・Gitの履歴をカバーしています。「x-ray」「audit readiness」「readiness report」「pre-audit report」「prep this protocol」「protocol prep」「summarize this protocol」のキーワードで実行されます。
semgrep
Semgrepスタティック分析スキャンを実行し、カスタム検出ルールを作成します。Semgrepでのコードスキャン、セキュリティ脆弱性の検出、カスタムYAMLルールの作成、または特定のバグパターンの検出が必要な場合に使用します。重要:ユーザーが「バグをスキャンしたい」「コード品質を確認したい」「脆弱性を見つけたい」「スタティック分析」「セキュリティlint」「コード監査」または「コーディング標準を適用したい」と尋ねた場合も、Semgrepという名称を明記していなくても、このスキルを使用してください。Semgrepは30以上の言語に対応したパターンベースのコードスキャンに最適なツールです。
ghost-bits-cast-attack
Java「ゴーストビッツ」/キャストアタック プレイブック(Black Hat Asia 2026)。16ビット文字が8ビットバイトに暗黙的に縮小されるJavaサービスへの攻撃時に使用します。WAF/IDSを回避して、SQLインジェクション、デシリアライゼーション型RCE、ファイルアップロード(Webシェル)、パストトラバーサル、CRLF インジェクション、リクエストスマグリング、SMTPインジェクションを実行できます。Tomcat、Spring、Jetty、Undertow、Vert.x、Jackson、Fastjson、Apache Commons BCEL、Apache HttpClient、Angus Mail、JDK HttpServer、Lettuce、Jodd、XMLWriterに影響し、WAFバイパスにより多くの「パッチ済み」CVEを再度有効化します。