网站首页/网络技术列表/内容

技术共享:华为路由器第二局部的反向破解

网络技术2023-09-03阅读
网络故障(network failure)是指由于硬件的问题、软件的漏洞、病毒的侵入等引起网络无法提供正常服务或降低服务质量的状态。

荣耀路由器2固件分享

报价

在第一部分中,我通过UART进行了调试,最后,我使用命令行页面使用Shell命令来获取root特权。至此,我已经可以访问路由器,然后可以像测试仪一样调试路由器了。刚开始时,感觉该路由器相对容易访问,不需要昂贵的工具,并且经常产生非常有趣的结果。如果要在硬件方向上倒退,但是没有时间。这通常无法达到更高的级别,例如网络漏洞,ISP协议等。

本文仅代表原始作者的意图,并且本文介绍的工具和技术具有冒犯性,因此请合理合法地使用它们。

评论

下面的图片是先前分析的结果

荣耀路由器2固件分享

荣耀路由器2固件分享

按Enter键,您将看到消息“欢迎使用ATP Cli”和登录提示。尝试之后,我们可以使用默认密码admin:admin成功登录,然后获得BusyBox。

-------------------------------
-----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

在这里我们可以分析固件的三个级别(Ralink IC)

U-boot:设备启动程序。可以分析设备的内存映射,可以启动固件程序,并可以执行一些相对较低级别的任务。

ATP:可以控制裸机,并行处理等。基本上,它可以看作是Linux内核。

Busybox:集成了一些最常用的Linux命令和工具的工具箱,它还为我们提供了一些Shell命令。

荣耀路由器2固件分享_荣耀路由器2固件分享

如果在整个过程中获得低级访问权限,则肯定不会访问所有数据。但是这是合理使用BusyBox的好机会。现在,我重点介绍启动顺序,并且在重新启动过程中显示的一些数据也非常重要。让我们看看哪些可以被我使用。

启动顺序

引导顺序中有很多随机项,当然还有一些其他信息,例如压缩算法(闪存段)

荣耀路由器2固件分享

英特尔的闪存非常有用,我可以在这里进行分析。

荣耀路由器2固件分享

荣耀路由器2固件分享

更多信息

荣耀路由器2固件分享

访问闪存数据时,我们需要处理压缩算法,以便更好地了解使用了哪些压缩算法。

ATP和BusyBox

路由器中的Ralink IC主要与固件(ATP)一起使用,以并行控制存储单元和处理数据,同时确保硬件的工作状态。也就是说,它(ATP)可以被视为Linux内核,即以前所知道的ATP的CLI,但是它非常有限。

ATP>help
Welcome to ATP command line tool.
If any question, please input "?" at the end of command.
ATP>?
cls
debug
help
save
?
exit
ATP>

此处的shell命令中未提及help命令,但通常出现在sh和shell中。 ATP CLI中的命令少于10个。当然,没有控制文件和文件导航的复杂方法,这就是为什么出现BusyBox的原因。

荣耀路由器2固件分享_荣耀路由器2固件分享

BusyBox包含二进制文件和常见的Unix命令,这对开发非常方便。值得注意的是,它可以节省内存。从ls和cd命令到顶部,系统开始启动脚本程序,所有这些程序都允许我将Ralink IC用作Linux机器。

输入BusyBox以查看shell命令并运行这些命令

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
#
# ls /bin
zebra        swapdev      printserver  ln           ebtables     cat
wpsd         startbsp     pppc         klog         dns          busybox
wlancmd      sntp         ping         kill         dms          brctl
web          smbpasswd    ntfs-3g      iwpriv       dhcps        atserver
usbserver    smbd         nmbd         iwconfig     dhcpc        atmcmd
usbmount     sleep        netstat      iptables     ddnsc        atcmd
upnp         siproxd      mount        ipp          date         at
upg          sh           mldproxy     ipcheck      cwmp         ash
umount       scanner      mknod        ip           cp           adslcmd
tr111        rm           mkdir        igmpproxy    console      acl
tr064        ripd         mii_mgr      hw_nat       cms          ac
telnetd      reg          mic          ethcmd       cli
tc           radvdump     ls           equipcmd     chown
switch       ps           log          echo         chmod
#

