用chroot牢笼检测rootkit

Mr.robot 是一部非常经典的黑客美剧,基本上每个极客爱好者都会看过。

S3E2中有一段非常有意思的情节,男主的妹妹成为了哎复辟哎的线人,晚上醒来的艾略特(即Mr.robot,另一个自己)看到自己的妹妹鬼鬼祟祟的对自己的电脑做着什么,便质问她到底在做什么,两个人在争吵中不欢而散。第二天,艾略特偶然知道了Mr.robot想传达给自己的话“We've been compromised”,回到家里他便开始检查自己的电脑,一段炫酷的操作开始了。
这一段非常有意思,男主台式机上安装的是Linux mint ( 一款轻量级的GNU/Linux )。他没有直接登录自己的mint系统而是,硬重启,运行U盘中的Kali Live系统。打开经典的kali界面后,出现了一段让人困惑的操作,挂载了台式机文件系统,最后执行rootkit检查。为什么困惑,因为我们要清楚,如果是live系统直接执行这个rootkit检查的话,其实检查的是U盘内的文件系统,并不会分析台式机或笔记本内的linux文件系统,如何在运行一个操作系统时临时挂载运行另一个操作系统是我们偶尔在脑海中快速掠过的想法,但具体实践如果没有查过文档还真不清楚。

根据美剧中的这段操作, 怀着好奇, 我打算复现这一过程。这种入侵检测姿势,与以往经典的检测方式显得很不同。 上图是美剧中的相关代码。实际步骤与讲解如下:

1.fdisk -l
展示系统中的分区列表。用gparted也可。找到台式机linux根目录挂载的位置。
2.mkdir /mnt/kalidisk
3.mount /dev/sda2 /mnt

将台式机linux根目录挂载到/mnt下。
4.mount -t proc none /mnt/proc
5.mount --rbind /sys /mnt/sys
6.mount --rbind /dev /mnt/dev

如果不懂mount具体参数的含义,可以查mount --help。步骤4的含义是为挂载的分区创建一个空的进程目录。目的是保证一会启动此分区系统时进程空间是干净的,不受任何原分区系统内进程文件(linux下一切皆文件)的干扰。如果无法理解可以以root权限正常登录一个linux,之后执行ls /proc。步骤5,6表示挂载当前live系统的/sys,/dev目录到/mnt/下,替换原来此目录含有的内容,这么做说白了是为一会启用新的文件系统时必须的依赖环境(各种块设备,输入输出设备,驱动模块,内核等)。
7.ln -s /etc/resolv.conf /mnt/etc/resolv.conf
/etc/resolv.conf是dns的配置文件,之所以要建立U盘dns配置文件到新文件系统的软链接是为了一会启动新系统时可以正常联网(可以把软链接的效果类比成快捷方式,原理以前的博文讲过),同时也是为了防止文件系统中原来的解析文件有问题。
执行完以上步骤后,挂载的文件系统的各项准备工作就基本完成了。
8.chroot /mnt /bin/bash
我们执行根目录切换命令用bash管理/mnt下的这一文件系统。对此新shell而言,它的根目录"/"实际为"/mnt".任何操作都是在/mnt内做的。国外把这一效果也称作“ chroot jail ”,翻译过来“ chroot监狱 ”。

至此我们就挂载一个进程干净的文件系统,接下来要对文件系统进行审计,先搞清楚一点,既然要查此文件系统是否含rootkit,即你默认此分区是不可信的,尽量保证对一切来源于此分区文件及应用的不可信。尽管我们改了dns解析文件为live内的。我们还要检查hosts(/etc/hosts)文件对不对。完成以上工作后,我们还要去查查源对不对,vi /etc/apt/source.lst。执行apt-get update,之后重新安装,获取最新的也可信的工具:apt-get install rkhunter chkrootkit -y。(如果本身有,请卸载掉)

然后按照此思路正常审计即可。注意,此bash只是live系统bash启动的一个子进程,ctrl+D可以可以正常退出它,需要时再次执行步骤8即可。

                                                                                                                                   欢迎来访我的小站。--kal1c2er

猜你喜欢

转载自blog.csdn.net/u014652288/article/details/86414169