wafuwafu雑記帳

気になったことを気ままに書き連ねていきます。

カテゴリ:ゲーム > PSVIta

HENkaku Enso 3.60とは異なります。3.60については以下のリンクよりご確認ください。



HENkaku Enso 3.65について
 HENkakuとは「いわゆるHEN」、つまりHomebrew ENablerであり、一時的に自作ソフトなど未署名のものを動かすということをコンセプトとしています。実はtaiHENkakuという、プラグインなどHENの機能を上回るようなものが実験的にリリースされたものがありましたが、HENkakuに統合されるなどしているのが実情です。
 要はHENkaku自体、CFW(カスタムファームウェア)のようなのもを一時的に実現するシステムなわけですが、それを恒久化、つまり起動時からHENkakuを有効にしようというのがEnsoなわけです。

<参考までにtaiHENkakuのページ>…フックしてプラグインを実現するから、大きな変革、大変革(たいへんかくと誤訳していますが)だということです。

(ここまではHENkaku Enso 3.60と同じです)

 しかしながら、以下のリンクより確認して頂ければ分かる通り、3.60と3.65のEnsoでは使用しているexpolitが異なるため、EnsoをOFWの3.65上で「インストール」できないのです。

 なにを言いたいかといいますと、3.65 Ensoにしたが最後、この環境から抜け出せなくなるわけです。もちろん3.65向けアプリケーションを楽しめますし、利点は多いのですが…
 3.60には戻せない(ダウングレードはvitaの特殊なシステム構造上非常に厳しい…詳しくは本ブログのファイルシステムを解説している記事をご覧くだいさい)、3.65のOFWには戻せるがそれ以降HENkakuなどは現状一切導入不可。これは突いているexploitの都合です。
 疑問に思った方は以下の記事を御覧頂き、ご理解いただきますようお願いいたします。

Enso 3.65を導入するメリット・デメリット
・メリット
 ①起動時からHENkakuを使えるので手間がかからない
 ②オフライン環境でもHENkakuを常時楽しめる 
 ③変換アダプタを用いてmicrosdをuma0またはux0として、プラグインを用いてマウントする場合(いわゆるsd2vita)、常にマウントできるので利便性が高い
  →プラグインの有効化はHENkaku起動後のため
 ④3.65まで対応のアプリケーション等を楽しめる(3.60 Ensoでは3.60までのアプリケーションしか楽しめいない)
 ⑤PSNへのアクセスが可能、アプリケーションのダウンロードなどすべての機能が使用可
  →これについては携帯機ということもあり、余程の(PSP末期にあったディスクのIDを偽装し不法に割引を受けるなど)ことをしなければBANはないのではないでしょうか。やはり終焉を迎えつつある携帯ゲーム機という限られた中でわざわざ検知できない、というのがオチでしょうが…

・デメリット
 ①プラグインが異常をきたした場合、起動できなくなる
  →セーフモード呼び出しからのデータベース再構築でプラグインが無効化できます(3.60のRを押しながら起動とは異なります!)
 ②OSなどのファイルを下手に触ると本当に起動できなくなる
 →もしかたら純正のリカバリメニューが生きていれば、最新FWにはできるかもしれません
  →FWを「汚して」しまった場合、終わりです。再インストールできません(3.60と異なり再インストール不可、その訳はexpolitの種類によるもの)
 ③そもそも起動プロセスの根幹に介入するのでリスクが有る
 ④3.60と違ってもとに戻せない、戻れない
 ⑤PSNにアクセスが可能なので、BANされる可能性はあるが…
  →衰退寸前の携帯ゲーム機という媒体上、SIEがそこまで対策するとは思えない

準備
 まずHENkaku Enso 3.65には、HENkaku 3.60が導入されていることが前提条件となります。HENkaku Enso 3.60ではありませんEnso 3.60はアンインストールする必要があります。HENkaku Enso 3.65インストール時はHENkaku 3.60の状態でなければいけないのです。以下のリンクよりHENkakuを導入し、さらにvitashellを導入した上でリスクのあるユーザープログラムを有効化にチェックを入れることでvita本体の準備が整います。




 次に3.65用のアップデータとそれをゴニョゴニョするファイルを手に入れます。以下のリンクより、PSP2UPDAT.PUPとupdater.vpkを手に入れます。

 ux0:app/UPDATE365/に、PSP2UPDAT.PUPを配置します。updater.vpkはvitashell経由でインストールしておきます。
 その後、「プラグインをすべて無効にして」「再起動して」ください。これは絶対の約束です。守らなくて失敗しても自業自得です。そもそもすべての操作が自業自得ですが…
 これで準備ができました。vitaを起動し、ブラウザからHENkakuを動作させます。(Ensoではない!プラグインが動いていたら駄目!Ensoはアンインストールしてあること前提!)なにもアプリケーションを開いてはいけません。(そりゃ、HENkakuのためにブラウザは使うでしょうが、それは例外です)
 その上で先程インストールしたアップデータを起動し、指示に従い3.65 Ensoにアップデートします。普通にうまくいくので、よく英語を読んで下さい。理解できずコマンドを押すことの無いよう、写真は一切ありません。
 導入後、うまく起動すれば成功です。