您会注意到BusyBox的区别,并且分析文件系统(例如busybox的链接文件/ bin /)不是一个好的开始。敏感数据将不会存储在此处(BusyBox二进制文件)。

分析文件系统

现在,我已经弄清楚了哪些命令可用,然后我会看到那里有有用的数据,因此,在对系统有一个大致的了解之后,我不想在每个地方都显示详细的数据。这里也需要top命令。 top命令用于显示程序正在执行的过程,该权限适用于所有用户。尽管路由器当前处于空闲状态,但不会显示更多信息。

荣耀路由器2固件分享

有一个过程显示usbmount正在运行,在这里路由器的USB接口也起作用,插入USB闪存驱动器。

usb 1-1: new high speed USB device using rt3xxx-ehci and address 2
[...]
++++++sambacms.c 2374 renice=renice -n +10 -p 1423

插入后,安装位置为/ mnt / usb1_1 /,然后启动samba服务器。这些相关文件都在/ etc / samba /

# ls -l /etc/samba/
-rw-r--r--    1 0        0             103 smbpasswd
-rw-r--r--    1 0        0               0 smbusers
-rw-r--r--    1 0        0             480 smb.conf
-rw-------    1 0        0            8192 secrets.tdb
# cat /etc/samba/smbpasswd
nobody:0:XXXXXXXXXXXXXXXXXXX:564E923F5AF30J373F7C8_______4D2A:[U ]:LCT-1ED36884:

更多数据

netstat -a:检查哪些端口已打开

iptables –list:我们可以设置远程登录并继续连接到网络,但是我更喜欢保持裸机状态。

wlancmd帮助:远程控制无线信号。

/ etc / profile

/ etc / inetd

/ etc / services

/ var /:系统运行时使用的文件位置

/ etc /:系统配置文件等。

/ var /和/ etc /包含很多文件,/ etc / serverkey.pem是什么情况?

荣耀路由器2固件分享

在嵌入式设备中找到TLS证书(私钥)是正常的。可以在单个型号的设备上获取私钥,这也可以帮助您检测相同型号的设备。私钥可以从服务提供商处获得。另一方面,获得用于远程服务器通信的公共证书也是很常见的。我在这里找到了两个,都来自“同一个人的签名”。

/etc/servercert.pem:最有可能是服务器密钥

/etc/root.pem:是否可以连接到服务器(不确定)

更多数据位于/ etc / ppp256 / config和/ etc / ppp258 / config:

荣耀路由器2固件分享

荣耀路由器2固件分享_荣耀路由器2固件分享

用于验证身份凭证的信息也将通过HTTP接口传递,这就是我提出此概念的原因,稍后将对此进行介绍。信息太多,可能需要更多时间进行分析。在这里,您需要使用以前的磁盘来复制数据以进行分析。

收集信息

将收集的数据复制到计算机后,您可以搜索一些文件以查找。 -name * .pem,但不会显示其他TLS证书。您要在文件中搜索密码吗? grep -i -r密码。

荣耀路由器2固件分享

在这里我可以看到证书信息,该信息主要提供给TR-069、本地服务和STUN协议。 STUN是一种网络协议,它允许位于NAT(或多个NAT)后面的客户端从您自己的公用网络地址中找出您所支持的NAT类型以及将NAT绑定到某个本地端口的Internet端口。当然,这些可以通过HTTP接口来实现,但是这些通常是隐藏的。如果您想信任和理解,可以阅读本文。这里有很多TR-069协议和其他内容。我还可以获得BASE64格式的证书信息,但是数据加密稍差一些。

$ echo “QUJCNFVCTU4=” | base64 -D
ABB4UBMN

荣耀路由器2固件分享

这是路由器中设置的WiFi密码。它向我们展示了两个有趣的文件,它们不仅涉及内容,而且是路由器工作时的重要组成部分

/var/curcfg.xml:当前的配置文件,主要包括当时设置的WiFi密码(base64格式)。

/etc/defaultcfg.xml:默认配置文件用于恢复出厂设置,但不包括路由器的默认密码信息。

ATP(CLI)

ATP(CLI)仅提供一些命令。最有趣的一个是-shell-debug,但它看起来并不像真正的调试(调试显示),而只是为我提供了一些命令igmpproxy,cwmp,sysuptime和atpversion,但是这些并不是很有用。我在考虑cwmp命令是否可以发挥作用。它与路由器的远程配置有关吗?

