diosra2’s blog

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

A7デバイスをiOS 11.3.1の署名が切れた後もiOS 11.3.1に復元する方法。(要検証)

この記事の続編です。

あれからいろいろわかったことがあるので、記しておきたいと思います。

 

 

そもそもの発端は、iPhone 5sをiOS 10.2に脱獄なしでダウングレードすることができたことです。

脱獄せずにiPhone 5sをDFU ModeからiOS 10.2に復元できた件。

*最初は読み飛ばしても構いません。

 コアな話ですが、A7デバイス以降は、BootRomからiBSSまでの認証にはAPTicketを使用しています。(A6まではBlobでした。) そのため、A7デバイス以降ではDFU ModeもATIcketのNonce(ApNonce)を生成します。要するに、Nonceはランダムな値のため、SHSHを保存していたとしてもNonceが適合しないのでダウングレードできないといったところです。

A7デバイス(検証済みなのはiPhone 5sのみ)では、DFUの生成するApNonceがランダム値ではなく、同じものを何度も生成する可能性があります。

これもコアな話ですが、A7以降では、ApNonceのほかに、SepNonce(SEP FWのためのもの?)が存在し、これは完全にランダムな値になっています。prometheus(futurerestore)で使用された手法(修正済み)では、Recovery Mode(iBoot)のApNonce衝突を利用して、APTicketはローカルに保存していたもの、SEP(と、Baseband)は新たにAppleから署名を受けたものを使用して復元していたと思います。SEPは復元時に署名を受ける必要があるので、署名されているSEPと復元したいiOSとの間に互換性が求められます。

DFU Modeから復元モードに入るには、実際のところAPTicketしか使わないようなので、ApNonceさえ適合すれば良いということになります。

要するに、DFU ModeのApNonceが一致すれば、SEP互換性がある限りSHSHをつかって復元できるということです。

 

ということで、とりあえずiPhone 5sのNonceをとりまくってみました。

わかったこと

最初はある程度ランダム性があり、一部が重複して同じものを生成する都思っていたのですが、29個目のNonceを記録したのを最後に新たな値のNonceが生成されなくなりました。

頻度はありますが、30個程度のNonceのなかからランダムに出現しているといった感じです

前回の記事でこんなことを書きましたね。

30分から1時間くらい行うとかなり収集できると思います。その中でも多かったNonceをまとめておきましょう。後述しますが、Nonceは多いほうがいいです。(Nonceを多く記録するとshsh2取得の手間が増えますが、それ以上に後の動作での手間が少なくなります。) 最低でも5つ程度は確保しておきましょう。

iPhone 5sなら脱獄なしでもiOS 11.3.1維持が可能!準備をしておこう。 - diosra2’s blog

しかし、何度も繰り返さなくても、10回程度DFU Modeにいれて記録しておいたApNonceを用いてshsh2を取得しておけば、その値のNonceはいつか生成される可能性が高い=ダウングレードできる!?

といった感じです。

 

わかったこと2

もう一台、別の5sでも検証してみました。結果は同じです。

しかし、気になったことがあります。

別のデバイスということもあり、別のApNonceのパターンで重複出現していたのですが、1つだけ2つのデバイスで同じNonceを生成しました。そのほか、協力いただいた方のiPad mini 2のNonceを見てみても(こちらは10回で重複出現は認められませんでした。)、私のデバイスで現れたNonceが一部ですが記録されていました。(そのため、重複は確認されませんでしたが、同じものが生成される可能性はあるかもしれません。)

もしかしたらA7チップのDFUで出現するNonceにはなんらかの共通性があるのかもしれません。

 

結論

何が何でも脱獄したい、ブートルーブが起きたときに何が何でも復元したい。といった場合はDFU ModeのApNonceを10個記録して、shsh2を保存しておきましょう。

ただし、被らなければこの手法は使えません。 

保存方法はこちらです。

 

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