Moke|墨客

 找回密码
 立即注册
搜索
查看: 8091|回复: 0

Bypass?McAfee?Application?Control--Write&Read?Protection

[复制链接]

3636

主题

0

回帖

3681

积分

超级版主

Rank: 8Rank: 8

积分
3681
发表于 2016-5-9 13:55:21 | 显示全部楼层 |阅读模式



      上篇我们成功在McAfee Application Control保护的系统上实现了代码执行,而McAfee Application Control的其他保护功能同样很强大,其中对文件读写操作的拦截很有特色,这一次我们接着试试能不能绕过:D

0x01 简介
  当McAfee Application Control开启了文件写入保护和读取保护,可以阻止任何对受保护文件的修改,具体保护细节如图

  简单的说,如果开启了写入保护,那么对文件的任何修改操作都会被阻止并被日志记录。
  如果开启了读取保护,那么无法读取受保护文件的内容。
  可是深入了解之后,有趣的事情发生了。
0x02 配置Write Protection
  操作系统:win7x86  
  首先学习一下如何设置以及使用文件写入保护。
  写入保护可以指定文件夹、文件或者是驱动文件
  测试使用指定文件夹c:\test\write  
  里面包含test.txt  
1.指定保护路径
#!bash
sadmin write-protect -i c:\test\write  
2.查看保护路径
#!bash
sadmin write-protect -l  
  如图
  随后我们尝试在c:\test\write下新建文件、删除文件、修改文件,均失败
  如图

3.删除保护路径
#!bash
sadmin write-protect -r c:\test\write  
0x03 配置Read Protection
  接着测试读取保护
  测试使用指定文件夹c:\test\read  
  下面包含test.txt,里面保存有加密信息
  注:
  写入保护默认开启,而读取保护默认关闭,所以先要开启读取保护功能
1.开启读取保护功能
#!bash
sadmin features enable deny-read  
2.指定读取保护路径:
#!bash
sadmin read-protect –i c:\test\read  
3.查看读取保护路径:
#!bash
sadmin read-protect -l  
  如图
  尝试读取文件内容,失败,如图
0x04 权限分配漏洞
  通过以上的测试可以发现:
写入保护阻止用户对文件进行写入操作
读取保护阻止用户对文件进行读取操作
  但是:
  McAfee Application Control会默认设定白名单进程用来为系统进行更新
  所以这些进程都具有操作文件的权限
  如果你仔细阅读了上一篇文章并能加以思考
  那么其中的漏洞也显而易见
  如果能够利用白名单进程执行文件读写操作,那么自然能够绕过防护
0x05 漏洞利用
  利用思路:
查找默认白名单进程  找到可利用进程  使用进程注入  操作文件  
1.查看白名单进程列表
  执行
#!bash
sadmin updaters list  
  如图

2.找到可被利用进程
  以下是我找到的比较通用并能被利用的进程:
GoogleUpdate.exe  scsrvc.exe  spoolsv.exe  
3.进程注入
  选取GoogleUpdate.exe  
  使用《Powershell tricks::Code Execution & Process Injection》提到的Process Injection-Meterpreter.ps1
  可以在powershell的环境下粘贴代码执行
  向GoogleUpdate.exe进程注入meterpreter
  如图
  注:
  注入系统权限的进程需要管理员权限
  如图
  弹回meterpreter
  发现没有直接注入到GoogleUpdate.exe
  接着进程注入,如图
  成功注入到GoogleUpdate.exe,理论上已经有了权限可以操作受保护的文件
  我们接着测试,如图
  成功修改文件和删除文件
  接着测试读取文件,如图
  成功读取被保护的内容
  注: 通过进程注入获得的权限可以用来执行脚本
0x06 补充
1.设置密码
  McAfee Application Control可对操作设置密码,增强其安全
  设置密码:
#!bash
sadmin passwd  
  去掉密码:
#!bash
sadmin passwd -d  
  密码文件保存在C:\Program Files\McAfee\Solidcore\passwd  
2.获取密码文件
  正常情况下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文件
  如图
3.解析密码文件
  上图为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中的内容和我们自己加密的密文相同,判断正确
4.信任路径
  McAfee Application Control为方便使用,可以指定信任路径,在里面的所有操作均不会被拦截
  如果McAfee Application Control未设置密码或者密码被获得,可以建立一个信任路径,里面的操作均不会被拦截
  建立:
#!bash
sadmin trusted -i c:\test\trusted  
  查看:
#!bash
sadmin trusted -l  
  如图程序成功执行
5.日志
  日志默认被保存在C:\ProgramData\McAfee\Solidcore\Logs  
  通过进程注入获得的权限可以修改此文件
6.防护建议
为McAfee Application Control设置强密码
禁用powershell
禁用hta、js
禁用信任路径
白名单+黑名单结合使用
0x07 小结
  “未知攻 焉知防”,即使做到以上几点,我相信依然有绕过的方法:)
  本文由三好学生原创并首发于乌云drops,转载请注明
新浪微博
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

 

 

快速回复 返回顶部 返回列表