首页 » 互联网 » 嵌入式设备硬件PCB级逆向_芯片_固件

嵌入式设备硬件PCB级逆向_芯片_固件

少女玫瑰心 2024-09-21 23:31:29 0

扫一扫用手机浏览

文章目录 [+]

本文先容一些实用的PCB级硬件逆向的根本技能,可用于研究者和白帽团体剖析未知的硬件。
SEC Consult运营的硬件安全专用实验室是SEC Consult安全实验室的一部分。
下面展示的研究只是硬件实验室浩瀚研究中的冰山一角。

本日,我们生活在一个被嵌入式设备统治的天下中。
每个人都可能生活在各种各样的窥伺、监控中。
受安全漏洞影响的路由器、网络摄像头、智好手机和其他嵌入式设备,是极易被攻击的。
最近爆发的Mirai病毒事宜和其他LoT恶意软件更加解释了这一点。
无论是出于好奇还是应顾客哀求进一步提高产品的安全性,想要深度审计该类设备的固件,我们都须要拆卸下来,好找到调试接口。
只有通过对系统进行调试和运行,才能揭示个中的隐秘之处。
由于该过程具有一定的毁坏性,故常日会对设备造成破坏。
因此,要想进行深入的剖析,仅准备一台设备是不足的!

嵌入式设备硬件PCB级逆向_芯片_固件 嵌入式设备硬件PCB级逆向_芯片_固件 互联网

如何从熟知的设备开始?

为了节省昂贵的嵌入式剖析用度,一个大略快捷方法是更换固件。
大型公司很随意马虎在引进大批IoT设备之前委托安全咨询公司对该产品的内置固件进行测试,以此最大程度地降落系统的安全风险。
不过,对用户和业余爱好者来说,选择并不多,他们能安装的固件多来源于第三方如OpenWRT。
只管这些固件的性能不见得一定比原生的(原生固件是针对该专有芯片指令集开拓的)更加出色,但在安全性方面,确实如此。
当我们在完成对已知设备的安全审计的任务时,硬件剖析的部分常日简化为在网上的干系论坛(常日是OpenWRT Wiki)探求干系资料。

嵌入式设备硬件PCB级逆向_芯片_固件 嵌入式设备硬件PCB级逆向_芯片_固件 互联网
(图片来自网络侵删)

硬件黑客——识别无文档设备的调试接口

要对一个完备未知的普通设备刷写固件,切实其实便是一个难以完成的任务。
故而,我们须要逐步阐发硬件电路,以便检讨其所用的固件及检测固件的安全漏洞。
不过,对硬件电路进行逆向工程并不是一件大略的事,尤其是专有芯片集电路,好在一些基本的剖析技能还是适用的。
在我们的例子中,Broadcom(博通公司)的SoC作为Belkin F9 K1106as(Belkin:贝尔金公司)无线中继器的核心部件。
我们用该设备作为例子并不是我们对它别有兴趣,而是它的芯片集也用在浩瀚社区支持的其他设备上。
为了识别该SoC的引脚,我们将它接上专用电源。
打开设备的外壳,便是PCB板了。
我们第一个目的是串行连接到设备,以得到shell或至少访问到勾引装载程序。

图:Belkin F9 K1106as PCB图及其不同模块

要识别金属防护罩保护的模块,最大略的办法是拆掉防护罩。

图:用钳子打开静电防护罩

仅为了逆向剖析出隐蔽在PCB板上的调试引脚接口,我们不必将全部的防护罩拆除。
借助暴露在PCB上的UART接口(译者注:通用异步收发器,详见百度百科)可以实现最初的调试,由于把UART直接接到以11520

Baud 8n1为终真个FT2322H板上,可以获取得root

shell。
比较于其他接口,很随意马虎就可以辨认出UART,它只有两个针脚,吸收端及发送端。
进行串行通信并非总是UART,但这能帮助我们缩小可能性。
一组3-5针的引脚常日是UART接口,这是开拓PCB时预留的。

UART常日的引脚排布为(GND|RX|TX|VCC)或(GND|TX|RX|VCC)。

那JTAG(译者注:联合测试事情组,详见百度百科)在哪呢?该标准许可开拓者或有履历的黑客轻易地掌握CPU、在运行阶段调试SoC和对flash进行读取和编程以及运行自检测试。
这个问题可以如此作答:用JTAG暴力工具。
SEC

Consult开拓的工具(包括硬件和软件)附带有该功能,当然,网络上也有许多用于该目的的工具。
由于有效的调试针脚为4-5针,PCB板上部的10个针脚看起来像是JTAG。

图:暴力检测JTAG针脚

图:SEC Consult安全实验室开拓的硬件剖析工具“SEC Xtractor”

