diosra2’s blog

iOSのJailbreak、ダウングレード

SHSHなしでiOSをダウングレードする



SHSHとは

『SHSH』とはiPhone 3GSから導入されたファームウェアの認証システムです。

これにより、iPhone 3GS以降, またはiOS 4以降のファームウェアはAppleの認証無しに復元や起動をすることができなくなっています。

iOS 4までは、Appleがファームウェアを認証しているうちに署名(SHSH blobs, ECID SHSH)を取得しておくことで、Cydia(Saurik) ServerやTinyUmbrella等を通してAppleの認証サーバーを偽装することで、あらかじめ保存しておいたSHSH blobsを使ってファームウェアを認証し、SHSH blobsのある特定のバージョンに復元することが可能です。

iOS 5以降はAPTicketが導入され、nonceが含まれるようになったため、上記のように簡単に任意のバージョンへダウングレードすることは難しくなりました。iOS 5以降はBootRom Exploitなどを活用し、デバイスをPwned DFU Modeにしてカスタム・ファームウェア(CFW)で復元する必要があります。

A7(64bit)デバイス以降はA6デバイス以前とは少し認証方法が異なります。

 

SHSHの導入されていないiPhone, iPod Touch, iPhone 3G(iOS<4.0), iPod Touch 2G(iOS<4.0)はiTunesでファームウェアを指定して復元するだけでダウングレードできます。

 

SHSHのないファームウェアにダウングレードする

iOSデバイスをSHSHなしでダウングレードするためにはUntetheredで実行可能なBootRom Exploit、またはiBoot Exploitが必要です。例えば、iPhone 3GSでは0x24000 Segment Overflowの脆弱性を利用することでSHSHなしでCFWを起動できます。

 

面倒なことはいいからツール教えろ。な方はこちらへ。

-> SHSHなしでiOSダウングレードを行うツール [2020年版]

 

紐なし(untethered)

紐なし(untethered)とは、ここではデバイス単体で達成される状態を指します。要するに、iPhoneなどの電源ボタンを押してiOSが起動できるという状態のことです。

電源ボタン押して起動できない状態ってなんだよ。と思うかもしれませんが、紐付き(tethered)ダウングレードという方法が存在します。(こちらは起動にパソコンを使用する。)

 

Bootrom exploit

この章ではBootrom exploitを使用したSHSHなしでのダウングレードについて記します。

32-bit iOSデバイスは電源をONにすると最初に書き換え不能なSecureROM(Bootrom)が起動します。その次にLLB(Low-level Bootloader)の署名チェックを行い、正しければLLBに移行します。

Bootrom exploitを使用したダウングレードでは、このSecureROM->LLB間の脆弱性を使用して未署名のLLBを許可させることで達成します。LLBの署名認証がスキップされるとそれ以降の署名認証を飛ばすことができるので、完全にSHSHを使用せずにダウングレードが可能です。

 

利用可能なデバイスと使用する脆弱性

0x24000 Segment Overflow

Developer: iPhone Dev Team 

0x24000 Segment Overflow - The iPhone Wiki

Device: iPod Touch 2nd Generation (Old BootRom), iPhone 3GS (Old BootRom)

Bootrom 240.4, Bootrom 359.3のデバイス上で未署名なLLBを実行できるUntethered BootRom Exploitです。

Limera1n Exploitと組み合わせてSHSHなしで復元・ダウングレードしてiOSを起動することが可能です。

 

alloc8 exploit

Developer: axi0mX

Device: iPhone 3GS

iPhone 3GS上で使用できるUntetehred BootRom Exploitです。

Limera1n Exploitと組み合わせてSHSHなしで復元・ダウングレードし、起動することが可能です。(ただし制約あり)

Old BRの場合は24kpwnを利用したほうが良いです。 

 

iBoot exploit

A5デバイス以降ではBootrom exploitはありません。また、A4 ~ A11デバイスのBootrom exploitはデバイス単体では動作しません。(USBからの攻撃が必要。)

しかし、過去のiBootには幾つかの脆弱性が存在していたため、条件付きですがA5デバイス以降でも紐なしで利用可能なものがあります。

