[SWITCH] RCMモードで起動してfusee-launcherでペイロードを実行するまで

・2018/11/11
(情報が古いから書き直したいと考えているが、時間が取れない。気が向いたら頑張る。)
・2018/07/19
(情報が古いから書き直したいと考えているが、時間が取れない。)
・2018/05/03
当記事執筆,公開

ReSwitchedチームのKate Temkin氏が発見/公開したTegraのブートROMのバグを利用したcoldboot exploitであるFusée Gelée
今回はSwitchでそのFusée Geléeのためのペイロードを実行するまでの手順を記事にします。

RCM_20180503_7.jpg


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-launcher
Kate Temkin氏のリリースしたオリジナル。PoCでありLinux/Mac向け
・Fusée Gelée Launcher for MacOS
https://github.com/SuperOkazaki/fusee-launcher
SuperOkazaki氏のリリースしたオリジナルのフォーク。MaC向け
・udev_rule_fusee_gelee_raspberry
https://github.com/Darkmelman/udev_rule_fusee_gelee_pi3
Darkmelman氏がリリースしたRaspberry Pi 3向けfusee-launcher
・NXLoader
https://github.com/DavidBuchanan314/NXLoader
David 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/TegraRcmSmash
rajkosto氏のリリースした、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を外してレールの下部を確認してみてください。見えにくいと思いますが、ピンがあるはずです。

RCM_20180503_1.jpg

この一番右側の10番ピンがHomeボタンと繋がっており、これをショートさせる事で隠されたHomeボタンとして機能します。
具体的には10ピンを、1ピンか7ピンか9ピンのどれかとショートさせればHomeボタンとして機能します。

fail0verflowチームは3Dプリント可能なショートパーツのデータを公開しています。これは形状的に10-7のショートですね。
RCM jig for the Switch
https://github.com/fail0verflow/shofel2/tree/master/rcm-jig

ebay等ではこれをベースにデザインを変えた物が売られていたりしますが、単なるショートにこんな物は不要です。
もちろん、確実に、スマートに、のような事を考えるなら持っていても良いと思います。
Switchシーンではクリップを使ったり、ワイヤーを使ったり、細いドライバーを使ったりといろいろな方法が出てきています。
私は以下のような感じでピンセットを使ってショートさせました。

RCM_20180503_2.jpg

RCM_20180503_3.jpg


1枚目が10-1のショートで、2枚目が10-9のショートです。
10-9のショートに関しては針金だったり細いドライバーだったりがやりやすいかもしれません。


まあとにかくショートの準備をして電源ボタンと音量上ボタンを同時押しする事で、SwitchはRCMモードで起動します。
RCMモードは真っ暗です。画面には何も表示されません。通常、Switchは電源ボタンを押したらすぐに任天堂のロゴが表示されるので、
ロゴが表示されなかったら「RCMモード(゚∀゚)キタコレ 」っていう認識で良いです。

Windowsでの話になりますが、RCMモード時にSwitchとUSB接続するとデバイスマネージャー上では「ほかのデバイス:APX」
と認識されます。APXとして認識されていればSwitchはRCMモードで起動しています。

RCM_20180503_4.jpg




●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)を選択し、インストールする

RCM_20180503_6.jpg

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

RCM_20180503_5.jpg

6、TegraRcmSmash1000.zip をダウンロードして解凍する

7、ペイロードをTegraRcmSmash.exeにドラッグアンドドロップ

8、Switchの画面を確認する


TegraRcmSmash.exe はコマンドプロンプトで以下のように使用しても良いですが、
TegraRcmSmash.exe payload.bin
ドラッグアンドドロップでも同じ事なので、好きなようにやってください。



●ペイロード

・fusee.bin
https://twitter.com/ktemkin/status/988448011104628736

Kate Temkin氏がリリースしたサンプルのペイロード。
Secure Boot Key、Device Key、IROMの内容 を表示する事が可能。

RCM_20180503_7.jpg


・biskeydump
https://switchtools.sshnuke.net/

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

RCM_20180503_8.jpg


・moonflower
https://github.com/moriczgergo/moonflower

moriczgergo氏のリリースした、ヒューズ情報やGPIOの情報を画面に表示する事が可能なペイロード。

RCM_20180503_9.jpg


・hekate_ipl
https://github.com/nwert/hekate

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

RCM_20180503_10.jpg


・hekate_ipl mod
https://github.com/rajkosto/hekate

rajkosto氏のリリースした、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ファイル
として復号されるのでそこから先は各々好きにしてください。



…疲れた。

[ 2018/05/03 05:42 ] カテゴリ Switch | コメント(38)

▼コメント




hachi 2018/05/22 00:45 
初歩的な質問ですが、右側のピンをショートさせても通常の携帯モード時に支障はでないのでしょうか?


