diosra2’s blog

iOSの脱獄、ダウングレード

iPhone 5のiOS 10.3.3 完全脱獄方法。

条件

iPhone5,2でiOS 7.0.4のSHSHがあること。(理論上はiOS 7のデバイス全て)

注意

通常のUntetherとは性質がかなり異なるので注意してください。
nvramをチェンジしているので、iOS 9未満に復元すると起動しません。その場合はiOS 9.xにre-restoreするかiOS 10.3.3に復元して脱獄し、変更したnvram変数を元に戻してください。

nvram変数を削除

User$ nvram -d boot-partition

User$ nvram -d boot-ramdisk


また、iOS 9以降のブートローダーではnvramのboot-partitionが削除されます。この場合起動できなくなるので、注意してください。今回のパッチではそれを無効にしてあります。
iOS 9以降のブートローダー(iBEC)を送信した段階でboot-partitionが削除されるので、iTunesなどで復元モードに入れてしまうと復元を中止しても起動しなくなります。

Thanks for

De Rebus Antiquis : @xerub
Odysseus : @daytonhasty, and more.
iBoot32Patcher : @iH8sn0w, @tihmstar, @nyan_satan
iboot-exploit-odysseus-bundles: Benfxmth
iBEC/kenrel patch : @JonathanSeals (@coolbooter)
Lots of tips : @ShadowLee19
And many developers !!

References

https://xerub.github.io/ios/iboot/2018/05/10/de-rebus-antiquis.html https://www.reddit.com/r/jailbreak/comments/96a1rn/tutorial_how_to_use_xerubs_ios_70x_iboot_exploit/
https://nyansatan.github.io/dualboot/


使用方法

準備するもの

N42_14G60_JB_alpha-1.zip
Odysseus
Bundle
iPhone5,2_7.0.4_11B554a_Restore.ipsw
iPhone5,2_9.0_13A344_Restore.ipsw
iPhone_4.0_32bit_10.3.3_14G60_Restore.ipsw

準備1_Untether作成

iboot exploit実行後、紐なしで起動するために以下のファイルを作成します。
10.3.3のファームウェアをunzipして、以下のファイルを取り出し、iBECのみパッチします。
DeviceTree
場所: Firmware/all_flash/DeviceTree.n42ap.img3
devicetree.img3にリネームしておいてください。後で使います。
iBEC
場所: Firmware/dfu/iBEC.iphone5.RELEASE.dfu
iBEC_patch

User$ ./xpwntool iBEC.iphone5.RELEASE.dfu iBEC.dec

User$ bspatch iBEC.dec iBEC.patched iBEC.iphone5.RELEASE.patch

User$ ./xpwntool iBEC.patched iBEC -t iBEC.iphone5.RELEASE.dfu

最後に作成された"iBEC"という名前のファイルがパッチ済みファイルです。後で使います。

準備2_CFW作成

9.0_FW
デフォルトのOdysseusのBundleを削除し、新たにダウンロードしたものに置き換えてください。
そして、9.0のBundle内のInfo.plistのRootFileSizeを2800程度に増やしておきます。

f:id:diosra2:20181010232249p:plain

OdysseusでiOS 9.0のCFWを作成します。

User$ ./ipsw iPhone5,2_9.0_13A344_Restore.ipsw iPhone5,2_9.0_13A344_Custom.zip -bbupdate -memory

作成できたら、unzipします。そして、以下のファイルをDowngradeフォルダ内に格納します。

f:id:diosra2:20181010232954p:plain
*applelogo, devicetree, kernelcacheは元々あるものをそのままにしておいてください。
*iBSS/iBECはFirmware/dfu内にあります。
Dowgrade内が画像のような構成になったら、このDowgradeフォルダ以外の9.0ファームウェアは不要なので削除していいです。

10.3.3_FW
10.3.3のファームウェアをunzipして、BuildManifsetに、N42_14G60_JB_alpha-1.zipに付属のパッチを当ててください。

User$ bspatch [BuldManifset.plist_orig] [BuldManifset.plist_patched] BuildManifset.patch

そして、先ほど作成したDowngradeフォルダを以下のように設置します。

f:id:diosra2:20181010234015p:plain
そして、Firmware/all_flash内に付属のmanifsetを設置します。
最後に、Firmware/all_flash内にiOS 7.0.4のiBootとLLBをそれぞれiBoot.iphone5.RELEASE.img3とLLB.iphone5.RELEASE.img3とリネームして置き換えてください。(applelogoを最初から表示したい場合は、applelogoもiOS 7.0.4のものに置き変えてください。)

