検索
連載

BadUSBを赤外線リモコンで遠隔操作する「IR-BadUSB」Black Hatでハードウェアハック!(2)(2/3 ページ)

筆者の今岡通博氏がハッカーの祭典「Black Hat」に投稿した、ハードウェアの改変を中心にしたハッキングの事例を紹介する本連載。第2回は、赤外線リモコンを使ってBadUSBを遠隔操作する「IR-BadUSB」だ。

Share
Tweet
LINE
Hatena

ソースコード:setup()

#include <IRremote.h>
#include "Keyboard.h"
int recvPin = 7;
IRrecv irrecv(recvPin);
void  setup ( )
{
  irrecv.enableIRIn(); 
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  digitalWrite(9,HIGH);
  Keyboard.begin();
}
リスト1 ソースコード:setup()

 リスト1は、IR-BadUSBのセットアップを行うためのソースコードになります。ArduinoのIRremoteとKeyboardのライブラリを使用します。IRremoteは赤外線信号を符号化するライブラリ、KeyboardはこのマイコンをPCのキーボードとして動作させるためのライブラリです。セットアップ機能は起動時に1回だけ実行されます。GPIOは、IRレシーバーの信号端子とIRレシーバーのVCC端子に正電圧、GND端子に0V電圧を供給するように設定します。この設定により、ブレッドボード上に余計な配線をすることなくIRレシーバーをブレッドボードに挿して使うことができます。

ソースコード:loop()

void  loop ( )
{
  decode_results  results;       
  if (irrecv.decode(&results)) { 
      if (results.value==0xFF48B7)
          Keyboard.println("Hello IRBadUSB! #0");
      if (results.value==0xFF906F)
          Keyboard.println("Hello IRBadUSB! #1");
      irrecv.resume();            
  }
}
リスト2 ソースコード:loop()

 Setup関数が実行された後、loop()関数が一定時間ごとに何度もエンドレスに呼び出されます(リスト2)。IRレシーバーが0xFF48B7を受信するとキーシーケンス"Hello IRBadUSB! #0"を、#0xFF906Fを受信した場合は、"Hello IRBadUSB! #1"というキーシーケンスをPCのキーボードとして送出します。これらの#0と#1は、IRリモコンの0と1のキーが押されたことを示しています。

Digispark Attiny 85

 図5のように、Arduino Pro Microよりさらに小さなマイコンボード「Digispark Attiny 85」を使えば、USBドングルの中に組み込むことも可能です。まさに、USBメモリ形状のIR-BadUSBを実現できるわけです。この他にも、開発ボードの「Leonardo USB ATMEGA32U4 mini」もDigispark Attiny 85と同様に小型でPCのUSBポートに直接差し込めるので、ドングルに組み込むことが可能です。

図5
図5 マイコンボード「Digispark Attiny 85」[クリックで拡大]

Wi-Fiスマートデバイス

 図6はWi-FiとIR通信の橋渡しをするデバイスの内部構造です。プロセッサには「ESP32」を使用しています。このデバイスをアクセスポイントモードにしてターゲットのオフィスに置くと、モバイル端末などを使ってオフィス外からIR-BadUSBを遠隔操作される危険性があります。

図6
図6 Wi-FiとIR通信の橋渡しをするデバイス[クリックで拡大]

赤外線LEDライト

 赤外線の届く範囲を広げるために、暗視カメラ用の赤外線LEDライトを使う方法もあります。図7の赤外線LEDライトは以下のような仕様になっています。

  • 48個の赤外線LEDを搭載
  • 暗視カメラと組み合わせて使用
  • 赤外線LEDの波長:940nm
  • 電源アダプター:DC12V
図7
図7 暗視カメラ用の赤外線LEDライト[クリックで拡大]

 赤外線LEDライトの多くは、夜間だけ動作するように光センサーが内蔵されています。今回のIR-BadUSBへの適用では、光センサーの機能は不要なので、遮光のために何か被せたり、黒いマジックや塗料で塗りつぶしたりする必要があります。もし電子工作が得意であればこの光センサーを基板から除去してもいいでしょう。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る