
Man-in-the-Middle攻撃などを使用したBLE(Bluetooth Low Energy)セキュリティ評価のためのNode.jsパッケージ。

BLE(Bluetooth Low Energy)Man-in-the-Middle などのためのNode.jsパッケージ。
参照:
https://github.com/sandeepmistry/noble
https://github.com/sandeepmistry/bleno
npm install gattacker
両方のコンポーネントを実行する場合、config.envで変数を設定します:
"central"と"peripheral"モジュールを別々のボックスでそれぞれ1つのBT4インターフェースで実行する場合は、値をコメントアウトしたままにできます。
sudo node ws-slave
対象のペリフェラルに接続し、WebSocketサーバーとして動作します。
デバッグ:
DEBUG=ws-slave sudo node ws-slave
node scan
パラメータなしでブロードキャストされたアドバタイズメントをスキャンし、DEVICES_PATHにjsonファイル(.adv.json)として記録します。
node scan <peripheral>
選択したペリフェラルのサービスとキャラクタリスティックを探索します。 探索したサービス構造をDEVICES_PATHにjsonファイル(.srv.json)として保存します。
アクティブなリクエスト/レスポンス改ざんのために、デバイスのjsonサービスファイル内のキャラクタリスティックにフック関数を設定します。
例:
{
"uuid": "06d1e5e779ad4a718faa373789f7d93c",
"name": null,
"properties": [
"write",
"notify"
],
"startHandle": 8,
"valueHandle": 9,
"endHandle": 10,
"descriptors": [
{
"handle": 10,
"uuid": "2902",
"value": ""
}
],
"hooks": {
"dynamicWrite": "dynamicWriteFunction",
"dynamicNotify": "customLog"
}
}
関数:
<dynamic|static><Write|Read|Notify>
dynamic: 元のデバイスに接続する
static: 元のデバイスに接続せず、改ざん関数をローカルで実行する
指定された関数をhookFunctionsから呼び出そうとします。独自の関数を含めてください。 いくつかの例がhookFunctionsサブディレクトリにあります。
staticValue - 静的な値
node advertise -a <advertisement_json_file> [ -s <services_json_file> ]
WebSocketを介してws-slaveに接続し、元のデバイスにリクエストを転送します。 静的実行(-s)は、ws-slaveに接続せずにサービスをローカルで設定します。フックを適切に設定する必要があります。
多くのアプリケーションでは、元のデバイスのMACアドレスをクローンする必要があります。 BlueZの補助ツールbdaddrがhelpers/bdaddrに提供されています。
cd helpers/bdaddr
make
ラッパースクリプト:
./mac_adv -a <advertisement_json_file> [ -s <services_json_file> ]
ダンプファイルはconfig.envのDUMP_PATHで設定されたパスに保存されます(デフォルトはdump)。
詳細:
https://github.com/securing/gattacker/wiki/Dump-and-replay
電源を切り、祈りながら再試行してください ;)
hciconfig <hci_interface> reset
この設定ではさまざまな問題が発生する可能性があります。
NOBLE_HCI_INTERFACEとBLENO_HCI_INTERFACEを切り替えてみてください。
hcidump -x -t <hci_interface>
FAQ:https://github.com/securing/gattacker/wiki/FAQ
詳細情報:www.gattack.io
Copyright (C) 2016 Slawomir Jasek, SecuRing [email protected]
以下に定める条件に従い、本ソフトウェアおよび関連文書ファイル(以下「ソフトウェア」)の複製物を取得するすべての人に対し、ソフトウェアを無制限に扱うことを許可します。これには、ソフトウェアの複製、変更、結合、出版、頒布、サブライセンス、および/または販売の権利、およびソフトウェアを提供された者に同様の権利を許可することを含みますが、これに限定されません。
上記の著作権表示および本許可表示は、ソフトウェアのすべての複製または重要な部分に含まれるものとします。
ソフトウェアは「現状のまま」提供され、明示的であるか黙示的であるかを問わず、いかなる種類の保証もありません。これには、商品性、特定目的への適合性、および権利非侵害に関する保証が含まれますが、これに限定されません。いかなる場合も、著作者または著作権者は、ソフトウェアに関連して生じたいかなる請求、損害、その他の責任も負いません。これには、契約行為、不法行為、またはその他の行為に基づく場合も含まれます。