导语:本文介绍了Zyxel固件解密的两种通用方法,分享了在解密过程中需要记录的细节。
0x00 前言
本文将要介绍Zyxel固件解密的两种通用方法,记录测试心得。
0x01 简介
本文将要介绍以下内容:
基础知识
通过已知明文攻击解密zip文件
通过跟踪进程参数获得zip加密口令
0x02 基础知识
1.固件下载
固件下载地址:https://portal.myzyxel.com/my/firmwares
需要注册账户,可下载指定版本的固件
2.常见固件类型
ATP
USG FLEX
VPN
ZyWALL/USG
这里以VPN50 5.36(ABHL.0)为例,下载后保存为VPN50_V5.36(ABHL.0).zip
接下来介绍固件解密的两种方法
0x03 通过已知明文攻击解密zip文件
参考资料:https://attackerkb.com/topics/N3i8dxpFKS/cve-2023-28771/rapid7-analysis
VPN50_V5.36(ABHL.0).zip中的文件内容如下:
536ABHL0C0.bin
536ABHL0C0.conf
536ABHL0C0.db
536ABHL0C0.pdf
536ABHL0C0.ri
VPN50_V5.36(ABHL.0)C0-foss.pdf
其中,536ABHL0C0.bin和536ABHL0C0.db被加密,需要解密
解密条件:
1、已知完整的明文文件和zip文件
2、明文文件需要被相同的压缩算法压缩
3、加密算法为ZipCrypto Store
对于VPN50_V5.36(ABHL.0).zip,536ABHL0C0.conf同536ABHL0C0.bin中的db/etc/zyxel/ftp/conf/system-default.conf文件一致,同536ABHL0C0.db中的etc/zyxel/ftp/conf/system-default.conf文件一致,满足条件1
对于条件2,需要确定536ABHL0C0.bin和536ABHL0C0.db的压缩算法,参考资料也未涉及这部分内容,这里详细介绍分析流程
查看536ABHL0C0.bin中db/etc/zyxel/ftp/conf/system-default.conf的压缩信息:zipdetails -v 536ABHL0C0.bin
返回结果:
得出压缩算法如下:
所以在压缩536ABHL0C0.conf时需要加入参数-9设定为compress better,即Maximum Compression
完整解密命令如下:
(1)安装pkcrack
(2)解密536ABHL0C0.bin
(3)解密536ABHL0C0.db
需要注意536ABHL0C0.bin和536ABHL0C0.db的system-default.conf绝对路径不同
0x04 通过跟踪进程参数获得zip加密口令
参考资料:https://security.humanativaspa.it/zyxel-firmware-extraction-and-password-analysis/
解密原理:从.ri文件能够提取出zld_fsextract,zld_fsextract能够根据文件内容计算出解压口令进而解密.bin文件
经测试,使用zld_fsextract也可以解开其他固件的.bin文件
1.提取zld_fsextract
查看文件类型:file zld_fsextract
返回结果:zld_fsextract: ELF 32-bit MSB executable, MIPS, N32 MIPS64 rel2 version 1 (SYSV), statically linked, stripped
提示zld_fsextract为MIPS结构,需要搭建MIPS环境运行
2.搭建MIPS环境
3.监控进程启动
注:
需要加入参数-f跟踪由fork调用所产生的子进程,加入参数-s 199指定trace结果的每一行输出字符串的长度,如果未设置参数-s,无法记录完整的解密口令
返回结果实例:
从中获得解密口令GfmirkjRUJla2evWFLtqJoI5a6vfOmDgR/OIl7lFSWrXBm3S7yJTmdaMlV19HGr
注:
该解密口令不适用于536ABHL0C0.db
0x05 小结
本文介绍了Zyxel固件解密的两种通用方法,分享了在解密过程中需要记录的细节。
本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址