Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ハードウェアハックとそのツールチェイン / HWHack in action

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for rizaudo rizaudo
July 22, 2021

ハードウェアハックとそのツールチェイン / HWHack in action

Talked at Champon Meet #1 (2021/07/22 19:00〜)
https://champonsecurity.connpass.com/event/219086/

Avatar for rizaudo

rizaudo

July 22, 2021

Other Decks in Research

Transcript

  1. 自己紹介 • ハードウェアハック趣味 • FPGA や基板製作, ディープラー遊び (GANs) が得意 •

    自作 CPU(RISC-Ⅴ, MIPS, データフロープロセッサ), SoC Internal バス (AMBA, Wishbone) が好き 1
  2. お断り • チップ侵襲性攻撃, パルス攻撃, RF Sniff 等々は今回は無し (複 雑になりすぎてフルタイム講演になってしまう) •

    分野の人なら笑う位に自明な内容しか無いので、珈琲でもお 飲みになってゆったりと聞いて下さい 3
  3. OSINT(Open Source Intelligent) • どんな製品・基板でも完全なるブラックボックスとして挑む のは難しい (今どきは1チップで機能完結させる時代で困難 さは増す一方) • パーツの全てに至るまで経歴が消せている製品というのはま

    ず存在しない (販売するなら当然ながら色々な検査や認定を 通さざるを得ない) • 検査用のテストポイント (TP) やデバッグアクセス方法が無い という事は考えにくい1 1セキュリティを考慮したチップだと恒久的にデバッグアクセスを disable でき るものもあるが 4
  4. 製品 OSINT i • Google!!! • 製品ファミリの他の奴も調べる2 • 電波発信する基板ならば FCC

    ID3, 技適等の各国機関の情報が 出ている可能性が高い • シールド領域毎の分析 (シールドをするという事は、キーと なるセンシティブなチップ・回路がある) • USB, HDMI, WiFi 等の基板外への通信ロギング • 基板上のシルクチェック • テストポイントが存在する場合、ログ取り • 関連するパテントチェック 4 5
  5. チップ OSINT i • チップは数が出ないとコストが落ちないため、数が出ない一 製品の為だけに専用 IC をテープアウトするのは考えにくい • チップマークからのチップ同定作業

    (マークアイコン, パッ ケージ, 省略マークの検索5...)6 • チップピン判定 (LVCMOS の特定, VDD GND ピンの位置) • チップのデータシート収集 (ベンダページ, alldatasheets.com, etc...) • 何もわからない場合はパッケージを溶かして中身を顕微鏡で 観察等の最終手段 5http://chip.tomsk.ru/chip/chipdoc.nsf/ 6場合によっては Fake チップ判定も必要 7
  6. どこを目指すか 大抵の基板では以下の事が出来れば大抵の目的は達成可能 • JTAG 等の OCD ポートへの接続 • EEPROM, eMMC

    チップ等の中身ダンプ • 基板上のバス配線の sniff や injection OSINT 作業が成功していればココナッツ割りのように面倒な作業 なだけしか残っていない 8
  7. IO ピン探し (地味に面倒な作業) • 右図のようにシルクラベル があれば楽 • 認定検査時の写真が手に入 るなら見比べて、何が実装 されてないのかが鍵になる

    (スルーホールピンであっ たり、チップ抵抗であっ たり……) • 大抵は見つけたピンをバス ツールやロジアナに繋げて 探す地味な作業…… 9
  8. 余談 コネクタはその上のプロトコルを意味しない 今までに遭遇した愉快な基板 • 裏表がある (!)USB Type-C • Type-C の形をした

    12V,20V が流れるだけのコネクタ • UART を喋り始める 4 極オーディオジャック • USB コネクタの形をした UART コネクタは流用されがちなので、見た目にとらわれるべきでは ない! 10
  9. 余談 FPGA, CPLD は面倒くさい FPGA, CPLD がメインロールをしている基板があると面倒くさいと いうのも、現代の FPGA 類は大抵

    bitstream7の暗号化・復号機能 を持つのでフラッシュからダンプできた所で何も出来ない。 そして当然ながら FPGA 内に実装されている回路のデータシート なんてものも転がってはいない。 7わからない人はマイコンでいうファームウェアと考えて下さい 11
  10. Dump, Sniff • チップ情報で特定した所や基板上のスルーホール、JTAG, UART, 等の OCD ポートにアタッチを試みる • EEPROM

    等に繋いで中身の FW, データを抜き出す (Flashrom8等) • 基板上にあるバスを特定して sniff、必要なら乗っ取る (バス に繋がったチップ電源供給元や各チップのアドレス, ID 等は 注意) • ダンプしたデータを binwalk9すればファイルシステムを検出 できる 8オープンなフラッシュツール https://flashrom.org/Flashrom 9https://github.com/ReFirmLabs/binwalk 12
  11. ツールの前に:JTAG は地獄の窯 i IEEE1149.1 で標準化されている本来は半導体検査用の規格。基本 は以下の 5 ピンを使い命令レジスタに書き込んで Test Access

    Point(TAP) を操作するが、現実には 3 ピンや 5 ピンのバリエー ションが使われる事がある。 TCK Test Clock TMS Test Mode Select TDI Test Data In TDO Test Data Out TRST Test Reset(Optional, まず見ない) 13
  12. ツールの前に:JTAG は地獄の窯 ii JTAG はチェーン接続出来るようになっているが、異なるコア電圧 の IC も繋げられるので解析時には注意が必要。正しくアクセス出 来れば (恐らく)

    なんでも出来てしまう。が、全てがベンダ依 存!!! (標準命令でいいから対応してる?)10 10ベンダの JTAG プローブが他のベンダに使えた試しが無い! (どころかバー ジョン違いのプローブで齟齬発生すらある) 14
  13. Bus Pirate sigrok11等への対応が豊富なホビイストお馴染みの一品 • 3.3V, 5.0V ロジックレベルでの疎通 が可能 • SPI,

    I2C, I2S, UART, JTAG(3pin だけ) といった様々なバスに対応して いる • OpenOCD, sigrok(1Mbps と遅い が), flashrom といったソフトウェ アをサポート • 安い (大体 40USD 以下) 11シグナルアナライザ, 大抵の場合はロジックアナライザとして使われる https://sigrok.org/ 15
  14. Shikra BusPirate 等のツールの代替を目指して作られたツール • SPI, IC, I2S, UART, JTAG(ちゃんと 4pin)

    と 様々なバスに対応している • OpenOCD, sigrok, flashrom といったソフト ウェアをサポートしている • 安い (45USD) 入手出来たことがないので実際の所わからない……12 12ずっと OUT OF STOCK 16
  15. JTAGulator • JTAG, ARM SWD, and UART が検出出来る事が売りの ツール •

    sigrok(ロジアナとしては 1.2MHz サンプルレートで 遅い..), OpenOCD に対応 • 入力保護が付いた 24ch, 1.4V から 3.3V まで調節で きる • ちょっと高い (179USD) 17
  16. 新しいツールの必要性 • 結局 HW ハックはバス専用ツールや FPGA での自作ツールに 落ちる13 • injection

    をする場合はほぼ確実に FPGA でツール自作をする 必要があるのが現状 • 既存のツールは入手性や IO 速度が遅い (1-Wire 等で速度を上 げざるを得ない回路は世の中に多い) • 100 200USD 前後 (出来れば Under 100USD) でのホビイスト 向けのツールが少ない14 • 一度に大量の IO が見れると嬉しい 13ロジアナやオシロも結局内部では FPGA を使っている 14当然金をかけられるなら数万ドルする完璧なツール (オシロ, ロジアナ) は幾ら でもあります 18
  17. 作っているツール i この半年位作っている、個人的な in-house ツール。Bus Pirate+JTAGulator にロジックアナライザ成分を一振りした所を目 指した。次バージョン (v3) を設計中。

    • 様々なバスプロトコル (当 然ながら理論上は何にで も) への対応 • ロジックレベル 1.8V, 2.5V, 3.3V 対応 • ロジックアナライザ挙動 (現状は 100MHz サンプル レート) をして、バイナリ ブロブを出せる • JTAG, UART 等の検出 (WIP) Figure 1: 仮組みの v3 バージョン 19
  18. 現状の構成 設計変更中の次のバージョンでは以下のチップで構成されて いる: • FPGA iCE40UP5K-SG48I • USB-Serial FT2232HL15 •

    LDO LT303016 • D/A AD8655 • RTC PCF2123TS • IrDA レシーバ RPM841(ディスコン品) 簡単な試算では BOM(基板込み) の価格が 50USD から 60USD 程度 で終わらせられる。 15過剰仕様な気がしている 16堅いリファレンス設計だが、過剰も良い所ではある.. 20
  19. FPGA(iCE40UP) の嬉しさ その他諸々 • Bit Banging といったテクニックは必要ない (専用回路を組め ば良い) •

    inout IO ピン数が多い! (差動信号も扱える) • Hard I2C*2/SPI*2 IP!* • embed SPRAM 256KBit *4 = 1024KBit, メモリ専用ブロック (EBR) も 120KBits ある • 安い (カットテープで 6USD) • Opensource Flow での first-class デバイス! (Yosys, nextpnr, SymbiFlow...) • LVCMOS18 から LVCMOS33 まで対応17 17欲を言えば LVCMOS12 にも対応したかったが、そういうデバイスを扱う人間 は高価な機器は持ってるだろう 23
  20. Opensource Flow FPGA はソフトウェアをリコンパイルするようには使えない。解 析機に一々 Viavdo, Quartus といったベンダ IDE(数十 GB)

    をアカ ウント紐付けした上でインストールはしてられない!18 Opensouce Flow のツールはアカウントなんて要らない上に知ら れている物を全部入れた所で、 1GB で済む!再現性も抜群に 良い!19 18そもそも Vivado に到ってはインストールすらできない事が多々ある上、IDE バージョン違いで致命的な問題が引き起こされる最悪エクスペリエンスをご提 供してくれている 19ただし当然ながらベンダの専用環境に比べれば性能が劣る部分は多々ある 24
  21. FPGA レイヤ • Verilog-HDL(2005) や Chisel 言語を使い SymbiFlow を EDA

    ツールとして開発中20 • PicoRV32(iCE40 で大凡 1800 LUT4) を含む SoC は載る • UART, JTAG 等は OpenCores 等で Open IP が豊富にある • 幾らでも専用回路を書ける21 20FLOSS EDA フローに慣れていても茨の道…… 21書きたければ、ですが 25
  22. ソフトウェアレイヤ • ボードと疎通する為に簡単なシリアル通信のプログラムを書 いた • 現状 OpenOCD, flashrom, sigrok には対応していない

    • OpenOCD, sigrok(SUMP プロトコル) は対応の仕方がわかる が、flashrom はどう対応すればよいかわからない 26
  23. 仕様での懸念点 i • iCE40UP は JTAG TAP を持っていないため、デバッグする時に は JTAG

    回路を作る必要がある • 5280 LUT+FF ではちょっと非力な可能性がある (少なくとも 映像のようなハイバンドの物は当然扱えない) • to 5V のレベルシフタが必要になる22 • DCDC コンバータ等で BOM が嵩む • ドライブ電流の差 BusPirate(PIC24F) だと 18mA だが本ツー ル (iCE40UP) では (LVCMOS33 で)8mA • C 等で FW 書くよりかは HDL は難しい23 22アクティブ 5V のチップは大抵 3.3V はアクティブ判定するから必要ないかも? 23でも皆 Bus Pirate も FW に手を加えてはいないよね 28
  24. 製造上の懸念点 エンドユーザでの半田付けか PCBA か • ADC を載せる事になるので、PCBA を使う場合はサプライ チェーンが信頼できない24 •

    iCE40UP5k-SG48I は QFN パッケージなので、エンドユーザー での半田付けが難易度高い25 • パスコンは結構小さいので手半田だと疲れる 24慣れた PCBA 工場でも AD 製品とかでは偽物を掴まされがち 25パッケージの GPAD が GND なのでミスると終わる 29
  25. 余談 RP2040(raspberrypi pico?) はどうか? • PIO は良さそうに見える (「PIO can sustain

    360 Mb/s during the active scanline period when running from a 48 MHz system clock」) • 130MHz で動く ARM M0 は非常に便利 • チップが 1USD 程度というのはとても魅力的 (壊れても気晴 らしに珈琲を飲む価格で代えられる) • 実装されているボードの調達性が良い 31
  26. 余談 RP2040 の懸念点 • カスタムチップは高周波数で動くが、当然仕様は変えられな い (FPGA の用に小手先での問題回避が出来ない) • 常にカスタム回路を組める

    (もしくは組むしかない)FPGA の 方が対応力としては上になる • PIO Assembler という専用 asm を使うため、独自の設計が 必要 • 個人的な意見として 専用 asm よりも HDL で書く方が流用性, 可読性等の面において良いと思っている 最終的には試算用のベンチを取ってみるしかないとは解っている が、PIO が独自アーキ独自 asm なため検討すら難航している。 32