作者:ch0ing
定位加密
官網(wǎng)直接提供這么多格式的系統(tǒng)下載

直接下載的bin文件binwalk梭哈不開。
下一個ISO回來裝成虛擬機,咱還收拾不了你了嗎。
用7-zip打開.vmdk文件。
rootfs脫出來解不開。啊這,不按套路出牌啊。

初步懷疑是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看一下

好吧,看起來就是像大雄同學(xué)對內(nèi)核加了一些邏輯。然后來解密rootfs。
分析加密
分析思路為對著linux的內(nèi)核代碼,看反編譯中添加了什么代碼邏輯來解密。
常規(guī)套路,要想分析,先搞點報錯字符串出來。
將vmdk掛載到ubantu,rootfs內(nèi)容隨便改改,然后啟動,可以抓到報錯關(guān)鍵字.”Invaild rootfs”
有了關(guān)鍵字就好辦了。
使用工具:
https://github.com/torvalds/linux/blob/master/scripts/extract-vmlinux
將bzImage提取為vmlinux文件。
然后搜索關(guān)鍵字找到調(diào)用點,通過函數(shù)中其他得打印字符串定位加密邏輯就在在populate_rootfs函數(shù)中

通過開源代碼還原代碼中的變量名,變量類型。
https://github.com/torvalds/linux/blob/v3.18/init/initramfs.c


可以看到,在do_while循環(huán)中通過16位key_16數(shù)組生成1024位key_1024數(shù)組。


然后再for循環(huán)中通過key_1024運算解密。

審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
88文章
11807瀏覽量
219513 -
虛擬機
+關(guān)注
關(guān)注
1文章
973瀏覽量
30687
原文標(biāo)題:【技術(shù)干貨】記一次固件解密學(xué)習(xí)--X軟路由
文章出處:【微信號:IOTsec Zone,微信公眾號:IOTsec Zone】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
68013如何只通過下載一次運行固件
怎么樣才能選擇合適的軟路由配置
怎么樣才能選擇合適的軟路由配置?
如何選擇適合自己的軟路由配置
記一次使用可調(diào)電源修復(fù)餓死嚴(yán)重虧電的電動車電瓶
記一次CH552不識別無法下載解決辦法
【學(xué)習(xí)打卡】記一次給OpenHarmony提交代碼的過程
解密軟路由:打破網(wǎng)絡(luò)傳統(tǒng),輕松定制你的路由體驗,千度迷你電腦入門級軟路由
記一次固件解密學(xué)習(xí)--X軟路由
評論