★プラグインが悪さをするor無効にし忘れた場合
 →セーフモードで起動し、データベースの再構築でプラグインが無効になります。3.60のRを押しながら起動とは異なりますので、注意して下さい。3.60には対応していても、3.65には未対応なものもあります。
★Enso 3.65のインストーラー起動時にエラーが出る場合は、再起動をしてvitashellなど他のアプリケーションを一切起動せずに直接インストーラーを起動すると、うまくいきます。vitashellなどはいわゆるシステム領域に介入して一時データの書き換えを行うので、Enso 3.65にはよろしくいため、エラーを吐くのです。

Enso 3.60とは大きく異なります!
 Enso 3.65ではアンイストールができません。(できますが、現時点において二度とEnsoもHENkakuも利用できなくなります!)Enso 3.60ではHENkakuに戻ったり純正FWに戻ることも可能ですが、Enso 3.65ではEnsoのままです。
 Ensoの起動メカニズムは3.60、3.65ともに同一(Non Secure Boot Looaderを実行する、つまりブートローダーに介入してKASLRなどが起動する前に乗っ取りをかけて動作するようですので、HENkaku有効化の際のexploitとは全く異なるものを突いているわけです)ですが、webkit exploitおよびkernel expolitは修正された(webkitは3.61、kernelは3.63)ため、3.65以降ではEnsoから離れられないわけです。
 高度なシステム構造への理解を深め、みなさんのvitaライフがさらに充実することを願っております。

HENkaku Enso 3.60について
 HENkakuとは「いわゆるHEN」、つまりHomebrew ENablerであり、一時的に自作ソフトなど未署名のものを動かすということをコンセプトとしています。実はtaiHENkakuという、プラグインなどHENの機能を上回るようなものが実験的にリリースされたものがありましたが、HENkakuに統合されるなどしているのが実情です。
 要はHENkaku自体、CFW(カスタムファームウェア)のようなのもを一時的に実現するシステムなわけですが、それを恒久化、つまり起動時からHENkakuを有効にしようというのがEnsoなわけです。

<参考までにtaiHENkakuのページ>…フックしてプラグインを実現するから、大きな変革、大変革(たいへんかくと誤訳していますが)だということです。


Enso 3.60を導入するメリット・デメリット
・メリット
 ①起動時からHENkakuを使えるので手間がかからない
 ②オフライン環境でもHENkakuを常時楽しめる 
  →メールを用いたオフラインでの有効化の手法は起動率が極めて悪いが、Ensoは100%起動
 ③変換アダプタを用いてmicrosdをuma0またはux0として、プラグインを用いてマウントする場合(いわゆるsd2vita)、常にマウントできるので利便性が高い
  →プラグインの有効化はHENkaku起動後のため
 ④3.60 Ensoはインストール・アンイストールができるので一方通行ではない
  →3.65 Ensoは一方通行ですのでご注意を!

・デメリット
 ①プラグインが異常をきたした場合、起動できなくなる
  →起動時にLボタン長押しでプラグインを無効化して起動できますので
 ②OSなどのファイルを下手に触ると本当に起動できなくなる
  →もしかしたら純正のリカバリメニューが生きていれば、最新FWにはできるかもしれません
  →FWを「汚して」しまった場合、3.60のFWをクリーンインストールする手段はあります
 ③そもそも起動プロセスの根幹に介入するのでリスクが有る

準備
 まずHENkaku Enso 3.60には、HENkakuが導入されていることが前提条件となります。以下のリンクよりHENkakuを導入し、さらにvitashellを導入した上でリスクのあるユーザープログラムを有効化にチェックを入れることでvita本体の準備が整います。




 次に以下のリンクよりHENkaku Enso 3.60のファイルを手に入れます。箱みたいな物を押すと「enso.vpk」が手に入るので、それをvitaにvitashellを用いてusb転送でもしてあげます。もちろん送り先はux0またはその中のフォルダが望ましいです。


 送り込んだenso.vpkをvitashellを用いてインストールします。警告が出るはずですが、続行して構いません。
 これで準備完了です。

Enso 3.60の導入
 HENkakuを有効にした上で、「プラグイン類は一旦すべて無効の状態で」、インストールしたアプリケーションのバブルをLiveArea(いつもの起動したときの画面です)から起動します。
 あとは画面の指示に従い、インストールをしてください。その際、画面に出てくる英語の説明を読んで置くことを強くおすすめします。
 インストール自体は一瞬で終わります。再起動がかかり、起動時のロゴが変わっていれば成功です。

