Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
btlejack — Bluetooth Low Energy(BLE)のスイスアーミーナイフ | Kitploit
ツール/GitHubGitHub/virtualabs/btlejack
Bluetoothセキュリティエクスプロイトワイヤレスセキュリティペネトレーションテスト
GitHubvirtualabs/btlejack

btlejack

Bluetooth Low Energy(BLE)のスイスアーミーナイフ

リポジトリを見る
2.1k2092年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

BtleJack: 新しいBluetooth Low Energyスイスアーミーナイフ #####################################################

Btlejackは、Bluetooth Low Energyデバイスのスニッフィング、ジャミング、ハイジャックに必要なすべてを提供します。専用ファームウェアを実行する1つ以上のBBC Micro:Bit <http://microbit.org/>_デバイスに依存しています。また、AdafruitのBluefruit LEスニファ <https://www.adafruit.com/product/2269>_やnRF51822 Eval Kit <https://www.waveshare.com/wiki/BLE400>_も使用できます。これらのデバイスのサポートを追加しました。

本ツールの現在のバージョン(2.0)は、BLE 4.xおよび5.xをサポートしています。BLE 5.xのサポートは限定的で、1Mbps Uncoded PHYのみをサポートし、チャネルマップの更新はサポートしていません。

要件

UNIXベースのシステム(例えばRaspberry Pi)が必要です。BBC Micro:Bitを使用する場合、1~3台のMicro:Bitデバイス(3台推奨)と、各デバイスに1つの空きUSBポートが必要です。Micro:Bitの消費電力はかなり低いため、推奨される3台のユニットに電源を供給するために、1つのUSBポートとパッシブハブを使用できます。

コンピュータに同時に3台のMicro:Bitを接続すると、Btlejackはすべてのアドバタイジングチャネルでスニッフィングが可能になり、接続要求をキャプチャする可能性がはるかに高くなります。

インストール方法

まず、Pipを使用してbtlejack Python3クライアントソフトウェアをインストールします。

::

$ sudo pip3 install btlejack

次に、Micro:BitデバイスをUSBケーブルでコンピュータに接続し、関連するマスストレージデバイスをマウントし(マウントポイントに MICROBIT が含まれている必要があります)、次のコマンドを実行します。

::

$ btlejack -i

これにより、コンピュータに接続されているすべてのMicro:Bitデバイスがプログラムされ、Btlejackで使用できるようになります。現在のクライアントソフトウェアに適したファームウェアバージョンが使用されるため、Btlejackを更新するたびにこのファームウェアインストール手順を実行することを強くお勧めします。

Bluefruit LEスニファまたはnRF51822 Eval Kitを使用している場合は、外部SWDプログラマを使用して、このファームウェア <https://github.com/virtualabs/btlejack-firmware/raw/master/dist/btlejack-firmware-ble400.hex>_でデバイスをフラッシュしてください。

デバイスを接続したままにしておけば準備完了です!

注記 これはPOSIX互換システムでのみ機能します。

Btlejackの使い方

Btlejackの使用は非常に簡単です。Btlejackは以下のことができます。

  • さまざまなデバイスを使用する
  • 既存のBLE接続をスニッフィングする
  • 新しいBLE接続をスニッフィングする
  • 既存のBLE接続をジャミングする
  • 既存のBLE接続をハイジャックする
  • キャプチャしたパケットをさまざまなPCAP形式にエクスポートする

使用するデバイスの指定

Btlejackは通常、接続されている互換性のあるデバイス(現時点ではMicro:Bitのみ)を自動検出して使用しようとしますが、ファームウェアをハッキングまたは改造して他のnRF51822ベースのボードで動作させることができるため、これらのデバイスとの互換性を可能にする特定のオプションを提供しています。

-dオプションを使用すると、Btlejackで1つ以上のデバイスを指定できます。このオプションはデバイスの自動検出を無効にすることに注意してください。必要な数のデバイスを追加してください。

::

$ btlejack -d /dev/ttyACM0 -d /dev/ttyACM2 -s

既存の接続のスニッフィング

まず、btlejackでターゲットとする既存の接続を見つけます:

::

$ btlejack -s BtleJack version 1.1

[i] Enumerating existing connections ... [ - 54 dBm] 0xcd91d517 | pkts: 1 [ - 46 dBm] 0xcd91d517 | pkts: 2

最初の値(dBm単位)は信号の強度を示し、この値が大きいほどスニッフィングされる接続の品質が良くなります。

2番目の値(16進数)は関連する アクセスアドレス で、2つのBluetooth Low Energy互換デバイス間のリンクを識別する32ビット値です。

最後の値は、この アクセスアドレス で見られたパケット数です。この値が高いほど、対応する アクセスアドレス が使用されている可能性が高くなります。

次に、-fオプションを使用して特定の接続を追跡します:

::

