Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Making AutoRun USB HID Device / 自動入力するHIDデバイスを安く簡単に作る

BadUSBを皮切りに自動入力するHIDデバイスの危険性が話題になっています。既存の高機能なデバイスよりも、機能を犠牲にしつつより簡単に安く作成する方法を考えてみました。

  • Be the first to comment

  • Be the first to like this

Making AutoRun USB HID Device / 自動入力するHIDデバイスを安く簡単に作る

  1. 1. Making AutoRun USB HID device 自動入力するHIDデバイスを安く簡単に作る R SATO(佐藤 玲) http://reisato.plala.jp/rsato/ 1
  2. 2. BadUSB、ご存じですか? ◦コンピューターセキュリティの国際会議で あるBlackHat 2014 USAにてKarsten Nohlと Jakob Lellにより発表されたレポート ◦USBデバイスの危険性を指摘&デモ ◦USBデバイスのコントローラーの一部は ファームウェアをPCから書き換えられるた め、悪意のある動作をするデバイスを簡 単に作れてしまう 2
  3. 3. USBメモリをBadUSB化する ◦Derbycon 4.0にてAdam CaudillとBrandon WilsonがBadUSBをリバースエンジニアリン グしたと発表 ◦USBメモリのファームウェアを改ざんして キーを自動入力するキーボードデバイス に変えてしまうコードとツールをGitHubに 公開した ◦非常に危険 3
  4. 4. 自動入力するHIDデバイスの リスク ◦最近のPC用OSはコマンドでいろいろできる 1. DNS設定の書き換え 2. Web上のファイル(バックドアなど)のダ ウンロード 3. PCや近傍ネットワーク内の情報の収集 とアップロード 4. 掲示板への書き込み 5. などなど… 4
  5. 5. 自動入力するHIDデバイス例 USB Rubber Ducky ◦ GitHubにて公開されたBadUSB化 ツールがキーボード自動入力の機 能として使用 ◦ 独自スクリプトでキー入力を定義 USBdriveby ◦ TeensyというUSB機器開発ボードの ファームウェア ◦ 接続したPCにバックドアを仕掛ける ◦ もちろんWindows/OS X/Linux対応 5
  6. 6. なんか便利&危険そうなんだけれど デバイス入手しづらい!高い! 動作させるために手間がかかる! (も動作要件とかは適当で良いので) もっと安く簡単に自動入力する HIDデバイスを作りましょう 6
  7. 7. Adruinoを使います File:Arduino Leonardo.jpg 出典:ウィキメディア・コモンズ (Wikimedia Commons) 7
  8. 8. Arduino( アルドゥイーノ)とは ◦オープンソースのハードウェアプロトタイピン グプラットフォーム ◦ソフトウェアはもちろん、ハードウェアもオー プンソース ◦マイコンの難しい話(レジスタや割り込み等) を理解していなくても、簡単にマイコン電子工 作ができる ◦開発環境はProcessingベース ◦ボードは秋葉原やAmazonで安価に入手可能 8
  9. 9. ArduinoをHIDにする ◦Arduinoの現行品であるLeonardo, Micro, Dueでは、HIDエミュレーション機能がある ◦PCに接続するとキーボードやマウスとして 認識、コードで指定したキー入力やマウス 操作を行える ◦この機能を使ってArduinoを自動入力する HIDにしてみましょう 9
  10. 10. 主なキーボード操作関数 Keyboard.begin() …キーボード開始 Keyboard.end() …キーボード終了 Keyboard.press() …指定したキーを押す Keyboard.print() …指定した文字列を入力 Keyboard.release() …指定したキーを離す Keyboard.releaseAll() …全てのキーを離す マウスも同様にクリックや移動の指定ができる 10
  11. 11. コード例:メモ帳を起動 簡単のためにウェイト調整は除いてあります。 void setup() { // 初期設定部 Keyboard.begin(); // キーボード開始 } void loop() {// ループ実行部 Keyboard.press(KEY_LEFT_GUI); // 左Windowsキー Keyboard.press('R'); // Win+R:ファイル名を指定して実行 Keyboard.releaseAll(); // キーを話す Keyboard.print("notepad"); // メモ帳(notepad)を指定 Keyboard.press('KEY_RETURN'); // Enter Keyboard.releaseAll(); // ここでメモ帳が起動 Keyboard.end(); while (true); // 1回のみ実行するためここで無限ループで止める } 11
  12. 12. ArduinoはBadUSB化の ターゲットになる ◦開発用のデバイスはマルウェアなどによっ て意図せずにファームウェアを書き換える 格好のターゲットになり得る ◦Arduinoの趣味での使用はもちろん、プロ ダクトにそのまま組み込まれている場合、 HID機能を悪用したファームウェアへの書 き換えをされてしまうかも 12
  13. 13. 参考Webサイト USBに設計上の致命的な脆弱性が発見され、そのコードが公開される ◦ http://gigazine.net/news/20141006-badusb/ ◦ BadUSBの概要やGitHubのコードがあります USB Rubber Ducky ◦ http://usbrubberducky.com USBハックの実働シーン怖い。二度とパソコン離れたくなくなる ◦ http://www.gizmodo.jp/2014/12/_os_x.html ◦ USBdrivebyの話 Arduino ◦ http://arduino.cc/ 13

×