・2018/07/19
(情報が古いから書き直したいと考えているが、時間が取れない。)
・2018/05/03
当記事執筆,公開
ReSwitchedチームのKate Temkin氏が発見/公開したTegraのブートROMのバグを利用したcoldboot exploitである
Fusée Gelée。
今回はSwitchでそのFusée Geléeのためのペイロードを実行するまでの手順を記事にします。
SwitchにはSoCとしてTegraが搭載されており、SwitchではそのTegraのリカバリーモードが実行(起動)可能です。
このリカバリーモードは略してRCMと表現されますが、Fusée Geléeと同じ脆弱性を利用した
ShofEL2を公開したfail0verflowチームは
リカバリーモードをRCM modeと表現しており、私としては字面的にその方が分かりやすいと感じたので記事ではRCMモードと表現します。
英語に戻すとリカバリーモードモードになってしまいますが、そこはご了承ください。
で、そのRCMモード時にUSB接続したホストPCからSwitchへペイロードを送る事でペイロードが実行可能となっています。
実際にペイロードを送って実行するためのツールは、記事執筆時点では以下のような物が存在します。
・fusee-launcher
https://github.com/reswitched/fusee-launcherKate Temkin氏のリリースしたオリジナル。PoCでありLinux/Mac向け
・Fusée Gelée Launcher for MacOS
https://github.com/SuperOkazaki/fusee-launcherSuperOkazaki氏のリリースしたオリジナルのフォーク。MaC向け
・udev_rule_fusee_gelee_raspberry
https://github.com/Darkmelman/udev_rule_fusee_gelee_pi3Darkmelman氏がリリースしたRaspberry Pi 3向けfusee-launcher
・NXLoader
https://github.com/DavidBuchanan314/NXLoaderDavid Buchanan氏のリリースしたAndroid向けfusee-launcher
・Web Fusée Launcher
https://fusee-gelee.firebaseapp.com/atlas44氏のリリースした、ブラウザ(Chrome)上で使用可能なfusee-launcher
WebUSBを利用しており、Windows向けChromeでは実装制限等が存在するらしく動作しないのでそれ以外の環境向け
・TegraRcmSmash
https://github.com/rajkosto/TegraRcmSmashrajkosto氏のリリースした、C++で書かれたWindows向けfusee-launcher
上3つは書くのは面倒ですし、NXLoaderは私の環境では動作せず、Web Fusée Launcherの手順の解説は不要だと思うので、
手順書くのが楽そうなTegraRcmSmashのみを書きます…
●RCMモードで起動するまで●用意するもの
・Switch本体
・PC(Windows/Linux/Mac/Android/ChromeOS)
・USBケーブル(PCに合わせて A to C か C to C)
・ピンをショートするための用具
RCMモードを起動する方法は3つあり、1つ目がSwitch上でカーネルコードを実行してRCMモードを起動するというハッカー向けの手法、
2つ目がSwitchに搭載されるeMMC基板を外してSwitchを起動するという分解を用いた手法、3つ目が特定のボタンを同時押しして起動する手法。
ペイロードを実行するに当たってSwitchシーンではこの3つ目の方法が今かなり熱いです。
特定のボタンとは具体的に言えば "
電源ボタン + 音量上ボタン + 隠されたHomeボタン " ですが、Homeボタンのためにショートを行います。
そのHomeボタンはJoyConにあるHomeボタンとは違い、Tegraに存在する隠されたHomeで、右側JoycConレールのピンに繋がっています。
本体右側のJoyConを外してレールの下部を確認してみてください。見えにくいと思いますが、ピンがあるはずです。

この一番右側の10番ピンがHomeボタンと繋がっており、これをショートさせる事で隠されたHomeボタンとして機能します。
具体的には10ピンを、1ピンか7ピンか9ピンのどれかとショートさせればHomeボタンとして機能します。
fail0verflowチームは3Dプリント可能なショートパーツのデータを公開しています。これは形状的に10-7のショートですね。
https://github.com/fail0verflow/shofel2/tree/master/rcm-jigebay等ではこれをベースにデザインを変えた物が売られていたりしますが、単なるショートにこんな物は不要です。
もちろん、確実に、スマートに、のような事を考えるなら持っていても良いと思います。
Switchシーンではクリップを使ったり、ワイヤーを使ったり、細いドライバーを使ったりといろいろな方法が出てきています。
私は以下のような感じでピンセットを使ってショートさせました。


