电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2887 人浏览分享

通过设备UART接口调试获取shell

[复制链接]
2887 0
本帖最后由 zhaorong 于 2021-6-1 15:15 编辑

0x00前言

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

0x01所需工具

1、TTL转USB版
2、万用表
3、TTL转USB版
4、SecureCRT 连接工具
5、电烙铁(可选)
6、公母杜邦线若干
7、路由器 光猫等设备

0x02硬件接口简介

硬件接口 例如UART JTAG I2C SPI  用于设备制造商在设计时的前期调试生产时的程序烧录以及诊断测试使用。
板上的调试端口保持打开状态可能造成的危害有,例如设备与云端和移动应用软件的通讯协议泄露 信息完整性校
验的算法泄露、加密过程中所使用的秘钥泄露,再利用对这些信息的理解 从而响更多同类型的设备。

QQ截图20210601143952.png

0x03部分通信接口介绍

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

UART允许两个硬件设备之间的异步串行通信。它们可以位于同一块电路板上例如微控制器与电机或LED屏幕通信
也可以位于两个不同的设备之间 例如设备微控制器与PC通信。它可以允许通过串行读取/写入设备。
在许多物联网设备中 板上的UART端口保持打开状态,任何人都可以通过串口连接和访问以获得shell 日志输出等设备
在通常情况下会带有一组引脚 当我们连接到微控制器UART RX和TX引脚时,便可用于发送和接收串行数据。

1619590337_6088fcc17b894bf70fc70.jpg

UART引脚作用介绍:

VCC:供电pin,一般是3.3v-5v正极
GND:接地,负极
RXD:接收数据引脚
TXD:发送数据引脚

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

19.png

通信接口介绍- 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设备前首先找到在板子上找到相应的引脚:

QQ截图20210601144803.png

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

1、GND引脚对应TTL的GND
2、RXD引脚对应TTL的TXD
3、TXD引脚对应TTL的RXD


18.png

若PCB板子上没有明确标识出引脚的设备还需要通过其它方法确定UART接口:
可以在PCB板上寻找并排的焊点或者通孔 常规来说数量大约为3-5个的通孔可
来作为UART调试串口的初步定位。

16.png

1、定位GND

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

12.png

2、定位VCC

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

QQ截图20210601145357.png

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

11.jpg

3、定位TXD

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

10.jpg

4、定位RXD

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

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

9.png

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

8.png

7.png

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 取消掉即可正常输入。

6.png

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.