BlackHat 2024 Asia Windows技术 MagicDot学习分享

点击蓝字 关注我们

BlackHat 2024 Asia Windows技术 MagicDot学习分享


BlackHat 2024 Asia

Windows 技术

MagicDot 学习分享

BlackHat 2024 Asia Windows技术 MagicDot学习分享



起因


起初看到国内很多安全行业的公众号转发关于Windows的路径转换机制可能导致命令执行的文章,其中使用到的技术是2024年BlackHat亚洲专场由研究员Or Yair分享的内容,这名研究员基于自己的研究成果,于2023年提交了多枚漏洞给微软并获取到CVE编号,其中已被微软修复的CVE-2023-36396和CVE-2023-32054分别造成了远程命令执行及权限提升。

本文将分享笔者在学习Or Yair分享的技术的过程。


学习过程


1

DOS-NT路径转换

在Windows操作系统中用户可以通过执行系统函数与文件或目录进行交互,例如,在使用记事本程序打开文档的时候,记事本将调用win32api CreateFile函数,通过传参文件所在路径的方式来打开相关文件。

Windows系统支持几种不同的路径格式,我们最常使用的是DOS路径格式。

实际上Windows在进行文件操作时回去调用更底层的函数NtCreateFile,而该函数的参数要求是使用NT格式(??C:)的路径而不是DOS格式的路径,所以在调用NtCreateFIle之前,Windows会将DOS路径格式的地址转换为NT格式的路径地址。

#DOS格式路径地址C:UsersxfffengDesktop#NT格式路径地址??C:UsersxfffengDesktop

这个转换过程是通过系统函数实现的,如RtlpDosPathNameToRelativeNtPathName函数。

在转换过程中存在一个已知问题,该函数会删除掉DOS格式路径中各层路径后的点;还会移除掉最后层路径中末尾的全部空格符号。

转换的例子如下表格所示:

DOS Path NT Path
C:exampleexample. ??C:exampleexample
C:exampleexample… ??C:exampleexample
C:exampleexample<space> ??C:exampleexample
C:exampleexample<space><space> ??C:exampleexample
C:example.example ??C:exampleexample
C:example<space>example ??C:example<space>example


2

文件隐藏

通过了解DOS-NT路径转换,我们可以知道,当用户使用的程序在打开文件或目录,使用的是DOS路径格式时,可能会发生一些异常情况。

测试这个现象我们可以使用Cygwin工具进行测试,它可以直接输入NT格式路径进行文件操作,另一边我们可以使用Windows的命令行或WIndows资源管理器,它使用DOS格式路径进行文件操作。

在cygwin的shell中,创建目录demo,使用重定向写入文件命令如下:

mkdir democd demoecho "normal file" > "file1.txt"echo "evil file1" > "file1.txt."echo "evil file2" > "file1.txt<space>"

BlackHat 2024 Asia Windows技术 MagicDot学习分享

使用notepad在资源管理器中打开这三个文件,或在cmd中使用type命令读取这三个文件内容结果都是file1.txt文件中的内容。

BlackHat 2024 Asia Windows技术 MagicDot学习分享

使用这样的方法实现了对file1.txt.及file1.txt文件中内容的隐藏。

这两个文件也无法直接通过cmd或资源管理器进行删除,由于DOS-NT路径转换的机制,对其进行的操作都将影响file1.txt。


3

进程隐藏

安全研究员也分享了使用这个机制进行进程隐藏的方法,我们使用他在github提供的工具magicdot,使用如下命令创建mimikatz的隐藏进程。

python magic_dot_cli.py CREATE_IMPERSONATED_PROCESS -exe-pathC:UsersxfffengDesktopmimikatz_trunkx64mimikatz.exe -impersonate-to "c:windowssystem32calc.exe"

使用ProccessExploere查看该进程,在进程管理器中可以看到启动的进程及路径都是calc.exe。

BlackHat 2024 Asia Windows技术 MagicDot学习分享

通过使用cygwin查看C盘可以发现,隐藏进程的方法是通过创建了一个末尾具有点的目录,依然是通过DOS-NT路径转换的特性进行的隐藏。

BlackHat 2024 Asia Windows技术 MagicDot学习分享

如下图所示,将待隐藏的程序复制到利用路径转换特性创建的隐藏目录下创建进程,实现隐藏。

BlackHat 2024 Asia Windows技术 MagicDot学习分享


4

复现越权写文件

CVE-2023-32054

命令执行漏洞由于环境问题暂未进行复现,该越权写文件漏洞在2023年4月份已进行修复,需要先准备修复前的系统镜像及环境,使用22年的Windows10或11系统均可。

使用cygwin工具创建测试目录demo,在目录内创建被攻击目录test以及攻击目录test.

在test目录中创建1.txt内容为normal,在test目录创建1.txt内容为evil如下图所示。

BlackHat 2024 Asia Windows技术 MagicDot学习分享
使用windows wmic命令创建shadowcopy。wmic shadowcopy call create volume=c:

此时模拟被攻击者使用拷贝恢复功能。

BlackHat 2024 Asia Windows技术 MagicDot学习分享

恢复后文件内容如下图所示,攻击者所创建的目录中的文件内容覆盖了用户的原文件内容,实现了越权写文件。

BlackHat 2024 Asia Windows技术 MagicDot学习分享


学习总结


如研究员Or Yair的分享,一个已知的问题(路径转换),在新的场景和功能实现下依然可能发现新的问题。微软对越权写文件漏洞以及命令执行漏洞进行了修复,也就是路径转换的问题依然存在。

也许下个利用该机制的漏洞就在眼前,大胆猜想一下,这个机制与WEB中的路径穿越漏洞或写文件名时的绕过机制是否会有有趣的结合呢。



参考资料


https://googleprojectzero.blogspot.com/2016/02/the-definitive-guide-on-win32-to-nt.html

https://www.blackhat.com/asia-24/briefings/schedule/#magicdot-a-hackers-magic-show-of-disappearing-dots-and-spaces-36561

https://www.safebreach.com/blog/magicdot-a-hackers-magic-show-of-disappearing-dots-and-spaces



【END】


往期精彩合集



● 浅谈Kubernetes安全

● 招贤纳士 | 联想热招AI产品内容安全岗位!

● 大模型应用之RAG 系统调研及探讨

● AI PC之NPU漫谈

● 栈溢出漏洞利用之ret2txt&ret2shellcode

● 保护你的信息安全:代码安全的重要性

● 如何绕过APP数据包完整性校验

● CISCO NGFW RAVPN安全配置

● 为NVDIA_ChatWithRTX构建中文LLM

● AIGC产品内容安全测试浅析


联想GIC全球安全实验室(中国)

[email protected]


BlackHat 2024 Asia Windows技术 MagicDot学习分享


原文始发于微信公众号(联想全球安全实验室):BlackHat 2024 Asia Windows技术 MagicDot学习分享

版权声明:admin 发表于 2024年5月9日 下午3:35。
转载请注明:BlackHat 2024 Asia Windows技术 MagicDot学习分享 | CTF导航

相关文章