hachi 2018/05/22 01:06 
後もう一つ初歩的な質問で申し訳ないのですが、fusée geléeってなんて読むんですか?


管理人 kood 2018/05/22 01:25 
>>hachiさん
はい、支障は無いです。記事で紹介してるショート(短絡)の役割はHomeボタンとして機能する事であって、
物理的に危害が及ぶようなショートではないので。ただ、JoyConのハードMODをやってる場合はなんとも言えません。
ハードMODをやった場合は実際の操作に不備が出る可能性も否定できないので。
fusee geleeはフランス語で、発音としてはフューズィジェリーって感じになります。
fuseeはロケットで、geleeはゼリー以外にも"凍った"というの意味があって、確か英語圏ではfrozen rocketと訳されたりもしてます。
この名前はこのexploitがコールドブートの状況下で利用可能なexploitである所から来ています。


五反田 2018/06/09 19:04 
apkモードになっていてwindows10内もほかのデバイスapxとでてるのに
zadig-2.3でいざドライバーをいれようとしてもエラーがでます


管理人 kood 2018/06/09 20:14 
>>五反田さん
TegraRcmSmashにGUIを採用したTegraRcmGUIにlibusbKのインストーラーも含まれているので試してみてください。
https://github.com/eliboa/TegraRcmGUI/releases
apx_driverフォルダにあるInstallDriver.exeでインストールが可能です。
それで無理なら私には分かりません。


五反田 2018/06/10 01:45 
管理人様
ドライバーインストール及びHBLまで起動確認できました
ありがとうございます


??? 2018/07/19 17:02 
ペイロードをTegraRcmSmash.exeにドラッグアンドドロップしてもswitch画面に何も表示されません。どの様にしたらよいでしょうか?


管理人 kood 2018/07/19 19:01 
>>???さん 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を無事に導入出来ました。有り難うございます。あと、ポケモンクエストのセーブデータを編集したいのですが、方法を教えて頂けますでしょうか?


管理人 kood 2018/07/19 22:45 
>>???さん
セーブデータのバックアップやリストアにはCheckpointを使用してください。
https://github.com/BernardoGiordano/Checkpoint/releases
ポケモンクエストに関してはこういうのがありますよ。
https://github.com/Thealexbarney/PqSave
https://gbatemp.net/threads/pokemon-quest-editor.505705/page-12
ああ、私はポケモンクエストをやってないのでこれに関するアドバイスは出来ません。


こうた 2018/08/04 11:21 
switchをRCMモードにしたのですが、pcに接続してもAPXと認識されません…どうしたらよいですか?因みにswitch本体バージョンは5.1.0です。


管理人 kood 2018/08/05 11:19 
>>こうたさん
そもそもRCMで起動出来てないか、USBケーブルがダメか、PC側のUSBポートのドライバがダメ。
私なら上記のような事を考えます。まずは他のPCで試したり、USBケーブルを変えてみてください。
Android端末であればOTGアのダプタがあればRekadoでペイロードが送信可能です。
https://github.com/MenosGrante/Rekado/releases
(iOSでもfusee geleeは使えるそうですが、脱獄しないとダメなようです。)


名無し 2018/09/26 15:18 
FW6.0.0でもRCMモードに入れますか?

手順の通り電源ボタンと音量上ボタンと隠しHOMEボタンで起動し本体は真っ黒の画面のままで起動しているようなのですが、パソコンに接続してもAPXとして認識されません。
前述にもある通りUSBケーブルがダメな可能性もあると思うのですが、そもそもFW6.0.0でもRCMモードができるのか知りたい次第です。


管理人 kood 2018/09/26 17:30 
>>名無しさん
FW6.0.0でも問題無くRCMで起動可能です。FWバージョンは関係無く、現行のSwitch全てがRCMで起動可能なはずです。
今年の7頃から脆弱性の対策機が出荷されていますが、対策機でもRCM自体は起動可能です。
(対策機の場合、APXのデバイスとして認識はするものの、ペイロードを実行しても何も起こりません。)

TegraRcmGUIに同梱されているドライバをインストールしてみてください。
https://github.com/eliboa/TegraRcmGUI/releases
apx_driverフォルダにあるInstallDriver.exeでインストール可能です。
これでデバイスマネージャ上でAPXとして認識されていなけば、他を疑った方が良いかもしれません。


名無し 2018/09/28 22:25 
先日はありがとうございました。
APXが認識されなかったのはUSBケーブルの問題でした。

それからRCMモードでHekateまでの起動はできたのですが、たまにしかHekateに入り込めません

何が原因かわかりますか?
起動できないときはHEKATE-IPLのロゴのようなものが表示された後、画面がまっくらのままです。電源を押すとOFWが起動します。
ReiNX.binをロードするとReiNXが起動してくるのですが、hekate_ctcaer_4.2.binをロードすると上記のような現象です。