1枚目が10-1のショートで、2枚目が10-9のショートです。
10-9のショートに関しては針金だったり細いドライバーだったりがやりやすいかもしれません。
Switch側ではなく右JoyConの基板にリードスイッチを用いたワイヤーをはんだ付けし、JoyConに磁石を近づけた際のみショート、
なんていう方法も登場しています。これは物が揃ってるならやってみても良いかもしれません。
https://gbatemp.net/threads/f-g-joycon-mod-magnethax-switch-edition.502459/リードスイッチを使用せずにそのままワイヤーをはんだ付けすればRCMモード起動用のJoyConになります。
はんだ付けに問題が無ければそのJoyCon装着時はほぼ100%RCMモードで起動するはずです。
これを行う事で操作面に不備が出るだとかの話は聞きませんが、個人的にはあまりやらない方が良いと思います。理由は2つで、
ハードウェアMODだから、というのが1つ。もう1つは、JoyConってのは基本的にSwitchに装着して活用する物、という事です。
2つ目は分かりやすく言うなら「そのJoyCon、RCMモード起動用のJoyConって事を忘れんなよ?」って事です。
JoyConってのは基本的にはSwitchに装着している物ですから、普通に起動しようと思った時に意識していないと外し忘れて不意にRCMモードで
起動する事があります。加えて、再起動の事も考えなければいけません。システムを再起動するというのは重要な処理の1つです。
そんな時にRCMモードで起動してしまうと、場合によってはよろしくない事になる可能性も否定出来ません。
リードスイッチであれば磁石を近づけた際に、というようにワンアクションあるのでそういう事は起きにくいですが、普通にワイヤーで繋いでしまうと
JoyCon装着時に再起動して不意にRCMモードで起動してしまうなんて事はまあ起こり得る事態でしょう。
以下の動画のように右JoyConのピンを曲げてJoyCon装着時にショートさせる事も可能です。
ピンを曲げて10-9のショートを実現するようですが、これも個人的にはあまりやらない方が良いと思います。
理由は上で書いたはんだ付けと同じです。
まあとにかくショートの準備をして電源ボタンと音量上ボタンを同時押しする事で、SwitchはRCMモードで起動します。
RCMモードは真っ暗です。画面には何も表示されません。通常、Switchは電源ボタンを押したらすぐに任天堂のロゴが表示されるので、
ロゴが表示されなかったら「RCMモード(゚∀゚)キタコレ 」っていう認識で良いです。
Windowsでの話になりますが、RCMモード時にSwitchとUSB接続するとデバイスマネージャー上では「ほかのデバイス:APX」
と認識されます。APXとして認識されていればSwitchはRCMモードで起動しています。

●TegraRcmSmashでペイロードを送信して実行するまで現在リリースされているペイロードは最後に紹介します。
●用意するもの
・Switch本体
・PC(WIndows)
・
TegraRcmSmash・
zadig-2.3.exe・ペイロード
・USBケーブル(PCに合わせて A to C か C to C)
1、SwitchをRCMモードで起動する
2、SwitchとPCをUSBケーブルで接続する
※RCMモード起動前に接続しておいても良い
3、zadig-2.3.exe をダウンロードして起動する
4、上のドロップダウンリストでAPX、その下のドロップダウンリストでlibusbK (v3.0.7.0)を選択し、インストールする

5、デバイスマネージャーで以下のようになっているのを確認する

6、TegraRcmSmash1000.zip をダウンロードして解凍する
7、ペイロードをTegraRcmSmash.exeにドラッグアンドドロップ
8、Switchの画面を確認する
TegraRcmSmash.exe はコマンドプロンプトで以下のように使用しても良いですが、
TegraRcmSmash.exe payload.bin
ドラッグアンドドロップでも同じ事なので、好きなようにやってください。
●ペイロード・fusee.bin
https://twitter.com/ktemkin/status/988448011104628736Kate Temkin氏がリリースしたサンプルのペイロード。
Secure Boot Key、Device Key、IROMの内容 を表示する事が可能。

・biskeydump
https://switchtools.sshnuke.net/rajkosto氏のリリースした、BISキーを画面に表示する事が可能なペイロード。
BISキーはNAND(eMMC)のコンテンツ(ダンプ)を復号する事が可能です。

・moonflower
https://github.com/moriczgergo/moonflowermoriczgergo氏のリリースした、ヒューズ情報やGPIOの情報を画面に表示する事が可能なペイロード。

