Cool-Y.github.io/source/_posts/获取固件.md
2021-04-11 03:18:56 +08:00

96 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 获取固件的几种方法
date: 2019-07-24 11:49:28
tags:
- IoT
- 硬件层
categories:
- IOT
description: 固件有几种获取方法?
---
通过分析物联网设备遭受攻击的链条可以发现黑客获取固件把固件逆向成汇编或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卡、硬盘等用编程器或读卡器获取
# 逻辑分析仪