技术分享:逆向破解华为路由器第一部分

写在前面的话shell

下面将会介绍逆向一个路由器的过程,准确的说是一台华为 HG533路由器。缓存

本文仅表明原文做者意图,同时文章中介绍的工具、技术带有必定的攻击性,请合理合法使用。异步

正文工具

前面的思路也比较简单就是寻找串口,而这个串口也是预留性质的一个串口,主要是为了后期调试以及升级设备时使用。而对于路由器你能够看作是一个小型的嵌入式设备,从打印机到智能相机均可以这么看待,而串口有时候是隐藏起来的,咱们的目的就是找到这个串口而后调试设备。利用串口能够访问路由器的CFE、观察boot和调试信息、经过一个Shell与系统进行交互异步串行通讯。下文须要注意的是关于路由器串口的描述,在没有特殊说明的状况下,都是指UART。oop

探测串口ui

这里须要注意一下,在路由器中,咱们要寻找的串口不是指一般所见的RS232,而是指UART(通用异步收发器),它是路由器设备中比较常见的一种接口。在寻找UART过程当中必定要注意在路由器主板上那些单行具备4~6个引脚的位置,大多数状况仍是有用的,但少数状况例外。这个不是为用户准备的,因此有些时候是闲置的,同时也没有用到其引脚。在看到拆解以后的电路板后,有两处地方引发了个人注意。(见下图)spa

目测这个设备有两个不一样的串口以及两处不一样的电路构成,同时利用这两部分完成设备的通讯任务。如今就有一个思路了,咱们能够根据电路板接线状况,来找到主电路,而最后也能够获得咱们须要的信息。命令行

引脚识别3d

咱们在这里发现两排引脚(见图),根据前面的判断这就应该是UART。如今找到了目标,第一件事情就应该是看看哪些是有用的,哪些是没有用的,我使用一个简单的技巧来判断,这是从电路板正面拍的照片,咱们来一块儿看一下。调试

在这里咱们须要注意PCB电路板上面的焊锡点之间的链接。

1.好像链接到了什么东西(注意两点钟方向的位置)

2.没有链接

3.若是焊点链接了不少地方,那么颇有多是GND或VCC引脚,但这不是万能的方法。须要补充一点的是,VCC引脚一般被作成方形,路由器主板上能够看到较宽的走线,那么该引脚极有可能也是VCC引脚。

4.GND引脚一般存在多条走线链接到周围的地线,因此看到周围的地线就须要注意了。而在这里就看到了这种状况,因此就能够判断出这个是GND引脚了。

5.链接到什么东西

焊接引脚

在上面的图片咱们看到了两个串口。那么如今就开始在上面进行焊接,虽然比较困难,我尝试从焊点正面突破,而后穿透焊点到背面去,但很明显这是很是困难的。而第二个串口,我打算利用 Dremel电动打磨机来达到前面的目的,这样就能够在PCB电路板的背面将其焊接好,这个工做量仍是比较大的。

引脚说明

前面已经获得了三个有用的引脚,但咱们尚未具体利用UART。这里须要强调的是UART做为异步串口通讯协议的一种,工做原理是将传输数据的每一个字符一位接一位地传输。让咱们来回顾一下UART:

TX【发送引脚,Tx 上发送的数据将被Rx 输入端接收】

Rx【接收引脚,Rx 输入端接收】

GND 【接地,该引脚电压一般为0】

Vcc【电源电压。该引脚电压较稳定,一般3.3V ~5V,不要尝试链接】

CTS【容许发送,同时CTS 是对RTS 的应答,一般状况下使用】

DTR【一般状况下使用】

CTS和RTS是串行通信中流控制的两个引脚,简单介绍一下,就是当接收方(UART2)认为能够接受UART数据时,将RTS置为有效位。发送方(UART1)的 CTS引脚接收到此信号后,才将数据进行发送。通常来讲,当UART数据接收缓存大于两个字节空余时,就能够将RTS置为有效接收。用举例的方法解释就是,A向B发送RTS信号,代表A要向B发送若干数据,B收到RTS后,向全部基站发出CTS信号,代表已准备就绪,A能够发送。而UART 能够进入一个内部回环(Loopback)模式,用于诊断或调试。在回环模式下,从Tx 上发送的数据将被Rx 输入端接收。而Tx以及Rx设置值时(默认值1),这时候电压也会出现浮动。

所以咱们来总结一下,都获得了什么结论:

1.此前的三个引脚看来就是,TX、RX和GND。

2.一个看起来很像GND(正对着的第4个位置处)

3.Tx-被用于数据传输

4.Rx-与另一处有关联

固然为了验证的话,我就须要尝试不一样的排列组合方式,那么就须要USB-UART ,即下位机将USB的数据转换为UART的数据。下面能够利用示波器和万用表来了解每一个引脚是什么状况了。

如今使用了示波器来验证每一个引脚的具体状况:

1.GND-固定在0V因此确定是接地

2.Tx -你能够在图片中看到发送的信息

3.在0v之间波动,那么必定是 Rx,那是由于尚未出现更大的浮动。

如今咱们已经了解了引脚的状况,下面就须要分析串口状况了,那么就须要知道串口通讯时的速率(波特率),就须要用到逻辑分析仪。若是没有,那么就须要尝试以前的排列组合方式了,

我已经开始利用分析仪分析了波特率的状况,如今就能够看到这些数据(\n\r\n\rU-Boot 1.1.3 (Aug…)。

一旦了解到串口以及波特率的状况,下面就开始与设备链接

链接串口

如今已经获得了设备的硬件信息,下面就须要与设备创建通讯关系。下面就开始USB-UART,而后利用两个串口进行通讯,并用示波器查看其状况

当开始使用串口以后,计算机与设备之间也开始发送信息,这是当时的信息,下面是发送的第一行信息

Please choose operation:

3: Boot system code via Flash (default).

4: Entr boot command line interface.

0

命令行界面??当我按下4以后,就获得了这个。此外当咱们按下3以后,等待Flash校验完成以后,再按下回车,就会看到“Welcome to ATP Cli ”信息以及一个登录提示。通过尝试以后就能够利用默认密码 admin:admin成功登录。

——————————-

—–Welcome to ATP Cli——

——————————-

Login: admin

Password:    #Password is ‘admin’

ATP>shell

BusyBox vv1.9.1 (2013-08-29 11:15:00 CST) built-in shell (ash)

Enter ‘help’ for a list of built-in commands.

# ls

var   usr   tmp   sbin  proc  mnt   lib   init  etc   dev   bin

在命令行页面利用shell 命令就能够获取root权限了。而该路由器还运行了BusyBox,这些会在之后介绍。

接下来会介绍什么呢?

如今都已经获得BusyBox了,在下面将会着重于软件,例如密码、一些应用程序等问题来介绍。固然还会介绍一些比较有意思的事情,敬请期待。。。。。。。

*参考来源jcjc-dev

相关文章
相关标签/搜索