进程与服务的签名_赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。...

赛门铁克(Symantec)集团是世界上最大的安全公司。

守护安全的安全软件出了重大安全漏洞,一种老司机开翻车的feel。

ab35a34a7411a0dd150de1c968b1b963.png

#介绍

SafeBreach 实验室发现了赛门铁克终端安全这个漏洞(Symantec Endpoint Protection)(CVE-2019-12758)

利用这个漏洞,可以绕过赛门铁克的自我防护机制,还能实现防御规避、维持权限以及提权。方法是通过加载任意未签名的dll到赛门铁克签名运行的进程里面(这个进程是以NT AUTHORITY\SYSTEM权限运行)。

注:为了利用这个漏洞,攻击者需要有管理员权限。

#赛门铁克终端安全(Symantec Endpoint Protection)

赛门铁克终端安全是指一组安全软件套件,包括服务器版本以及桌面电脑版本,组成功能模块部分包括反病毒、入侵防护以及防火墙。由赛门铁克公司开发并在终端安全市场中拥有最大的市场份额。

这个软件中的很多部分都是以Windows服务的形式运行,这些服务以"NT AUTHORITY\SYSTEM"权限运行,这给程序提供了非常强力的权限支持。

在这篇文章,我们先描述上述的漏洞,然后展示如何利用这个漏洞在赛门铁克服务上下文里,达成执行任意命令的效果,以获得“NT AUTHORITY\SYSTEM”最高级别权限的访问权。

#漏洞

发现

在探索中,我们发现赛门铁克终端安全的一个服务(SepMasterService),是以“NT AUTHORITY\SYSTEM”权限启动一个单独的进程,这个进程会尝试加载一个不存在的dll,这个dll的位于:

c:\Windows\SysWOW64\wbem\DSPARSE.dll

9a2c0b14a8431bd9000160bea15e0dc1.png

如果能证明可以让我们的东西被加载进这个进程,我们就可以绕过赛门铁克反病毒程序的自我防护机制。主要是因为赛门铁克终端安全程序所在的目录受mini-filter文件系统驱动程序保护,会严格限制对其写操作,即便是管理员也不例外。

这就意味着,即便我们是Administrator,想要简单地植入一个不存在的dll到赛门铁克的进程里面,也是不现实的。

POC展示

为了测试这个漏洞,我们从dsparse.dll 里编译出一个32位的代理DLL(未签名的,代理DLL的意思是可以加载其它任意DLL)文件,dsparse.dll 实质上是位于SysWow64 目录,而不是 SysWow64\Wbem目录下面。编译出的dll,它功能是把下面的东西写到一个txt文件里面:

1.加载这个dll的进程名

2.执行这个dll的用户名

3.dll的文件名

然后我们把这个dll移植到 C:\Windows\SysWow64\Wbem目录,然后重启电脑。

a6d61a8f2098188bd8894b344b90dd3b.png

此时,我们可以加载进一个任意的代理DLL(代理DLL可以加载其它任意DLL)进来了,然后在一个服务进程里面执行我们的代码,这个服务进程是赛门铁克集团签名的,而且运行权限是NT AUTHORITY\SYSTEM,最终的结果是,绕过了赛门铁克的自我保护机制。

#根本原因分析

有很多模块里的很多文件导致了这个漏洞,在这里就只分析其中的一个,因为问题的根源往往都是雷同的。

当 “Symantec Endpoint Protection” 服务器进程(ccSvcHst.exe) 启动的时候,它就会尝试用 IWbemServices COM接口的一个函数去执行一个WMI查询。这个COM接口名为:

(IWbemServices::ExecNotificationQueryAsync):

5a3b294dc6d78a917c340b553c324793.png

用OleViewDotNet(https://github.com/tyranid/oleviewdotnet)快速查看一下,可以看到,这个COM接口(和它的函数)是被设计用来使用这个COM代理DLL中的库“C:\Windows\SysWow64\wbem\fastprox.dll” (在我们的例子里,它是一个WOW64进程)

b680cbb928afd701524a6244679f2be0.png

08f24f9de93902623518df024e6e322e.png

当fastprox.dll库里的ExecNotificationQueryAsync函数被调用之后,DsCrackSpnW 函数也会随之被调用。

424362137140196a86fed3bafab9e1e3.png

我们可以看到,这个函数正是可以从dsparse.dll导入的,这会导致赛门铁克的那个服务进程尝试加载这个dll。

198f90475965623cdec94b53d9ca27b6.png

关于这个漏洞,有两个根本原因

1.没有针对二进制文件检查其数字签名。这个程序没有验证加载的DLL是否已经签名(这个功能可以用 WinVerifyTrust函数实现)。因为,它可以加载任意的未签名的DLL。

2.fastprox.dll 库尝试从它当前的运行目录加载dsparse.dll文件,这就是C:\Windows\SysWow64\Wbem目录,而实质上文件就是存在SysWow64 目录。

#潜在的恶意使用和影响

下面我们展示三个攻击者可能滥用的用途

防御规避,冒用签名执行,白名单绕过

这个漏洞给攻击者一个别样的能力,允许在赛门铁克的签名进程上下文里加载和执行恶意payloa。这个攻击能力可能会被攻击者用在各种目的的行动中,例如防御规避。举个例子,应用白名单绕过。这反病毒程序可能并不能检测到攻击者的二进制代码,因为这些程序已经在对它不进行任何验证就加载进来了。

(后门)持久化机制

这个漏洞给攻击者新的能力,允许他们以一种持久化的方式加载和执行恶意payload。每一次这个服务启动时就被加载进来。这就意味着当攻击者丢一个恶意dll进来,这些服务就会在每次启动时将它们加载进来。

提权

这些服务给攻击者一个提权的机会,可至Windows系统最高权限NT AUTHORITY\SYSTEM.

#影响版本:

赛门铁克(Symantec Endpoint Protection)14.2 RU2 之前的所有版本。

原文:https://safebreach.com/Post/Symantec-Endpoint-Protection-Self-Defense-Bypass-and-Potential-Usages-CVE-2019-12758


HackerHub发布 | 转载请注明出处

2dd7c895f4244c2c4cba822fd4e369ce.png

.> 密码重用就是一个定时炸弹

.> Apache Solr 8.2.0 - 远程命令执行

.> 美国军政敏感信息泄露,高达179G

我在看,你呢?ceeaa4d2e6628ee4c2a45ab724d28611.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值