上篇我们成功在McAfee Application Control保护的系统上实现了代码执行,而McAfee Application Control的其他保护功能同样很强大,其中对文件读写操作的拦截很有特色,这一次我们接着试试能不能绕过:D
当McAfee Application Control开启了文件写入保护和读取保护,可以阻止任何对受保护文件的修改,具体保护细节如图
简单的说,如果开启了写入保护,那么对文件的任何修改操作都会被阻止并被日志记录。
如果开启了读取保护,那么无法读取受保护文件的内容。
可是深入了解之后,有趣的事情发生了。
操作系统: win7x86
首先学习一下如何设置以及使用文件写入保护。
写入保护可以指定文件夹、文件或者是驱动文件
测试使用指定文件夹 c:/test/write
里面包含 test.txt
#!bash sadmin write-protect -i c:/test/write
#!bash sadmin write-protect -l
如图
随后我们尝试 在c:/test/write
下新建文件、删除文件、修改文件,均失败
如图
#!bash sadmin write-protect -r c:/test/write
接着测试读取保护
测试使用指定文件夹 c:/test/read
下面包含 test.txt
,里面保存有加密信息
注:写入保护默认开启,而读取保护默认关闭,所以先要开启读取保护功能
#!bash sadmin features enable deny-read
#!bash sadmin read-protect –i c:/test/read
#!bash sadmin read-protect -l
如图
尝试读取文件内容,失败,如图
通过以上的测试可以发现:
但是:
McAfee Application Control会默认设定白名单进程用来为系统进行更新
所以这些进程都具有操作文件的权限
如果你仔细阅读了上一篇文章并能加以思考
那么其中的漏洞也显而易见
执行
#!bash sadmin updaters list
如图
以下是我找到的比较通用并能被利用的进程:
选取 GoogleUpdate.exe
使用《Powershell tricks::Code Execution & Process Injection》提到的Process Injection-Meterpreter.ps1
可以在powershell的环境下粘贴代码执行
向GoogleUpdate.exe进程注入meterpreter
如图
注:注入系统权限的进程需要管理员权限
如图
弹回meterpreter
发现没有直接注入到GoogleUpdate.exe
接着进程注入,如图
成功注入到GoogleUpdate.exe,理论上已经有了权限可以操作受保护的文件
我们接着测试,如图
成功修改文件和删除文件
接着测试读取文件,如图
成功读取被保护的内容
注: 通过进程注入获得的权限可以用来执行脚本
McAfee Application Control可对操作设置密码,增强其安全
设置密码:
#!bash sadmin passwd
去掉密码:
#!bash sadmin passwd -d
密码文件保存在 C:/Program Files/McAfee/Solidcore/passwd
正常情况下 C:/Program Files/McAfee/Solidcore/passwd
无法被读取、无法被复制,即使进程注入到白名单进程内也无法实现,如图
但是我们依然有办法:D
这里可以借鉴导出域控ntds.dit文件的方法,使用 NinjaCopy.ps1
下载链接:
https://github.com/3gstudent/NinjaCopy指定路径为:
#!bash Invoke-NinjaCopy -Path "C:/Program Files/McAfee/Solidcore/passwd" -LocalDestination "C:/test/trust/passwd"
管理员权限运行 NinjaCopy.ps1
,成功复制passwd文件
如图
上图为passwd的内容
查看资料得知此处使用的是sha-512加密(mcafee-application-control-product-guide/Page68)
如图
推断 cryptographic salt
为 88daf0b4-790e-4eae-a926-b08788fbd1cb
在 http://www.convertstring.com/Hash/SHA512 验证推断
输入 cryptographic salt
和明文对比测试
如图
passwd中的内容和我们自己加密的密文相同,判断正确
McAfee Application Control为方便使用,可以指定信任路径,在里面的所有操作均不会被拦截
如果McAfee Application Control未设置密码或者密码被获得,可以建立一个信任路径,里面的操作均不会被拦截
建立:
#!bash sadmin trusted -i c:/test/trusted
查看:
#!bash sadmin trusted -l
如图程序成功执行
日志默认被保存在 C:/ProgramData/McAfee/Solidcore/Logs
通过进程注入获得的权限可以修改此文件
“未知攻 焉知防”,即使做到以上几点,我相信依然有绕过的方法:)
本文由三好学生原创并首发于乌云drops,转载请注明