经由暴力检测后,终于找出了针脚!
为了保持完全性,也标记了UART接口。

图:JTAG引脚

至于JTAG适配器,用的是廉价的迷你FT2322H模块。

图:通过迷你FT2232H模块连接到JTAG

连接到OpenOCD的要求给出了如下结果:

图:OpenOCD输出

该芯片彷佛有一个ID为0x2535717f的32位的指令寄存器。
此前,我们所知的仅是该Broadcom SoC标签为BCM5358UB0KFBG。
现在,我们有更多的理解了——不过是针对该详细的设备;JTAG接口可以用来掌握芯片及对系统底层的访问。

硬件黑客——抓取固件

提取固件,是完善该SoC信息池的末了一步。
一个Macronix的串行flash芯片安装在PCB背面。
花几分钟用flashrom和FT2322H即可读取出个中的内容。
从datasheet上可以快速找出其引脚定义:

图:Macronix SPI flash芯片引脚

将flash芯片从PCB板上取下后,置于转接器上并启动flashrom:

图:用flashrom读取SPI存储器

转储文件包括全体程序存储器和暂存数据(NVRAM)。
用flashrom重写固件并芯片焊接回去是刷第三方固件的另一种方法。
通过调用“binwalk-Adump.bin”,得到许多的“MIPSEL”(MIPS

little endian)指令,这让我们不禁假设:该Broadcom SoC 是基于通用MIPSEL32

CPU的。
SOP封装的串行flash芯片是最随意马虎读取的flash,更具寻衅性的NAND和NOR

flash芯片,由于其繁芜的接口、狭小的封装和数目浩瀚的引脚,操作起来甚是困难。

通过IoT Inspector对转储文件进行初步剖析显示,该固件存在一些基本的安全风险,同时也获取到该设备利用的软件信息。
由于我们剖析的是老旧设备,一些安全漏洞可以追溯到2007年:

图:IoT Inspector报告摘录

硬件黑客——逆向SoC引脚

正如先前所述,如果得到了SoC的引脚定义,那么我们将可以对任何利用BCM5358UB0KFBG的设备进行逆向。
为此,大多数情形下我们可以用热风枪将BGA封装的芯片拆焊下来。

图:热风枪返修台

图:拆下SoC后的Belkin PCB

根据SoC的引脚连接情形,结合datasheet的干系资料以及针脚对地/电源(GND/VCC)电压的测定和逻辑推断,我们得出该芯片部分主要引脚的功能定义。

图:BCM5358U0KFBG芯片部分引脚功能定义

显然,BCM535x系列芯片有着相似的引脚定义。
https://wikidevi.com网站网络有打算机硬件的干系信息,当然也包括Broadcom SoC系列。
我们找到了下面的条款:

图:来源: https://wikidevi.com

不雅观察包含该类芯片的其他路由器的图片可以创造,芯片的引脚功能都是大同小异。

Wikidei网站包含浩瀚硬件的干系信息,除此之外,制造商供应的干系文档也非常详尽。
中国彷佛是唯一一个各个品牌路由器的生产国。

硬件黑客——来自中国的供应链

所有这些中国制造的电子产品,芯片、外围设备、路由器等,常常是由同一家工厂组装完成的。
结果很明显,这些产品的质量都在一个等级,一些工厂也为相互竞争的市场供应商生产产品。
我们来看看两张华硕RT-N53路由器和Belkin F9 K1106无线中继器的内部图片。
这PCB板上的标识切实其实便是一摸一样,是不是?

图:华硕PCB,来源:https://apps.fcc.gov/

图:Belkin PCB

巧合吗?并不像啊。
这些标识的字体是ELCAD(电脑赞助电子设计)软件默认设置的,如果不是逼迫哀求,开拓者是不会去改动的。
这意味着相同的模板重用于华硕PCB的开拓,乃至更多其他供应商。
因此,同一家ODM(原设计制造商)卖力设计制造包括Belkin在内各品牌的产品。

在嵌入式设备生产中,这并不是什么不常见的生产形式,尤其是对付来自US的公司。
个中的固件多数也是亚洲供应商基于标准的亦或是定制的SDK开拓的。

愈演愈烈的后门事宜大都是逻辑上的毛病——正如我们之前看到过的:

http://blog.sec-consult.com/2017/06/ghosts-from-past-authentication-bypass.html

http://blog.sec-consult.com/2016/12/backdoor-in-sony-ipela-engine-ip-cameras.html

http://blog.trendmicro.com/trendlabs-security-intelligence/netis-routers-leave-wide-open-backdoor/

http://www.devttys0.com/2013/10/from-china-with-love/

本文由看雪翻译小组 StrokMitream 编译,来源SecConsult@Thomas Weber,转载请注明来自看雪社区

标签:

相关文章