$ btlejack -f 0xdda4845e BtleJack version 1.1

[i] Detected sniffers:

Sniffer #0: fw version 1.1

[i] Synchronizing with connection 0xdda4845e ... ✓ CRCInit: 0x2a035e ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 15 [i] Synchronized, packet capture in progress ... LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70 LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70

複数のmicrobitを使用している場合、Btlejackはスニッフィング操作の一部を並列化し、接続パラメータの回復を高速化します!

新しい接続のスニッフィング

btlejackでサポートされている-cオプションを使用すると、ターゲットのBDアドレスを指定したり、anyを使用して作成された新しい接続をすべてキャプチャしたりできます。

::

$ btlejack -c any BtleJack version 1.1

[i] Detected sniffers:

Sniffer #0: version 1.1 Sniffer #1: version 1.1 LL Data: 05 22 df b4 6f 95 c5 55 c0 0a f6 99 23 40 1d 7b 2f 0a 9a f4 93 01 12 00 27 00 00 00 d0 07 ff ff ff ff 1f 0b [i] Got CONNECT_REQ packet from 55:c5:95:6f:b4:df to 40:23:99:f6:0a:c0 |-- Access Address: 0x0a2f7b1d |-- CRC Init value: 0x93f49a |-- Hop interval: 39 |-- Hop increment: 11 |-- Channel Map: 1fffffffff |-- Timeout: 20000 ms

LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 0b 06 0c 08 0f 00 09 41 LL Data: 03 06 0c 07 1d 00 d3 07

または、ターゲットのBDアドレスを指定することもできます:

::

$ btlejack -c 03:e1:f0:00:11:22

接続のジャミング

アクセスアドレスで識別された接続が確立したら、-jオプションを使用してジャミングできます:

::

$ btlejack -f 0x129f3244 -j̀

BLE接続のハイジャック

Btlejackは既存の接続をハイジャックすることもできます。そのためには-tオプションを使用します。ハイジャックされると、Btlejackはプロンプトを表示し、ハイジャックされたデバイスと対話できるようになります。

まず、既存の接続をハイジャックします:

::

$ btlejack -f 0x9c68fd30 -t -m 0x1fffffffff BtleJack version 1.1

[i] Using cached parameters (created on 2018-08-11 01:48:24) [i] Detected sniffers:

Sniffer #0: fw version 1.1

[i] Synchronizing with connection 0x9c68fd30 ... ✓ CRCInit: 0x81f733 ✓ Channel map is provided: 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 9 [i] Synchronized, hijacking in progress ... [i] Connection successfully hijacked, it is all yours \o/ btlejack>

次に、以下のコマンドを使用してデバイスと対話します:

  • discover: サービスと特性の列挙を実行し、サービスと特性に関するすべての情報を提供します
  • write: 特定の値ハンドルにデータを書き込みます
  • read: 特定の値ハンドルからデータを読み取ります
  • ll: 生のリンク層パケットを送信します(忍者向け)

discover コマンド ^^^^^^^^^^^^^^^^^^

discoverコマンドは、Bluetooth LEパケットを送受信し、すべてのサービスのUUIDとパラメータ、および特性のUUIDとパラメータを取得します:

::

btlejack> discover start: 0001 end: 0005 start: 0014 end: 001a start: 0028 end: ffff Discovered services: Service UUID: 1801 Characteristic UUID: 2a05 | handle: 0002 | properties: indicate (20) \ value handle: 0003

Service UUID: 1800 Characteristic UUID: 2a04 | handle: 0019 | properties: read (02) \ value handle: 001a

Characteristic UUID: 2a00 | handle: 0015 | properties: read (02) \ value handle: 0016

Characteristic UUID: 2a01 | handle: 0017 | properties: read (02) \ value handle: 0018

Service UUID: 1824 Characteristic UUID: 2abc | handle: 0029 | properties: write indicate (28) \ value handle: 002a

read コマンド ^^^^^^^^^^^^^^

readコマンドは1つのパラメータ、読み取りたい特性に対応する値ハンドルを受け入れます:

::

btlejack> read 0x16 read>> 4c 47 20 77 65 62 4f 53 20 54 56

write コマンド ^^^^^^^^^^^^^^^

writeコマンドは3つのパラメータを受け入れます:

::

btlejack> write

サポートされているデータ形式:

  • hex: 16進データ(例:"414261")
  • str: テキスト文字列。二重引用符で囲むことができます

ll コマンド ^^^^^^^^^^^^

この最後のコマンドを使用すると、Volume 6, Part B, Chapter 2.4で指定されているように、Bluetooth Low Energyリンク層PDUを16進形式で送信できます。

PCAPファイルのエクスポート

Btlejackの興味深い機能の1つは、キャプチャしたデータをPCAPファイルにエクスポートできることです。

Btlejackは以下のDLT形式をサポートしています:

  • DLT_BLUETOOTH_LE_LL_WITH_PHDR (同じ)
  • DLT_NORDIC_BLE (Nordicのスニファで使用されるもの)
  • DLT_BLUETOOTH_LE_LL (最新バージョンのWiresharkでサポート)

出力ファイルは-oオプションで指定でき、出力形式は-xオプションで指定できます。有効な形式の値は、ll_phdr、nordic、またはpcap(デフォルト)です。

::

$ btlejack -f 0xac56bc12 -x nordic -o capture.nordic.pcap

ll_phdrエクスポートタイプは、暗号化された接続をスニッフィングする場合に便利です。これはcrackle <https://github.com/mikeryan/crackle>_でもサポートされています。したがって、暗号化された接続をスニッフィングして解読したい場合は、これが最適な方法です。

また、-sオプションを使用して、crackleに特定の解読戦略を指定する必要がある場合もあります:

::

$ crackle -i some.pcap -s 1

接続キャッシュ

Btlejackは、処理を少し高速化するために、接続関連の値を保存する接続キャッシュを使用します。この接続キャッシュは、特にアクセスアドレスが以前に表示された場合に問題を引き起こす可能性があります。

このキャッシュは-zオプションでフラッシュできます:

::

$ btlejack -z

Wiresharkでのライブパケットダンプ

Btlejack 2.0では、新しい -w オプションが導入されました。このオプションを使用すると、パケットのライブ分析を実行するためにFIFOパス(既存または新規)を指定できます:

::

$ btlejack -c any -w /tmp/blepipe

FIFOと出力ファイルを同時に使用することもできます:

::

$ btlejack -c any -w /tmp/blepipe -o blepackets.pcap

Raspberry Piでbtlejackを使用するためのヒント

以前に、USB経由でRaspberry Pi Zero WをセットアップするためにUSB仮想イーサネット(RNDIS)を有効にした場合、これを再度無効にする必要があります(つまり、boot/config.txtからdtoverlay=dwc2を削除し、boot/cmdline.txtからmodules-load=dwc2,g_etherを削除し、sudo rebootを実行します)。そうしないと、スニファのUSB接続に干渉するためです。

Bluetooth LE 5 & 5.1 サポート

このバージョンは、Bluetooth Low Energyバージョン5および5.1、特にバージョン5で導入された新しいチャネル選択アルゴリズム(CSA #2)をサポートしています。ただし、使用されるハードウェアはバージョン5で追加された2つの新しいPHYをサポートしていないため、1Mbps Uncoded PHYを使用する接続のみをスニッフィング、ジャミング、おそらくハイジャックできます。

また、Btlejackに含まれているCSA #2の現在の実装は、現時点ではチャネルマップの更新をサポートしていないことに注意してください。

新しいBLE 5接続のスニッフィング

Btlejackは使用されているチャネル選択アルゴリズムを自動的に検出するため、心配する必要はなく、通常どおりパケットをキャプチャするだけです。

既存のBLE 5接続のスニッフィング

既存のBLE 5接続(1Mbps Uncoded PHYを使用し、このPHYのみ)のスニッフィングはそれほど難しくありません。まず、-5オプションを使用して、BLE 5接続をターゲットにすることを指定する必要があります。既存の接続がCSA #2とCSA #1のどちらを使用しているかを判断する方法はないため、どちらかが機能するまで両方の手法を試す必要があります。

::

$ btlejack -f 0x11223344 -5

次に、Btlejackは使用されているチャネルマップを回復し、次にホップ間隔値を回復します:

::

$ btlejack -f 0x11223344 -5 [i] Synchronizing with connection 0x11223344 ... ✓ CRCInit: 0x40d64f ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 160

その後、この接続のPRNGカウンタ値を回復しようとします:

::

$ btlejack -f 0x11223344 -5 [i] Synchronizing with connection 0x11223344 ... ✓ CRCInit: 0x40d64f ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 160 ✓ CSA2 PRNG counter = 5137 [i] Synchronized, packet capture in progress ...

これが完了すると、Btlejackはこの接続と同期し、通常どおりパケットを処理します。

既存のBLE 5接続のジャミング

ここでは新しいことはありません。ただし、-5オプションを使用して、BLE 5接続を攻撃していることを指定する必要があります。

この攻撃は、それぞれ*-mフラグと-p*フラグを使用して、使用するチャネルマップとホップ間隔値を指定することで最適化できることに注意してください。両方を指定する必要があります。指定しないと機能しません。

既存のBLE 5接続のハイジャック

現時点では、この攻撃は時間に敏感であるため、BLE 5接続のハイジャックは成功していません。私のBLE 5デバイスはレイテンシ0を使用しているため、遅延が許容されず、この攻撃は失敗します。

正規のBLE 5デバイスを入手できたら、これを改善する予定です。

ツールをダウンロード