管理人 kood 2018/09/29 01:13 
>>名無しさん
hekateで「"Options" → "Auto HOS power off" → "Disable"」この順に選択してAuto HOS power off機能を無効にしてください。
私の認識が正しいとすれば、そうする事でその現象は防げるはずです。


ピカチュウ 2018/11/17 11:04 
ポケットモンスター レッツゴー ピカチュウのセーブデータの編集は可能でしょうか?方法を教えて頂ければ幸いです。


管理人 kood 2018/11/17 11:59 
>>ピカチュウさん
本日リリースされたPKHeX 18.11.16は「Let's Go! ピカチュウ/イーブイ」の両方に対応しているようです。
https://projectpokemon.org/home/files/file/1-pkhex/
また、セーブデータの改造ではありませんがLayeredFSでMODを行えるファイルも出回っているようです。
https://gbatemp.net/threads/dio-ventos-pokemon-lets-go-pikachu-and-lets-go-eevee-mods.523519/
https://gbatemp.net/threads/pokemon-lets-go-pika-eve-all-candy-pokey-ball-x999.523335/
私は今作は購入していないので、こういった物の使い方は聞かないでください。


ピカチュウ 2018/11/17 13:55 
セーブデータを編集できました。ありがとうございます。switch本体のアップデートは行わないほうが良いのでしょうか?


管理人 kood 2018/11/17 14:30 
>>ピカチュウさん
基本的にはアップデートしても構いません。 hekate/Atmosphere/ReiNX/SX OS は最新のFWである6.1.0でも使用可能です。
fusee-geleeはFWのアップデートでは対策出来ないと言われているので、新しいFWがリリースされても、CFW側がそのFWに対応するのを
待てば良いだけです。ただ、将来的にはfusee-geleeではなくFWの脆弱性を利用したハックがリリースされる可能性があるので、それを
利用したいと考える人はアップデートしないか、ChoiDujourNXを活用する必要があります。ChoiDujourNXに関しては以下の記事で。
http://cmd0725.blog.fc2.com/blog-entry-2592.html


名無し 2018/12/04 21:52 
改造するの初めてなんですが、自分のswitchが対策機なのかわからないのですが、
シリアルは下記の通りです。
XAJ10001405025←販売した2日らへんで購入した品です
XAJ40042568151←忘れました。 


管理人 kood 2018/12/04 23:05 
>>名無しさん 2018/12/04 21:52
対策機が出荷され始めたのは2018年6月下旬辺りだと言われています。そのため前者は確実に未対策と言えるでしょう。
後者は、GBAtempのスレでの報告によってXAJ4004600X以下がセーフであると言われているため、おそらく大丈夫なはずです…
https://gbatemp.net/threads/switch-informations-by-serial-number-read-the-first-post-before-asking-questions.481215/
対策機でもRCMでの起動は可能です。ペイロードを送信しても無反応であれば、対策機と結論付ける事が出来ます。


名無し 2018/12/04 23:26 
管理人さん、夜分遅くにありがとうございました。

実機で確実に判断したい で調べたいと思っております。

ここのサイトに載っているショートをさせるというのは、どうすればよいのでしょうか?
FW:2.2.0 XAJ10001405025(何度かのアップデート)
FW:4.1.0 XAJ40042568151(購入当時)


管理人 kood 2018/12/04 23:40 
>>名無しさん
細いドライバー, ピンセット, 針金, クリップ 等、通電するものをこの記事に書いたように指定のピンに当て、音量上(+)ボタンを押した状態で電源ボタンを
押せばそれでOKです。成功すればRCM(画面は真っ暗)で起動します。この際の "ピンからピンへ電流が流れる事,流す事" をショートと表現しています。


名無し 2018/12/05 14:47 
Switch_hack_check_set で 0x7000と出ました。
このRCMモードを起動するには、毎回ショートをしないとダメなんでしょうか?


管理人 kood 2018/12/05 20:58 
>>名無しさん
はい。毎回ピンをショートさせて起動させなければいけません。
ピンのショート無しで100%確実にRCMで起動する「AutoRCM」というものがありますが、最初からそれを使うのはオススメしません。AutoRCMを使うと
Switchが不意に起動したとしてもRCMですから画面は真っ暗で、起動していると気づかなければ意図せずバッテリーが消費されてしまいます。
また、AutoRCMは電源オフ時やRCM時に充電速度が遅くなります。AutoRCMを使っていると、ペイロードを使ってFWを起動した状態でないと電力の
供給量が通常の半分以下になるという事が判明しています。(ペイロードを使ってFWを起動した状態であれば充電速度は問題無し)
AutoRCMを使っている際にバッテリーを完全に消費させてしまうというのはあまり褒められたものではなく、AutoRCMユーザーは基本的にはペイロードから
FWを起動した状態でのスリープ運用が推奨されています。
以上が、私が最初からAutoRCMを使うのをオススメしない理由です。使うならSwitchのハックに慣れてきてからが良いですね。



