如何制作一个恶意linux安装镜像

前言

打下基础设施,比如vcenter/kvm或者什么云管平台后台,再或者比如控了个什么NAS。想要进行后续控制,新安装一台再手动控制一台肯定是不行的。有没有个办法感染了它们的ISO,后续它们新安装一台就中我们的马一次呢?

得益于linux的开源属性,我们当然能直接自己构建一个linux-installer,但是从零构建太花时间了,我们直接用一个快速的解决方案来对iso进行加料

操作

按照debian发行版为例,安装流程如下,安装程序实际运行的是目录下的install.amd里的initrd.gz镜像

1.png
1.png

其中,使用图形化脚本安装的是使用gtk文件夹下的initrd.gz,使用命令行则是用xen目录下,两个initrd.gz没有太大区别

我们仔细分析initrd.gz,发现是一个gz文件和一个cpio文件,打开能很轻松的看到文件目录

2.png
2.png

加料

首先先解压initrd.gz,直接

gunzip initrd.gz

我们就获得了initrd这个cpio文件
然后使用命令

cpio -idm -D target < initrd

解压到目录target文件夹。

之后我们进入文件夹,写入helloworld.txt

3.png
3.png

然后再反向操作进行打包,使用命令

find . | cpio -o -H newc > ../initrd
cd ..
gzip initrd

这样就得到回initrd.gz文件了,然后再使用ultraISO把debian安装脚本的gtk/xen中的initrd.gz文件替换

然后挂载启动我们的安装脚本,在图形界面按下ctrl+alt+F2进入tty,就能在文件系统里看到我们的helloworld.txt了

4.png
4.png

恶意负载

我们成功达成了修改安装程序,之后就是进行加料。通过分析发现,安装程序是把我们磁盘挂载到/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]
此目录中的文件将在安装结束时执行。

因此我们直接在该目录添加我们的脚本

5.png
5.png

注意要小于95,因为95是umount卸载目标了,没办法写入。所以要在此之前就进行操作

6.png
6.png

当系统安装完成后,就可以看到我们的账户成功加入进去了

7.png
7.png

最后

成功做到了一个加用户的操作后,后续更多的玩法就不用说了,这个操作写入文件之后甚至不需要重启,因为默认就是第一次启动

轻松的达到了出厂就带后门的效果,简单的效果就是写rc启动项,复杂点就是写内核模块玩rootkit,再复杂点甚至上bootkit都可以。这些就看各位自己操作了。

添加新评论

评论列表