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

写在前面的话

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

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

正文

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

探测串口

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

目测这个设备有两个不同的串口以及两处不同的电路构成,同时利用这两部分完成设备的通信任务。现在就有一个思路了,我们可以根据电路板接线情况,来找到主电路,而最后也可以得到我们需要的信息。

引脚识别

我们在这里发现两排引脚(见图),根据前面的判断这就应该是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

时间: 2024-08-02 03:27:40

技术分享:逆向破解华为路由器第一部分的相关文章

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

引文 在第一部分,我通过UART进行了调试,并在最后利用命令行页面利用shell 命令就可以获取root权限了.也就是在这一点上,我已经可以访问路由器了,之后就可以像测试人员一样去调试路由器了.开始的时候给人感觉这个路由器还是相对容易访问,不需要昂贵的工具,往往也会产生非常有趣的结果.如果想要在硬件方向进行逆向工作,但是没有什么时间.这往往会进行不到一个更高的层次,例如网络漏洞.ISP 协议等. 本文仅代表原文作者意图,同时文章中介绍的工具.技术带有一定的攻击性,请合理合法使用. 回顾 下图都是

20145331魏澍琛 《网络对抗技术》 PC平台逆向破解

20145331魏澍琛 <网络对抗技术> PC平台逆向破解 学习任务 1.shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode 的地址. 2.Return-to-libc 攻击实验:即使栈有不可执行的能力,无法将shellcode放入堆栈中运行,但我们却可以直接让漏洞程序调转到现存的代码来实现我们的攻击. 注入Shellcode并执行 1.设置环境 2.以 anyt

2017-2018-2 《网络对抗技术》 20155322 第二周 Exp1 PC平台逆向破解(5)M

2017-2018-2 <网络对抗技术> 20155322 第二周 Exp1 PC平台逆向破解(5)M 1-实践目标 1.1-实践介绍 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的.我们实践的目标就是想办法运行这个代码片段.我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Sh

网络对抗技术 2017-2018-2 20152515 Exp1 PC平台逆向破解(5)M

PC平台逆向破解 实践内容1 直接修改程序机器指令,改变程序执行流程 知识要求:Call指令,EIP寄存器,指令跳转的偏移计算,补码,反汇编指令objdump,十六进制编辑工具 学习目标:理解可执行文件与机器指令 进阶:掌握ELF文件格式,掌握动态技术 实践目标 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 实践步骤 首先让我们对pwn文件进行一个反汇编,可以看到文件中的是跳转到foo函数 让我们把文件转换成十六进制看一下 找到 d7 的位置 把 d7 修改为 c3 将

20155338《网络对抗技术》 Exp1 PC平台逆向破解

20155338<网络对抗技术> Exp1 PC平台逆向破解 实践目标 1.实践的对象是一个名为pwn1的linux可执行文件. 2.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 3.该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的.我们实践的目标就是想办法运行这个代码片段. 4.本次实践主要是学习两种方法: (1).利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发get

2017-2018-2 《网络对抗技术》 20155319 第二周 Exp1 PC平台逆向破解(5)M

2017-2018-2 <网络对抗技术> 20155319 第二周 Exp1 PC平台逆向破解(5)M 一.实践目标 1.1实践介绍 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的.我们实践的目标就是想办法运行这个代码片段.我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何She

20155313 杨瀚 《网络对抗技术》实验一 PC平台逆向破解(5)M

exp1 PC平台逆向破解(5)M 一.实验内容 1.手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 2.利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数. 3.注入一个自己制作的shellcode并运行这段shellcode. 二.实验目的 1.运行原本不可访问的代码片段 2.强行修改程序执行流 3.以及注入运行任意代码. 三.实验过程 第一阶段 1.将pwn1代码拷入kali上,改名20155313pwn1. 2.使用objd

2017-2018-2 20155333 《网络对抗技术》 Exp1 PC平台逆向破解

2017-2018-2 20155333 <网络对抗技术> Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的.我们实践的目标就是想办法运行这个代码片段.我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何S

20155231 邵煜楠《网络对抗技术》实验一 PC平台逆向破解

20155231 邵煜楠<网络对抗技术>实验一 PC平台逆向破解 实验内容 直接修改程序机器指令,改变程序执行流程: 通过构造输入参数,造成BOF攻击,改变程序执行流: 注入Shellcode并执行. 实验步骤 一: 下载目标文件pwn1,反汇编 利用 objdump -d pwn1 对pwn1进行反汇编: 用vi pwn1打开pwn1: 利用%!xxd将文件转换成16进制显示,利用/e8 d7ff ffff进行搜索将d7改为c3(计算"0804847d(getshell)-0804