fatsheep's memo.txt

気になったこと、試したこと、その他もろもろを書いていきます。

Bash Bunny レビュー② ~キー自動入力~

f:id:fatsheep:20170717223901p:plain

とても久しぶりのBash Bunnyの記事になります!

前回(もう3年も前の記事ですね、、)は開封と接続確認のみで、実際にペイロードを設定し動作させておりませんでした。
※ちなみに前回の記事はこちらです。 fatsheep.hateblo.jp

久しぶりに引っ張り出していろいろと触ってみようと思い立ち、試したことを記録していこうと思います。

今回試してみる機能

Bash Bunnyにはいくつか機能があります(根本的にはBadUSB*1のそれです)が、その中でもおそらく(?)メインで利用されるであろうキーの自動入力について、試してみたいと思います。

ただこの機能を使うこと自体は非常に簡単で、決められた構文通りスクリプトを作成するだけで実現可能です(Ducky Scriptというもののようです)。今回は実際の攻撃に見立て、どんなことができるか試してみたいと思います。

基本的な作動方法

スクリプト配置

本体のスイッチを「Setup Mode」(USB端子側)にし、PCに接続すると、マスストレージとしてアクセスすることができます。
ちなみに外観は以下のようになっており、状態を示すLEDランプと、動作モードを変更するスイッチがついている、ちょっと大きめのUSBフラッシュメモリといった具合です。

f:id:fatsheep:20200816022542p:plain

スクリプトは「\payloads\switchN\payload.txt」に作成・保存します。

f:id:fatsheep:20200812173108p:plain

まずは試しに、以下のようなスクリプトを作成して実行してみようと思います。

ATTACKMODE HID      # HIDモード(keyboard)で接続

LED B               # 起動完了時、本体ランプを青点灯
Q DELAY 2000        # 2000ms待機
Q GUI               # Windowsキー押下
Q DELAY 500         # 500ms待機
Q STRING calc       # 「calc」とキー押下
Q ENTER             # Enterキー押下

スクリプト実行

本体のスイッチをSwitch1にし、端末に接続してみたいと思います。

f:id:fatsheep:20200812181704g:plain

上記を補足すると、

  1. Bash Bunny接続の数秒後に「HIDキーボードデバイス」として認識
  2. スクリプト通り、Windowsキー、「calc」、Enterキーの順にキーが送信され、電卓が起動

これで接続するだけで電卓が起動するUSBデバイスの完成です😮。

【実験】C&C通信するコマンドを実行

概要

よりBadUSBで使われる攻撃方法と思われる、こちらをやってみたいと思います。構成は簡単で、以下のようなものを準備しました。

f:id:fatsheep:20200815232006p:plain

Raspberry pi4にKaliLinuxを導入し、端末とLANケーブルで直結、端末にBash Bunnyを接続し、ペイロードを実行(感染)させる、という流れです。
ペイロードはあらかじめKaliLinuxのMetasploit Framework(msfvenomコマンド)で生成した、Reverse shell接続するペイロードになります。

実行

実際に接続して感染させてみました。
※一部、Victim・Attacker画面の実行部分をぼかしています。

f:id:fatsheep:20200816083537g:plain

接続後、コマンドプロンプトが起動し、その中でペイロードが実行され感染、Attackerのほうへ通信成功したことがわかります。
一瞬、スタートメニューやコマンドプロンプトが表示されていますが、工夫すればこの辺りも消せるのでは(より気づかれにくくする)と思います。

余談1:Hak5 Bash Bunnyの公式フォーラム

Bash Bunnyの公式フォーラムがあるので紹介します。
forums.hak5.org

こちらでは、問題が起こった際のサポートを求めたり、さらには各ユーザが作成したPayloadsを紹介していたりしています。
特にPayloadsについては様々なものが掲載されており、Payloadsの作り方はもちろん、アイデアもかなり得ることができました。

余談2:日本語キーボードに対応できていない

STRINGコマンドなどでキー送信しますが、Bash Bunnyはデフォルトでは英字キーボードとして認識され、記号類が正常に送信できない、という問題がありました。
公式では英字以外のキーボード配列にも設定可能ですが、その中に日本語キーボード配列(JISキーボード)がなく、記号類の送信には苦労しました。
内部に各キーボード配列毎の設定ファイルを持っているようで、JISキーボード用の設定を追加すればもしかするとうまくいくかもしれません。

最後に

今回はBash Bunnyでキー自動入力するシチュエーションを実験してみました。
記事にも記載した通り、非常に簡単にキー送信を行えるので、サイバー攻撃だけでなく構築や設定の自動化など様々な場面でも活用できそうです。
同じ機能を持つBadUSBはさらに小型のものもあり、改めて注意が必要だなと感じました。
次回はBash Bunnyの別の機能を試してみたいと思います。

■更新履歴
2020/08/16 新規

*1:本記事で取り上げる「BadUSB」は、USBのチップなどに細工し、利用者の想定とは異なる動作をするように作られたUSBデバイスのことを想定しています。