吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 10674|回复: 136
收起左侧

[原创] 新光猫(中兴方案)配置(db_user_cfg.xml)解密方案

    [复制链接]
Leland 发表于 2022-1-17 21:23

新光猫(中兴方案)配置(db_user_cfg.xml)解密方案

前言

家里最近升级了宽带,换了个新光猫(型号UNG300Z),心血来潮想进后台开下ipv6改改桥接啥的,可惜网上完全没有这个型号猫的信息,其他通用密码试过了也进不去光猫,于是今天鼓捣了一天总算把超级密码给倒腾出来了,顺便逆向了配置的解密方案,特此记录一下。
新光猫指的是网上那些解密方法都没办法解密的情况下使用的,我查询我这个光猫20年八月份才推出,确实算是比较新。  

说明

本文的通用用户名密码使用的是移动的CMCCAdmin,aDm8H%MdA,电信/联通可能需要用相应的通用密码。通用用户名密码一般是写死在代码里面的,与超级密码可以动态改变不同。  

逆向过程记录放在操作步骤后面

操作步骤

首先要打开光猫的telnet:
访问以下网址即可

http://192.168.1.1/usr=CMCCAdmin&psw=aDm8H%25MdA&cmd=1&telnet.gch

然后连接光猫:

telnet 192.168.1.1
Login: CMCCAdmin
Password: aDm8H%MdA

注意telnet一段时间无操作会自动断开。
此时已经进入了光猫,进入配置文件目录:

cd /userconfig/cfg

然后随意使用任何方法导出db_user_cfg.xml
我这个光猫命令比较全,所以我使用了ftpput上传到服务器再下载,有的光猫有usb口什么的会更加方便。
然后用以下python脚本即可解密配置文件(有兴趣可以帮忙打包一下,我pc上环境不干净,打包很慢):

from Crypto.Cipher import AES
from binascii import a2b_hex
KEY = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
def decrypt(text):
    cryptor = AES.new(KEY, AES.MODE_ECB)
    plain_text = cryptor.decrypt(a2b_hex(text))
    return plain_text
cfg_file = open("db_user_cfg.xml", "rb")
dec_file = open("db_user_cfg.decode.xml", "w")
file_header = cfg_file.read(60)
while 1:
    trunk_info = cfg_file.read(12)
    trunk_data = cfg_file.read(65536)
    trunk_real_size = int.from_bytes(trunk_info[0:4], byteorder='big', signed=False)
    trunk_size = int.from_bytes(trunk_info[4:8], byteorder='big', signed=False)
    next_trunk = int.from_bytes(trunk_info[8:12], byteorder='big', signed=False)
    print(trunk_real_size, trunk_size, next_trunk)
    dec_file.write(decrypt(trunk_data.hex()).decode(encoding="utf-8"))
    if next_trunk==0:
        break

逆向思路与过程

找到配置文件

首先通览根目录,与普通的linux根目录对比容易关注到userconfig文件夹。
浏览userconfig文件夹后我们可以发现cfg文件夹中有三个文件值得注意:

db_backup_cfg.xml
db_default_cfg.xml
db_user_cfg.xml

可惜db_user_cfg.xmldb_backup_cfg.xml都是加密的,到这里也没有什么进一步的思路了。  

浏览网页文件

于是我想到访问光猫时候网页奇怪的后缀xxx.gch,这不是一个常见的网页后缀,于是可以全盘扫描gch后缀的文件:

find / -name "*.gch"

不难发现全部存放在/home/httpd目录下,没看来这是什么语言,但是简单的理解还是能做到,定位到/home/httpd/auth/impl.gch中莫名其妙地调用了一个login函数,没有从任何地方导入,思路似乎又就此中断了。  

逆向httpd

纠结一段时间后httpd引起了我的注意,回想起访问光猫404界面时最下方有一行小字Mini web server 1.0 ZTE corp 2005.。会不会是httpd进程有猫腻呢?
全盘搜索一下httpd,找到了它,在/sbin/httpd。导出到ida进行逆向分析。
搜索字符串login,果然在init_extern_funcs函数中出现了,再看这函数命名,不摆明了刚才追踪不到的login函数就是在这儿注册的吗?
ida_login函数.png
可惜,跟进si_webd_f_login是给我看得晕头转向完全找不到北,使用的一些导入函数(出现在ida imports栏里)又完全找不到出处(这个可能是我的问题,有什么方便的办法可以查看从哪里导入的请指教)。这条线索又断了。  

瞎鼓捣

