
一个用于 BLE(蓝牙低功耗)中间人攻击及更多功能的 Node.js 包。
参见:
https://github.com/sandeepmistry/noble
https://github.com/sandeepmistry/bleno
npm install gattacker
运行两个组件,在 config.env 中设置变量:
如果你在仅有一个 BT4 接口的不同机器上分别运行"中央设备"和"外围设备"模块,可以将这些值保留为注释状态。
sudo node ws-slave
连接到目标外围设备,并作为 websocket 服务器运行。
调试:
DEBUG=ws-slave sudo node ws-slave
node scan
不带参数时扫描广播的广告数据,并将其记录为 json 文件(.adv.json)保存在 DEVICES_PATH 中。
node scan <peripheral>
探索所选外围设备的服务和特征。 将探索到的服务结构保存为 json 文件(.srv.json)保存在 DEVICES_PATH 中。
为了主动篡改请求/响应,请在设备服务的 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>
常见问题:https://github.com/securing/gattacker/wiki/FAQ
更多信息:www.gattack.io
版权所有 (C) 2016 Slawomir Jasek, SecuRing [email protected]
特此授予任何获得本软件及相关文档文件("软件")副本的人无限制地处理本软件的许可,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许获得软件的人这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按"原样"提供,不提供任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权的担保。在任何情况下,作者或版权持有人均不对任何索赔、损害赔偿或其他责任负责,无论其基于合同、侵权或其他方式,是否因本软件或本软件的使用或其他交易而产生、由本软件引起或与之相关。