KillerBee框架

KillerBee攻击框架,KillerBee是针对ZigBee和IEEE 802.15.4网络的框架和安全研究工具。

框架要求

KillerBee目前仅支持Linux系统。在安装之前必须安装以下Python模块。在Ubuntu系统上,可以使用以下命令安装所需的依赖项:

# apt-get install python-gtk2 python-cairo python-usb python-crypto python-serial python-dev libgcrypt-dev
# git clone https://github.com/secdev/scapy
# cd scapy
# python setup.py install

**注:**KillerBee是一个强大但并不“友好”的测试平台,它主要是为开发人员和高级分析专家服务的,所以在此之前建议大家先了解一下ZigBee协议。

安装KillerBee

KillerBee使用标准的Python “setup.py” 安装文件。使用以下命令安装KillerBee:

# python setup.py install

目录结构

KillerBee代码的目录结构描述如下:

  • doc - KillerBee库中的HTML文档,由epydoc提供。
  • firmware - 支持的KillerBee硬件设备的固件。
  • killerbee - Python库源代码。
  • sample - 样本数据包捕获,在下面引用。
  • scripts - 开发中使用的Shell脚本。
  • tools - 使用此框架开发的ZigBee和IEEE 802.15.4攻击工具。

硬件要求

KillerBee框架目前支持多款设备,包括River Loop ApiMote、Atmel RZ RAVEN无线电收发器、MoteIVTmote Sky、TelosB mote、Sewino嗅探器和运行Silicon Labs Node Test固件的各种硬件。简单介绍其中三种硬件设备:

ApiMote v4 beta:Beta版目前支持嗅探,注入和阻塞。

工具介绍

KillerBee包括多种工具,用于攻击使用KillerBee框架构建的ZigBee和IEEE 802.15.4网络。通过“ -h”参数可以查看详细的使用说明,在下面进行了概述。

  • zbid - 标识KillerBee和关联工具可以使用的可用接口。
  • zbwireshark - 与zbdump相似,但是公开了一个命名管道,以便在Wireshark中进行实时捕获和查看。
  • zbdump - 类似tcpdump的功能,用于捕获ibpcap数据包文件。它可以以pcap和Daintree格式保存数据包。
  • zbreplay - 实施重放攻击,从指定的Daintree DCF或libpcap数据包捕获文件中读取数据,然后重新传输帧。ACK帧不会重新发送。
  • zbstumbler - 激活ZigBee和IEEE 802.15.4网络发现工具。Zbstumbler发送信标请求帧,同时跳频,记录和显示有关已发现设备的摘要信息。
  • zbdsniff - 捕获ZigBee流量,查找NWK帧和无线密钥配置。找到密钥后,zbdsniff会将密钥打印到stdout。
  • zbkey - 尝试向协调器发送连接请求获取密钥。
  • zbconvert - 将数据包捕获从Libpcap转换为Daintree SNA格式,反之亦然。
  • zbfind - 一个GTK GUI应用程序,用于通过测量RSSI来跟踪IEEE 802.15.4发射机的位置。
  • bscapy - 提供一个交互式的Scapy shell,用于通过KillerBee界面进行交互。必须安装Scapy才能运行此功能。

框架介绍

KillerBee主要用于针对数据包捕获文件(libpcap或Daintree SNA)中嗅探数据包的过程,并用于注入任意数据包。包括IEEE 802.15.4,ZigBee NWK和ZigBee APS数据包解码器在内的辅助功能也可用。

KillerBee API以epydoc格式记录,此发行版的doc/目录中包含HTML文档。如果已安装epydoc,则还可以根据需要生成一个方便的PDF进行打印,如下所示:

$ cd killerbee
$ mkdir pdf
$ epydoc --pdf -o pdf killerbee/

pdf/ 目录将包含一个名为“api.pdf”的文件,其中包括框架文档。

由于KillerBee是一个Python库,因此它集成了其他Python软件。例如,Sulley库是由Pedram Amini用Python编写的模糊测试框架。KillerBee框架使用它来数据包注入功能,用于生成格式不正确的ZigBee数据并将其传输到目标。

ZigBee流量分析

ZigBee网络环境

搭建ZigBee协议通信的智能灯泡系统,一共四个终端设备(RGB灯,分为1、2、3、4号)以及ZigBee协调器用于与每个终端设备(灯)网络通信。

使用ApiMote

在树莓派环境下,根据前面的介绍安装好KillerBee框架以后,下面开始用手上的ApiMote硬件设备进行ZigBee流量的分析测试。

ApiMote连接树莓派以后,会自动检测到ApiMote(ID 0403:6015)并加载驱动程序。

root@raspberrypi:/home/pi/Desktop# lsusb
Bus 001 Device 005: ID 0403:6015 Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO)
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

ApiMote通常会预装好固件,不需要重新刷写。若需要刷写固件,步骤如下:

  1. 在 firware/ 目录下包含多种设备的固件,选择ApiMote的固件apimotev4_202011.hex

  2. 运行flash_apimote.sh脚本,如果第一次不同步而超时,有时可能需要两次尝试才能正确闪烁。

  3. 可以通过运行 sudo zbid来验证固件,并列出设备。

    root@raspberrypi:/home/pi/Desktop# zbidDev Product String       Serial Number/dev/ttyUSB1 GoodFET Api-Mote v2
    

