freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

通过设备UART接口调试获取shell
2021-04-28 14:20:23

0x00前言

前段时间陆陆续续的对光猫、路由器、摄像头等硬件接口调试进行了学习,但都没有进行记录,所以在此把学习过程简单记录下来,方便后续查阅。

0x01所需工具

1、TTL转USB版

2、万用表

3、TTL转USB版

4、SecureCRT 连接工具

5、电烙铁(可选)

6、公母杜邦线若干

7、路由器、光猫等设备

0x02硬件接口简介

硬件接口,例如UART、JTAG、I2C、SPI ,用于设备制造商在设计时的前期调试,生产时的程序烧录,以及诊断测试使用。

板上的调试端口保持打开状态可能造成的危害有,例如设备与云端和移动应用软件的通讯协议泄露、信息完整性校验的算法泄露、加密过程中所使用的秘钥泄露,再利用对这些信息的理解,从而响更多同类型的设备。

image

0x03部分通信接口介绍

通信接口介绍-UART(通用异步接收器发送器)

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。

UART 允许两个硬件设备之间的异步串行通信。它们可以位于同一块电路板上(例如微控制器与电机或LED屏幕通信),也可以位于两个不同的设备之间(例如设备微控制器与PC通信)。它可以允许通过串行读取/写入设备。

在许多物联网设备中,板上的UART端口保持打开状态,任何人都可以通过串口连接和访问以获得shell,日志输出等。设备在通常情况下会带有一组引脚,当我们连接到微控制器UART RX和TX引脚时,便可用于发送和接收串行数据。

image

UART引脚作用介绍:

VCC:供电pin,一般是3.3v-5v,正极

GND:接地,负极

RXD:接收数据引脚

TXD:发送数据引脚

通信接口介绍- JTAG(微控制器调试接口)

JTAG属于微控制器调试接口。微控制器具有在运行期间使用指定引脚进行调试的规定,这些引脚连接到电路板上的引脚。这些引脚(端口)由开发人员和设计人员用于调试,读/写固件和微控制器内部存储器,生产后控制/测试微控制器引脚。这使得调试端口成为最关键的攻击面之一,因为它为攻击者提供了强大的功能和访问权限。除了JTAG之外,还包括cJTAG、SWD。

image

通信接口介绍- I2C、SPI

I2C

集成电路总线,是一种串行通信总线。 内部集成电路是一种短距离通信协议,用于同一板上芯片之间的通信。I2C连接到微控制器I2C引脚,通常存储数据或代码。 典型的攻击包括篡改数据,提取敏感信息,破坏数据等。我们分析EEPROM芯片上的静态数据,并通过嗅探I2C通信来执行运行时分析,可以了解安全隐患。

SPI

串行外设接口也是一种短距离通信协议,用于同一板上芯片之间的通信。与I2C相比,具有更高的吞吐量。
它用于与各种设备通信。 闪存和EEPROM芯片也使用SPI。 测试和分析的方法与I2C类似。

0x04芯片识别

遇到不太熟的芯片可以直接通过芯片上的型号进行资料查询:

1.https://www.21icsearch.com
2 https://www.datasheets.com/zh-cn
3.http://www.datasheetlocator.com/zh
4.https://www.datasheetpdf.com
5.https://www.ifixit.com
6.https://fccid.io

0x05寻找UART串口方法

调试UART设备前首先找到在板子上找到相应的引脚:

image

若已有明确标识引脚的板子,可以直接使用USB转TTL工具按照下图连接方式进行连接:

1、GND引脚对应TTL的GND

2、RXD引脚对应TTL的TXD

3、TXD引脚对应TTL的RXD

image

若PCB板子上没有明确标识出引脚的设备,还需要通过其它方法确定UART接口:

可以在PCB板上寻找并排的焊点或者通孔,常规来说数量大约为3-5个的通孔可来作为UART调试串口的初步定位。

image

1、定位GND
将万用表扭至蜂鸣档,将一只表笔抵住电源焊锡点,另一个表笔抵住通孔位置进行测试,发出蜂鸣声的通孔,就可以初步判定为GND。

image

2、定位VCC

因已知VCC电压为3.3V,将万用表扭至20V上,将一只表笔放置于GND上,另一只表笔依次对其它通孔进行测试,查看哪个是电压3.3V,发现有两个引脚均为3.3V。

image

因两个脚同时为3.3V或5V,所以我们利用VCC+GND 正负极相连短路来最终确定VCC引脚,我们将一根插线,接入GND,另一个端对两个均为3.5V的通孔进行测试,发现连接到第二个孔时,电源灯灭,故确定该通孔即为VCC引脚。

image

3、定位TXD

根据经验每次开机有数据传输的时候该引脚电压都会发生变化来判断TXD引脚即可,将表笔置于剩余未确定的口中重启设备观察电压变化即可。

image

4、定位RXD

其他三个引脚定位完毕,剩下的就是RXD引脚....

定位完毕后使用USB转TTL工具按照顺序接入电脑即可

image

打开SecureCRT-选择Serial-COM口-波特率即可连接到UART串口

image

image

0x06问题排查

连接设备时乱码:

第一种是接线松动及线序接反。

这个问题可以按照上述步骤重新排查通孔位置及排查是否存在接触不良,重新焊接引脚即可。

第二种是波特率设置不对所导致的问题,可以尝试更换常用的波特率。

目前常用波特率为115200

1.波特率:每秒钟传送的二进制位数
国际上规定了一个标准波特率系列:
110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、 28.8Kbps 、33.6Kbps、56Kbps等

2.波特率因子
在波特率指定后,输入移位寄存器/输出移位寄存器在接收时钟/发送时钟控制下,按指定的波特率速度进行移位

连接设备时可读不可输入问题:

SecureCRT , Session Options -> Connection -> Serial -> Flow Control,将默认选中的 RTS/CTS 取消掉即可正常输入。

image

0x07参考致谢

https://www.jianshu.com/p/36540b602ef6 https://blog.csdn.net/oyaseng/article/details/81207999 https://paper.seebug.org/506/

# UART # UART调试 # 串口调试 # 接口调试 # 路由调试
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录