本日、ハッカーのtihmstar氏がツール「Prometheus」をリリースしました。このツールは、iOSを(場合によっては)現在署名されていないファームウェアにアップグレードまたはダウングレードするために使用できます。
ただし、このツールは万能ではありません。そこでこの記事では、その制限事項と、tihmstar氏のツールに関するガイダンスに従う方法について簡単に説明します。
まず、Prometheus に関する私の前回の記事を読んでいただくことを強くお勧めします。この記事では、混乱が生じやすい主な部分、ツールを使用するための要件が明らかにされ、ツールがどのようなものであるかがより詳細に説明されているからです。
背景
Prometheusは単一のGUIツールではなく、「nonceenabler」、「futurerestore」、「img4tool」などのツール群です。これらを組み合わせることで、アップグレード/ダウングレード機能を実現できます。
Prometheus は2つの方法で使用できます。1つは「nonceenabler」と「futurerestore」を併用する方法です。こちらは信頼性が高く高速ですが、脱獄とジェネレーターで保存された .shsh2 blob が必要です。もう1つの方法は「futurerestore」のみを使用する方法で、脱獄は不要ですが、確率的攻撃を使用するため、動作に長い時間がかかる(あるいは全く動作しない)可能性があります。この方法でも .shsh2 blob が必要ですが、特定の nonce を使用し、ジェネレーターは使用しません。この方法は 特定のデバイスでのみ機能し、処理に 非常に時間がかかる可能性があります。
要件
- 64ビットデバイス(iPhone 7以降を除く)です。32ビットデバイスやiPhone 7以降では試さないでください。
- ほとんどの場合、残すファームウェアのジェイルブレイクが必要です。 (ノンス衝突方式を使用する場合、一部の
iPhone 5s および iPad Air では必要ありません )。 - Prometheusを脱獄環境で使用している場合は、復元先のファームウェアの.shsh2 blobをジェネレーターを使って保存してください。ジェネレーターは.shsh2ファイル内のフィールドで、ファイルを開いてドキュメントの末尾付近を確認することで確認できます。
- 脱獄せずに Prometheus を使用している場合は、確率的攻撃で最も頻繁に機能することが分かっている、tihmstar によって発行された 5 つの特定の nonce の 1 つ (または複数) を使用して作成された、復元するファームウェアの .shsh2 blob を保存します。
- Prometheusを脱獄システムで使用する場合、脱獄システムには「tfp0」機能が必要です(「host_get_special_port」による回避策も有効です)。これにより、一部の脱獄システムは除外されます。
プロセス
tihmstarのプロセスは統一されていないため、その手順について混乱が生じています。状況によっては、複数の動画を参照する必要があるかもしれません。BLOBをジェネレーターで保存し、現在ジェイルブレイクしている場合は、手順1と2に従ってください。BLOBをtihmstarが公開している5つのノンスで保存し、ジェイルブレイクなしでこのプロセスを実行する場合は、手順2に直接進んでください。
1) 以下の動画では、脱獄アプリを使ってデバイスに特定のナンスを設定する方法を紹介しています。この方法の利点は、特定のナンスを手動で設定すると(保存した.shsh2ファイルのジェネレーターと一致する)、ナンスと.shsh2のジェネレーターが一致するため、復元が最初の試行ですぐに受け入れられることです。
したがって、脱獄済みの場合は、Prometheusをこのように使用することをお勧めします。上記の動画に従って、「nonceenabler」でナンスを設定してください。ナンスが設定され、デバイスがリカバリモードになったら(上記の動画の0:00~10:35 )、手順2に進んでください 。
2) 以下のビデオでは、Prometheus の「futurerestore」コンポーネントを使用して、署名されていないファームウェアをデバイスに復元する方法を示します。
ステップ1から戻ってナンスを設定したばかりの場合は、動画の冒頭から5:53までの手順に従ってください。ただし、ナンス衝突法に関する説明は無視してください。5:53の指示に特に注意してください。デバイスはすでにリカバリモードになっているため、「-w」フラグは省略する必要があります。その後、指示に従ってください(動画で紹介されている再起動段階を待つ必要はありません)。
脱獄をしておらず、ステップ2から始めた場合は 、以下の動画の内容を全て忠実に実行し、最も多く生成されたノンスの一つを使用してください。ノンス衝突法を使用する必要があるため、数分かかる場合もあれば、正確な時間は不明な場合もあります。これは確率的なものであり、運と時間に依存します。脱獄したからといって、すぐに適切なノンスを生成することはできません。
これら 2 つのビデオでは、「nonceenabler jailbreak メソッド」と「nonce collision no-jailbreak メソッド」の両方を使用して、Prometheus でダウングレードするプロセス全体をカバーしています。
SEPとベースバンド
最後に、tihmstar氏がSEPとベースバンドについて述べている点について触れておきます。これらはiOSファームウェアの2つの構成要素であり、これから扱うことになります。これに関する情報は2つ目の動画の0:50~2:07で説明されており 、 どちらの方法を使用する場合にも当てはまります。「ノンスイネーブラー脱獄方法」と「ノンス衝突なし脱獄方法」の両方を使用する場合は、この情報に注意してください。
基本的に、SEPとベースバンドは、 Prometheusで偽造できないため、現在署名されているファームウェアから取得する 必要があります。しかし、SEPとベースバンドは多くのiOSバージョン間で互換性がないため、互換性が十分に近いバージョンを使用する必要があります。例えば、iOS 10.2は現在署名されているため、そのSEPとベースバンドを使用できます。ただし、iOS 9への復元には使用できません。バージョン間のギャップが大きすぎるためです。互換性がないためです。iOS 10.2のSEPとベースバンドは、互換性が十分に近いバージョンであるため、iOS 10.1.1への復元には使用できます 。
まとめると、Prometheusを使用するには、必ず署名済みのファームウェアのSEPとベースバンドを使用する必要がありますが、復元先のバージョンとも互換性がなければなりません。SEPとベースバンドが対象のファームウェアと互換性がない場合、たとえ署名済みであっても復元できません。逆も同様です。復元元のiOSのバージョンは 関係ありません。復元先のiOSのバージョンと、お持ちのSEP/ベースバンドの署名済みバージョンが 関係します。
考えられる使用例は次のとおりです。
1) iOS 9.3.3から10.1.1へのアップグレード。復元には10.2の SEPとベースバンドを使用できます 。iOS 10.2のSEPとベースバンドは署名されていますが、10.2は署名されています。iOS 10.2のSEPとベースバンドは互いに近いため、10.1.1と互換性があります。iOS 9.3.3を使用しているかどうかは関係なく、移行先のファームウェアのみが重要です。 可能です。
2) iOS 10.2から10.1.1へのダウングレード。復元には10.2の SEPとベースバンドを使用できます 。iOS 10.2のSEPとベースバンドは10.2と同様に署名されています。iOS 10.2のSEPとベースバンドは互いに近いため、10.1.1と互換性があります。iOS 10.2を使用しているかどうかは関係なく、対象となるファームウェアのバージョンのみが重要です。(10.2用のジェイルブレイクは存在しないため、ノンス衝突法でのみ試すことができます。) デバイスによっては可能です(ノンス衝突法)。
3) iOS 10.2から9.3.3にダウングレードする場合、10.2のSEPとベースバンドを使って復元を完了することはできません。iOS 10.2のSEPとベースバンドは10.2と同様に署名されていますが、iOS 10.2のSEPとベースバンドは 9.3.3と互換性がありません。これは、両者のバージョンが十分に近くないためです。iOS 10.2を 使用していることは問題ではありませんが、署名済みのSEPのバージョンが復元先のファームウェアと大きく異なることが問題となります 。不可能 です。
後日、これら2つの方法の具体的な手順を紹介するハンズオンチュートリアルを公開する予定です。まずはこの記事で、Prometheusを使用する2つの方法、どちらが自分に当てはまるか、そしてどちらが使えるのかについて理解していただけたらと思います。頑張ってください!