--- title: 获取固件的几种方法 date: 2019-07-24 11:49:28 tags: - IoT - 硬件层 categories: - IoT --- 通过分析物联网设备遭受攻击的链条可以发现,黑客获取固件,把固件逆向成汇编或C程序语言后,能分析出设备的运行流程和网络行为,还能找到安全加密相关的密钥相关的信息。如果这些“有心人”没能获取到固件信息,他们也很难发现这些漏洞。从这一点看,物联网设备的安全性,在很大程度上决定于其固件的安全性。 http://blog.nsfocus.net/security-analysis-of-the-firmware-of-iot/ https://open.appscan.io/article-1163.html # 官网获取或联系售后索取升级包 # 网络升级拦截 工具:wireshark、ettercap 流程:中间人->开始抓包->在线升级->分析固件地址->下载 案例:华为路由WS5200 四核版 这款路由器在网上找不到现有固件,我们尝试一下是否可以通过抓包在线升级过程获取固件。 首先关闭防火墙,否则无法访问路由器的服务,无法做中间人攻击。 使用ettercap进行arp欺骗,`sudo ettercap -Tq -i ens33 -M arp:remote /192.168.31.1// /192.168.31.134//` 打开wireshark进行抓包。理论上说,点击升级固件之后,wireshark就能够记录升级固件的整个过程(HTTP),但是结果却并不理想。 还好华为路由器自带了抓包的功能(方便后期的调试和维护),所以直接使用这个功能抓取报文,比做中间人要直接了当得多。 在点击升级固件之后,我们可以看到大量发往58.49.156.104这个地址的报文,猜测极有可能是华为的服务器,过滤一下会看得更清楚 ![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1563606353/samples/1.png) 可以看到在通过三次TCP握手之后,华为路由器向服务器发送了get请求,uri就是获取固件的地址 http://update.hicloud.com/TDS/data/files/p14/s145/G4404/g1810/v272964/f1/WS5200_10.0.2.7_main.bin 点击即可拿到最新的固件 案例:小米智能门锁 http://cdn.cnbj0.fds.api.mi-img.com/miio_fw/250cc495d7da7643680dadeab578fce0_upd_lumi.lock.mcn01.bin?GalaxyAccessKeyId=5721718224520&Expires=1566136387000&Signature=KLOrbsRANlJD7w7bKB03xI1t4/0= ./storage/emulated/0/Android/data/com.xiaomi.smarthome/cache/ble/250cc495d7da7643680dadeab578fce0_upd_lumi.lock.mcn01.bin ``` $ binwalk -Me 250cc495d7da7643680dadeab578fce0_upd_lumi.lock.mcn01.bin Scan Time: 2019-07-20 20:01:40 Target File: /home/han/ck/iot/250cc495d7da7643680dadeab578fce0_upd_lumi.lock.mcn01.bin MD5 Checksum: 250cc495d7da7643680dadeab578fce0 Signatures: 390 ``` # 通过串口读取 工具:uart转usb 流程:找到电路板上的uart接口(RX、TX、+5v、GND)->串口通信->拿到shell->tar打包固件->nc传输 案例:小爱音响 # 刷开发板固件,开启ssh服务 有些厂商除了稳定版固件,还会提供开发版供发烧友“玩弄”。 案例:小米路由器的开发板可通过安装ssh工具包开启ssh服务 流程:开启ssh->tar打包固件 ``` root@XiaoQiang:/# ls bin data dev etc extdisks lib mnt opt overlay proc readonly rom root sbin sys tmp userdisk usr var www 压缩提示没有足够的空间 root@XiaoQiang:/# tar -zcf bin.tar.gz bin/* tar: can't open 'bin.tar.gz': No space left on device 来看一下空间使用情况 root@XiaoQiang:/# df -h Filesystem Size Used Available Use% Mounted on rootfs 25.9M 25.9M 0 100% / none 60.5M 4.5M 56.0M 7% /dev tmpfs 60.9M 1.5M 59.4M 2% /tmp ubi0_0 25.9M 25.9M 0 100% / tmpfs 60.9M 1.5M 59.4M 2% /tmp tmpfs 60.9M 1.5M 59.4M 2% /extdisks ubi1_0 45.4M 6.7M 36.3M 16% /data ubi1_0 45.4M 6.7M 36.3M 16% /userdisk ubi0_0 25.9M 25.9M 0 100% /userdisk/data ubi1_0 45.4M 6.7M 36.3M 16% /etc /dev目录下还有足够空间,继续压缩 root@XiaoQiang:/# tar -zcf ./dev/bin.tar.gz bin/* root@XiaoQiang:/# tar -zcf ./dev/data.tar.gz data/* 其他的目录也是一样的方法 scp传输到本地 scp root:password@miwifi:/dev/*.tar.gz ./Desktop ``` # uboot提取固件 案例:2018年看雪提供的摄像头 # 通过调试接口JTAG/SWD # 拆存储(flash、SD卡、硬盘等),用编程器或读卡器获取 # 逻辑分析仪