arudino互換ボードでBadusbごっこ
BadUSBとはBlack Hat 2014 に発表された攻撃手法。USBメモリのファームウェアを書き換えてHIDデバイスとして認識させ、キーの自動入力を行う。本家は特定のUSBフラッシュコントローラのみコードしか公開していない。また、手間がものすごくかかる…(基盤をショートさせたり) Hak5が販売しているUSB Rubber Duckyというハードウェアがあるが一つ40$くらいする。そして、値段はお手軽ではない。。。 そこでHID USB キーボードとして認識させることができるArduino互換のボードを使用して簡単に実験してみる。
今回、使用するのは amazonから購入した ATmega32U4 を搭載したボード。
ダイレクトUSB 超小型 ATmega32U4ボード Arduino Leonardo互換
早速、スケッチを描いてみる。
#include <Keyboard.h> void setup() { // put your setup code here, to run once: delay(3500); Keyboard.begin(); Keyboard.press(KEY_LEFT_GUI); Keyboard.press('R'); Keyboard.releaseAll(); delay(200); Keyboard.print("notepad"); delay(200); Keyboard.press(KEY_RETURN); Keyboard.releaseAll(); Keyboard.print("Hello world!!"); Keyboard.end(); } void loop() { // put your main code here, to run repeatedly: }
上記のスケッチを簡単に説明すると、まずdelay()でUSBを挿してから3.5秒間待機しwindowsキーとRを同時に押す。 notepadと入力してenter、メモ帳が起動したらhello worldと入力する単純なものになっている。
→を押してボードに書き込む。実際に書き込む時はシリアルポートが選択されているか確認した方がいい。(そのミスで何回も書き込みに失敗した。
今回はメモ帳に文字を入力するだけだったがmetasploitのpayloadやHak5の動画であったreverse shellなどを実行させても良いと思う。素晴らしいアイディアを考えた人はぜひ教えて欲しい。また、自分の所有していないUSBメモリをむやみに接続するのはやめよう!!