f:id:diosra2:20181010234115p:plain
できたらzipして拡張子をipswに変更します。

復元2_idevicerestore

Odysseus内に7.0.4のshshを入れ、以下のようにリネームします。
[ECID(10進数)]-iPhone5,2-10.3.3.shsh
そして、デバイスをkloaderでPwnediBSSモードに突入させ、MacにUSB接続して以下のコマンドを入力することで復元が開始されます。

User$ ./idevicerestore -e -w [10.3.3_cfw.ipsw]


復元が終了すると、デバイスは再起動しないと思います。デバイスにはそのまま触れないでおいてください。
以下のコマンドを実行
iproxy 2222 22
別ウィンドウで以下のコマンドを実行しデバイスにSSH接続

User$ ssh -p 2222 root@127.0.0.1

以下、ssh接続したデバイスに以下のコマンドを実行
mount_hfs /dev/disk0s1s1 /mnt1
mount_hfs /dev/disk0s1s2 /mnt2

gptfdisk /dev/rdisk0s1
Command (? for help): i
Partition number (1-2): 2
(GUID、Last sectorを記録)

Command (? for help): d
Partition number (1-2): 2
Command (? for help): n
Partition number (1-2): 2
First sectorはそのままの値。
Last sectorは記録した元の値から256 sector減算した値。
Hex code or GUIDはそのまま[Enter key]
Command (? for help): c
Partition number (1-2): 2
Enter name: Data
Command (? for help): x
Expert command (? for help): a
Partition number (1-2): 2
48
49
Expert command (? for help): c
Partition number (1-2): 2
[記録したGUIDをコピペ]
[enter key]
Expert command (? for help): m

Command (? for help): x
Expert command (? for help): s
Enter new size (64 up, default 128): 4
Expert command (? for help): m
Command (? for help): n
Partition number (1-3): 3
First sector: [enter key]
Last sector: [一番最初に記録したLast sector]
[enter key]

Command (? for help): i
Partition number (1-2): 2
(First sector、Last sectorを新たに記録...後で使います。)
Command (? for help): w
Y

パーティション変更が保存して終了します。続けて以下のコマンドを入力します。
newfs_hfs /dev/disk0s1s3

続けて以下の計算をします。
[size_in_bytes] = 最後に記録した( Last sector - First sector - 1 )×4096

計算した数値を使用して以下のコマンドを実行
hfs_resize /mnt2 [size_in_bytes]

nvram変数を変更
nvram boot-partition=2
nvram boot-ramdisk="/a/b/c/d/e/f/g/h/i/j/k/l/m/disk.dmg"

そして、MacからscpコマンドでiOS側に以下のファイルを転送します。
"iBEC", "devicetree.img3", "ramdiskF2.dmg"

ramdiskF2.dmgはこちらです。
https://github.com/dora2-iOS/n42_untetherjb

コマンド(Mac側)

User$ scp -P 2222 [ramdiskF2.dmg] root@127.0.0.1:/mnt1

User$ scp -P 2222 [iBEC] root@127.0.0.1:/mnt1

User$ scp -P 2222 [devicetree.img3] root@127.0.0.1:/mnt1/usr/standalone/firmware


そして、iOSデバイス側でddコマンドを使用してramdiskを3rd partitionに書き込みます。
dd of=/dev/rdisk0s1s3 if=/mnt1/ramdiskF2.dmg bs=512k count=1

最後にreboot_bakをsshで実行すると、iOSが再起動します。

脱獄方法

準備1-kernelにパッチする

付属のpatchファイルを使用してkernelcacheにJailbreakパッチを当てます。10.3.3のファームウェアを解凍して、kernelcache.release.iphone5を取り出してください。

User$ ./xpwntool kernelcache.release.iphone5 kernelcache.release.iphone5.dec

User$ bspatch kernelcache.release.iphone5.dec kernelcache_patched kernelcache.release.iphone5.patch

User$ ./xpwntool kernelcache_patched kernelcache -t kernelcache.release.iphone5

生成された"kernelcache"が目的のものです。後で使います。

脱獄1-h3lixで仮脱獄

Cydiaのインストールとroot権限の取得を行うために、一度h3lixで仮脱獄します。
iPhone 5を起動し、通常通りにh3lixで脱獄してください。

脱獄2-ファームウェア書き換え

