逆向工程 ZyXel C1100Z 调制解调器固件

逆向工程 拆卸 固件 linux 嵌入式 米普
2021-06-26 05:07:36

第一次发布所以请多多包涵。

几天来,我一直试图绕过我的 ISP 添加到他们远程 CLI 的密码,但没有成功。

我有一个从 ISP 购买的 Zyxel C1100Z DSL 调制解调器,我一直在尝试破解他们的最新固件,以绕过他们实施的新 shell 密码功能。过去的固件没有这个功能,只是允许你通过 ssh/telnet 登录,然后输入“sh”进入一个简单的 Busybox shell。

现在使用最新的固件,SSH 似乎严重损坏/错误,当您通过 telnet 登录时,大多数 CLI 命令也是如此(Cat、echo、netstat 等。不起作用)

由于这是一个新功能,我猜密码是

  1. 硬编码到 CLI 二进制文件中
  2. 从我忽略的配置中提取
  3. 从 ISP 远程推送

到目前为止,我已经使用 binwalk 提取了 root-fs,并且我已经在每个配置中搜索了很多小时,无休止地运行字符串,我什至尝试使用 QEMU 模拟 MIPS。

在其中一个二进制文件上运行文件给了我: ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, corrupted section header size

我安装了旧固件,希望了解系统的工作原理,并认为其中一些信息可能有用:

system type             : 963168MBV_17A
processor               : 0
cpu model               : Broadcom4350 V8.0
BogoMIPS                : 398.33
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : no
hardware watchpoint     : no
ASEs implemented        :
shadow register sets    : 1
core                    : 0
VCED exceptions         : not available
VCEI exceptions         : not available
unaligned exceptions            : 60561

我已经开始使用https://retdec.com/decompilation/反编译二进制文件,但这并没有让我走得很远。

我已经在https://github.com/bwbryant1/CTL_C110Z的 git repo 中托管了提取的固件根目录

我不是要求某人为我完成所有工作,主要只是一些指导,因为这是我第一次尝试逆向工程。是的,我看过过去的教程,但没有一个特别适合我的固件,而且我遇到了砖墙。

如何向 shell 添加密码?我知道您可以使用 inittab,但似乎这不是他们正在做的。我不知道从哪里调用 shell 密码提示,但我知道它的文本存储在 /lib/private/libcms_cli.so 中。但我不确定这是什么。

谢谢

编辑以澄清:我有 ssh 和 telnet 访问权限,但它们不允许您访问 root-fs。它会将您带入一种功能有限的 chroot 环境。但是,通过输入“sh”,系统会提示您“请输入 shell 密码:”并且它不要求输入用户名,只要求通过

1个回答

密码似乎是从 /etc/profile 动态生成的

...
# 生成登录文件
echo "supervisor:3Gnc.CJE1790M:0:0:Administrator:/:/bin/sh" > /var/passwd
echo "root::0:root,supervisor,support,user" > /变量/组
...

您需要尝试使用 John the Ripper 之类的程序破解 DES 哈希,或者将其替换为另一个已知密码或什么都不做。