记一次固件解密学习–X软路由

IoT 2年前 (2022) admin
659 0 0
记一次固件解密学习--X软路由

作者:ch0ing


定位加密


官网直接提供这么多格式的系统下载


记一次固件解密学习--X软路由


直接下载的bin文件binwalk梭哈不开。


下一个ISO回来装成虚拟机,咱还收拾不了你了吗。


用7-zip打开.vmdk文件。


rootfs脱出来解不开。啊这,不按套路出牌啊。


记一次固件解密学习--X软路由


初步怀疑是grub 或者vmlinuz被厂商进行了修改,加入了解密操作。


grub配置关键代码


menuentry "xxxxxi RouterOS" "$ikversion" "$uuid" "$default" {    linux /boot/vmlinuz root=/dev/ram0 crashkernel=128M@64M rootfstype=ext4 rootwait console=tty0 bootguide=hd intel_idle.max_cstate=0 processor.max_cstate=0 ikversion=$2 diskuuid=$3 grub_menu_id=0 grub_default=$4    initrd /boot/rootfs}


从磁盘文件中解出grub和vmlinuz看一下


记一次固件解密学习--X软路由


好吧,看起来就是像大雄同学对内核加了一些逻辑。然后来解密rootfs。


分析加密


分析思路为对着linux的内核代码,看反编译中添加了什么代码逻辑来解密。


常规套路,要想分析,先搞点报错字符串出来。


将vmdk挂载到ubantu,rootfs内容随便改改,然后启动,可以抓到报错关键字.”Invaild rootfs”


有了关键字就好办了。



使用工具:


https://github.com/torvalds/linux/blob/master/scripts/extract-vmlinux


将bzImage提取为vmlinux文件。


然后搜索关键字找到调用点,通过函数中其他得打印字符串定位加密逻辑就在在populate_rootfs函数中


记一次固件解密学习--X软路由


通过开源代码还原代码中的变量名,变量类型。


https://github.com/torvalds/linux/blob/v3.18/init/initramfs.c


记一次固件解密学习--X软路由
记一次固件解密学习--X软路由


可以看到,在do_while循环中通过16位key_16数组生成1024位key_1024数组。


记一次固件解密学习--X软路由
记一次固件解密学习--X软路由


然后再for循环中通过key_1024运算解密。


记一次固件解密学习--X软路由



解密




依据上边得分析,将伪代码还原为C代码,核心代码如下。

do {    key_1024[key_index] = key_16[key_index & 0xf] + 19916032 * ((int32_t)key_index + 1) / 131u;    ++key_index;} while (key_index != 1024);for (iter = 0;     initrd_real_size > (uint32_t)iter;     initrd_start[iter - 1] = ((initrd_start[iter - 1] - (uint8_t)tmp_var) << ((uint8_t)tmp_var % 7u + 1)) | ((int32_t)(uint8_t)(initrd_start[iter - 1] - tmp_var) >> (8 - ((uint8_t)tmp_var % 7u + 1)))) {    tmp_var = var_0 + iter++;    *(uint8_t*)&tmp_var = (uint8_t)(initrd_size_low_byte + key_1024[tmp_var % 1024u] * var_1);}


编写编译c代码,成功解密。丢到binwalk 得到固件,虽然系统不是很完整。仅仅有几个目录,但是web相关的lua代码已经拿到了,可以找一个rce漏洞获取shell,再进行进一步研究



记一次固件解密学习--X软路由


记一次固件解密学习--X软路由




END



记一次固件解密学习--X软路由

记一次固件解密学习--X软路由

原文始发于微信公众号(信睿物联网):记一次固件解密学习–X软路由

版权声明:admin 发表于 2022年10月10日 下午2:16。
转载请注明:记一次固件解密学习–X软路由 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...