作者:ch0ing
定位加密
官網(wǎng)直接提供這么多格式的系統(tǒng)下載
直接下載的bin文件binwalk梭哈不開(kāi)。
下一個(gè)ISO回來(lái)裝成虛擬機(jī),咱還收拾不了你了嗎。
用7-zip打開(kāi).vmdk文件。
rootfs脫出來(lái)解不開(kāi)。啊這,不按套路出牌啊。
初步懷疑是grub 或者vmlinuz被廠商進(jìn)行了修改,加入了解密操作。
grub配置關(guān)鍵代碼
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看一下
好吧,看起來(lái)就是像大雄同學(xué)對(duì)內(nèi)核加了一些邏輯。然后來(lái)解密rootfs。
分析加密
分析思路為對(duì)著linux的內(nèi)核代碼,看反編譯中添加了什么代碼邏輯來(lái)解密。
常規(guī)套路,要想分析,先搞點(diǎn)報(bào)錯(cuò)字符串出來(lái)。
將vmdk掛載到ubantu,rootfs內(nèi)容隨便改改,然后啟動(dòng),可以抓到報(bào)錯(cuò)關(guān)鍵字.”Invaild rootfs”
有了關(guān)鍵字就好辦了。
使用工具:
https://github.com/torvalds/linux/blob/master/scripts/extract-vmlinux
將bzImage提取為vmlinux文件。
然后搜索關(guān)鍵字找到調(diào)用點(diǎn),通過(guò)函數(shù)中其他得打印字符串定位加密邏輯就在在populate_rootfs函數(shù)中
通過(guò)開(kāi)源代碼還原代碼中的變量名,變量類型。
https://github.com/torvalds/linux/blob/v3.18/init/initramfs.c
可以看到,在do_while循環(huán)中通過(guò)16位key_16數(shù)組生成1024位key_1024數(shù)組。
然后再for循環(huán)中通過(guò)key_1024運(yùn)算解密。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11329瀏覽量
209977 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
919瀏覽量
28325
原文標(biāo)題:【技術(shù)干貨】記一次固件解密學(xué)習(xí)--X軟路由
文章出處:【微信號(hào):IOTsec Zone,微信公眾號(hào):IOTsec Zone】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論