RenX6 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 维基解密公布的CIA Vault 7涉及Windows系统中Junction文件夹和库文件的使用。 地址如下: https://wikileaks.org/ciav7p1/cms/page_13763381.html https://wikileaks.org/ciav7p1/cms/page_13763373.html 郑对此进行了分析,分享了一种库文件的后门利用方法,并详细介绍了如何检测结文件夹和库文件的恶意利用。 地址如下: https://www . counter cept . com/blog/hunting-for-junction-folder-persistence/ https://www . counter cept . com/blog/abiling-windows-library-files-for-persistence/ 本文将在以上参考资料的基础上,对比Junction文件夹和库文件,进一步利用库文件的后门利用方式(隐蔽性更强),开源一个POC,分享自己对检测的理解。 0x01 简介 本文将介绍以下内容: 连接文件夹的利用方法 图书馆档案的利用方法 文件后门的进一步利用 检测和识别 0x02 Junction Folders的利用方法 Junction Folders可以简单理解为一个可以跳转到另一个位置的文件夹。 三种常见的创建方法: 修改注册表项 修改文件夹中的desktop.ini 使用特殊的文件名,如test。{ ed7ba 470-8e 54-465 e-825 c-99712043 e01c } 对于第三种方法,特定的CLSID对应于特定的文件路径。 如果我们通过注册表创建一个CLSID并指定dll路径,dll将在文件夹打开时加载。 1、实际测试 测试dll是执行计算器,参考的下载地址是: https://github.com/3gstudent/test/raw/master/calc.dll (1)修改注册表,添加注册表项 蝙蝠命令如下: SET KEY=HKEY _当前_用户\软件\类\ CLSID \ { 11111111-1111-1111-1111-11111111 } \ in proc server 32 注册。' c:\test\calc.dll' /F 注册。/V threading model/T REG _ SZ/D Apartment/F (2)新建文件夹test.{11111111-1111-1111-1111-111111111111} (3)选中该文件夹即可加载calc.dll 注: 它将只被加载一次,并且重启过程explorer.exe可以被再次触发。 2、系统开机自动加载的实现方法(用户权限) (1)重命名系统文件夹 将% appdata% \ Microsoft \ Windows \开始菜单\程序\附件重命名为附件。{11111111-1111-1111-1111-11111} (2)新建文件夹 保存文件夹测试。{ 11111111-1111-1111-1111-1111111 }在以下任何一个地点: % appdata % \ Microsoft \ Windows \开始菜单\程序\ % appdata% \ Microsoft \ Windows \开始菜单\程序\ 0x03 Library Files的利用方法 该文件的扩展名为library-ms,位于% appdata % \ Microsoft \ windows \ libraries中。 官方文件: https://docs . Microsoft . com/en-us/windows/客户端管理/windows-库 对库文件的简单理解: 可以同时显示多个文件夹中的内容。 1、实际测试: (1)修改注册表,添加注册表项 蝙蝠命令如下: SET KEY=HKEY _当前_用户\软件\类\ CLSID \ { 11111111-1111-1111-1111-111111111 } \ 注册。' c:\test\calc.dll' /F 注册。EXE ADD % KEY % in proc server 32/V threading model/T REG _ SZ/D Apartment/F 注册。EXE ADD % KEY % shell folder/V Attributes/T REG _ DWORD/D 4035969341/F 注: 与连接文件夹相比,库文件需要多添加一个注册表项。 (2)修改%appdata%\Microsoft\Windows\Libraries\Documents.library-ms 以xml格式添加以下内容: @shell32.dll,-34577 true shell:{ 11111111-1111-1111-1111-1111-11111111 } (3)访问%appdata%\Microsoft\Windows\Libraries\Documents.library-ms 打开文件时,dll会被多次加载。这里,您可以添加一个互斥体来避免多次启动。下载地址(仅用于演示): https://github.com/3gstudent/test/raw/master/calcmutex.dll 注意: 包括从2个地点改为3个地点。 如下图 查看这个位置,您可以找到加载的CLSID,如下图所示 2、系统开机自动加载的实现方法(用户权限) 将修改后的Documents.library-ms放在以下任意位置: % appdata % \ Microsoft \ Windows \开始菜单\程序\ % appdata% \ Microsoft \ Windows \开始菜单\程序\ 注: 您还可以修改Music.library-ms和Pictures.library-ms,甚至创建自己的图标(您可以指定显示的图标)。 0x04 Library Files后门的进一步利用 库文件的后门利用方法最明显的特点就是可以从Includes中找到加载的CLSID。 这里有一个解决方案: 清除路径,并指定不显示该路径。 成功隐藏加载的CLSID,最终效果如下 1、实现方法 根据xml格式,清空原始代码并添加以下代码: @shell32.dll,-34577 false true shell:{ 11111111-1111-1111-1111-1111-11111111 } 2、通过powershell实现的POC 测试后,您可以使用固定模板,而无需指定它。 流程如下: 修改注册表 发布指定目录下的Documents.library-ms 写脚本时需要注意的事项: 需要指定输出的编码格式为UTF-8,默认为UTF-16(unicode),这样会造成library-ms文件的格式错误。 为了将变量$clsid传递到字符串中,字符串的定义应该使用双引号而不是单引号 完整的代码可以参考: https://github . com/3g student/home-of-Powershell/blob/master/Invoke-library files persistence . PS1 代码实现添加注册表项,创建文件% appdata % \ Microsoft \ Windows \ Libraries \ documents . library-ms,用户登录时会加载c:\test\calc.dll。 0x05 检测和识别 对于连接文件夹和库文件的使用方法,需要特别注意的是: 普通用户权限就可以了。 该文件格式不常见且具有欺骗性。 使用该方法,可以检查每个链接: 有没有可疑的dll? 有效负载必须是dll格式 注册表CLISD中有可疑的dll吗? 可以监控注册表的敏感位置HKEY _本地_机器\软件\类\ clsid和HKEY _当前_用户\软件\类\ clsid。 对于连接文件夹,遍历文件夹并检查后缀是否与可疑的CLSID相关联。 对于库文件,遍历库-ms文件以检查可疑的CLSID是否关联。 这可以直接引用郑的剧本: https://gist . github . com/counter cept/6890 be 67 e 09 ba 3d aed 38 fa 7 aa 6298 fdf 0x06 小结 本文测试了Junction文件夹和库文件的利用方法,进一步利用库文件的后门利用方法增加隐蔽性,开源POC并介绍了脚本编写的注意事项,最后分享了自己对检测的理解。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子