文章定位:面向安全运维人员与应急响应人员,侧重于“原理+操作+检测”三位一体。
复现环境:Red Hat Enterprise Linux 8
1. 引言
核心思想:知己知彼,百战不殆。账号级后门是攻击者最基础、最直接的权限维持手段——通过在系统中留下一个“隐形账户”,随时可以卷土重来。
本篇内容:
-
一句话添加用户(普通用户 / root用户)
-
SSH公私钥免密登录
2. 后门技术详解
2.1 一句话添加用户
原理
攻击者通过一条命令行在目标系统中创建一个新用户,该用户可以:
-
是普通用户(UID≥1000)
-
也可以是 root 用户(UID=0)
创建完成后,攻击者即可使用该用户的密码通过 SSH 登录。
操作(攻击者视角)
| 类型 | 命令 | 说明 |
|---|---|---|
| 普通用户 | useradd -p "$(openssl passwd -6 123456)" guest |
创建用户 guest,密码 123456,使用 SHA512 加密 |
| root用户 | useradd -p "$(openssl passwd -6 123456)" guest -o -u 0 -g root -G root -s /bin/bash -d /home/guest |
创建 UID=0 的用户,等同于 root |
| chpasswd方式 | useradd guest; echo 'guest:123456' | chpasswd |
先建用户,再通过管道设置密码 |
| echo -e方式 | useradd test; echo -e "123456\n123456\n" | passwd test |
通过管道输入两次密码 |
RHEL 8 注意:
-
openssl passwd -6使用 SHA512 加密(推荐,RHEL 8 默认) -
老式
-1(MD5)仍可用但已不推荐
检测方法
# 1. 查找 UID=0 的特权用户(除了 root 之外的都是异常)
awk -F: '$3==0{print $1}' /etc/passwd
# 2. 查找最近新增的用户(按UID排序)
sort -n -t: -k3 /etc/passwd | tail -10
# 3. 查找有登录权限的用户(bash/sh 作为 shell)
grep -E ":/bin/bash|:/bin/sh" /etc/passwd
# 4. 检查可疑的密码加密方式
awk -F: '{print $1, substr($2,1,3)}' /etc/shadow | grep -E ' \$1\$|\$5\$|\$6\$'
# 5. 检查 sudo 权限
grep -v "^#\|^$" /etc/sudoers | grep "ALL=(ALL)"
清除方法
# 删除恶意用户并删除其家目录
userdel -r guest
# 如果用户正在登录,先踢掉
pkill -u guest userdel -r guest
2.2 SSH 公私钥免密登录
原理
SSH 公私钥认证是一种非对称加密方式:
-
私钥(
id_rsa):放在攻击者客户端,相当于“钥匙” -
公钥(
id_rsa.pub):放在目标服务器的~/.ssh/authorized_keys,相当于“锁”
当攻击者使用私钥登录时,SSH 服务端会用公钥验证签名,验证通过则直接登录,无需密码。
操作(攻击者视角)
步骤1:在攻击机(或任何地方)生成密钥对
ssh-keygen -t rsa
# 一路回车(不设密码)

生成的文件:
-
~/.ssh/id_rsa→ 私钥(要复制到攻击机) -
~/.ssh/id_rsa.pub→ 公钥(要放到目标服务器)
步骤2:查看并复制私钥
cat ~/.ssh/id_rsa

输出示例:
-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn NhAAAAAwEAAQAAAYEAt3mXv4Z4I+riM1g7VJI0LcJXpZQsnLqZVJqKsodr3gF9ok9mZBnU ...(中间省略)... 0bLp5Pm2W+3F6tZp1fT5PjR6c8dE= -----END OPENSSH PRIVATE KEY-----
用鼠标选中从 -----BEGIN 到 -----END 的全部内容(包括这两行),右键复制。
步骤3:将公钥追加到目标服务器
# 方法1:使用 ssh-copy-id(需要一次密码登录)
ssh-copy-id root@目标IP
# 方法2:手动追加
cat ~/.ssh/id_rsa.pub | ssh root@目标IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
步骤4:验证免密登录
ssh root@目标IP
# 应该直接登录成功,无需密码
检测方法
# 1. 检查 root 用户的
authorized_keys cat /root/.ssh/authorized_keys
# 2. 检查所有用户的
authorized_keys find /home -name "authorized_keys" -exec echo "=== {} ===" \; -exec cat {} \; 2>/dev/null
# 3. 检查文件修改时间(寻找最近添加的公钥)
ls -la /root/.ssh/authorized_keys stat /root/.ssh/authorized_keys
# 4. 检查 .ssh 目录权限(应该为 700)
ls -ld /root/.ssh
# 5. 查看 SSH 日志中的公钥认证记录
grep "Accepted publickey" /var/log/secure
清除方法
# 编辑 authorized_keys,删除可疑的公钥行 vi /root/.ssh/authorized_keys
# 或者备份后清空(谨慎操作) cp /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bak > /root/.ssh/authorized_keys
# 修复权限 chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys
3. 综合排查与应急响应
3.1 快速自查脚本(账号级)
#!/bin/bash
echo "========== 账号级后门排查 =========="
echo -e "\n[1] UID=0 特权用户:"
awk -F: '$3==0{print $1}' /etc/passwd
echo -e "\n[2] 可登录用户(shell=/bin/bash 或 /bin/sh):"
grep -E ":/bin/bash|:/bin/sh" /etc/passwd | cut -d: -f1
echo -e "\n[3] 最近新增的5个用户:"
sort -n -t: -k3 /etc/passwd | tail -5 | cut -d: -f1,3
echo -e "\n[4] root用户的SSH公钥:"
cat /root/.ssh/authorized_keys 2>/dev/null | wc -l | xargs echo "公钥数量:"
echo -e "\n[5] 所有用户的authorized_keys:"
find /home -name "authorized_keys" -exec sh -c 'echo "=== {} ==="; cat {}' \; 2>/dev/null
3.2 日志取证
| 日志文件 | 相关字段 | 说明 |
|---|---|---|
/var/log/secure |
useradd、password、Accepted publickey |
用户添加和登录记录 |
|
|
USER_ADD、USER_LOGIN |
审计日志(需启用auditd) |
# 查看最近添加的用户
grep "useradd" /var/log/secure
# 查看公钥登录记录+y" /var/log/secure | tail -20
4. 总结与建议
核心原则
| 原则 | 说明 |
|---|---|
| 定期巡检 | 每周检查 /etc/passwd 和 authorized_keys |
| 最小化权限 | 删除不必要的普通用户和 sudo 权限 |
| 禁用密码登录 | 服务器建议使用 PasswordAuthentication no 禁止密码登录 |
| 监控文件变更 | 使用 auditd 监控 /etc/passwd 和 authorized_keys |
监控配置示例(auditd)
# 监控 /etc/passwd 和 /etc/shadow
auditctl -w /etc/passwd -p wa -k user_modify
auditctl -w /etc/shadow -p wa -k user_modify
# 监控 root 的 authorized_keys
auditctl -w /root/.ssh/authorized_keys -p wa -k ssh_key_modify
# 查看监控日志
ausearch -k user_modify
最终提醒
账号级后门是最容易被发现的后门,也是攻击者最常用的后门。
定期巡检cat /etc/passwd和cat /root/.ssh/authorized_keys是最简单有效的防御手段。
如发现可疑用户或公钥,立即删除并排查入侵途径。

















暂无评论内容