簡単にBadUSBを作ろう!

今回は簡単なbad usbを作った話をします。

作るに至った経緯は友人がyoutuber()をしてまして、何かハッキングぽい物が欲しいといわれたので作りました。

・BadUSBとは?

 BadUSBとはUSB接続で利用するデバイス(usbメモリなど)にあらかじめ悪意のあるコードを書き込みUSB接続時にコードを走らせ何らかの悪質な動作をさせる手法です。

これはソーシャルエンジニアリングの分類に入ると思います。つまり心理的攻撃なので注意をしていれば防げます。

ここで一番注意すべきは名前です。「BadUSB」と名前なのでusbメモリをイメージしがちですがBadUSBのUSBはUSB接続の事であってusbメモリの事ではありません。実際に友人に送った物も見た目はUSB接続の小型扇風機でした。

 

・必要な物

私の懐が寂しすぎるので安価な物を使います。

arduino pro micro (1000円前後)

microUSBケーブル(???円)

Arduino IDE

以上です。

他にも2303か2307のチップが入っていればBadUSBが作れますが、チップが入ってるといわれている「Toshiba TransMemory-MX USB 3.0 16GB」はお高いし搭載されてるチップが違う場合があるのでリスキーです。

本格的なBadUSBが欲しいのであれば「Rubber Ducky」がおすすめです。

 

・作り方

まず初めに購入したarduino pro microが動くかチェックしましょう。

チェックは簡単で赤のライトが光ると大丈夫です

f:id:hi_kitty:20190908142913j:plain
f:id:hi_kitty:20190908143554j:plain

 

あとwindowsのデバイスマネージャーで確認しましょう。

※windows10でpro microはサポートされていますがwindows7はサポートされていませんのでドライバをインストールしましょう。

f:id:hi_kitty:20190908144340j:plain

※COM〇は覚えておいてください

次にAruduino ideを起動しましょう。バージョンは最新バージョンで大丈夫です。

f:id:hi_kitty:20190908150449j:plain

起動するとこの画面になるはずです。画面の「sketch_sep07a」とは新規ファイルを作った日がファイル名になっています。

当然ながらAruduinoにも関数があります。

setup()  ・・・起動時に1度だけ実行する

loop()    ・・・ループ処理を実行する

など、関数をまとめてくれているサイトがあるのでこちらをどうぞ

Arduino 日本語リファレンス

 

ですが、これでだけではまだpro microは認識してくれません。なので

「ファイル」タグの「環境設定」を開き追加のボードマネージャーのURLに

http://www.musashinodenpa.com/arduino/ref/」を入力。

次に、「ツール」タグの「ボードマネージャー」を開き検索機能で「SparkFun AVR Boards」を入力し追加する。

SparkFun AVR BoardsはArduino IDEでサポートされていないmicro proなどをサポートしてくれます。

そうすると「ツール」タグの「ボード:」に「SparkFun Pro Micro」が選択できるはずです。

f:id:hi_kitty:20190908153408j:plain
f:id:hi_kitty:20190908153500j:plain

 

ついでに「プロセッサ:」を「(5V,16MHz)」と「シリアルボード:」をさっきデバイスマネージャーで確認した「COM〇」(ex COM6)を選択しましょう。

以上で設定完了です

あとはプログラムを書いてマイコンに書き込んだら使えるようになります。

 

・おまけ

pro microはPC上ではキーボードとマウスという認識になっています。

例えばwindowsに繋げたら勝手にシャットダウンするなら

#include "Keyboard.h"
void setup() {
// put your setup code here, to run once:
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('r');
Keyboard.releaseAll();
Keyboard.print("cmd")
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
Keyboard.print("shotdown -s -t 10");
Keyboard.press(KEY_RETURN);
}

です。見ればわかると思いますがcmdを開いてシャットダウンコマンドをおくっているだけです。

もちろんKEYとコマンドを変えたらmacubuntuとかでもできます。

ですがこれでマイコンに書き込むのはおすすめできません。

pro microはリセットボタンがついてないためリセットには手間がかかります。なのでこのままマイコンに書き込むと接続した瞬間シャットダウンするのでIDEで編集できないです。せめてdelay(ms)を挟みましょう。


・感想

実はpro microを買って友達に作ってあげたのは数年前の話でその時たまたま2つ買ってたので今回やっともう一つのボードを使ってあげれました。

私はハードがめっぽう弱いのでリセットすることができないのが怖いところですねw