18

Bypass McAfee Application Control--Write&Read Protection | WooYun知识库

 7 years ago
source link:
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Bypass McAfee Application Control--Write&Read Protection

0x00 前言


上篇我们成功在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 salt88daf0b4-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,转载请注明


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK