Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ABrake27 — iOS 27 kernelcache RE: SEPディスパッチマップ、AMFI差分、Ghidraワークフロー | Kitploit
ツール/GitHubGitHub/vvirei333/abrake27
iOSセキュリティ脆弱性分析エクスプロイトモバイルアプリペンテストリバースエンジニアリングモバイルセキュリティバイナリ解析論文と研究学習と教育ペイロード開発ファームウェア解析
718420日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHub
vvirei333/abrake27

ABrake27

iOS 27 kernelcache RE: SEPディスパッチマップ、AMFI差分、Ghidraワークフロー

リポジトリを見る

ABrake27

iOS AMFI 開発者モード有効化のための Linux ネイティブクロスコンパイラ + PoC (arm64/arm64e)

Platform Build Arch

研究グレードのツールキット。 iOS 27.0.1 と 27.2 のファームウェアを差分解析し、AMFI の IOUserClient ディスパッチテーブルをリバースエンジニアリングし、Linux からベアメタルの IOKit PoC をクロスコンパイルし(Xcode 不要)、標準の Apple lockdown プロトコル経由で iOS 27.0.1 の開発者モードを有効化します(カーネルレベルでの永続性を検証済み)。現在の主要な発見: ImageIO におけるサイレントな ASTC/DDS オーバーフロー対策。汎用デコードパスから構造的に到達可能で、MediaAnalysis チェーンは ASTCReadPlugin::initialize にまで追跡済み(セッション 28〜31)。


これは何か

  • IPS ファームウェア差分 — iOS 27.0.1 と 27.2(iPhone 14,5)間の kernelcache、kext、sandbox、entitlements。
  • AMFI ディスパッチテーブルのリバースエンジニアリング — すべての IOExternalMethodDispatch スロットをマッピングし、selector 11 = armSecurityBootMode を特定。
  • スタンドアロン C PoC — poc/poc.c は AppleMobileFileIntegrity/AppleCredentialManager を開き、armSecurityBootMode を呼び出して結果をログ出力します。Foundation/UIKit の肥大化なし — 純粋な C + IOKit。
  • Linux クロスコンパイラ — poc/build_ipa.sh は CachyOS/Arch 上で clang + ld64.lld + ldid を使って署名済み .ipa を生成します。Apple/Xcode への依存はゼロ。

iOS 27.0.1 で開発者モードを有効化する方法(脱獄なし、未署名コードなし)

iOS の開発者モード切り替えチェーンは、標準の Apple lockdown プロトコル(com.apple.amfi.lockdown)を介して完全に操作できます。脱獄も IPA も entitlements の偽造も不要 — Linux 上の pymobiledevice3 だけで済みます。

検証済み: 以下のチェーン実行後、mounter query-developer-mode-status → true となり、DeveloperDiskImage が /System/Developer にマウントされ、両方とも独立した再起動を経ても維持されました(以前は同じチェックが false に戻っていたため、永続性こそが真の証明です。FINDINGS_LOCK.md を参照)。

前提条件

パスコードを削除してください(設定 → Face ID とパスコード → パスコードをオフにする)。 パスコードが設定されている場合、AMFI は action=1/action=2 に対して Device has a passcode set を返します。

手順

# 1) enable → action=1 → REBOOT #1
flatpak-spawn --host python3 -m pymobiledevice3 amfi enable-developer-mode

# 2) after the device boots: post-restart accept → action=2 → REBOOT #2
#    (the CLI has no separate accept command — call the service method directly,
#     e.g. via poc/verify_now2.py)

# 3) reveal the Settings toggle → action=0
flatpak-spawn --host python3 -m pymobiledevice3 amfi reveal-developer-mode

検証(カーネルレベル、AMFIサービスから独立)

flatpak-spawn --host python3 -m pymobiledevice3 mounter query-developer-mode-status   # → true
flatpak-spawn --host python3 -m pymobiledevice3 mounter list                           # → IsMounted: true, /System/Developer
flatpak-spawn --host python3 -m pymobiledevice3 mounter auto-mount                    # → DeveloperDiskImage mounted successfully

プロトコル概要

アクション意味効果
0reveal設定に開発者モードのトグルを表示する
1enableフラグを設定し、デバイスを再起動する
2accept再起動後の確認、さらに再起動する

⚠️ pymobiledevice3 はショートサーキットする:ステータスがすでに true の場合、 enable-developer-mode は "Developer mode is already enabled" とログに出力するだけで、何も送信しない。 2回の再起動はAppleプロトコルの一部であり、偶発的なものではない。


クイックスタート(Linux → iPhone を4分で)

前提条件(CachyOS / Arch)

sudo pacman -S clang lld zip          # compiler + Mach-O linker
yay -S ldid                           # entitlement injector (AUR)
# iOS SDK:
mkdir -p poc/SDK
git clone https://github.com/theos/sdks poc/tmp && mv poc/tmp/iPhoneOS*.sdk poc/SDK/iPhoneOS.sdk

ビルド

