路由器后门制作
Posted Neil-Yale
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了路由器后门制作相关的知识,希望对你有一定的参考价值。
本次实验我们首先通过fmk对固件文件系统提取,之后根据文件系统特点,编写一个后面程序,之后将其添加到文件系统化中,并在路由器文件系统初始化脚本中启动该后门程序。最后通过qemu手动模拟路由器启动过程来验证后门程序是否植入成功。
本次实验来学习使用firmware-mod-kit在固件中添加后门
在固件中添加后门与在linux,windows添加后门的目的是一样的,都是为了保持权限,窃取敏感信息等等,不过在固件中添加后门的思路不太一样。
基本上的思路是这样的:从原固件中提取文件系统,对其内容进行修改,然后将其重新打包成新的固件,并通过一些手段将新固件刷进设备。
本次使用的工具简称FMK,将负责实现我们的攻击思路。
本次实验用到的固件为dir300
将其复制到下图路径中,并使用extract-firmware.sh解压
解压得到一个文件夹,里面就是固件的文件系统,可以看到里面有imgae_part,logs,rootfs等,我们关注的点在rootfs
在看看架构情况,我们这里通过readelf查看busybox可以看到
这是mips 32位大端
接下来我们写个后门程序,源码如下
完整代码在bindshell.c
编译
。
我们先本地测试一下
运行bindshell
再开一个终端
nc连上9999端口
上图中可以看到命令也是可以成功执行的
说明这个可执行文件已经没问题了
接下来将其放到解压出的文件系统的目录里
在atiify os下已经准备好相同的文件了,我们将其复制到/etc/template路径下
接下来我们就需要将其添加到在路由器启动过程中会自动调用的脚本
在etc下可以看到scipt目录
有很多脚本文件,但是我们无法确定哪些是一定会被调用的,但是我们知道rcS是文件系统的初始化脚本,是一定会被调用的
来找一下该脚本在哪里
定位到文件后进行编译
保存并退出
接下来会到fmk根目录,通过build-firmware.sh重新打包为新的固件
新生成的固件在下图所示的位置
接下来就可以在对应型号路由器刷入了,当然如果有一些校验措施如md5等等的话可能需就要另外的方法辅助。这里使用firmadyne模拟会报错
由于这个软件堆砌了很多其他工具,定位问题比较麻烦。我们可以换种方式来验证—通过qemu-system方式手动模拟。
在ubuntu上已经准备好了fmk重新打包后的new-firmware.bin
使用binwalk将其文件系统提取出来
然后使用qemu-system模式模拟
启动之后输入root/root即可登录
查看ip
接着通过scp将文件系统传上去(在mac上,这一步如果不能取回鼠标,可以使用ctrl+option+g)
在还没有启动之前可以先nmap扫一遍端口
接着启动rcS这个初始化脚本
然后nmap再扫一次
此时9999开放了
尝试使用nc连入
成功拿到了shell
说明我们的后门确实成功运行了。
实验结束。
前面提到固件被篡改后,直接移植到路由器实物上的的安全性问题,这里给出对这一块安全做的比较好的示例:
360C301路由器的固件采用了AES加密,解密后的固件里含有对该固件的签名,固件更新时会先进行签名校验,校验不通过则认为固件是篡改过的,从而拒绝固件更新。
小米路由器进行固件更新时同样会进行签名校验,文件/usr/share/xiaoqiang/public.pem是它的公钥,用来校验签名正确与否。正因为这样,黑客如果想在不拆机的前提下刷入已植入木马的固件,只有两条路可走,一是通过入侵、社工或破解得到对应的私钥,然后对修改后的固件进行签名再刷入;二是通过漏洞,挖掘新的漏洞或者刷入有漏洞的旧版固件,然后再通过漏洞利用得到root shell进而刷入任意固件。一般来讲,第一条路是很难的,而为了堵住第二条路,可以通过限制降级来实现。
极路由进行固件升级的时候同样会进行校验,只不过是进行MD5的HASH检验,而不是用非对称算法来校验,虽然它下载固件时,用的是HTTP下载,可被劫持,但是固件的HASH信息是通过HTTPS来传输的,可保证安全,固件下载后会验证MD5值是否匹配,不匹配则不升级。这样只要保证升级服务器不被入侵就能保证刷入的固件是官方的。
以上是关于路由器后门制作的主要内容,如果未能解决你的问题,请参考以下文章