Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86387704

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

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

返回結果:

微信截图_20230609174813.png

1.png得出壓縮算法如下:

微信截图_20230609174958.png

所以在壓縮536ABHL0C0.conf時需要加入參數-9設定為compress better,即Maximum Compression

完整解密命令如下:

(1)安裝pkcrack 2.png

(2)解密536ABHL0C0.bin 3.png

(3)解密536ABHL0C0.db 4.png

需要注意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 5.png

查看文件類型: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環境6.png

3.監控進程啟動7.png

注:

需要加入參數-f跟踪由fork調用所產生的子進程,加入參數-s 199指定trace結果的每一行輸出字符串的長度,如果未設置參數-s,無法記錄完整的解密口令

返回結果實例:

8.png

從中獲得解密口令GfmirkjRUJla2evWFLtqJoI5a6vfOmDgR/OIl7lFSWrXBm3S7yJTmdaMlV19HGr

注:

該解密口令不適用於536ABHL0C0.db

0x05 小結本文介紹了Zyxel固件解密的兩種通用方法,分享了在解密過程中需要記錄的細節。