cd poc
IOS_SDK=/path/to/iPhoneOS.sdk ./build_ipa.sh
# Output: EnableAMFIDevMode.ipa

iPhone へのインストール

# Via ideviceinstaller (libimobiledevice):
ideviceinstaller --install EnableAMFIDevMode.ipa

# Via TrollStore (if jailbroken/CT-bypass device):
# → TrollStore app → "+" → pick EnableAMFIDevMode.ipa

# Via SideStore/AltStore:
# → Add to SideStore → sign with your Apple ID

実行

# On device (SSH / NewTerm):
./EnableAMFIDevMode 1
cat /tmp/amfi_devmode_poc.log
# Then REBOOT to activate Developer Mode

代替手段: Linux からの CoreDevice / DVT 起動 (run_dvt.sh)

2つ目の IPA 不要 な経路が存在します: Linux 上でスタンドアロンの IOKit バイナリをクロスコンパイルし、 iOS 17+ の CoreDevice / RSD トンネル 経由でデバイスにプッシュし、DVT プロセス制御サービスで 実行します (App Sandbox の外 — installd も無料署名 IPA も不要)。

./run_dvt.sh enable      # build (clang + ld64.lld) → deploy → `dvt launch --stream`

run_dvt.sh はチェーン全体を自動化します:

  1. usbmuxd を起動/検証し、ideviceinfo(libimobiledevice)でデバイスを確認します;
  2. poc/poc.c を素の arm64 Mach-O にクロスコンパイルします(Apple ツールチェーン不要): clang -c → ld64.lld -platform_version ios … -syslibroot … -undefined dynamic_lookup; SDK バージョンは バイナリ の SDKSettings.plist から plistlib 経由で読み取ります;
  3. ユーザースペースの RSD トンネル(pymobiledevice3)を開き、dvt launch --stream を呼び出します。

ステータス: Linux クロスコンパイルは 動作します(実際の arm64 Mach-O が生成されます)。オンデバイス デプロイ手順はまだ WIP です — HANDOFF.md の «Сессия 12» を参照してください。また、PoC の IOKit パス(AppleMobileFileIntegrity セレクタ 11)はプラットフォーム制限付きエンタイトルメント com.apple.private.amfi.developer-mode-control を必要とするため、Apple 署名されていないバイナリは DVT 経由で起動しても userclient によって拒否されます — Developer Mode を有効にする サポートされた 方法は、上記で文書化されている lockdown プロトコルです。


仕組み

アーキテクチャスライスごとに 2 つのクリーンなステップ(ld64.lld への委譲時に clang ドライバが -arch/-platform_version を飲み込むのを回避します):

  1. clang -c — Mach-O オブジェクト、リンクなし
  2. ld64.lld — 明示的な -arch arm64 -platform_version ios <min> <sdk> を指定した実行ファイル

clang-20...15、ld64.lld/lld、llvm-lipo、ldid を自動検出します。グレースフルフォールバック:ツールチェーンが ptrauth サポートを欠く場合、arm64e → arm64。


リポジトリ構成

.
├── ipsws/                   # iOS firmware images (NOT versioned — multi-GB)
├── kernelcaches/            # Extracted kernelcaches (arm64e Mach-O)
├── extracted/               # RootFS dumps + entitlements scan
├── diff_output/             # Full markdown diff reports (KEXTS, DYLIBS, SANDBOX...)
├── research/                # CVE analysis, XNU source excerpts
├── docs/WHITEPAPER.md       # Full AMFI binary-diff whitepaper (iOS 27.0.1 → 27.2)
├── poc/                     # ★ PoC source + Linux build system
│   ├── poc.c                #   AMFI + ACM IOKit client (C99)
│   ├── stubs/iokit_stub.h   #   Minimal IOKit header for Linux syntax check
│   ├── entitlements.plist   #   Required entitlements for armSecurityBootMode
│   ├── build_ipa.sh         #   ★ Linux cross-compiler (clang + ld64.lld + ldid)
│   ├── syntax_check_linux.sh
│   ├── lockdown_devmode.py  #   Session 9: lockdown/AMFI dev-mode probes
│   ├── action_probe.py      #   ★ Real AMFI protocol {"action": N}
│   ├── state_check.py       #   ★ Full kernel-level status + mounter query
│   ├── verify_now2.py       #   Post-restart accept (action=2) + verification
│   ├── semantics_probe.py   #   lockbot KV-store semantics (set_value dead-end)
│   ├── spoof_test.py        #   DeveloperModeStatus spoof attempt (failed)
│   ├── probe_amfi_service.py
│   ├── final_verify.py
│   └── verify_now.py
├── run_dvt.sh               # ★ CoreDevice/DVT deploy (build + usbmuxd + RSD tunnel + launch)
├── harness/                 # Reproduction harnesses
│   └── astc_harness.swift   #   Minimal ASTC decode harness (macOS, Swift)
├── tools/macho_tool.py      #   stdlib-only Mach-O arm64e disassembler (kernelcache RE)
├── HANDOFF.md               # Full session log (Russian + English)
└── README.md                # You are here

検出結果

ツールをダウンロード