脱獄したら、kernelcacheをpatchしたものに置き換えます。
場所: /System/Library/Caches/com.apple.kernelcaches/kernelcache
元々あったものは削除orリネームし、patch済みkernelを、名前を"kernelcache"にして"/System/Library/Caches/com.apple.kernelcaches/"内に設置してください。

そして、付属のadd_firmwareのファームウェアを設置します。
1, /usr/libexec内の"CrashHousekeeping"を"CrashHousekeeping_"にリネーム
2, add_firmware内のすべてのファイルをiOSデバイスに転送します。
3, add_firmware内のすべてのファイルを所有権をroot:wheel(0:0)に、権限を0755にセットします。
4, add_firmware内のすべてのファイルを/usr/libexec内にぶち込みます。

最後に、fstabを書き換え、再起動時にrootfsがrwでマウントされるようにしておきます。
*注意: iOS 7以降では通常の環境で以下の書き換えを行うと起動しなくなるのでやらないように。今回はkernelにパッチしてあるので大丈夫です。
・old
/dev/disk0s1s1 / hfs ro 0 1
/dev/disk0s1s2 /private/var hfs rw,nosuid,nodev 0 2

これを以下のようにします。

・new
/dev/disk0s1s1 / hfs rw 0 1
/dev/disk0s1s2 /private/var hfs rw 0 2
また、/System/Library/LaunchDaemons/com.apple.backboardd.plistと/System/Library/LaunchDaemons/com.apple.SpringBoard.plistを/Library/LaunchDaemonsにコピーしてください。

最後にh3lixのアプリは不要なので消去し、再起動します。
起動し、脱獄状態なら成功です。

iBoot exploitを使用してiPhone 5でiOS 10を完全脱獄した。

iPhone 5でiBoot exploit (De Rebus Antiquis)を使用したiOS 10.2.1の紐なし起動、完全脱獄です。

 

起動時のCustom BootLogoの適用、未署名コードの実行(SHSH blobなしのパッチ済みブートローダーの起動)、Verbose Boot、起動後のanemoneによるアイコンの変更やCydiaの起動、SubstrateのInjectionなどが確認できるかと思います。

・条件は?

iOS 7のiBootのexploitです。そのためiOS 7のSHSHがあるデバイスのみで使用できます。iOS 8では修正済みです。

また、現在ではiPhone5,2 (iPhone 5 Global)のiOS 7.0.4のSHSHのあるデバイスのみで使用できます。

 

・何に使えるの?

全バージョンの完全脱獄やダウングレードに利用できます。

 

A7デバイスで半永久的にバージョン維持して復元できる可能性のあるAPNonce一覧

A7(iPhone 5s/iPad mini 2/iPad mini 3)のDFU Modeです。個体差があるのでデバイスによってはでてこない可能性があります。iPad AirはA7 Variant(S5L8965)と上記3デバイスと違うので全く使えないかもしれません。

また、SEP Firmwareの互換性がなくなると使えなくなります。現在では10.3.3(OTA)のSEPが10.2-10.3.3で、11.4.1-12.1b1のSEPがiOS 11.3 以降で使用できます。

 

使用方法

A7デバイスをDFU ModeにしてMacに接続、igetnonceを使用してAPNonceを取得。

MacBook:~ User$ ./igetnonce 

Identified device as n51ap, iPhone6,1 in dfu mode... 

ecid=xxxxxxxxxxxxxxxx

ApNonce=83265a110a03fe0d78649d6eefa5094389dcba65

SepNonce=41d7aa97b5ecf3850db275922ec8d2898642c7d0

何度かDFU Mode-> 再起動-> DFU Modeと繰り返してみて、この中から一つでも一致すれば他のも重複する可能性があります。(この場合は実際に、以下の一覧中の赤字と一致しました。)

これらAPNonceを指定してshsh2を取得しておくと、また再度一致すれば復元モードに入れるのでSEPが有効である限りですがバージョンを維持したり特定のバージョンへ復元できます。

 

ApNonce_A7

iBoot exploitを使用してiPhone 5をiOS 10.2.1で仮脱獄した。

前回と同じくこれを使用してiOS 10.2.1へのSHSHなしの復元と脱獄を行いました。

前回同様、仮脱獄(Tethered-Downgrade/Jailbreak)状態です。起動にはMacからブートローダーの送信が必要です。

 

 

 

