diosra2’s blog

iOSのJailbreak、ダウングレード

iOS 10.0-10.2.1用のsockport2を用いたJBを公開しました。

Release sock_port_2 + iOS 10 Jailbreak Reloader

成功率は約95%、脱獄にかかる時間は約4秒、約10秒で脱獄環境に復帰できます。(iPhone 5s)

 

  • re-jailbreakのみです。
  • kppデバイス以外は使えません。(A7-A9 only)
  • iOS 10.3.xは使えません。
  • iPhone 5s - iOS 10.2以外ではテストしていません。

 

"/tmp"以下にしか書き込みはしていないので、システムへの大きな影響はないかと思います。DHベースでデーモンやSubstrateの読み込みを行っています。

既存のiOS 10の各JBツールを使用の方は、オフシャルなサポートを待つのが賢明かと思います。

 

完全自己責任で。

sock_port_2でiOS 10のiPhone 5sをJailbreakしてみた。

jake james氏が改良を行ったsock_port_2ですが、iOS 10に対応したとのことなのでyalu102のkpp bypassを組み合わせて脱獄してみました。(まだiOS 10の脱獄を使っている方は少ないかもしれませんが...。)

 

f:id:diosra2:20190805211629p:plain

 

 

一言で言えばめっちゃ速い。iPhone 5sですら約4秒で脱獄が完了、計10秒程度で脱獄環境に復帰できます。

あと、何より素晴らしいのは安定感ですね。従来のyalu102やv0rtexなどは起動から30秒ほどデバイスを落ち着かせないと成功しませんでしたが、今回のexploitはデバイス起動後に即実行しても当然のように成功します。今までの苦労が嘘のようです...。

 

成功率でいえば95%以上は見込めるかなといった感じです。仮に失敗してもカーネルパニックにならずにもう一度やり直せば成功したりするのでストレスはかなり軽減されるかと思います。

 

 

iBoot exploitを使用したiOS 10のUntethered Jailbreakの仕組み

以前私が投稿したiOS 10のUntethered Jailbreakの仕組みを記しておこうと思います。

 

(過去の投稿)

 

最初 (exploit)

多くの場合、userlandで動くkernel exploitを使用して脱獄するかと思います。(完全脱獄だともう少しありますが...。)

今回の場合はiBoot exploitです。iBoot exploitを正常に維持できるようにいくつかトリックを使用していますが、ここでは省略します。

iBoot exploitにより、iBootのboot-argsには"cs_enforcement_disable=1 amfi_get_out_of_my_way=1 -v"が注入され、verbose bootでコード署名を無効化して起動されます。また、未署名カーネルをロードできるので、コード署名を無効化したり、既に脱獄された状態で起動できます。

カーネルパッチに関してはこちら

これでカーネル領域の脱獄は完了です。

ただし、後述の理由からsandboxのパッチだけは適用していません。

(混乱を招くかもしれませんが、配布ツールはsandboxのパッチも適用されてます。)

 

起動

カーネルは既にほぼ脱獄状態です。

ですが、少し作業が残っています。起動時にはまずsandboxをパッチしなければなりません。なぜならsandboxのパッチだけはまだ適用していないからです。

 

Sandbox

sandbox patchではsandbox mac policiesを0にします。

しかしmac_policy_opsにあらかじめパッチを適用して起動した場合、これは__DATAにあるのでkaslrによりカーネルパニックを起こします。

そのため、以下の方法をとる必要があります。

1, iBootにパッチしてkaslrを無効にする (配布ツール)

2, 起動時にカーネルパッチする

 

1の場合はkernel base addressは0x80001000に固定されるので問題なく起動できます。

2の場合は起動時にカーネルパッチをします。(既にtfp0が有効なのでそこから)

*mac policies

mpo_file_check_mmap

mpo_vnode_check_rename

mpo_vnode_check_rename

mpo_vnode_check_access

mpo_vnode_check_chroot

mpo_vnode_check_create

mpo_vnode_check_deleteextattr

mpo_vnode_check_exchangedata

mpo_vnode_check_exec

mpo_vnode_check_getattrlist

mpo_vnode_check_getextattr

mpo_vnode_check_ioctl

mpo_vnode_check_link

mpo_vnode_check_listextattr

mpo_vnode_check_open

mpo_vnode_check_readlink

mpo_vnode_check_setattrlist

mpo_vnode_check_setextattr

mpo_vnode_check_setflags

mpo_vnode_check_setmode

mpo_vnode_check_setowner

mpo_vnode_check_setutimes

mpo_vnode_check_setutimes

mpo_vnode_check_stat

mpo_vnode_check_truncate

mpo_vnode_check_unlink

mpo_vnode_notify_create

mpo_vnode_check_fsgetpath

mpo_vnode_check_getattr

mpo_mount_check_stat

mpo_proc_check_setauid

mpo_proc_check_getauid

mpo_proc_check_fork

 

この場合、バイナリを"/usr/libexec/rtbuddyd"に配置することで、他デーモンが起動するよりも前に実行できます。iOS 10からはデーモンのidentを検証するようなので、バイナリのidentは"com.apple.rtbuddyd"に設定しておく必要があります。

**前提条件として、今回の脱獄ではカーネル起動時には既にコード署名が無効化されているので、バイナリを改変したり任意のバイナリが実行可能な状態です。

 

無事に起動できたら、次はデーモンの読み込みについて考えます。

iOS 10では"/System/Library/Caches/com.apple.xpcd/xpcd_cache.dylib"に起動時に実行されるデーモンが記述されているので、ここから以下のデーモンを読み込まないように削除します。

com.apple.SpringBoard.plist

com.apple.backboardd.plist

com.apple.mobile.lockdown.plist

com.apple.mobile.softwareupdated.plist

com.apple.softwareupdateserviced.plist

 

上二つはSpringBoard関係です。JBデーモンやSubstrateをロードしてからホーム画面を読み込みたいのでリストから消しておきます。

3番目はAFC2を有効化した際にSubstrateをロードしてから起動するようにしたいのでリストから消します。

下二つはSoftware Update関連です。いりません。

 

そして、JBデーモン("/Library/LaunchDaemons")やSubstrateをロードするためのバイナリを起動時に実行させたいので、"/usr/libexec/CrashHousekeeping"あたりを"reloader"に置き換えます (同様に、"reloader"のバイナリのidentは"com.apple.CrashHousekeeping"に設定する必要があります。)。

ここで、"com.apple.SpringBoard.plist", "com.apple.backboardd.plist", "com.apple.mobile.lockdown.plist"の3つは"/Library/LaunchDaemons"に配置しておくことで、"reloader"実行時にJBデーモンと一緒に読み込まれ、脱獄された状態でホーム画面が表示されます。

 

 

 

 

 

iPhone 5cでiOS 10の完全脱獄に成功

iPhone 5c上で、iOS 10のUntethered Jailbreak (完全脱獄、紐なし脱獄)を行いました。

以下の動画から、起動後にアプリを使って脱獄作業をしなくても脱獄されている(再起動してもずっと脱獄状態が維持されている)ことがわかると思います。

 

 

デバイス: iPhone 5c [iPhone5,3]

バージョン: iOS 10.2.1

使用したexploit: De Rebus Antiquis

 

 

iOS 9.3.6 s5l8942x family's (iPad mini) Firmware decrypt key

iPod totch 5Gでこの前作ったiBoot exploitを適用していたので、せっかくなのでs5l8942xのiOS 9.3.6のFirmware Keyを出しておきました。よければどうぞ。

 

続きを読む

Copyright (C) 2017-2018 Diosra2. All Rights Reserved.