Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kernel/VM #14 発表資料
Search
orumin
July 21, 2018
Technology
640
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kernel/VM #14 発表資料
orumin
July 21, 2018
More Decks by orumin
See All by orumin
あのころの iPod を どうにか再生させたい
orumin
2
2.9k
ヴィンテージマシンと付き合う - kernel/vm online 5
orumin
0
1.2k
むかしの RISC、むかしの Unix
orumin
7
3.8k
Fundamental of architecture to implementing OS on AArch64
orumin
3
5.4k
Kernel/VM Kansai #9
orumin
0
1k
Unikernels report
orumin
2
530
第13回Kernel/VM勉強会発表資料
orumin
1
1.7k
第12回カーネル/VM探検隊
orumin
0
400
第11回 Kernel/VM探検隊 発表資料
orumin
1
610
Other Decks in Technology
See All in Technology
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
1.8k
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
620
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
2k
LLMにもCAP定理があるという話
harukasakihara
0
310
手塩にかけりゃいいってもんじゃない
ming_ayami
0
470
MCP Appsを作ってみよう
iwamot
PRO
4
560
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
140
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
870
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.2k
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
130
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
300
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
5
1.4k
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
11
38k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
400
Navigating Weather and Climate Data
rabernat
0
220
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
610
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Side Projects
sachag
455
43k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
160
Transcript
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 1/27 Programming on PS4 Programming
on PS4 orumin (@kotatsu_mi) 1
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 2/27 2
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 3/27 PS4 での任意コード実⾏ PS4 での任意コード実⾏
WebKit の脆弱性と BadIRET と呼ばれる脆弱性を突かれていた 前回の Kernel/VM での RKX1209 ⽒の発表 任意コードが実⾏されるように https://speakerdeck.com/rkx1209/hell-on-sony-snatch-the-kernel- privilage-from-browser 3
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 4/27 PS4 ハックの現状 PS4 ハックの現状
時代は進んだ FW 5.05 まで homebrew が使える exploit が公開 4.05 ,4.55 ,5.05 向けに kernel exploit が公表済み 4.55 も 5.05 も BPF の race condition を突くもの OpenOrbis team が Mira project 進⾏中(フレームワー ク) 4
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 5/27 PS4 でこんなことまで…… PS4 でこんなことまで……
5
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 6/27 今回のお題:PS4 でコードを動かそう 今回のお題:PS4 でコードを動かそう
脆弱性については が詳しい どうやって動かすかももちろん⾯⽩いですが 何かを動かすこと⾃体も⾯⽩いですよね 実際にコードを動かしてみよう https://github.com/Cryptogenic/Exploit-Writeups 6
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 7/27 PS4 でコードを動かすには PS4 でコードを動かすには
1. PS4 で exploit と payload を実⾏する WebKit 上で exploit を実⾏し外部から payload のバイナリを注⼊ (主に TCP/IP 経由) 画⾯描画は canvas を乗っ取って描画するなど制約あり 環境構築やコードの記述はラク 2. PS4 のアプリケーションとして実⾏する 上記制約がない やや準備がめんどい 7
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 8/27 PS4 “payload” SDK PS4
“payload” SDK 今回はこちらの使い⽅に触れません サークル「らぼちっく;げーと」にこっちを触ったときの話を寄 稿しました コミックマーケット C94 で頒布されると思います 8
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 9/27 psxdev PS4 SDK psxdev
PS4 SDK 今回はこちらについて Hitodama あるいは psxdev と名乗る⼈物が作 成 fMSX の移植版の作成実績アリ 最近 FW 5.05 にも対応 9
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 10/27 PS4 Hardware PS4 Hardware
PS4 Sony のゲームコンソール AMD の Jaguar ベースの APU を搭載 つまり x86_64 ですね メインメモリが GDDR5 な 8GB のメモリ CPU と GPU を接続する onion バスが拡張されているらし い 10
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 11/27 PS4 So ware PS4
So ware PS4 はコアをひとつ占有し動作する OS があ る 名は Orbis OS FreeBSD 9.0 の fork libc も system call も使える ツールチェーンには LLVM/Clang が採⽤ 11
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 12/27 Sony Executable Sony Executable
PS2 も PS3 も PSP も PS Vita も ELF を使っている ファームウェアでのライブラリとしては prx という形式にしたも のを使っていた PS3 や PS Vita では さすがに署名したり暗号化したりしている SELF … Signed Executable and Linkable Format SPRX … Signed PPU Relocatable Executable アプリのメタデータとして SFO という形式のバイナリ これらをアーカイブにした EBOOT.PBP (PSP のみ)や pkg 12
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 13/27 PS4 Executable PS4 Executable
やっぱり SELF やっぱり SFO やっぱり pkg 13
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 14/27 PS4 Homebrew PS4 Homebrew
OS が Unix 系なのもあって普通に GCC や Clang でイケる libc や Sony 独⾃の API は sprx をロードすれば叩ける sprx をロードしたり API のプロトタイプ宣⾔を⽤意したりする SDK …… もうあったー! 14
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 15/27 環境構築 環境構築 README どおりにやればおおむね⼤丈夫
ただし macOS 前提…… しかもやや⼿順が抜けていておかしい 次から環境構築⼿順の正確なものを記載します もしかしたら後で README に pull-req 出すかも https://github.com/psxdev/ps4sdk/tree/firmware505 15
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 16/27 環境構築 - LLVM のビルド
環境構築 - LLVM のビルド export PS4DEV=/usr/local/orbisdev mkdir -p $PS4DEV/git/crossllvm && cd $PS4DEV/git/crossllvm git clone https://llvm.org/git/llvm.git cd llvm/tools git clone https://llvm.org/git/clang.git git clone https://llvm.org/git/lld.git cd ../projects git clone https://llvm.org/git/compiler-rt.git cd ../.. mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/orbisdev/toolcha -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-scei-ps4 \ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \ -DCOMPILER_RT_BUILD_BUILTINS:BOOL=OFF -DCOMPILER_RT_BUILD_SANITIZERS:BOOL=OFF -DCOMPILER_RT_CAN_EXECUTE_TESTS:BOOL=OFF -DCOMPILER_RT_INCLUDE_TESTS:BOOL=OFF 16
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 17/27 環境構築 - binutils のビルド
環境構築 - binutils のビルド cd $PS4DEV/git git clone git://sourceware.org/git/binutils-gdb.git binutils cd binutils ./configure --prefix="$PS4DEV/host-osx" --target="x86_64-pc-freebsd9" \ --disable-nls \ --disable-dependency-tracking \ --disable-werror \ --enable-ld \ --enable-lto \ --enable-plugins \ --enable-poison-system-directories make -j4 make install 17
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 18/27 環境構築 - PS4SDK のビルドと設定
環境構築 - PS4SDK のビルドと設定 export PS4SDK=$PS4DEV/git/ps4sdk export PATH=$PS4DEV/host-osx/x86_64-pc-freebsd9/bin:$PS4DEV/toolchain/bin:$PATH cd $PS4DEV/host-osx/x86_64-pc-freebsd9/bin ln -s ld orbis-ld cd $PS4DEV/git git clone -b firmware505 https://github.com/psxdev/ps4sdk cd ps4sdk make -j4 ln -s $PS4SDK/include $PS4DEV ln -s $PS4SDK/lib $PS4DEV ln -s $PS4SDK/make $PS4DEV ln -s $PS4SDK/crt0.s $PS4DEV ln -s $PS4SDK/linker.x $PS4DEV 18
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 19/27 環境構築 - liborbis のビルドと設定
環境構築 - liborbis のビルドと設定 こちらの README の⼿順は正確なのでこの通りにするだ け liborbis は正確には絶対必要ではないのですがあると便利 2D ゲーム向けの関数群やゲームパッド⼊⼒の受付 libz や libpng の移植 とくに elf-loader や ps4link はあると便利 https://github.com/orbisdev/liborbis 19
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 20/27 GNM と GNMX GNM
と GNMX PS4 で導⼊されているグラフィックス API GNM が低レベル,GNMX が⾼レベルの API GNM の API の例 https://github.com/ps4dev/libSceGnmDriver/blob/master/include/gnm_d 20
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 21/27 GNM GNM #pragma once
#include <stdint.h> #include <inttypes.h> /* unreversed */ int64_t sceGnmAddEqEvent(); int64_t sceGnmAreSubmitsAllowed(); int64_t sceGnmDebugHardwareStatus(); int64_t sceGnmDeleteEqEvent(); int64_t sceGnmDingDong(); int64_t sceGnmDisableMipStatsReport(); int64_t sceGnmDispatchInitDefaultHardwareState(); int64_t sceGnmDrawInitDefaultHardwareState(); 21
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 22/27 orbis2d orbis2d PS4SDK といっしょにビルドした
liborbis に含まれるツー ル GNM の wrapper になっているっぽい updateController(); orbis2dStartDrawing(); orbis2dDrawRectColor(x,w,y,h,color); orbis2dClearBuffer(0); // flush and flip orbis2dFinishDrawing(flipArg); // swap buffers orbis2dSwapBuffers(); flipArg++; 22
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 23/27 homebrew homebrew 23
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 24/27 ハマりポイント ハマりポイント TCP/IP 経由で
elf を投げつけたら elf をロードする elf-loader が既に ある デバッグに便利 Firmware 5.05 の⼿元の環境では動かない…… ELF を pkg にして PS4 にインストールしよう! PS2 や PS4 のゲームバックアップのツール情報ばかり出てくる ⼀応不可能ではない(pkg 化された homebrew も存在する) 調べて pkg 作ろうとしましたがまだ出来てません…… 24
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 25/27 さらに・ハマりポイント さらに・ハマりポイント いっそあきらめて “payload”
SDK でデモをしようとした サンプルコードにある canvas を乗っ取って描画する⽅法 サンプルコードは Firmware 1.76 前提 ⼿元だと page fault でフレームバッファに値を書き込めな い…… 1px も書き込めませんでした 25
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 26/27 ダメ押し・ハマりポイント ダメ押し・ハマりポイント いろいろデバッグ情報とれないか試していた 試しに
IDU mode (PS Vita や PS4 に搭載される試遊台モード)にし てみた 元のユーザーが消されて User1 と User2 が作成される さよならセーブデータ\(^o^) / 26
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 27/27 まとめ まとめ PS4 の
homebrew はわりと作りやすい Unity で出⼒したやつも homebrew として起動できるという噂も みんなやってみよう でもやるなら FW 1.76 の古いマシンがいいと思うよ exploit を実⾏したらすぐに FTP かなんかでセーブデータやトロ フィーバックアップしようね 27