渗透测试网络安全【免费下载链接】PowerSploitPowerSploit - A PowerShell Post-Exploitation Framework项目地址https://gitcode.com/gh_mirrors/po/PowerSploit点击查看免费下载导读Get-ModifiableRegistryAutoRun是 PowerSploit 的 Privesc 模块PowerUp中用于**检测可被当前用户修改的 HKLM 自启动项Registry Autorun**的核心命令它枚举 HKEY_LOCAL_MACHINEHKLM下 8 个经典的自启动注册表位置将每个值的路径字符串交给依赖函数Get-ModifiablePath做 ACL 权限分析最终返回当前用户拥有写入/修改权限的启动项二进制文件或配置文件位置。本文基于 docs/Privesc/Get-ModifiableRegistryAutoRun.md 展开并结合 Privesc/PowerUp.ps1 源码与其 Pester 测试用例完整讲解该命令的用法、输出结构、底层判定原理与实战注意事项。读完本文后你将能够独立使用该命令完成自启动项提权向量的自动化侦察并理解其背后的路径解析与 DACL 比对机制。功能概述SYNOPSIS / DESCRIPTION根据原文档及源码注释Privesc/PowerUp.ps1该函数的作用是Returns any elevated system autoruns in which the current user can modify part of the path string. 返回所有当前用户能够修改路径字符串中某一部分的高权限系统级自启动项。其工作方式DESCRIPTION是枚举HKLM下若干自启动注册表规范autorun specifications将每一个值Value中的路径字符串通过管道交给Get-ModifiablePath过滤返回在路径字符串中发现的所有、当前用户可修改的文件/配置位置。作者为 Will Schroederharmj0y许可证为 BSD 3-Clause唯一必需依赖Required Dependencies是Get-ModifiablePath。攻击面原理简述HKLM 下的 Run/RunOnce 等自启动键在系统启动或用户登录时以**高权限SYSTEM / 管理员上下文**执行其值中指定的程序路径。如果普通用户可以改写该路径字符串所指向的二进制文件、或路径所依赖的目录那么攻击者就可以把原本以高权限运行的程序替换成自己的恶意程序从而在下次登录/启动时获得提权。这正是该命令要自动化发现的核心条件。语法SYNTAX与基本用法该函数不接受任何参数语法极简见 Privesc/PowerUp.ps1Param()为空Get-ModifiableRegistryAutoRun示例 1完整侦察Get-ModifiableRegistryAutoRun原文档的示例说明为 Return vulneable autorun binaries (or associated configs).即返回存在漏洞可被当前用户修改的自启动二进制文件或与其关联的配置文件。示例 2结合模块加载使用在 PowerSploit 中该函数位于Privesc模块目录下的 Privesc/PowerUp.ps1 中。按 Privesc/README.md 的说明可先加载模块再调用# 将 Privesc 目录放入 $Env:PSModulePath 中的某个模块目录后 Import-Module Privesc Get-Command -Module Privesc # 查看模块导入了哪些命令 Get-ModifiableRegistryAutoRun # 执行自启动项权限侦察也可以直接点源加载 PowerUp.ps1 后调用Import-Module .\Privesc\PowerUp.ps1 Get-ModifiableRegistryAutoRun搜索的 8 个注册表自启动位置源码中Privesc/PowerUp.ps1硬编码了 8 个搜索位置覆盖 64 位SOFTWARE与 32 位Wow6432Node两套视图下的常规启动键与 RunOnce 键#注册表键HKLM 下说明1SOFTWARE\Microsoft\Windows\CurrentVersion\Run登录自启动64 位视图2Software\Microsoft\Windows\CurrentVersion\RunOnce一次性登录自启动64 位视图3SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run登录自启动32 位视图4SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce一次性登录自启动32 位视图5SOFTWARE\Microsoft\Windows\CurrentVersion\RunService服务登录自启动64 位视图6SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceService一次性服务自启动64 位视图7SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunService服务登录自启动32 位视图8SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnceService一次性服务自启动32 位视图说明RunOnce 键默认会在执行后删除对应值除非值名前缀为!但在被利用的瞬间仍是高权限代码执行点RunService系列则在服务登录阶段生效通常以更高权限运行。源码对每个位置先用Test-Path $_判断键是否存在只对存在的键继续处理。输出对象PowerUp.ModifiableRegistryAutoRun原文档在 OUTPUTS 一节声明了输出类型PowerUp.ModifiableRegistryAutoRun— Custom PSObject containing results.包含结果的自定义 PSObject结合源码Privesc/PowerUp.ps1每个输出对象包含以下成员成员类型/来源含义KeyString完整的注册表路径 值名格式为HKLM:\...\Run\值名由$ParentPath\$Name拼接PathString该自启动值中的原始路径字符串$Keys.GetValue($Name)的原始值ModifiableFilePowerUp.ModifiablePath对象Get-ModifiablePath的输出内含ModifiablePath、IdentityReference、Permissions三个字段见下文NameAlias别名Key的别名属性便于Format-Table/管道过滤时用Name引用其中ModifiableFile为嵌套对象它是Get-ModifiablePath的输出类型PowerUp.ModifiablePath具体结构Privesc/PowerUp.ps1ModifiablePath当前用户可修改的具体文件/目录的绝对路径IdentityReference被判定为拥有修改权限的主体用户/组名或 SID 字符串Permissions匹配到的权限集合如GenericWrite、WriteData/AddFile等可写权限的组合。实际使用中查看结果的典型写法Get-ModifiableRegistryAutoRun | Select-Object Key, Path, {nModifiablePath;e{$_.ModifiableFile.ModifiablePath}}, {nIdentity;e{$_.ModifiableFile.IdentityReference}}, {nRights;e{$_.ModifiableFile.Permissions -join ,}} | Format-List底层原理与 Get-ModifiablePath 的调用链Get-ModifiableRegistryAutoRun本身不做 ACL 判断它把所有解析工作委托给依赖函数Get-ModifiablePathPrivesc/PowerUp.ps1。整体调用链为Get-ModifiableRegistryAutoRun └─ 枚举 8 个 HKLM 自启动键Test-Path 过滤 └─ Get-Item 获取键对象 └─ GetValueNames() / GetValue() 读取每个值 └─ 路径字符串 | Get-ModifiablePath ← 真正的路径 token 化 ACL 判定 └─ 输出 PowerUp.ModifiablePath 对象Get-ModifiablePath的核心逻辑可概括为四步1. 路径字符串 Token 化自启动值往往是一整条命令行例如C:\Program Files\App\app.exe -c C:\Program Files\App\config.ini。源码使用一组分隔符集合Privesc/PowerUp.ps1反复切分字符串以尽力还原其中的各个路径片段$SeparationCharacterSets (, , , , , , )依次按双引号、单引号、空格以及它们的组合切分并对每个片段执行用[System.Environment]::ExpandEnvironmentVariables()展开%VAR%环境变量若片段指向真实存在的路径则用Resolve-Path解析为绝对路径并加入候选列表若片段不存在则回退检查其父目录Split-Path -Parent因为对目录有写权限同样意味着可以放置同名可执行文件典型如 DLL 劫持、文件名替换场景。2. 获取 DACL 并筛选 Allow 条目对每个候选路径执行Get-Acl只保留AccessControlType -match Allow的访问控制条目Privesc/PowerUp.ps1。3. 权限位映射与可写判定源码内置了一张AccessMask权限位映射表Privesc/PowerUp.ps1将FileSystemRights.value__数值位分解为可读权限名如GenericWrite0x40000000、WriteOwner0x00080000、WriteData/AddFile0x00000002、AppendData/AddSubdirectory0x00000004 等。随后用Compare-Object与可写权限集合比对Privesc/PowerUp.ps1(GenericWrite, GenericAll, MaximumAllowed, WriteOwner, WriteDAC, WriteData/AddFile, AppendData/AddSubdirectory)只要命中其中任一权限即视为可修改。4. 当前用户 SID 匹配最后一步是身份比对函数获取当前进程的WindowsIdentity收集当前用户 SID 及其所有组 SIDPrivesc/PowerUp.ps1再把 ACL 条目的IdentityReference翻译为 SID用户名则通过NTAccount.Translate()转换仅当该 SID 属于当前用户的 SID 集合时才输出Privesc/PowerUp.ps1。这意味着输出结果是严格面向当前用户上下文的谁运行、谁的 SID 集合生效因此该命令应始终以目标侦察身份运行通常是权限提升前的受限用户。与 Invoke-AllChecks 的集成Get-ModifiableRegistryAutoRun被整合进 PowerUp 的批量侦察入口Invoke-AllChecks作为一项独立的检查类型 Modifiable Registry AutorunPrivesc/PowerUp.ps1{ Type Modifiable Registry Autorun Command { Get-ModifiableRegistryAutoRun } }因此运行Invoke-AllChecks时会自动执行本命令并将结果汇总进综合报告中-HTMLReport可生成COMPUTER.username.html报告参见 Privesc/README.md。如果只想聚焦自启动向量可以直接单独调用Get-ModifiableRegistryAutoRun。测试用例验证Tests仓库的 Pester 测试 Tests/Privesc.tests.ps1 为Get-ModifiableRegistryAutoRun提供了两条用例可作为理解与验证行为的权威参考前置条件测试显式要求本地管理员权限Throw Get-ModifiableRegistryAutoRun Pester test needs local administrator privileges.因为测试需要向 HKLM 写入测试值用例 1Should not throw直接调用Get-ModifiableRegistryAutoRun不应抛出异常——验证了Test-Path过滤与ErrorActionPreference静默处理对键不存在/值不可读场景的容错用例 2Should find a vulnerable autorun测试流程完整还原了攻击场景在HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下写入值名PowerUp、值为vuln.exe -i 临时文件绝对路径调用Get-ModifiableRegistryAutoRun过滤出ModifiableFile包含该临时文件的结果断言输出对象必须包含Key、Path、ModifiableFile字段且ModifiableFile必须包含ModifiablePath、Permissions、IdentityReference字段finally块中清理测试值Remove-ItemProperty与临时文件。这个用例同时佐证了本文前面给出的输出对象字段结构与**命令行中附带参数路径也会被解析检测**的行为vuln.exe -i path中带引号的路径同样会被Get-ModifiablePath提取并检测。使用注意事项与限制运行身份检测结果取决于当前进程的用户 SID 集合请以提权前的实际权限运行而不是管理员 shell权限要求读取 HKLM 自启动键一般需要相应权限若以普通用户读取受限子键失败源码通过临时将$ErrorActionPreference置为SilentlyContinue静默跳过Privesc/PowerUp.ps1因此命令本身不会因个别键不可读而中断结果解读Path是原始命令行字符串ModifiableFile.ModifiablePath才是可被改写的具体文件/目录命中结果意味着替换该路径上的程序或配置文件即可影响高权限启动项的执行内容这是典型的持久化/提权滥用向量范围限定该命令只覆盖 HKLM 下的 8 个自启动键不包含 HKCU 自启动HKCU 本身属于当前用户上下文提权意义有限、启动文件夹Startup Folder与计划任务计划任务由同族的Get-ModifiableScheduledTaskFile负责见 Privesc/PowerUp.ps1——完整的提权侦察应把三者结合起来看合规前提本命令属于 PowerSploit 后渗透/提权侦察框架见仓库根目录 README.md 与 Privesc/README.md的一部分仅应在获得授权的渗透测试、红队演练与安全评估环境中使用检测到的可写自启动项应通过正常安全渠道修复收紧 ACL而非直接利用。相关命令与延伸阅读依赖函数Get-ModifiablePath路径 token 化 ACL 判定引擎Privesc/PowerUp.ps1同族可修改路径侦察Get-ModifiableScheduledTaskFile计划任务、Get-ModifiableServiceFile服务二进制/配置均在 Privesc/PowerUp.ps1 中批量侦察入口Invoke-AllChecks与报告生成见 Privesc/README.md模块加载方式Import-Module Privesc安装说明见 Privesc/README.md官方命令文档docs/Privesc/Get-ModifiableRegistryAutoRun.md其他 Privesc 命令文档见 docs/Privesc/index.md相关测试Tests/Privesc.tests.ps1小结Get-ModifiableRegistryAutoRun用一次无参数调用即可把HKLM 高权限自启动项中当前用户可写的程序/配置文件完整暴露出来是 PowerUp 提权侦察流程中针对**注册表自启动Autorun**向量的一站式检查器。理解其背后的Get-ModifiablePath路径 Token 化、权限位映射与 SID 身份比对机制不仅能帮助你准确解读输出也能让你在授权测试中快速判断改哪个文件、用什么权限、影响谁——这正是从发现漏洞走向形成闭环报告的关键一步。赞分享渗透测试网络安全【免费下载链接】PowerSploitPowerSploit - A PowerShell Post-Exploitation Framework项目地址https://gitcode.com/gh_mirrors/po/PowerSploit点击查看免费下载相关推荐PowerSploit Recon 模块 Get-DomainManagedSecurityGroup横向提权侦察中的 AD 托管安全组枚举实战PowerSploit Recon 模块 Get DomainManagedSecurityGroup横向提权侦察中的 AD 托管安全组枚举实战 导读 Get渗透测试网络安全PowerSploit 实战指南用 Add-ServiceDacl 查看 Windows 服务 DACL 与权限提升侦察PowerSploit 实战指南用 Add ServiceDacl 查看 Windows 服务 DACL 与权限提升侦察 导读 Add ServiceDacl渗透测试网络安全PowerSploit PowerView 的 Get-RegLoggedOn基于远程注册表枚举登录用户的低权限侦察实战PowerSploit PowerView 的 Get RegLoggedOn基于远程注册表枚举登录用户的低权限侦察实战 导读 Get RegLoggedOn渗透测试网络安全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
频谱仪与跟踪源一体化:手持设备如何重构外场射频测试成本 射频测试这行,有个外人很难理解的怪现象:仪器越贵,越容易“闲置”。实验室里那台台式频谱仪,除了开发阶段,大半时间都在吃灰;可一到外场,你又得花钱租设备,或者背一台精度一般的手持… · 2026/9/23 3:34:43
Akka 项目 Issue 跟踪与贡献流程实战:从提交 Ticket 到合并 Pull Request Akka 项目 Issue 跟踪与贡献流程实战:从提交 Ticket 到合并 Pull Request 【免费下载链接】akka-core A platform to build and run apps that are elastic, agile, and resilient. SDK, libraries, and hosted environments. 项目地址: https://gitcode.com/gh_m… · 2026/9/23 3:34:36
双实线CSS源码解析:3个坑让项目排版不乱飞 双实线CSS源码解析:3个坑让项目排版不乱飞 看了一堆教程还是不会写项目?别慌,问题不在你不够聪明,而在于没人带你去扒那些大厂开源仓库里的真实代码。今天咱们不背八股文,直接上硬菜。我翻了几个GitHub… · 2026/9/23 3:34:24
高斯过程回归全解:小样本预测与不确定度建模实战 1. 这个方法到底是什么,为什么我劝你先别急着上深度学习你可能也遇到过这种局面:手里就几十条实验数据,散点图看起来有趋势但又不完全光滑,想拟合一条曲线做预测,用多项式怕阶数选错,用神经网络怕直接过拟合… · 2026/9/23 4:59:32
边缘AI落地指南:工控机如何借力AMD 7730U稳定实现本地推理 不用再问“工控机能不能跑AI”——这问题放到2025年已经过时了。真正的问法是:哪一类边缘算力方案能把AI模型稳定、便宜、皮实地落到生产线、配电房、仓储拉线和户外卡口上。我今年经手了几个改造项目,感触挺深:传统工控机只要换对平台、配好… · 2026/9/23 4:59:25
AI写代码的类型安全陷阱与合约优先工作流实践 过去三个月,我把大量日常编码任务交给了编码智能体。效率确实提升明显,但代价是半夜被线上告警叫醒的次数比去年一年还多。复盘了四次事故之后,我得出的结论有点反直觉:AI写代码的最大风险不是“它写错了”,而是“它写… · 2026/9/23 4:59:25
零基础AI编程实战:一个月四项目与项目纪律系统构建 1. 一个月从零到四项目:我的AI编程真实路径复盘先说结论:一个月,四个项目,从完全零基础到能跑通完整开发流程,靠的不是天赋,而是一套被逼出来的“纪律系统”。这套系统后来被我做成了一个agent项目纪律工具… · 2026/9/23 4:59:25
学生党U盘选购指南:安全、速度与容量全解析 1. 学生党U盘选购痛点解析作为一名在校园里摸爬滚打多年的老学长,我深知U盘对学生的重要性。从大一入学时懵懂地买了个杂牌U盘导致期末论文丢失,到现在帮学弟学妹们挑选过上百个U盘,我总结出学生党选购U盘的三大核心痛点:数据安全… · 2026/9/23 4:59:19
AI项目依赖更新实战:从锁版本到自动化验证的完整指南 1. 为什么“依赖更新”这件事值得单独拎出来聊做 AI 应用开发的人,大概率都经历过这样一个场景:项目跑得好好的,某天早上打开终端,pip install -r requirements.txt或者npm install一执行,满屏红色报错。你什么都没改&… · 2026/9/23 4:59:19
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29