荣耀路由器2固件分享

值得注意的是,CWMP(TR-069)也与路由器远程相关,甚至可能没有编码时间。这时,其他(ATP)命令无效。清除屏幕和帮助菜单,保存并退出,这些似乎对这一步骤几乎没有影响。

荣耀路由器2固件分享_荣耀路由器2固件分享

bootloader命令行界面

bootloader命令行界面可以访问某些内存区域,但是不幸的是,它没有授予我直接访问闪存芯片的权限。您可以在下面查看相关信息

Please choose operation:
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
You choosed 4
Stopped Uboot WatchDog Timer.
4: System Enter Boot Command Line Interface.
U-Boot 1.1.3 (Aug 29 2013 - 11:16:19)
RT3352 # help
?       - alias for 'help'
bootm   - boot application image from memory
cp      - memory copy
erase   - erase SPI FLASH memory
go      - start application at address 'addr'
help    - print online help
md      - memory display
mdio   - Ralink PHY register R/W command !!
mm      - memory modify (auto-incrementing)
mw      - memory write (fill)
nm      - memory modify (constant address)
printenv- print environment variables
reset   - Perform RESET of the CPU
rf      - read/write rf register
saveenv - save environment variables to persistent storage
setenv  - set environment variables
uip - uip command
version - print monitor version
RT3352 #

在这里需要注意的是,除非需要使用它们,否则不要启用这些命令,mm,mw和nm。当然,这些与这一步骤无关。在某些情况下,它将导致设备重新启动,然后使设备变成砖头。在这种情况下,md(内存显示)和printenv命令引起了我的注意。

RT3352 # printenv
bootcmd=tftp
bootdelay=2
baudrate=57600
ethaddr="00:AA:BB:CC:DD:10"
ipaddr=192.168.1.1
serverip=192.168.1.2
ramargs=setenv bootargs root=/dev/ram rw
addip=setenv bootargs $(bootargs) ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname):$(netdev):off
addmisc=setenv bootargs $(bootargs) console=ttyS0,$(baudrate) ethaddr=$(ethaddr) panic=1
flash_self=run ramargs addip addmisc;bootm $(kernel_addr) $(ramdisk_addr)
kernel_addr=BF0000
u-boot=u-boot.bin
load=tftp 8A100000 $(u-boot)
u_b=protect off 1:0-1;era 1:0-1;cp.b 8A100000 B00000 $(filesize)
loadfs=tftp 8A100000 root.cramfs
u_fs=era bc540000 bc83ffff;cp.b 8A100000 BC540000 $(filesize)
test_tftp=tftp 8A100000 root.cramfs;run test_tftp
stdin=serial
stdout=serial
stderr=serial
ethact=Eth0 (10/100-M)
Environment size: 765/4092 bytes

我可以看到类似于UART的波特率设置信息,以及一些有趣的存储单元地址。这些地址信息不应是闪存,尽管其内存只需要三个字节即可获取它:[0x00000000,0x00FFFFFF]。

让我们看一下其中有什么样的有用信息,例如访问接口,该kernel_addr = BF0000呢?

荣耀路由器2固件分享

有关于badd的信息,这意味着地址无效。 md命令之前已经过硬编码,可以让您知道您正在尝试访问无效的内存地址。这不是一个好的解决方案,但是它无法访问以前的启动信息。

荣耀路由器2固件分享

值得注意的是,我之前已经停止了通过bootloader命令行界面将linux内核加载到内存中的过程,因此通过该界面访问的信息相对有限。

我可以使用此方法(SPI Flash图像字符串编码)在内存中查找随机数据,但这没有特殊含义。我只是用它来熟悉存储结构,例如,在0x000d0000处有一个重大更改。

荣耀路由器2固件分享

使用md命令后,您可以看到0x000d0000的更改。

未来的文章将结合固件信息来分析详细数据,并从系统方向开始获取更多数据。


本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/tongxingongju/article-340637-1.html


当今,越来越多的业务应用运行于网络架构之上,保障网络的持续、高效、安全的运行,成为网络管理者面临的巨大挑战。

……

相关阅读