あとは完全脱獄になれば...ですが、私にはできないのでスーパーな人たちがやってくれるのを待ちます。(´・ω・`)

iBoot exploitを使用してiPhone 5でiOS 6へのSHSHなしのダウングレードを試してみた。(不完全)

前回の記事ではiBoot exploitの導入とiOS 7.0.4での実行をしましたが、今回はexploitを使用してSHSHなしでダウングレードを行いました。

 

使用できるデバイス

iOS 7 (iOS 8未満)のshshがあるデバイス (現在では7.0.4のshshがあるiPhone5,2のみ)

 

Tethered Downgrade

このダウングレードは不完全です。これはTethered Downgrade (紐付きダウングレード)と呼ばれ、再起動時にMacからブートローダーをiPhone側に送信する必要があります。

有名なものだと、Bootrom exploitを使用してiPhone 4などのA4デバイスをSHSHなしでダウングレードする"GeekGrade"などがありましたね。

 

iOS 6.1.3にダウングレード

 

このiPhoneはiOS 6.1.3のSHSHはありません。

exploitは前回と同じでiOS 7.0.4のiBootに対して攻撃するので、iOS 6.1.3のCFWで復元する際にLLBとiBootを7.0.4のものに置き換え、復元時に7.0.4のSHSHで署名します。

復元後は当然リカバリーモード行きです。CFWでの復元が終わった後はiBoot exploitをセットしなければならないので、ramdiskの/sbin/rebootにリネームすることで再起動を防止し、SSHでデバイスにアクセスしてexploitをセットします。できたら先ほどリネームした/sbin/rebootを実行して復元終了、デバイスはリカバリーモードに入ります。

そこから、Macに接続してブートすることで起動することができます。

 

完全ダウングレード

24kpwnを使ったようなUntethered Downgrade (完全ダウングレード、紐なしダウングレード)自体は可能ですが、現在では行えません。いくつかの調整が必要となります。

 

iOS 7のiBoot exploitをiPhone 5で試してみた。

xerub氏によるiBoot exploit (De Rebus Antiquis) を実際に使用して、iPhone 5で色々いじってみました。

前回書いたとおり、このexploitはiOS 8.0未満でないと利用できません。また、現在ではiPhone5,2のiOS 7.0.4でのみ使用可能となっています。

使用したもの

iPhone5,2

iOS 7.0.4 (脱獄済み) (実際はiOS 7.0.4のSHSH blobsがあればOK)

iloader

 

exploit

exploitをセットしたデバイスはこのように、一瞬ブラックアウトした後再度applelogoが表示され、リカバリーモード(iBoot)で停止します。

iOS 7のiBoot exploitexploit適用方法(要認証)

 

デバイスの中身はiOS 7.0.4なので、このまま紐付きブート(Just Boot or Tethered Boot)してみます。

 

Tethered Boot

iBootはPwnedなので未署名のコードを実行できます。

まず、この状態ではロードアドレスが0x84000000にセットされているようなのでirecoveryでPwnediBSSを送信してジャンプします。

次に、iOS 10.x (or 9.x??)のPwnediBECを送信、そこからiOS 7.0.4のPwnediBECにジャンプします。この手順を踏まないとディスプレイがブラックアウトしたままになります。(経由するiBootがiOS 9.xや10.xじゃないといけないのかどうかは不明)

このiBECはBootArgsに"-v"がセットされているので、起動時にVervose bootで起動します。

最後にAppleLogo、DeviceTree、Ramdisk、KernelCacheを送信しbootxします。

これでiOSが起動しました。

 

この技術を応用することで、理論上はSHSHなしのTethered Downgrade (紐付きダウングレード)は実装することができます。ただしiOS 7(.0.4)のSHSHが必要です。

(もし紐なし起動が実行できればSHSHなしの完全ダウングレードやiOS 9.3.5-10.3.3までの完全脱獄にも使用できるかも...。)

 

iOS 10.xのデバイスをSafariから脱獄できるサイトが登場。ただし...。

突如、64-bitデバイスのiOS 10.xをSafariからJailbreakすることができるサイトが登場しました。

https://totally-not.spyware.lol/

Safariベースの脱獄といえば、Pangu9 (for 9.2-9.3.3)で脱獄したデバイスを脱獄状態へ復帰させることができるjbmeや、32-bitデバイスをワンタップでJailbreakすることのできるJailbreakMe 4.0がありましたね。

実際にiPhone 5sを10.3にダウングレードして試してみました。

追: 10.2でも使えました。大体のデバイスでは使用できるんじゃないかなと思います。

内部の記述的にDoubleH3lixとMeridianのどちらでも使えそうだったので、Doubleh3lixを使用してみました。

 

https://twitter.com/dora_iOS/status/1036645023016615936

 

ただし、誰が作ったのかいまいち掴めなかったので注意が必要です。Twitterで確認したり聞いてみたりしたのですがさっぱり...。

@JakeBlair420氏によって、脱獄界隈ではよく知られた開発者さんたちによって作られということが判明しました。一応安全ではあるかなとは思います。(URLのせいで安全に見えないですが…w)

使用しているexploit次第ではiOS 11でも使えるのかも...??

iOS 7のiBoot exploitや完全脱獄について。

iOS 7のデバイスには、「De Rebus Antiquis」と呼ばれるiBoot exploitが存在しています。

これはiOS 8でパッチされたようなので、使用できるデバイスはiOS 8未満のデバイス(or そのバージョンのshshがあるデバイス)ということになりますが、現在ではiPhone5,2のiOS 7.0.4以外では利用できません。

しかし、iOS 7.xでは確実に、iOS 6でもおそらく動くとされているので進展があれば使用可能となる可能性もあります。

 

何ができるのか

現時点ではPwned iBoot (Recovery Mode)上での未署名コードの実行、SHSHを使わないiOS 6.1.4へのTethered Downgradeができているようです。exploitを適用させたデバイスはリカバリーモードで停止し、そこから未署名のブートローダーやカーネルを送信して起動させるという感じですね。

以下の動画はLimera1n exploitを使用したTethered Downgradeですが、要するにこのような感じです。今回のexploitはBootRomではなくiBootで動作するので、DFU ModeではなくRecovery Modeで発動されます。

 

現在はTetheredとなってますが、Untetheredでの起動もおそらく可能だと考えられます。もしこのexploitを適切に利用できるようになれば、32-bitデバイスのiOS 10.xなどでも完全脱獄が可能になるかもしれません。

また、A7デバイスでも使用できた場合、iOS 12の脱獄も...?。(iOS 7環境が必要ですが。)

ベータバージョンのiOSの脱獄

iOS 6 beta

6.0 beta 1: evasi0n untetherが使用可能

6.0 beta 2-GM: 未検証 (おそらくevasi0n untetherが使用可能)

6.1 beta X: 未検証 (おそらくevasi0n untetherが使用可能)

6.1.1 beta、6.1.3 beta2: 不明

 

iOS 7 beta

7.0 beta X: 不可(?) (b1のみ検証済み)

7.1 beta 1-3: evasi0n7

7.1 beta 4-GM: 不明

 

iOS 8 beta

8.0 beta X: 不明

8.1 beta X: 不明

8.1.1 beta: 不明

8.2 beta 1-2: TaiG(v.1.x)

8.2 beta 3-5: 不明

8.3 beta X: 不明

8.4 beta X: 不明

 

iOS 9 beta (32-bit)

9.0 beta X: ツール無し(Tridentを使用して脱獄可能…b1で検証済み)

9.1 beta X: 不明 (おそらく可能?)

9.2 beta-9.3.3 beta 5: Trident系脱獄ツールにoffset追加でおそらく可能。(要検証)

 

iOS 9 beta (64-bit)

不明

 

iOS 10 beta (32-bit)

10.0 beta 1: 不可(検証済み)

10.0 beta 2-10.3.3 beta 6: 不明

 

iOS 10 beta (kpp device)

10.0 beta X: doubleh3lixが使用可能かも(?)

10.x beta X: おそらくdoubleh3lixが使用可能(10.3.2 betaで検証済み)

 

iOS 11 beta

11.4 beta 1-3: Electra1131

何故かiPhoneにSIMカードを挿さなくてもアクティベーションが通る

何故か、SIMカードを挿していない状態でも正常にアクティベーションが進むという不具合(?)が報告されています。

iPhone 4S以降(?)なら可能なようです。iPhone 4などの古いデバイスでは通常通りにSIMカードが必要なようですね。(こちらはHacktivationが可能ですが。)

SIMロックなどはサーバーにある情報通りに、SIMロックフリーならSIMロックフリーに、SIMロックが掛かってる状態ならそのキャリアにロックされた状態でアクティベーションされるようです。

今ならアクティベーション用のSIMカードを持っていなくてもiPhoneをアクティブに出来るので、(w少ないとは思いますが、)試しておくと良いかなと思います。

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