Run 键与登录自启动
Run 与 RunOnce 是 Windows 最早、也最常被使用的自启动机制:用户登录后由资源管理器读取这些键,把键值当作命令行执行。键值通常写成可执行文件路径,也常见 rundll32、mshta、powershell 等解释器包装,落地文件是否位于用户可写目录、路径是否带引号,都是判断可疑度的直接依据。
基本信息
| 键位置 | HKLM 与 HKCU 下 Software\Microsoft\Windows\CurrentVersion\Run 与 RunOnce |
|---|---|
| 作用范围 | HKLM 分支影响全部用户,HKCU 分支只影响对应登录用户 |
| 触发时机 | 用户登录后由资源管理器执行,RunOnce 条目执行后自动删除 |
| 镜像分支 | 32 位程序写入的是 WOW6432Node 下的同名键 |
| 常用工具 | reg query 手工导出、autorunsc64.exe、RegRipper 的 run 插件 |
典型使用场景
- 主机出现不明外联或异常进程时,优先核对登录自启动项
- 判断某个自启动条目是入侵窗口内写入,还是装机时就存在
- 服务与计划任务排查完毕后补齐用户级启动点,避免遗留
- 对比两台同版本主机的 Run 键差异,快速锁定非标准项
- 把键值与指向文件的哈希一并固定,作为持久化证据输出
导出与核对
导出与核对
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run /s
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run /s
reg query "HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Run" /s # 32 位视图,最易漏
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /s
# 键值指向的文件要落一次存在性与签名核对
# dir "C:\Users\Public\loader.exe"
# Get-AuthenticodeSignature "C:\Users\Public\loader.exe" | Select Status键位对照
| 键路径 | 作用范围 | 补充说明 |
|---|---|---|
| HKLM\...\Run | 全部用户 | 写入需要管理员权限,改动含义更重 |
| HKCU\...\Run | 单个用户 | 普通权限即可写入,实战中出现最多 |
| ...\RunOnce | 视分支而定 | 执行后条目被删除,仍存在的条目值得追问 |
| ...\WOW6432Node\...\Run | 32 位程序 | 与 64 位视图独立,常被整批漏查 |
| ...\Policies\Explorer\Run | 全部用户 | 策略方式写入,兼容性设置界面可见 |
键值本身没有独立的修改时间,判断写入时刻要靠三处互证:所在键的 LastWrite 时间、Sysmon 事件 13(注册表值设置)以及键值指向文件的创建与修改时间。
RunOnce 条目执行后会被自动删除,因此被查主机上仍能看到条目,往往说明对应程序尚未运行或运行失败,这本身就是有价值的线索,不要当成噪声跳过。