よく知られた強力なiBoot exploitでは、iH8sn0w氏が保有していると思われる非公開なiBoot exploitです。彼はこの脆弱性を使用してiPad 3rdやiPhone 5でiOS 8.1.1や9.0、10.0 betaなどの完全脱獄を行った様子を公開しました。その動画から、起動時にCustom Boot Logoが適用されている点やVerbose bootで起動している点から電源をOnにしてからすぐに動作する強力なものだと推測できます。

iBoot exploitはiBootで発動されるため、ソフトウェアアップデートで修正可能です。したがって、修正される前のSHSHを持っていることが必要になります。しかし、理論上は(少なくとも32-bitデバイスでは)脆弱なiBootでexploitを発動し、それよりも新しいバージョンのiOSを、そのバージョンのSHSHなしに起動させることは可能です。

公開されている中でA4デバイス以降に有効なexploitは以下の2種類存在します。 

 

利用可能なデバイスと使用する脆弱性

iBoot HFS heap buffer overflow

Developer: p0sixninja

対象: iOS 5のiBoot

iOS 5のiBootのバグです。iOS 5のSHSHが必要です。これはiOS 6でfixされたようです。

このexploitでは全バージョンのUntethered Jailbreakや全バージョンへアップ・ダウングレードすることが可能です。実際に、nyan satan氏によるiPod Touch 3rdのverbose bootによる起動や、ShadowLee19氏によるiPad 2でのiOS 7.1.2のCustom boot logoの適用やverbose bootによる起動などが公開されています。

実際にexploitを適用させる手法は公開されています。シリアルケーブルと少々の知識があれば可能です。iOS 5デバイスのケーブルは30-pinなので、シリアルケーブルに関しては秋葉原で色々買ってくれば作れます。

ただし、iOS 5ブートローダーではiOS 6以降を正常にブート出来ない可能性があります。

 

De Rebus Antiquis

Developer: xerub

対象: iOS 7のiBoot

iOS 7のiBootのバグです。iOS 7のSHSHが必要です。

xerubによると、これはiOS 8でfixされたようです。

全バージョンのUntethered Jailbreakや全バージョンへアップ・ダウングレードすることが可能です。iOS 7のiBootがトリガーに必要です。現在では32-bitデバイスに対するexploitのみ公開されています。

 

Tethered Downgrade (紐付きダウングレード)

A4デバイス以降はUntethered BootRom Exploitが存在しないため、SHSHなしではiOSを起動することはできません。

A4デバイスではBootrom Exploit (Limera1n Exploit)を利用してTethered Downgrade (紐付きダウングレード)をすることは可能です。

例としてはSund0wnのようなツールが存在します。

 

利用可能なデバイスと使用する脆弱性

Limera1n Exploit

by geohot

Device: iPhone 3GS, iPhone 4, iPad, iPod Touch 3rd Generation, iPod Touch 4th Generation

USBの接続で、未署名のコードを実行可能にするTehered BootRom Exploitです。

SHSHなしでダウングレードすることが可能ですが、これらのデバイスはSHSHなしでは起動できないため、起動時にLimera1n Exploitを使用してBootする必要があります。

Tethered Downgrade (紐付きダウングレード)です。

手法

CFWで復元するためにiBSS/iBECにパッチをして復元時の署名認証を無効化し、CFWで復元が実行されるようRamdiskのasrにパッチをします。

続いて、Ramdisk内のoption.plistを開き、FlashNORをfalseに設定します。

これにより復元時にブートチェーンは復元されないため、元々のブートチェーンが維持されます。そのため復元後は、維持された元々のブートチェーンが新たに書き込まれたiOSの起動をできないため、デバイスは起動を停止しリカバリーモードとなります。(Sund0wnやGeekGradeではこの調整が実行されています。)

起動するためにはLimera1n Exploitを利用してデバイスをPwned DFU Modeに入れ、redsn0w等でデバイスにブートチェーンを送り込み、Just Bootする必要があります(Tethered)。この動作は再起動するたびに毎回必要です。

 

checkm8

by axi0mX

Device: A5 - A11

USBの接続で、未署名のコードを実行可能にするTehered BootRom Exploitです。

SHSHなしでダウングレードすることが可能ですが、これらのデバイスはSHSHなしでは起動できないため、起動時にcheckm8を使用してBootする必要があります。

64bitデバイス

A7-A11では紐付きなら理論上可能です。A12デバイス以降ではSHSHなしでiOSをダウングレードする方法は存在しません。

 

 


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