嗅探数据包

zbwireshark允许用户在Wireshark中实时嗅探和查看ZigBee流量。该工具创建一个管道,Wireshark然后从中读取数据,并实时显示出来。

root@raspberrypi:/home/pi/Desktop# zbwireshark -f 15
zbwireshark: listening on '/dev/ttyUSB1', channel 15, page 0 (2425.0 MHz), link-type DLT_IEEE802_15_4, capture size 127 bytes

-f 参数指定第 15 信道。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SNQjjWBm-1613961595158)(https://yaseng-1251294608.cos.ap-guangzhou.myqcloud.com/image/image-20210202210009270.png)]

也可以使用 zbdump 以pcap和DainTree格式嗅探并保存数据包。这里我们以pcap格式,以便使用wireshark打开分析协议,下面运行zbdump,同样使用 -f 指定信道。

root@raspberrypi:/home/pi/Desktop# zbdump -f 15 -w test.pcap
zbdump: listening on '/dev/ttyUSB1', channel 15, page 0 (2425.0 MHz), link-type DLT_IEEE802_15_4, capture size 127 bytes
^C
54 packets captured

使用wireshark打开捕获的数据包

数据包中,捕获的源和目的地址被分配了网络ID,例如

  • PAN ID :0xd85b
  • 0x0000 通常是协调器。
  • 0x0c08 是其中一个终端设备加入ZigBee网络分配的ID。
  • 扩展地址是硬件地址:00:12:4b:00:22:30:5e:4b

重放ZigBee流量

通过捕获设备的数据包,然后将该流量进行重播回设备。

zbdump刚刚使用过此工具将流量保存到数据包文件中,接下来使用zbreply工具,将从zbdump获取的pcap文件,通过ApiMote对其重播。

-f 参数指定信道,-w 参数指定用于写入捕获的数据包的pcap文件,-r指定用于读取捕获的数据包的pcap文件。

root@raspberrypi:/home/pi/Desktop# zbdump -f 15 -w operating.pcap
zbdump: listening on '/dev/ttyUSB0', channel 15, page 0 (2425.0 MHz), link-type DLT_IEEE802_15_4, capture size 127 bytes
^C
61 packets captured
root@raspberrypi:/home/pi/Desktop# zbreplay -f 15 -r operating.pcap
zbreplay: retransmitting frames from 'operating.pcap' on interface '/dev/ttyUSB0' with a delay of 1.0 seconds.
34 packets transmitted

嗅探密钥

zbdsniff 工具可以从ZigBee网络抓取的流量数据包pcap文件中发现明文的密钥key,并返回key。

root@raspberrypi:/home/pi/Desktop# zbdsniff -f operating.pcap -k c028128de295be0708aebe9eed
Processing operating.pcap
[+] Processed 1 capture files.

但是我没有从文件中得到任何输出,可能没有找到可用的key。

zbkey 与 zbdsniff 目的相似,不同的是 zbkey 会向协调器发送连接,然后发送数据请求来检索获取密钥,而不是扫描pcap文件。-f 参数指定信道,-s 定时,-p 参数指定 PAN ID,-a 参数指定ZigBee硬件地址。但是没有返回成功。

root@raspberrypi:/home/pi/Desktop# zbkey -f 15 -s 0.1 -p d85b -a 00124b0022305e4b
Sending association packet...
Sending data request packet...
Received frame                                          .^
Length of packet received in associate_handle: 54
0000:  61 88 ac 5b d8 c4 10 00 00 08 02 c4 10 00 00 1e   a..[............
0010:  81 28 49 b4 09 00 3a a9 da fe ff 27 71 84 00 ce   .(I...:....'q...
0020:  8c 9f 39 98 2e 26 f8 2c d1 54 ca 0a d9 2d fb 6c   ..9..&.,.T...-.l
0030:  06 82 e3 29 03 00                                 ...)..Received frame
Length of packet received in associate_handle: 50
0000:  61 88 cd 5b d8 08 0c a2 c4 08 02 08 0c 00 00 1d   a..[............
0010:  85 28 47 99 02 00 4b 5e 30 22 00 4b 12 00 00 b5   .(G...K^0".K....
0020:  a9 58 f8 e2 96 ed ab 4f 9b 50 76 b4 99 d2 99 1a   .X.....O.Pv.....
0030:  09 d1                                             ..Received frame
Length of packet received in associate_handle: 5
0000:  02 00 af 45 e8                                    ...E.Sorry, we didn't hear a device respond with an association response. Do you have an active target within range?

拒绝服务攻击

KillerBee 框架提供了 zbassocflood工具,该工具尝试将大量关联请求发送到目标网络。需要PAN ID(-p),信道(-c)和定时(-s)。

root@raspberrypi:/home/pi/Desktop# zbassocflood -p d85b -c 15 -s 0.1
zbassocflood: Transmitting and receiving on interface '/dev/ttyUSB0'
.............
^C
Sent 13 associate requests.

KillerBee的攻击方式大致分为,发现设备(zbstumbler、zbopenear、zbfind),嗅探流量(zbdump、zbwireshark),获取密钥(zbdsniff、zbkey、zbgoodfind),重放流量(zbscapy、zbreplay),拒绝服务(zbscapy、zbassocflood)。

(原创内容,转载请注明出处……)

KillBee框架的使用(上)相关推荐

  1. layUI框架中文件上传前后端交互及遇到的相关问题

    下面我将讲述一下我在使用layUI框架中文件上传所遇到的问题: 前端jsp页面: <div class="layui-form-item"> <label cla ...

  2. 第三百一十九节,Django框架,文件上传

    第三百一十九节,Django框架,文件上传 1.自定义上传[推荐] 请求对象.FILES.get()获取上传文件的对象 上传对象.name获取上传文件名称 上传对象.chunks()获取上传数据包,字 ...

  3. IOS开发基础之使用AFNetworking框架实现文件上传get和post请求

    IOS开发基础之使用AFNetworking框架实现文件上传get和post请求 AFNetworking框架 请自行从github官网clone.命令为 git clone xxx.xxx是项目的地 ...

  4. 《ASP.NET Core 3 框架揭秘(上下册)》送书结果公告

    [免费送书].Net5实操后的我一夜未眠,来个大胆预测!的送书抽奖结果已经出来了: 这位中奖的同学尽快填写收货地址,4/2 日还没有完成填写将作废,奖品可是热门的<ASP.NET Core 3 ...

  5. layui表单加文件 php_layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例...

    本文实例讲述了layui框架实现文件上传及TP3.2.3对上传文件进行后台处理操作.分享给大家供大家参考,具体如下: layui框架是1.0.9版本.. 首先html页面代码如下: js代码如下: l ...

  6. jquery.form.js java_使用jQuery.form.js/springmvc框架实现文件上传功能

    使用的技术有jquery.form.js框架, 以及springmvc框架.主要实现异步文件上传的同时封装对象,以及一些注意事项. 功能本身是很简单的,但是涉及到一些传递参数类型的问题.例如:jque ...

  7. Mint-UI框架router-link返回上一页的方法 - 踩坑篇

    使用mint-ui框架的header导航组件,<router-link to="">如何实现点击返回上一页? 代码如下: <template><!-- ...

  8. ssm上传文件获取路径_ssm框架实现图片上传显示并保存地址到数据库(示例代码)...

    本案例是通过springmvc+spring+mybatis框架以商品上传为例,实现的图片上传功能,并把图片的地址保存到数据库并在前台显示上传的图片. 本项目是使用maven搭建的项目,首先看下项目结 ...

  9. php 文件上传框架,Laravel框架实现文件上传的方法分析

    本文实例讲述了Laravel框架实现文件上传的方法.分享给大家供大家参考,具体如下: 配置文件: config/filesystems.php, 新建存储空间 'uplaods' => [ 'd ...

  10. robotframework框架ui自动化测试上传附件问题

    一.input标签直接输入 获取元素直接sendkeys,传入文件路径(此方法没有成功,可能和框架有关,上传流文件不可以?) 二.使用autoit3工具生成exe文件,os.system运行文件 1. ...

最新文章

  1. Go 学习笔记(74)— Go 标准库之 unsafe
  2. BeanShell 跟jdk js引擎使用记录
  3. 直播APP开发:直播的广告效益和号召力分析
  4. 第三次学JAVA再学不好就吃翔(part14)--基础语法之循环语句注意事项
  5. python自定义切片_自定义Python切片,请指教
  6. 使用反向传播算法计算参数的梯度并用python实现加法和乘法节点的反向传播
  7. Notepad++在线安装使用JSON插件
  8. 内存条上面参数详解_价格极低的国产颗粒内存条:光威弈系列Pro评测,超频表现超稳定...
  9. linux开发环境搭建(4)-从SD卡启动uboot
  10. Spring5.0响应式编程入门
  11. “云+移动互联时代,2014移动平台高峰论坛”隆重举行
  12. 网络设备设置/取消console口登陆单独密码
  13. Android分享wifi给电脑,安卓手机怎么通过USB共享网络给mac电脑
  14. Delphi使用逍遥安卓模拟器
  15. 创业项目融资似乎很容易。而事实上,真正创业拿到融资的项目连1%都不到。
  16. Android 关于极光推送退出APP时清空通知的问题
  17. [2011JMP]Some Serrin-type regularity criteria for weak solutions to the Navier-Stokes equations
  18. PHP实现水仙花算法
  19. python自己做课程表_Kivy做一个课程表App(上)
  20. Android学习|控件——Notification通知

热门文章

  1. SDOI2018 旧试题
  2. 如何使用maven打包
  3. Spring Struts2 整合
  4. duilib学习 --- 360demo 学习
  5. Hibernate批量操作数据
  6. POJ 2142 The Balance ★ (不定方程 ax+by=c 的|x|+|y|最小解)
  7. position学习终结者(一)
  8. VirtualBox 扩展win7虚拟硬盘容量
  9. linux lsof命令语法
  10. 每天一道剑指offer-重建二叉树