・hekate_ipl
https://github.com/nwert/hekatenaehrwert氏のリリースした、bootloader/package1を置き換えたりmicroSDカードにNAND(eMMC)をダンプしたりする事が可能なペイロード
ウォームブート/セキュリティモニタリング/カーネル/KIP1(Kernel Initial Process) をmicroSDカードから実行する事が可能で、
これにより開発者はCFWが実行可能となるようですが、現時点ではFW1.0.0~2.3.0のみに対応しています。
eMMCのダンプは全FWに対応しています。ダンプ機能は、パッチを当てたカーネル等を試す前に...という理由で搭載されたそうです。
eMMCのダンプはユーザー領域(ゲーム等)の約26GBのダンプを行わず、microSDカードはFAT32でフォーマットする必要があります。

・hekate_ipl mod
https://github.com/rajkosto/hekaterajkosto氏のリリースした、hekate_ipl のMOD版。オリジナルに比べeMMCのダンプ機能が改良されています。
・全eMMCパーティションのダンプに対応
・パーセンテージカウンターの修正
・USER(ユーザー領域)のダンプ時にエラーが発生したら再度ダンプするように
・exFATでフォーマットしたmicroSDカードにダンプ可能に
・RawNand(SYS+USER)のダンプが可能に
hekateは他にもMOD版はありますが、個人的にはrajkosto氏のMOD版をオススメします。
http://www.maxconsole.com/threads/switch-rcm-payloads-hekate-mods-full-emmc-nand-backup.46918/eMMCのダンプ(RawNandのみ)はrajkosto氏の
HacDiskMountで復号可能です。
各パート(PRODINFO/PRODINFOOF/BCPKG2-1-Normal-Main/BCPKG2-2-Normal-Sub/BCPKG2-3-SafeMode-Main/
BCPKG2-4-SafeMode-Sub/BCPKG2-5-Repair-Main/BCPKG2-6-Repair-Sub/SAFE/SYSTEM/USER)はそれぞれ単一のbinファイル
として復号されるのでそこから先は各々好きにしてください。
…疲れた。
hachi 2018/05/22 00:45
初歩的な質問ですが、右側のピンをショートさせても通常の携帯モード時に支障はでないのでしょうか?
hachi 2018/05/22 01:06
後もう一つ初歩的な質問で申し訳ないのですが、fusée geléeってなんて読むんですか?
>>hachiさん
はい、支障は無いです。記事で紹介してるショート(短絡)の役割はHomeボタンとして機能する事であって、
物理的に危害が及ぶようなショートではないので。ただ、JoyConのハードMODをやってる場合はなんとも言えません。
ハードMODをやった場合は実際の操作に不備が出る可能性も否定できないので。
fusee geleeはフランス語で、発音としてはフューズィジェリーって感じになります。
fuseeはロケットで、geleeはゼリー以外にも"凍った"というの意味があって、確か英語圏ではfrozen rocketと訳されたりもしてます。
この名前はこのexploitがコールドブートの状況下で利用可能なexploitである所から来ています。
五反田 2018/06/09 19:04
apkモードになっていてwindows10内もほかのデバイスapxとでてるのに
zadig-2.3でいざドライバーをいれようとしてもエラーがでます
五反田 2018/06/10 01:45
管理人様
ドライバーインストール及びHBLまで起動確認できました
ありがとうございます
??? 2018/07/19 17:02
ペイロードをTegraRcmSmash.exeにドラッグアンドドロップしてもswitch画面に何も表示されません。どの様にしたらよいでしょうか?
>>???さん 2018/07/19 17:02
TegraRcmGUIを試してみてください。
https://github.com/eliboa/TegraRcmGUI/releasesこちらはファイルをドラッグアンドドロップではなく、TegraRcmGUI.exeを起動して使用します。
"NO RCM" か "RCM OK" のように表示されるので、SwitchがRCMモードで起動しているかどうかを確認可能です。
RCM OKな状態でペイロードを送ってみても反応が無いようでしたら、USBケーブルを変えてみてください。
それで出来ないのであれば、そのSwitchはfusee geleeの対策版である可能性があります。
もしよかったら、Switchに貼ってあるシールに書かれたシリアルナンバーを教えて欲しいです。
XAJ400128XXXXX こんな感じで下5桁は隠して良いので。
私が知りたいのは「XAJ700438 ~ XAJ700439 」この範囲かどうかです。この範囲のSwitchは対策版との報告があがっています。
また、「XAW100857」「XAW700183」も対策版との報告があがっています。
??? 2018/07/19 22:18
シリアルナンバーはXAJ400456です。HBLを無事に導入出来ました。有り難うございます。あと、ポケモンクエストのセーブデータを編集したいのですが、方法を教えて頂けますでしょうか?

次ページ ≪ | HOME |
前ページ ≫