首页
社区
课程
招聘
[翻译]蓝牙中间人攻击代理工具
发表于: 2017-3-9 17:22 5706

[翻译]蓝牙中间人攻击代理工具

2017-3-9 17:22
5706

前言

这个程序首先杀死bluetoothd进程,然后重新运行LD_PRELOAD,其指向绑定系统调用的wrapper,目的是阻止bluetoothd绑定到L2CAP port 1 (SDP)。所有的SDP流量都会通过L2CAP port 1,所以这个使两个设备之间中间人行为和转发容易操作,并且我们再也不用担心那些伪造的广播了。

该程序首先扫描每个设备的名称和设备类别,以制作精确的克隆。 它将字符串'_btproxy'附加到每个名称,以使它们可以从用户角度区分名称。 或者,您可以在命令行中指定要使用的名称。 BTProxy然后扫描设备的服务。 它为每个服务建立一个套接字连接,并打开一个监听端口供主设备连接。 一旦主设备连接,代理/ MiTM完成并且输出将被发送到STDOUT。


依赖

1.需要至少1个蓝牙卡(USB接入或内部包含)。

2.需要运行Linux,或者* nix,OS X.

3.BlueZ


对于debian系统,运行

sudo apt-get install bluez bluez-utils bluez-tools libbluetooth-dev python-dev


安装

sudo python setup.py install


运行

在两台设备上运行简单的MiTM或代理,

请运行

btproxy <master-bt-mac-address> <slave-bt-mac-address>

运行btproxy以获取命令参数的列表


例子

# This will connect to the slave 40:14:33:66:CC:FF device and 
# wait for a connection from the master F1:64:F3:31:67:88 device
btproxy F1:64:F3:31:67:88 40:14:33:66:CC:FF

其中主设备通常是电话,从设备mac地址通常是另一个外围设备(智能手表,耳机,键盘,obd2加密狗等)。

主设备是发送连接请求的设备,从设备是设备监听连接到它的东西。

代理连接到从设备并且主设备连接到代理设备后,您将能够查看流量并对其进行修改。


怎样找到BT mac地址

通常你可以在手机设置中查找它。 最粗糙的方式是将设备置于广播模式并扫描。

有两种方法来扫描设备:扫描和查询。 hcitool可以用来做到这一点

hcitool scan
hcitool inq


获取设备服务列表

sdptool records <bt-address>


用法

某些设备可能会基于另一个蓝牙设备的名称,类别或地址限制连接。

因此,程序将查找要被代理的目标设备的这三个属性,然后将它们克隆到代理适配器上。

然后,它将首先尝试从克隆的主适配器连接到从设备。 它将为每个服务托管的从服务器和中继流量服务器独立地创建一个套接字。


从属设备连接后,克隆的从属设备适配器将设置为侦听来自主设备的连接。 此时,真正的主设备应连接到适配器。 主控连接后,代理连接完成。


仅使用一个适配器

此程序使用1或2个蓝牙适配器。 如果使用一个适配器,则只会克隆从属设备。 如果使用2个适配器,则将克隆两个设备; 这对于限制性更强的蓝牙设备可能是必要的


高级用法

操作的流量可以通过python传递一个内联脚本处理。 只需实现master_cb和slave_cb回调函数。 这在接收数据时被调用,并且返回的数据被发送回相应的设备。

# replace.py
def master_cb(req):
    """
        Received something from master, about to be sent to slave.
    """
    print '<< ', repr(req)
    open('mastermessages.log', 'a+b').write(req)
    return req

def slave_cb(res):
    """
        Same as above but it's from slave about to be sent to master
    """
    print '>> ', repr(res)
    open('slavemessages.log', 'a+b').write(res)
    return res


另请参阅在replace.py中操作Pebble观察流量的示例函数,通过在程序控制台中输入“r”,可以在运行时编辑和重新加载该代码。 这避免了重新连接的麻烦。 任何错误将被捕获,并且继续定期传输。


工具下载

https://github.com/conorpp/btproxy




[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 569
活跃值: (261)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
2
像我有一部安卓手机,一个小米手环,它们通过蓝牙通信。我就想知道它们之前的通信协议是怎么样的。我还有一个小上网本,也带蓝牙功能,它的双系统之一是Ubuntu,感觉如果装了这里说的btproxy,那么我的上网本就处于手机和手环的中间位置,从而可以实施中间人监听了
2017-3-10 13:55
0
雪    币: 6112
活跃值: (1212)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
3
hanbingxzy 像我有一部安卓手机,一个小米手环,它们通过蓝牙通信。我就想知道它们之前的通信协议是怎么样的。我还有一个小上网本,也带蓝牙功能,它的双系统之一是Ubuntu,感觉如果装了这里说的btproxy,那么我的 ...
厉害了
2017-3-15 15:17
0
雪    币: 569
活跃值: (261)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
4
哆啦咪 厉害了[em_41]
2017-3-29 12:09
0
游客
登录 | 注册 方可回帖
返回
//