#!

路上に就職!

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と入力する単純なものになっている。

f:id:x6d61:20170115004110p:plain

→を押してボードに書き込む。実際に書き込む時はシリアルポートが選択されているか確認した方がいい。(そのミスで何回も書き込みに失敗した。
今回はメモ帳に文字を入力するだけだったがmetasploitのpayloadやHak5の動画であったreverse shellなどを実行させても良いと思う。素晴らしいアイディアを考えた人はぜひ教えて欲しい。また、自分の所有していないUSBメモリをむやみに接続するのはやめよう!!