96 lines
4.5 KiB
Markdown
96 lines
4.5 KiB
Markdown
---
|
||
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卡、硬盘等),用编程器或读卡器获取
|
||
# 逻辑分析仪
|