树莓派4b抓取IOT流量环境配置
缘起
在研究某些 IOT 设备时发现,该设备的操控逻辑是:手机发出指令到云端服务器,云端服务器发送指令到 IOT 设备。
手机到云端服务器之间的数据,用手机 root 装上 exposed+justtrustme 搭配 burpsuite 就能抓取 http、https 。
云端服务器到 IOT 设备之间的流量需要一些奇淫技巧。IOT 设备交互流量不局限于 http(s) 流量,还有通过 zigbee、蓝牙网关等等其他协议,实现本地联动的,burp 用起来就捉襟见肘了,Wireshark、科来网络分析系统等支持多协议的软件就体现优势。
设想了几个抓取方法:
在电脑上建立热点使用电脑无线网卡建立 WIFI 供 IOT 设备链接,电脑以有线方式链接至路由器;
将无线网卡桥接到有线网卡,确保联网;
在电脑上用 Wireshark 对无线网卡进行抓包;
在路由器上抓包:需要是基于 linux 的路由器,能装上 tcpdump ,软路由就符合条件。使用软路由无线网卡建立 WIFI 供 IOT 设备链接,软路由以有线方式链接至上级路由器。
在软路由上用 tcpdump 对无线网卡进行抓包,然后用 Wireshark 进行分析。
中间人攻击
后面翻了一下文章,找到有大概总结文章:IoT渗透之抓包5法 ,部分思路重合可以互相借鉴。
手上有个树莓派,多买张 tf卡就可以弄软路由,所以先尝试在软路由器上抓包的可行性。
安装 OpenWrt
需要工具
- 烧录工具:balenaEtcher
- OpenWrt 固件包
固件下载
软路由前 2-3 年火了之后,已经有很多长期维护的编译版本提供下载,不需要再自己折腾编译。这里提供一个 3k star 的下载源:SuLingGG/OpenWrt-Rpi ,镜像站点:https://openwrt.cc/releases/targets/bcm27xx/bcm2711/。
固件命名说明:
- factory :比 sysupgrade 增加原厂验证、分区信息等,用于刷机。
- sysupgrade : 升级包。用于在 OpenWrt 基础上进行系统升级更新。
- ext4、squashfs :文件系统格式。ext4 可修改,squashfs 只读;ext4 较新。
选择 ext4-factory、squashfs-factory 都行:
烧录固件
输入系统密码授权写入权限,等待完成即可。
初始化
首次启动前,移除树莓派网线
首次启动前,移除树莓派网线
首次启动前,移除树莓派网线,否则首次启动不会开启 WIFI ,会给 OpenWrt 分配一个网线所链接网段的一个 ip 。
如果使用主机没有无线网卡,那就用网线链接树莓派和主机进行初始化。
如果使用的固件不是上文链接下载的,移除网线后首次启动没有无线网络,可能是固件设置问题,尝试换一个固件解决
连接无加密的 OpenWrt :
默认后台:192.168.1.1
默认账号:root
默认密码:password
接口:配置 WAN、LAN 接口
无线:配置无线网络
无线配置
设备配置
工作频率-模式:几种模式对应是 802.11 不同协议,简要说明几种模式,深入了解移步谷歌
模式 | 工作频率 | 速度 | 简要描述 |
---|---|---|---|
AC | 5G | 最快 | 不兼容老旧设备 |
N | 2.4G或5G | 中等 | 5G带宽比AC低。如果需要 2.4G 选这个适中协议 |
Legacy | 2.4G或5G | 最慢 | 兼容性最强,带宽最低 |
工作频率-频宽:越大越快
ESSID : WIFI 名字
接口配置
模式:WiFi 工作模式。具体模式??
网络:纳入这个 WiFi 的物理/虚拟接口。可以将不同物理/虚拟接口区分在不同的 WIFI 下互不干扰。
无线安全:WIFI 密码
网络接口怎么配置要依据树莓派的接入方式。假设方式可以借鉴:OpenWrt路由器无线中继、桥接、信号放大、访客网络的实现方案
启动SSH
默认情况下,只允许从 lan 口 ssh 登录,我为了方便就配置成未指定,即任意端口流量都可以访问。
默认账号:root
默认密码:password
分配SD卡剩余空间
resize2fs /dev/mmcblk0
出现问题未解决
OpenWrt 系统使用很少一部分空间,df -h
或者 lsblk
查看系统空间会与 SD 卡容量不匹配,原因是 SD 卡部分空间没有挂载。
如果使用硬盘安装,下面操作中 mmcblk
替换成 sda
列出磁盘
1
fdisk -l
新建分区:
n
;分区类型:primary
;分区开始地址是
/dev/mmcblk0p2
结束地址到 SD 卡末尾,地址自行按在实际情况计算;保存退出:
w
;操作过程记录:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43Command (m for help): p
Disk /dev/mmcblk0: 29.12 GiB, 31266439168 bytes, 61067264 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5452574f
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 8192 110591 102400 50M c W95 FAT32 (LBA)
/dev/mmcblk0p2 114688 1650687 1536000 750M 83 Linux
/dev/mmcblk0p3 61067263 61067263 1 512B 83 Linux
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (3,4, default 3):
First sector (2048-61067263, default 2048): 1650688
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1650688-61067263, default 61067263):
Created a new partition 3 of type 'Linux' and of size 28.3 GiB.
Command (m for help): p
Disk /dev/mmcblk0: 29.12 GiB, 31266439168 bytes, 61067264 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5452574f
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 8192 110591 102400 50M c W95 FAT32 (LBA)
/dev/mmcblk0p2 114688 1650687 1536000 750M 83 Linux
/dev/mmcblk0p3 1650688 61067263 59416576 28.3G 83 Linux
Command (m for help): w
The partition table has been altered.
Syncing disks.格式化分区:
mkfs.ext4 /dev/mmcblk0p3
WEB 后台启动挂载点:
UUID 根据容量可以判断新建的分区是哪个;新建一个文件夹用来当作挂载点:
重启一下
有线桥接部署
场景说明
软路由 WAN 口用网线接到主路由 LAN 口:实现接入主路由子网、连通互联网;
IoT 设备连接软路由 WiFi 实现上网与被抓包;
攻击机连接主路由 WiFi 通过 SSH 控制软路由抓包与提取流量包;
默认情况下,软路由的无线与有线是互相隔离的子网,即攻击机不能 ping IoT 设备,可以通过设置软路由防火墙取消子网隔离,方便操作。
配置LAN
进入接口管理,将 LAN 口调整为仅无线网卡,:
配置WAN
新加 WAN 接口,将有线网卡加进去,协议选择 DHCP :
保存&应用后,用网线将树莓派网口与路由器&光猫 LAN 口链接,刷新会出现上级路由 ip 段就是 WAN 配置正确:
配置防火墙
下图是默认配置,这个配置已经可以通过一级路由上网了,如果有误删配置,可以参考下图重新配置一下。
上面的这个配置总结特点:
- 二级路由下设备可以访问一级路由设备,并且可以通过一级路由出网
- 一级路由设备不能访问二级路由设备
到这里有线桥接就完成了,IOT 设备能够通过软路由->主路由出网。
others
连通一二级路由
如果需要开启一级路由设备允许访问二级路由设备,修改 wan 口入口流量允许转发到 lan 口(不管vpn接口也可以,因为没用到),然后允许 wan 口入站流量,具体设置看图:
配置一下路由表就能穿越两个路由,mac 配置:
1 | # mac:192.168.199.131 |
IP 动态伪装、MSS 钳制
IP 动态伪装、MSS 钳制功能不是很清楚作用。测试几轮后,WAN 口需要打开 IP 动态伪装才能连接上一级路由。
如果上不了网,多半是防火墙或者是 DNS 的问题。
在路由器上抓包
环境信息
- 树莓派4b 搭载 openwrt
- tcpdump
- Wireshark
- 科来网络分析系统
安装 tcpdump
[启动SSH](# 启动SSH)
1 | opkg update |
tcpdump 参数可以查阅文章:常用的 tcpdump 命令参考手册、Tcpdump命令抓包详细分析
1 | tcpdump -vv -s0 -c 1000 -i wlan0 -w ./1.pcap |
-vv
: 显示状态-c
: 抓包多少条-i
: 指定网卡,比如wlan0 wifi,eth0 有线网卡,br-lan 一般都是指lan的网桥 就是包括wifi和lan部分-s0
: 不限制包的长度,也是抓取完整的包-w
: 文件路径: 保存抓到的数据包到指定文件 这里方便后期导出来到wireshark里分析哈哈
抓取流量包之后,拉回本机 wrieshark 分析就好了: