無線通信×セキュリティ

Security/Radio/IoT/Mobile/Network

Facedancerとumapを使ってみた話

今回は無線を離れて物理接続USBについて試してみました。

 

Facedancerの購入

色々調べて見たところ、1万円くらいで買えるFacedancerなるデバイスでシミュレートして色々やれる様だと分かったので、 以下から速攻でポチり。

FaceDancer21 (USB Emulator/USB Fuzzer)int3.cc

 

さて、買ったのはいいものの、ストックがないからfew weeks待ってちょんまげとメールがきました。few weeksってどんなもんやと待ってみたら、大体7週間で届きました。

Thank you for you recent order! Unfortunately we are currently out of stock of Facedancers and are unable to fill your order immediately. We are expecting more product from our manufacturer in a few weeks and will fill your order as soon as we are restocked. 

Facedancerのセットアップ

Facedancerを使うにあたって、デバイスファームウェアを焼きこむ必要があります。デバイスのhostと書かれたコネクタ側にlinuxマシンを接続するとUSB-Serialとして認識されます。その状態から以下のコマンドを打つとfirmwareがfacedancerのデバイスに書き込まれて使える様になります。

$ git clone https://github.com/travisgoodspeed/goodfet goodfet

$ cd goodfet/client

$ sudo make link

$ export board=goodfet41

$ goodfet.bsl --fromweb

$ goodfet.monitor test

$ apt-cache search msp430

$ sudo apt-get install binutils-msp430 gcc-msp430 msp430-libc msp430mcu

 

 以下を参考。

goodfet.sourceforge.net

 

umapを使ってみる

umapというUSBホストに対して、USBデバイスをエミュレートして評価するツールを使ってみました。 nmapのUSB版みたいなイメージですかね。多分。

github.com

umapを使うには、python3とpyserialが必要なので事前にインストールしておきます。あとはダンロードしてきたpythonコードを実行するだけです。

以下を実行すると、device_class_data.pyで定義したDevice Class, subClass, Protocolに対してスキャンをかけます。ホスト側で稼働しているUSBドライバが何かを把握することができます。

$ sudo python3 umap.py -P /dev/ttyUSB0 -i

 

01:01:00 - Audio : Audio control : PR Protocol undefined

**SUPPORTED**

01:02:00 - Audio : Audio streaming : PR Protocol undefined

**SUPPORTED**

02:02:01 - CDC Control : Abstract Control Model : AT commands V.250

 

02:03:ff - CDC Control : Telephone Control Model : Vendor specific

 

02:06:00 - CDC Control : Ethernet Networking Control Model : No class-specific protocol required

 

03:00:00 - Human Interface Device : No subclass : None

**SUPPORTED**

06:01:01 - Image : Still image capture device : Bulk-only protocol

**SUPPORTED**

07:01:02 - Printer : Default : Bidirectional interface

 

08:06:50 - Mass Storage : SCSI : BBB

**SUPPORTED**

09:00:00 - Hub : Default : Default

**SUPPORTED**

0a:00:00 - CDC Data : Default : Default

**SUPPORTED**

0b:00:00 - Smart Card : Default : Default

 

**SUPPORTED**と表示されたものが稼働しているクラスになります。

 

USBPcapを使ってUSBメッセージをキャプチャする

 umapで実際にどんなメッセージを出しているか確認する方法があります。USBホスト側をWindowsマシンにして、USBPcapを使ってキャプチャすることで、USBのメッセージを確認することができます。USBPcapはWiresharkをインストール際にチェックを入れていれば同時にインストールされています。

USBPcapの使い方は以下を参考。

blog.e-shimaneko.com

 

キャプチャデータは以下の様な形で 確認することができます。 

f:id:tansokun920:20190514223446p:plain

 

最後に

umapはUSBホストに対するUSBファジングもできる様なので、今後はもう少し深掘りしてみよかと思います。