前言
打下基础设施,比如vcenter/kvm或者什么云管平台后台,再或者比如控了个什么NAS。想要进行后续控制,新安装一台再手动控制一台肯定是不行的。有没有个办法感染了它们的ISO,后续它们新安装一台就中我们的马一次呢?
得益于linux的开源属性,我们当然能直接自己构建一个linux-installer,但是从零构建太花时间了,我们直接用一个快速的解决方案来对iso进行加料
操作
按照debian发行版为例,安装流程如下,安装程序实际运行的是目录下的install.amd里的initrd.gz镜像
其中,使用图形化脚本安装的是使用gtk文件夹下的initrd.gz,使用命令行则是用xen目录下,两个initrd.gz没有太大区别
我们仔细分析initrd.gz,发现是一个gz文件和一个cpio文件,打开能很轻松的看到文件目录
加料
首先先解压initrd.gz,直接
gunzip initrd.gz
我们就获得了initrd这个cpio文件
然后使用命令
cpio -idm -D target < initrd
解压到目录target文件夹。
之后我们进入文件夹,写入helloworld.txt
然后再反向操作进行打包,使用命令
find . | cpio -o -H newc > ../initrd
cd ..
gzip initrd
这样就得到回initrd.gz文件了,然后再使用ultraISO把debian安装脚本的gtk/xen中的initrd.gz文件替换
然后挂载启动我们的安装脚本,在图形界面按下ctrl+alt+F2进入tty,就能在文件系统里看到我们的helloworld.txt了
恶意负载
我们成功达成了修改安装程序,之后就是进行加料。通过分析发现,安装程序是把我们磁盘挂载到/target目录,然后进行写入基础系统的操作。我们只需要在安装程序结束之后,对/target目录下的文件系统写入我们的负载即可达成我们想要的目标
如何判断安装程序结束呢?好在查看文档之后我发现了它自带HOOK,查看官方文档
https://salsa.debian.org/installer-team/debian-installer/-/blob/master/doc/devel/internals/available-hooks.xml
/usr/lib/finish-install.d/* [finish-install]
此目录中的文件将在安装结束时执行。
因此我们直接在该目录添加我们的脚本
注意要小于95,因为95是umount卸载目标了,没办法写入。所以要在此之前就进行操作
当系统安装完成后,就可以看到我们的账户成功加入进去了
最后
成功做到了一个加用户的操作后,后续更多的玩法就不用说了,这个操作写入文件之后甚至不需要重启,因为默认就是第一次启动
轻松的达到了出厂就带后门的效果,简单的效果就是写rc启动项,复杂点就是写内核模块玩rootkit,再复杂点甚至上bootkit都可以。这些就看各位自己操作了。
这里是ultraiso修改iso中的 initrd.gz ,但是实际渗透的时候很难把iso下载下来改完再放上去,有没有命令行下能完成iso修改的方法呢?
我觉得适合那种分发型镜像市场类的场景,或者用于那种钓鱼运维之类的
这里通过ultraiso替换修改好的恶意镜像,用vm虚拟机安装后好像没有生效是什么原因呢,大佬请教一下
替换的是gtk还是xen,安装的时候用的是图形模式还是命令行模式
你好,替换的是xen,安装的时候用的是graphical install,这里替换的xen难道要使用命令行install么 OωO
对,xen对应的是命令行模式,替换gtk才对应的是图形化安装
大佬可以加下联系方式不 ,方便多交流ヾ(≧∇≦*)ゝ https://blog.yuzisec.xyz/img/wechat.jpg
已加