我甚至考虑了hook函数来看一下,可惜刚写了个demo上传重启之后文件立刻消失了,这条路也走不通。

看一眼进程

我决定看一眼进程有没有什么异常,果然有几个看起来不太正常的进程,其中一个便是我们的主角cpsd

ps_cspd

ps_cspd
/bin/cspd把我们的主角请出来到ida做个客,看一眼导出函数,好家伙

导出函数

导出函数

至此已经完成了大半了,接下来的就是些静态分析的工作了,关键的aes密码设置在decry_param函数里面,密码就是16个0x00而已。
文件大体结构可以看这篇文章:中兴光猫配置文件db_user_cfg.xml结构分析及解密,唯一的不同就是数据部分变成了AES加密而已。

免费评分

参与人数 42威望 +1 吾爱币 +58 热心值 +40 收起 理由
xlwllm + 1 + 1 我很赞同!
kaix + 1 + 1 热心回复!
lyslxx + 1 + 1 我很赞同!
DrillAnn + 1 用心讨论,共获提升!
第三世界 + 1 热心回复!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
失却之城 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
atingue + 1 + 1 热心回复!
happyfox1999 + 1 + 1 我很赞同!
blindcat + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
吴虾咪 + 1 虽然看不懂,但觉的很厉害的样子。
笙若 + 1 + 1 谢谢@Thanks!
如风 + 1 + 1 我很赞同!
Douyu1122 + 1 + 1 热心回复!
hxd97244 + 1 + 1 谢谢@Thanks!
kkavifo + 1 + 1 谢谢@Thanks!
Crysis726 + 1 + 1 用心讨论,共获提升!
刘洪1964 + 1 + 1 我很赞同!
myweb1996 + 3 + 1 我很赞同!
岁月的纤伴 + 1 + 1 热心回复!
mmtzwyd + 1 + 1 我很赞同!
uruliang + 1 + 1 谢谢@Thanks!
小小牛 + 1 + 1 热心回复!
bfvA178 + 1 + 1 谢谢@Thanks!
b19341 + 1 + 1 谢谢@Thanks!
zr924 + 1 + 1 我很赞同!
dsp2002 + 1 + 1 我很赞同!
到处感怀 + 1 + 1 谢谢@Thanks!
lijun888 + 1 谢谢@Thanks!
唐小样儿 + 1 + 1 我很赞同!
因为有钳 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
w0418w37 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
Chiya + 1 + 1 谢谢@Thanks!
csxy999 + 1 + 1 我很赞同!
朗夕 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wataxi + 1 用心讨论,共获提升!
zhczf + 1 我很赞同!
XYG5017 + 1 + 1 很技术!就是看不懂,已经在逐渐尝试了
theStyx + 1 + 1 谢谢@Thanks!
夫子点灯 + 1 + 1 谢谢@Thanks!
luanshils + 1 + 1 我很赞同!
小朋友呢 + 2 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hairy 发表于 2022-4-3 13:57
python 在3.3下运行  dec_file.write(decrypt(trunk_data.hex()).decode(encoding="utf-8")),报错。AttributeError: 'bytes' object has no attribute 'hex'   pycrypto最高支持到3.3所以只安装了这个版本。
 楼主| Leland 发表于 2022-1-17 23:51
wasd3152 发表于 2022-1-17 23:21
decry_param,好家伙这个玩意应该可以执行吧,如果可以直接执行,直接拿到已经解密的文件,在拷贝出已经解 ...

那个cspd里面的一个函数而已,整个挺复杂的,而且是arm架构,应该不太能运行起来
努力画图 发表于 2022-1-17 21:37
随缘的风 发表于 2022-1-17 21:40
看起来很厉害,直接问装维人员拿不可以吗
hao138 发表于 2022-1-17 21:43
技术性尝试,积极支持。
xukelinboy 发表于 2022-1-17 21:50
随缘的风 发表于 2022-1-17 21:40
看起来很厉害,直接问装维人员拿不可以吗

个个像你这样想,技术就不会进步了!!!
彭于晏yu 发表于 2022-1-17 21:51
学习了感谢分享
aonima 发表于 2022-1-17 22:32
感谢分享,学习了
wanlinwo 发表于 2022-1-17 22:38
这个不错,回家折腾一下,嘻嘻
天空の幻像 发表于 2022-1-17 22:45
厉害啊。我家是移动的,能拿到密码吗
hzfam 发表于 2022-1-17 22:57
学习心态浏览一下,自己重未换过
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2022-5-18 12:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表