USB メモリ。いろんなセキュリティリスクがありますが、コンテンツにウイルスが含まれているとかではなく、ハードウェア的な仕組みで刺すといろんな悪さをする、ケシカランUSBメモリがあります。
- キーボードの働きをしていろんな操作を行う
- ネットワークデバイスとして働いてゲートウェイになる
- ストレージとして保管されたコンテンツを読み出す、改竄する
・・・
「BadUSB」という名前で面白いテーマとして、過去にもとりあげました。
「STM32の開発をしてみよう(AVTokyo2017バッジをHack)」
https://qiita.com/lowlevel/items/5221a43875e1db464fa2
このときは AVTOKYO 2017バッジのマイコンSTM32F103をプログラムして BADUSB としました。
今回は、もっと本格的に一般のUSBメモリコントローラーを使ったHackをしてみます。
USBメモリの構成部品
USBメモリは以下より構成されています。
- USBコネクタ
- USBメモリコントローラ
- フラッシュメモリチップ
- PCB
- 電源回路
- ケースなど
このうち、
- USBコネクタ
- フラッシュメモリチップ
- PCB
- 電源回路
部分が組み立て済みでフラッシュメモリとケースをつけるだけで自分のUSBメモリが作れるOEM用のボードがあります。
OEM向けUSBメモリボード
Hack に似合う透明ケースとセットで購入。
コントローラはIS903です。
いまどき珍しい書き込み禁止スイッチがついています。
書き込み禁止スイッチをコントローラの入力、アクセスLEDをコントローラの出力として使えたらいいな!
フラッシュメモリチップ 29F16
さて、これにはメモリを付けないといけません。上の写真のメモリ取り付ける場所はBGAとTSOPのパターンがついています。いろんな種類のメモリが付けられるようになっていて、メモリIC用パッドの適合する部分だけをはんだづけします。BGAを手半田するのはめんどくさいので、TSOPのもので対応するものを購入しました。
届きました。
データシートとの照合
これはMICRONのデータシートですが、29F16G という名前は一種の規格のようになっています。そしてそれは16GのNAND Flash を表しています。
TSOPパッケージ。0.5mmピッチです。
ピン配置。VCCとVSSに注目し、基板と照合して実装の向きを確認します。
こちらは IS903のデータシートです。これは同じQFN-64でも2種類あってピン配置が全く異なるので罠。今回は8x8mm のものでした。
IS903の GND が、メモリの VSS に対応しているのでそれを参考に基板パターンを照合します。
dmesg の反応
これはメモリを実装していない状態で基板をUSBに刺した時の dmesg。
刺すと反応し、/dev/sdb として認識しますがその先に進みません。
これがメモリを装着した後どうなるでしょうか?
メモリチップのはんだづけ
まず右端と左端だけはんだづけをして位置決めをします。その後全てをはんだづけします。
0.5mm ピッチなので、AVTOKYOはんだごてにILSタイプの極細こて先を装着して使いました
うまくはんだづけできましたが・・・
失敗?
上の作業のあと USB コネクタに刺しても認識しなくなりました。
メモリの実装は表裏できますが、別面につけないといけないかな?
表側と裏側と2パターン付けてみました
両方ダメでした。
更に、両面実装したのもダメ。うまくいきませんでした。( 続く・・!)