首页
社区
课程
招聘
[翻译]嵌入式设备硬件PCB级逆向
发表于: 2017-8-1 14:53 13138

[翻译]嵌入式设备硬件PCB级逆向

2017-8-1 14:53
13138

嵌入式设备硬件PCB级逆向

本文介绍一些实用的PCB级硬件逆向的基础技术,可用于研究者和白帽团体分析未知的硬件。SEC Consult运营的硬件安全专用实验室是SEC Consult安全实验室的一部分。下面展示的研究只是硬件实验室众多研究中的冰山一角。

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

如何从熟知的设备开始

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

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

要对一个完全未知的普通设备刷写固件,简直就是一个难以完成的任务。故而,我们需要逐步剖析硬件电路,以便检查其所用的固件及检测固件的安全漏洞。不过,对硬件电路进行逆向工程并不是一件简单的事,尤其是专有芯片集电路,好在一些基本的分析技术还是适用的。在我们的例子中,Broadcom(博通公司)的SoC作为Belkin F9 K1106asBelkin:贝尔金公司)无线中继器的核心部件。我们用该设备作为例子并不是我们对它别有兴趣,而是它的芯片集也用在众多社区支持的其他设备上。为了识别该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输出

该芯片似乎有一个ID0x2535717f32位的指令寄存器。此前,我们所知的仅是该Broadcom SoC标签为BCM5358UB0KFBG。现在,我们有更多的了解了——不过是针对该具体的设备;JTAG接口可以用来控制芯片及对系统底层的访问。

硬件黑客——抓取固件

提取固件,是完善该SoC信息池的最后一步。一个Macronix的串行flash芯片安装在PCB背面。花几分钟用flashromFT2322H即可读取出其中的内容。从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,更具挑战性的NANDNOR flash芯片,由于其复杂的接口、狭小的封装和数目众多的引脚,操作起来甚是困难。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/08/05
最新回复 (7)
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
   
2017-8-1 19:35
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
非常棒
2017-8-1 21:04
0
雪    币: 1103
活跃值: (556)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
终于出现硬件级破解教程了啊,呵呵
2017-8-1 21:57
0
雪    币: 2734
活跃值: (801)
能力值: ( LV9,RANK:310 )
在线值:
发帖
回帖
粉丝
5
感谢大家的支持,既然对硬件有兴趣,那我以后就多翻译些这样的文章
2017-8-2 12:59
0
雪    币: 57
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢,欢迎楼主多翻译类似文章

2017-8-4 16:14
0
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
7
这叫做逆向的话,抄板那帮要撞墙,磨芯片那帮要跳海。实验室那帮学生仔个个是神了~~
2017-8-4 16:50
0
雪    币: 458
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
就这也叫逆向了?这一眼就看得出来得了~~那人家抄板得算什么了。我还以为你把文件什么得全给整完了呢。
2019-10-12 13:00
0
游客
登录 | 注册 方可回帖
返回
//