利用UART破解硬件设备的技术指南

本文详细介绍了如何通过UART接口对嵌入式设备进行硬件级渗透测试,包括使用JTAGulator和Attify Badge工具定位串行端口、提取固件以及获取root shell权限的全过程。

如何通过UART破解硬件设备

Raymond Felch //

前言:
几周前我开始探索固件逆向工程(参见《JTAG – 微控制器调试》),虽然在目标板(三星S3C4510 CPU的Linksys BEFSR41路由器)上成功找到并识别了JTAG(联合测试行动组)引脚,但遇到了复杂问题。使用OpenOCD和多种JTAG适配器(包括自制树莓派Pi3作为JTAG/SWD适配器)提取固件时出现多次故障:有时能dump闪存数据,但binwalk工具识别异常,可能是时序问题或未正确暂停目标状态。供应商也可能通过拉高复位引脚或熔断关键JTAG路径来保护专有信息。由于使用的是状态未知的二手板卡,问题更加复杂。

OpenOCD(开源片上调试器)的理解与实施本身即是一项巨大挑战。根据维基百科,OpenOCD是用于ARM和MIPS系统的免费片上调试、在线编程和边界扫描测试工具。OpenOCD服务器通过TCP/IP端口接收远程命令,并提供与板上设备交互的接口(可通过Telnet端口4444或GDB端口3333)。

选择新路由器与新方法

拆解过程简单:移除底部三颗螺丝,用塑料撬片即可分离外壳。

定位UART测试点
仿照JTAG方法,我检查板上可能提供串行访问(TX RX GND)的引脚组。立即发现一个5引脚点(标记JD6),疑似串行端口访问点。为方便操作,我焊接了5针排针。

使用JTAGulator工具
用万用表通过连续性测试找到GND引脚(DJ6-5,与金属屏蔽层连接)。随后使用JTAGulator将剩余4引脚连接至通道0–3,并将GND引脚跳线至JTAGulator的GND。

连接完成后,为目标板和JTAGulator供电。启动PICOCOM后立即获得提示符:

输入H获取帮助菜单,可见UART命令用于查找TX和RX引脚。

继续前需设置目标I/O电压,使用V命令完成:

随后使用U命令查找TX和RX引脚。需指定要检查的通道数(引脚数量):

按空格键开始后,JTAGulator尝试多种波特率以寻找最佳匹配。评估发现115200波特率下通信量最大,且无论波特率如何,TX和RX引脚识别结果一致。

最终结果:通道3为TX(DJ6引脚2),通道2为RX(DJ6引脚3),波特率115200。可通过Passthrough模式(使用P命令)进一步测试,与芯片实际通信:

成功获取设备可用命令列表。执行reboot命令可重启路由器并获取设备信息(确认与Broadcom射频芯片BCM43236通信,使用其专有wl驱动)。

尝试wlhist命令会dump堆栈并自重启:

rpcdump命令提供Dongle信息,有趣但实用性有限。

参考Quarkslab.com的《逆向工程Broadcom无线芯片组》博客,尝试使用PySerial脚本执行’md’命令进行内存dump,但仅能获取不足2k数据(芯片识别入侵后自重启中断操作)。将dump限制为1k(1024字节)可生成小型bin文件,但实用性低。

定位第二个UART测试点
意识到当前命令有限且芯片安全性较高,我继续寻找可能直接连接Broadcom CPU的串行访问点。谷歌搜索中发现E2500路由器确实有两个串行端口TAP,且其中一个(DJ6射频芯片43236)无法用于固件修复,这促使我寻找另一个TAP。最终找到另一组5引脚(标记DJ2),同样焊接5针排针。

此次改用Attify Badge作为UART接口(原因:JTAGulator成本较高且易损,而Attify Badge专为串行通信设计,支持UART、SPI、I2C及JTAG)。设置简单:D0和D1分别为TX和RX,GND为D8。

通过新TAP(测试访问点DJ2)和Attify Badge供电后,立即获得BusyBox的root shell:

输入’help’获取更多命令,尝试’login’后使用admin:admin和admin:密码均失败,多次Ctrl-C后终端返回’#‘提示符(可能因密码错误直接进入root shell)。

执行ls -la遍历目录和子目录,查找配置文件、日志文件等,并执行ps、netstat等命令:

确认已进入固件核心的Linux shell,达成原始目标(dump固件以逆向分析代码和环境)。尝试通过端口23 Telnet或端口22 SSH连接均被拒绝,表明路由器网络安全良好,但无需凭证即获root访问权限存在安全隐患。

总结
这是一次愉快且高效的探索,证明了除JTAG外还有其他硬件访问方法。定位两个UART串行端口并使用新设备(Attify Badge、JTAGulator)连接它们,成为极具生产力的替代解决方案。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计