Enso 3.65とは異なります!
 Enso 3.65ではアンイストールができません。(できますが、現時点において二度とEnsoもHENkakuも利用できなくなります!)Enso 3.60ではHENkakuに戻ったり純正FWに戻ることも可能ですが、Enso 3.65ではEnsoのままです。
 Ensoの起動メカニズムは3.60、3.65ともに同一(Non Secure Boot Looaderを実行する、つまりブートローダーに介入してKASLRなどが起動する前に乗っ取りをかけて動作するようですので、HENkaku有効化の際のexploitとは全く異なるものを突いているわけです)ですが、webkit exploitおよびkernel expolitは修正された(webkitは3.61、kernelは3.63)ため、3.65以降ではEnsoから離れられないわけです。

この記事では私自身よくわからない技術的な解説を含んでいます。概要のみ載せていますので、詳細は情報元で確認(英語)するようにしてください。間違いがあればコメントにてお教えください。

HENkakuとHENkaku Ensoでは使っているexpolitが異なる
 HENkakuではwebkit expolit(3.61で対策済み)と2つのkernel expolit(3.61および3.63で対策済み)を用い、さらにその間にROPによる攻撃でASLRやNXビットを無効化することで、無署名コードの実行を可能にしています。現在のHENkakuはtaiHENkakuの技術を用いており、プラグインなどを実現しています。このプラグインのプロセス自体はEnsoも同一ですが、Ensoは起動時のプロセスが全く異なります。
 HENkaku EnsoではNSBL(Non-Secure Boot Loader)における典型的なバッファオーバーフローに細工をすることで乗っ取りをかけてしまう仕組み(3.67で対策済み)です。それによりASLRなどが有効になる前に乗っ取れてしまうので、このexploitだけで乗っ取れてしまうのです。

 以下の画像はVita Development Wikiにあるものですが、この図から解説をすると、EnsoはARMにおけるはじめのプロセスであるNSBL(Non-Secure Boot Loader)を乗っ取ることでそれ以降のプロセスを掌握します。それに対しHENkakuではARMにおける一番下の「信用されていない」プロセスからwebkitやkernelのexploit、ROPを用いて権限を昇格させているわけです。

 ですからHENkakuとHENkaku Ensoでは、動作が全く異なってくるわけです。逆にいえばwebkit exploitを見つけてさらにkernel expolitを見つければ最新のFWでもHENkakuは動作します(the flow氏はここまで行き着いているようです)。しかしEnsoのように起動時から乗っ取りをかけるのは、NSBLのexpolitが3.67で塞がれた今、実現することができません。つまり、今の枠組みで言えばwebkit(またはそれに準ずるusermodeなもの)、kernel、NSBLまたはそれ以上の権限を持つレベル(F00D、TrustZoneなど)、という3つのexploitがないと3.60のような状況にはなりえないわけです。(3.65のような状況で良ければNSBLまたはそれ以上の権限を持つレベルさえ乗っ取れれば良い)

ChainOfTrust

HENkakuのexploit
 第1段階としてwebkit expolitを用いてusermodeの攻撃を行います。そもそもwebkitにおいてASLRを無効化するメソッドが多々ある他、認証いらずでブラウザを開けることなどがwebkit expolit発見・利用への第一歩だというのです。
 Javascriptにおける実装の甘さを突き、メモリを様々な手法で書き換えていくことで(正確にはデータを動かしていく)最終的にコードの実行に至るというのです。


 第2段階としてROPを用いてメモリ内において再配置を行い、その旨をサーバーに送り、次の段階のペイロードを取得するっぽいです。

 第3段階ではROPを用いてコードなどを流し込んでいくようです。

 第2段階と第3段階ではkernel expoloitであるHeap use-after-free in sceNetSyscallIoctlと、sceIoDevctl does not clear stack bufferが実行されているようです。もちろん、巨大なROPチェーンを要する、とされています。

 まったくもって難解なのですが、こういうことなのでしょうか。なにかご指摘ありましたらコメントにてお知らせください。

HENkaku Ensoのexploit
 先述しましたとおり、NSBLを乗っ取ることでそれ以降のプロセスも乗っ取れるので、起動時から1つのexploitでハックを実現しているようです。なお、F00Dとは全く異なりますので、ご注意ください。
 細かい話はYifanLu氏のサイトで確認できます。なお、Ensoはbrick防止のために大変な手間を掛けているということが伺えます。


おわりに
 少しでも皆さんにVitaの仕組みをご理解頂ければ幸いです。

※ROPとは攻撃手法のひとつとお考えください。それを大きく組むことで、セキュリティの突破をするのがいまの主流となっています。なので、webkitやカーネルを攻撃する手法として今回用いられたと考えられます。

↑このページのトップヘ