- 文档
- 教程
- 网络安全
【免费下载链接】Viper
Adversary simulation and Red teaming platform with AI
导读
本文围绕 Viper 红队平台中的 Windows 注册表 Run 键持久化模块展开,介绍其将木马文件路径写入HKLM\...\Run与HKCU\...\Run两个启动键以实现系统重启后自动运行的完整原理、注意事项与操作流程。读完本文,你将掌握在 Viper 中从生成监听、获取 Session、生成免杀载荷到执行注册表 Run 键持久化的全链路操作方法,并能与 Winlogon Helper DLL、计划任务等同一技术家族的持久化模块进行横向对比与取舍。
一、模块概述:利用 Windows 启动键实现持久化
Persistence_RegistryRunKeys_Windows是 Viper 提供的 Windows 持久化模块之一,其核心做法非常直接:把木马文件路径写入注册表 Run 键值,使目标主机在启动或用户登录时自动运行该载荷,从而在系统重启后重新夺回控制权(模块文档)。
模块写入的注册表位置有两处:
| 注册表键 | 完整路径 | 生效范围 | 写入前提 |
|---|---|---|---|
| HKLM Run 键 | HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run | 所有用户登录时执行 | 需要管理员权限 |
| HKCU Run 键 | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run | 仅当前用户登录时执行 | 相对宽松 |
这两处是 Windows 操作系统原生支持的"启动文件夹"机制:系统登录阶段会枚举上述键下的所有字符串值,逐一作为程序路径启动对应进程。因此只要把载荷的绝对路径写进去,目标机每次启动/登录都会自动拉起木马进程。从 MITRE ATT&CK 的视角看,该手法对应T1547.001(Registry Run Keys / Startup Folder),属于标准的"启动项持久化"技术,Viper 的功能模块体系正是按 ATT&CK 各阶段组织而成的(见 README_ZH.md)。
从文档对两个键的并列列出可以推断:模块会优先尝试 HKLM 键(面向全用户、效果更稳定),无法取得管理员权限时则可退而使用 HKCU 键(模块文档)。
二、注意事项:了解"不免杀"的边界
模块文档明确给出唯一一条注意事项——不免杀(模块文档)。
这句话的含义需要结合 Viper 的整体工作流来理解:
- 注册表写键动作本身很常见:安全软件(EDR/杀软)普遍会监控 Run 键这类"自动运行启动项"的写入行为,任何进程向
CurrentVersion\Run写入新值都可能触发告警或拦截。 - 载荷落盘会暴露:要写入路径,载荷文件必须真实存在于目标磁盘上,这本身就比纯内存执行更容易被查杀。
- 免杀载荷需要另行生成:实际操作中,Viper 推荐先"使用监听配置生成免杀载荷",再把免杀后的载荷上传目标(SharpHide 变体文档),以降低载荷本身被杀的风险。
因此在实战中,该模块更适合与免杀载荷生成流程配合使用,而不是单独依赖它完成全部规避工作。
三、操作方法:从监听生成到模块执行
原文档将操作步骤指引至 Winlogon Helper DLL 持久化,两者在 Viper 中的操作骨架完全一致。结合该文档与 SharpHide 变体文档,完整操作流程如下:
第 1 步:生成监听
在 Viper 中先创建/配置一个监听器(Listener),后续生成载荷与恢复 Session 都以它为锚点。监听参数(如回连地址、端口、协议)会在模块运行成功后用于自动生成"缓存监听",便于服务器重启后恢复。
第 2 步:获取 Session
获取一枚目标主机的 Session。若计划写入 HKLM Run 键,Session 必须具备管理员权限——这是决定能否写入全用户启动键的关键前提。
第 3 步:使用监听配置生成免杀载荷
在"载荷生成"环节,选择刚配置的监听,生成免杀后的可执行文件。这一步针对上文"不免杀"的注意事项做前置补偿,降低载荷落盘后被查杀的概率。
第 4 步:将生成的载荷上传到目标
把免杀载荷通过 Viper 的文件管理/上传能力传送到目标主机的指定目录,例如C:\ProgramData\XXX这类常见目录,并记下其在目标机上的绝对路径。
第 5 步:填写模块参数并运行
进入Persistence_RegistryRunKeys_Windows(或其 C# 变体)模块的参数界面,可执行文件目录参数填写刚上传的免杀载荷路径(SharpHide 变体文档):
运行模块后,Viper 会向目标注册表 Run 键写入该路径:
第 6 步:验证持久化效果
依据 Winlogon Helper DLL 持久化 的操作经验,运行成功后应关注两点:
- 缓存监听:模块成功后 Viper 会根据填写的监听参数自动生成一个虚拟监听,方便服务器重启后恢复连接;
- 重启验证:目标机重启后,任意用户登录都会执行启动键中的程序,并重新生成 Session,从而完成持久化闭环。
四、C# 变体:Persistence_RegistryRunKeys_SharpHide
除原生模块外,仓库还提供了同一技术的 C# 变体模块 Persistence_RegistryRunKeys_SharpHide。二者的目标是相同的——把载荷目录写入注册表 Run 键值——区别在于实现路径:
- 原生模块:直接通过 Windows API / 命令方式写 Run 键;
- SharpHide 变体:通过内存执行 SharpHide 的方式将载荷目录写入注册表 Run 键(SharpHide 变体文档)。
SharpHide 本身是一个开源的注册表项持久化小工具,其特点是"不在磁盘落地"即可完成写键操作——Viper 将其以内存加载(Assembly 方式)运行,避免在目标机上留下独立的工具文件,是对"不免杀"注意事项的一种缓解思路。操作流程与上文一致:生成监听 → 获取 Session → 生成免杀载荷并上传 → 填写可执行文件目录参数 → 运行模块(SharpHide 变体文档)。
五、同一技术家族的横向对比:何时选 Run 键
Viper 的持久化模块族中,Run 键并非唯一选择,仓库中与之同级的模块包括:
| 模块 | 持久化位置/方式 | 权限要求 | 文档备注 |
|---|---|---|---|
| RegistryRunKeys | HKLM\...\Run/HKCU\...\Run写载荷路径 | HKLM 需管理员 | 不免杀 |
| Winlogon Helper DLL | HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon | 需要管理员权限 | 不免杀 |
| 计划任务(ScheduledTask) | 通过 Windows API 写入计划任务 | — | 大部分情况免杀,推荐的持久化方法(Persistence_ScheduledTask_Windows) |
| 自守护(Guard) | 上传带守护功能的加载器,Session 崩溃 10 秒后自动重启 | — | 用于防止初始权限丢失(Persistence_Guard_Windows) |
| 账户操纵 | 通过 Windows API 增加本地/域账户 | 取决于目标用户组权限 | 属于账号层面的持久化(Persistence_AccountManipulation_Windows) |
从文档口径看,若追求免杀稳定性,计划任务持久化 是官方标注的推荐方案;而 Run 键的优势在于实现最简单、兼容性最好(任何 Windows 都原生支持),适合在允许一定暴露风险、或已具备免杀载荷的场景下快速建立重启持久化。
六、从防御视角理解与排查该技术
理解对手的持久化手法,同样也是在帮助防守方建立检测与排查能力。针对注册表 Run 键持久化,防御侧的核心排查思路包括:
- 检查启动项:重点审查
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run与HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run下的可疑字符串值,注意指向非常规目录(如C:\ProgramData\下随机命名目录)的路径; - 监控写键行为:EDR/主防应监控对
CurrentVersion\Run键的写入事件,尤其是由非安装器进程发起的写入; - 清理方式:定位到可疑值后,删除对应注册表值并删除指向的载荷文件即可解除持久化,随后重启确认无自恢复行为。
需要再次强调:该模块"不免杀"的定位决定了它主要用于验证持久化流程本身,任何攻防演练都应严格限定在授权范围内。
七、深入阅读
- 模块主文档:Persistence_RegistryRunKeys_Windows.md
- C# 变体与完整带图操作:Persistence_RegistryRunKeys_SharpHide.md
- 被引用为操作模板的同族模块:Persistence_WinlogonHelperDLL_Windows.md
- 官方推荐的持久化方案:Persistence_ScheduledTask_Windows.md
- 平台整体能力介绍:README_ZH.md
- 文档
- 教程
- 网络安全
【免费下载链接】Viper
Adversary simulation and Red teaming platform with AI
相关推荐
Viper 实战:Windows 注册表 Run 键值持久化模块(Registry Run Keys)原理与操作指南
Viper 实战:Windows 注册表 Run 键值持久化模块(Registry Run Keys)原理与操作指南 导读 本文围绕 Viper 红队平台中的
文档教程网络安全Viper 实战:基于 SharpHide 内存执行的 Windows 注册表 Run 键值持久化(C)
Viper 实战:基于 SharpHide 内存执行的 Windows 注册表 Run 键值持久化(C ) Viper 平台的 Persistence_Regi
文档教程网络安全Viper Windows 登录脚本持久化:基于 UserInitMprLogonScript 注册表键的实战指南
Viper Windows 登录脚本持久化:基于 UserInitMprLogonScript 注册表键的实战指南 本文围绕 Viper 后渗透模块体系中的「W
文档教程网络安全
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考