名無し 2018/12/05 21:07 
管理人さん、丁寧に説明をありがとうございます。
Amazonとかに売ってる「RCMツール 任天堂スイッチ対応 ショートコネクタ RCMクリップ 短絡コネクタ」というのは、簡単でしょうか?針金やピンセット等どうも上手く出来ないのです、、、


管理人 kood 2018/12/05 21:29 
>>名無し
あれらは一般的に「RCMジグ」と呼ばれる品です。しっかりと作られたジグ(=針金の位置が良いジグ)であれば100%確実にRCMで起動可能です。
RCMジグと言えども針金の位置が悪いとRCMで起動出来ませんからね。
針金やクリップ等でRCMジグを自作する人もいますが、そういった物がうまく作れないのであれば買っても良いと思いますよ。


名無し 2018/12/06 21:42 
管理人さん、本当に色々ありがとうございます。
RCMジグを購入してみます。


名無し 2018/12/08 17:15 
今日RCMジグがきたので、試しました
結果2台とも Smashed the stack with 0x7000 と出ました。
他にも注意点等ありましたら、どうか教えていただけますでしょうか。


管理人 kood 2018/12/08 21:13 
>>名無しさん
注意点ですか。まあ何をするにせよ、とりあえずeMMC(NAND)をバックアップした方が良いと思います。
SwitchがブリックしたとしてもeMMC内のデータの改竄や破損によるものなら、リストアで復旧出来ますし。
私は面倒でそれに関する記事を書いていないので、以下を見てやってください。
https://re-doing.com/archives/7650
私からすると不十分な情報に思えますが、それは記事書いてない私が言えた事ではありませんね…

仮に2台の内1台を最新のFW(6.2.0)にアップデートしようとお考えでしたら、4.1.0の方をアップデートしてください。
2.2.0の方をアップデートしたいなら止めはしませんが、私であればアップデートするなら4.1.0の方を選びます。
これの理由はChoiDujourNXの記事の「ダウングレードの必要性に関して」という項目を読めば分かってもらえるかと…
http://cmd0725.blog.fc2.com/blog-entry-2592.html
アップデートするならChoiDujourNXを用いてダウングレードに備えるのがオススメですが、ChoiDujourNXを使うならまずは4.1.0機でSwitchの
ハックに慣れた方が良いです。私から言えるのはこれくらいです…。


ヒカル 2018/12/16 14:28 
突然すいません。FW 6.2.0何ですがCFWできますか?


管理人 kood 2018/12/16 16:22 
>>ヒカルさん
はい、可能です。問題はあなたのSwitchが対策機かそうじゃないかという所ですけど。
対策機ではRCMで起動こそ出来るものの、ペイロードの実行が出来ません。
ペイロードは何でも良いですが、とりあえずfusee.binとかbiskeydumpを使って対策機か否かを調べてみてください。


テラ 2018/12/18 16:35 
最近購入した機器で、対策機一覧表(セルシート)には無い[XAJ10041]のシリアルでした。
TegraRcmGUIでペイロードを入れた所、Payload injected!と緑のフォントで表示が出たのですが
switchには何も映らず... これは対策機で間違いないですかね?


管理人 kood 2018/12/18 16:41 
>>テラさん
はい。おそらくそうだと思います…
XAJ1003x が対策機らしいので、 XAJ10041 はその後に生産されたSwitchなのかもしれません。


ヒカル 2018/12/18 17:09 
テラさんと同じでswitchに何も映らないです・・・{XAJ70061812041}シリアルです


テラ 2018/12/18 18:41 
管理人さん、ありがとうございました!
手を出す術がない私はその時が来るまで待ち続けようと思います...

>>ヒカルさんのも対策されてそうですね。XAJ7004XX以降なので...


ヒカル 2018/12/18 21:09 
管理人さんありがとうございました。
どうするか考えてみますね…


(記入必須)


(記入必須)






「英数字90%以上 or URL含む」でコメントを規制中です。コメントを投稿する際は日本語で、かつURLは含めないでください。
(URLは最初のh抜いて規制回避可能)
※上にある送信ボタンを押すとコメント送信の確認フォームに移ります。確認フォームより送信ボタンを押してください。
※確認フォームにある「メールアドレス」に入力された内容は管理人のみ確認可能です。空欄で構いません。
※確認フォームにある「タイトル」「パスワード」は当ブログでは使用していません。
※確認フォームにある「URL」は名前のリンクとして機能します。
※確認フォームには非公開コメントのチェック項目がありますが、非公開コメントは受け付けていません。
メールフォームより連絡頂ければメールにてお返事致します。


お売りください。駿河屋です。