2

获取固件的几种方法

 2 years ago
source link: https://cool-y.github.io/2019/07/24/%E8%8E%B7%E5%8F%96%E5%9B%BA%E4%BB%B6/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

获取固件的几种方法

发表于 2019-07-24

| 分类于 IOT

| 阅读次数:

962 字

|

4 分钟

固件有几种获取方法?

通过分析物联网设备遭受攻击的链条可以发现,黑客获取固件,把固件逆向成汇编或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这个地址的报文,猜测极有可能是华为的服务器,过滤一下会看得更清楚

可以看到在通过三次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卡、硬盘等),用编程器或读卡器获取

逻辑分析仪

您的支持将鼓励我继续创作!

Recommend

  • 25
    • 新浪科技 tech.sina.com.cn 6 years ago
    • Cache

    几种方法让你使用iPhone打字快到飞起来

    几种方法让你使用iPhone打字快到飞起来

  • 30

    *本文原创作者:LlawLiet,本文属FreeBuf原创奖励计划,未经许可禁止转载。 之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,...

  • 42

    摘要 在日常开发过程中经常需要获取类的扩展集。即获取类的子类集(抽象类),或者接口实现类。比如说状态模式中,状态构建类,策略模式中的,策略构造方式。本文介绍几种获取方式。 实现 以策略模式为例...

  • 57
    • www.tuicool.com 5 years ago
    • Cache

    PHP获取类私有属性的几种方式

    今天在推上看到一条获取PHP类私有属性的推文,感觉很有意思: 顺着推文联想,还有其他方式吗...

  • 11
    • www.freebuf.com 4 years ago
    • Cache

    简述获取shellcode的几种方式

    0×00 shellcode简介 在攻击中,shellcode是一段用于利用软件漏洞的有效负载,shellcode是16进制的机器码,以其经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 可在寄存器eip溢出后,放入一段可...

  • 5
    • www.taholab.com 3 years ago
    • Cache

    飞行:穿越机INAV固件安装方法

    发表评论 取消回复您的电子邮箱地址不会被公开。 必填项已用*标注评论 显示名称 * 电子邮箱地址 * 网站地址 在此浏览器中保存我的显示名称、邮箱地址和...

  • 7

    在命令行内获取公网 IP 的几种简单方法不管是在家里还是办公室,或者是公司的主机,很多时候都是在内网中,也就是说很多都是通过 NAT 上网的,有时候需要查询下出口的公网 IP,如果有浏览器可以用百度或者 Google 搜索 ip 这个关键词得到公网 IP,那要是在命令...

  • 22

    无需TTL线将 ER-X 从 Open-WRT 刷回原厂固件的方法 前几日将一台 UBNT ER-X 路由器从原厂刷到了 Open-WRT 系统,但后来又闲置,今日想刷回原厂用作其他目的,遂搜索一番。中文网站介绍的刷回原厂固件基本都是需要 TTL 线。我以前也专门买过...

  • 7

    飞行:INAV固件中倒置电机(反推)的安装方法 By: taho...

  • 5

    在JavaScript中,获取当前年份是比较常见的需求之一。在本文中,我们将详细探讨JavaScript中获取年份的几种方法。 一、获取当前年份 我们可以使用JavaScript中的Date对象来获取当前的年份: var date = new Date(); var year...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK