MIDIメッセージを用いたリモートコード実行
(psi3.ru)はじめに
- Yamaha PSR-E433シンセサイザーを長く所有しており、内部構造への好奇心から分解した。
- メイン基板で「YAMAHA SWL01U」チップを発見したが、オンラインで関連情報を見つけられなかった。
- 数か月後、同系統のシンセサイザーのサービスマニュアルを見つけ、チップのピン定義を確認した。
- JTAGテストポイントとUARTインターフェースを使ってチップ情報の取得を試みた。
ファームウェアダンプ
- JTAGインターフェースを介してチップのIDCODEを読み取ろうとしたが、予想外のIDCODEが返ってきた。
- ARM7TDMIコアと推定し、OpenOCDでチップとの通信を試みた。
- 電流変化からARM7TDMIコアとの通信が成功したことを確認した。
- ファームウェアをダンプして解析を開始した。
ファームウェアリバーシング
- Ghidraを使ってファームウェアのリバースエンジニアリングを開始した。
- ファームウェア内の文字列からシステム構造の理解を試みた。
- シェルコマンドの一覧を発見し、これを通じてシステムの動作方法を理解した。
シェルコード
- MIDIメッセージを使ってシンセサイザーのメモリにアクセスできる方法を見つけた。
- メモリ書き込みコマンドを使ってRAMにコードを注入し、実行できることを確認した。
- "HeloWrld"文字列をLCDに表示するシンプルなアセンブリコードを書いて実行した。
Bad Apple
- MIDIを使ってシンセサイザーのLCDに「Bad Apple」の映像を表示するプロジェクトを実施した。
- MIDIメッセージでシンセサイザーの内部メモリにアクセスし、これを使って映像を表示した。
リンク
- プロジェクト全体の流れに関するリンクを掲載した。
このプロジェクトは、MIDIメッセージでシンセサイザー内部メモリにアクセスし、さまざまな機能を実装できることを示している。これにより、シンセサイザーの潜在能力を最大限に引き出す可能性を示している。
まだコメントはありません。