这篇技巧是我在校稿最近刚出版的书《Windows APT Warfare:恶意程式前线战术指南》
正好看到 https://github.com/L3cr0f/DccwBypassUAC
提及的WinSxS 配置错误允许骇客劫持达成UAC 特权提升看到比较有意思的事情所以写一篇作为笔记。
不过这篇技巧目前在Windows 10 上除非出现了配置错误的DACL 可被写入、否则新型的作业系统利用的可能性比较小
如果对UAC 特权提升有兴趣的读者可以参考这篇BypassUAC原理及方法汇总
https://www.anquanke.com/post/id/216808
Windows 为了原生支援WinSxS 多重系统模组功能——即同一个系统中可能会有新旧程式使用到同个系统模组但不同版本号的状况。因此可以见到C:\Windows\WinSxS\ 下有很多不同版本的资源包:
开发者能在编译时期在纯文字的资讯清单*.manifest 记录特定系统模组要从特定系统路径、版本来装载使用。而这边引自上述对岸文章一段描述,其中提及了在资讯清单中还有一个特性可以使用:
在Windows中有些可执行程序没有内置的manifest,假设这个程序叫test.exe,如果攻击者在该可执行程序目录下新建一个test.exe.manifest并在manifest文件中指定file元素,则test.exe执行时会加载file元素中loadFrom属性指定的DLL(loadFrom的dll不能在KnownDlls中)
这是一个我觉得蛮有趣的特性,可以解释为什么系统槽下会有那么多纯文字保存的信息清单*.manifest文件(我以前一直误以为是开发者编译完忘记删掉XD)这描述说明了两点:
除了开发者相当熟悉的嵌入式信息清单,还有导出式信息清单——在同层文件夹中保存与程序名同名的*.manifest文件即可被程序装载器正确识别
无论嵌入或导出式信息清单:使用loadFrom标签可以指示程序装载器在「装载特定DLL模块」时便会被redirect去装载另一个特定的DLL模块
总而言之当程序装载器正在初始化一支静态程序文件、发现其不具嵌入式信息清单时,那么就会同层目录确认是否有同名的*.manifest清单文件进行解析并初始化,以下做个举例:
桌面上现在有一皮卡丘打排球程序(picaball.exe)是一个不具嵌入式信息清单的老旧程序、并且其引入函数表显示出执行阶段会需要使用到DirectX的模块dsound.dll作为游戏引擎声音输出。
因此,在同层资料夹(即桌面)放置一个picaball.exe .manifest 便会在游戏程式被程式装载器初始化时视为导出式资讯清单文件进行读取;而在该资讯清单中第十行可见loadFrom 的属性,其指示了dsound.dll 被装载时将会被redirect 去装载30cm_tw.dll 文件,因此一旦游戏程式被执行便会装载我们的恶意模组30cm_tw.dll 并弹出视窗。
在微软官方文献 Dynamic-Link Library Redirection 提及了若资讯清单中指定要装载特定版本的WinSxS 系统模组、但如果你不希望装载C:\Windows\WinSxS 下的那套DLL 模组;那么你也可以创建与程式同名的*.local 资料夹其会被作为该程式应采用的WinSxS 模组之基础路径。
如上图所示系统高权服务dccw.exe 会使用到
C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17763.1935_none_570899e8c25aaf4a中的GdiPlus.dll
因此我们可以在dccw.exe 同层目录创建dccw.exe.local 资料夹作为新的WinSxS 参考路径、并在其内部创建x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17763.1935_none_570899e8c25aaf4a 子目录、并在此目录中放入恶意的GdiPlus.dll 便会发现当dccw.exe 被执行起来后就会自动装载dccw.exe.local 子目录中的恶意GdiPlus.dll 模组
上面讲完了这个有趣的小技巧后便可以回头来提https://github.com/L3cr0f/DccwBypassUAC 这份PoC。
主要就是在Win8.1 以前的Windows 版本可以利用CIA Vault 7 被揭露过的iFileOperation COM 接口来任意「创建资料夹」在C:\Windows\System32\dccw.exe 同层目录中创建C:\Windows\System32\dccw.exe.local 资料夹并投放恶意模组达成本地提权,细节部分大家自己看就好了
原文来自「HACK学习呀」|侵删