Windows UAC永远不会停止惊奇,或者如何检测内部人员

图片

大家好! 我敢肯定,您已经听说过Windows UAC技术的缺点,但是相对较新的时间,却出现了一个奇怪的漏洞的详细信息,该漏洞的利用允许未授权的用户最大化特权。 在Jet CSIRT中,我们没有不理this这个案例,因为对于任何IS监视和响应团队而言,特权升级类漏洞都是特别令人关注的。 下切-对漏洞的描述,检测和保护方法。

漏洞详情


零日计划团队的研究员Eduardo Braun Prado在Windows证书对话框组件中发现了一个本地权限提升漏洞,该漏洞是由对用户权限的不正确处理导致的。 该漏洞允许将用户特权提升到最大可能的SYSTEM,并绕过Windows的所有保护机制。 当使用Windows UAC机制,用户通过代表管理员打开文件启动对话框与Secure Desktop组件进行交互时,会发生这种情况。

图片

该漏洞的本质是什么? 可执行文件证书包含Microsoft特定对象标识符(OID)格式的可选数字字段“策略标识符”。

图片

Wintrust.h标头文件将此字段定义为SPC_SP_AGENCY_INFO_OBJID。 尽管其目的记录不充分,但是很可能在打开带有证书详细信息的窗口时对其进行分析。 当此字段以正确的格式显示时,“发行者”字段将显示为超链接,其值取自SpcSpAgencyInfo属性。

图片

当单击带有“发出者”字段的链接时,Internet Explorer会打开并具有SYSTEM权限。 它的父进程将是accept.exe进程。 它还以最大特权运行,并且在其上下文中启动UAC对话框。 因此,进一步可以从具有继承的SYSTEM权限的浏览器菜单中运行任意文件(cmd.exe,powershell.exe)。

图片

作为演示漏洞利用的PoC(下面提供视频),研究人员建议使用HTML帮助ActiveX Control实用工具,该工具的证书具有上述功能。

同时,可以用这种方式对任何可执行文件进行签名,例如,使用powershell cmdlet Set-AuthenticodeSignature。 首先,您需要使用Windows SDK中的makecert实用工具创建自签名的根证书颁发机构证书和最终证书。 这里给出了说明

该漏洞已收到标识符CVE-2019-1388和CVSS 7.8。 从Windows 7到Windows Server 2019的所有操作系统版本均受此影响。安装补丁后,证书详细信息中的“颁发者”字段将不再显示为超链接。

由于自动化的困难,不太可能大规模利用此漏洞。 实际上,要实施基于此的攻击,用户将需要执行许多操作-从打开带有可执行文件证书的窗口到通过Internet Explorer界面启动命令行。 因此,最可能的攻击情形可能与内部入侵者的行为有关。


如何检测


为了检测Windows x64平台上漏洞的利用,我们在SIEM系统的SIEM系统中的SIEM系统中使用关联规则来监视事件链(在被监视的节点上,您必须首先使用适当的组策略启用对进程启动的审核,或者使用Sysinternals的Sysmon实用工具):

  1. 使用SYSTEM特权检测constent.exe进程的开始(事件代码4688 )。
  2. 检测到具有SYSTEM权限的C:\ Program Files \ iexplore.exe进程的开始,其中accept.exe充当父进程。
  3. 使用SYSTEM特权检测进程C:\ Program Files(x86)\ iexplore.exe的开始,其中C:\ Program Files \ iexplore.exe充当父进程。

    图片
  4. 使用SYSTEM特权检测启动外壳程序(cmd.exe,powershell.exe),其中C:\ Program Files(x86)\ iexplore.exe充当父进程。

    图片
  5. 权利要求3中的进程ID C:\ Program Files(x86)\ iexplore.exe与上一段中作为父进程的ID C:\ Program Files(x86)\ iexplore.exe相同。

让我们在FortiSIEM方面给出一个描述的相关规则的例子。

使用的术语



详细介绍launch.exe同意条件



详细IEx64启动条件



详细的IEx86启动条件



详细启动条件cmd.exe,powershell.exe



FortiSIEM相关规则源代码
<rules><DataRequest advanced="true" custId="1" type="Rule"> <Name>UAC Privilege Escalation through Secure Desktop</Name> <Description>   UAC Secure Desktop CVE-2019-1388</Description> <Remediation/> <CustomerScope groupByEachCustomer="true"> <Include>1</Include> <Exclude/> </CustomerScope> <PatternClause window="300"> <SubPattern id="148021654" name="Consent_Execution"> <SingleEvtConstr>eventType = "Win-Security-4688" AND procName CONTAIN "consent.exe" AND user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>user,procName</GroupByAttr> </SubPattern> <Operator rank="0" type="FOLLOWED_BY"/> <SubPattern id="148021655" name="IE_x64_Execution"> <SingleEvtConstr>eventType = "Win-Security-4688" AND procName REGEXP (".*Files\\\\Internet.*\\\\iexplore\\.exe$") AND parentProcName CONTAIN "consent.exe" OR user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>procId,user,parentProcName,procName</GroupByAttr> </SubPattern> <Operator rank="0" type="FOLLOWED_BY"/> <SubPattern id="148021664" name="IE_x86_Execution"> <SingleEvtConstr>eventId = 4688 AND procName REGEXP (".*\\(x86\\)\\\\.*\\\\iexplore\\.exe$") AND parentProcName REGEXP (".*Files\\\\Internet.*\\\\iexplore\\.exe$") AND user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>procName,parentProcName,procId,user</GroupByAttr> </SubPattern> <Operator rank="0" type="FOLLOWED_BY"/> <SubPattern id="148021656" name="Cmd_Execution"> <SingleEvtConstr>eventType = "Win-Security-4688" AND ( procName CONTAIN "cmd.exe" OR procName CONTAIN "powershell.exe" ) AND parentProcName REGEXP (".*\\(x86\\)\\\\.*\\\\iexplore\\.exe$") AND user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>user,parentProcName,procName,parentProcId</GroupByAttr> </SubPattern> <GlobalConstr>IE_x86_Execution.procId = Cmd_Execution.parentProcId</GlobalConstr> </PatternClause> <IncidentDef eventType="UAC_Privilege_Escalation_through_Secure_Desktop" eventTypeGroup="PH_SYS_EVENT_PH_RULE_SEC" fireFreq="900" severity="7"> <ArgList>procName=Cmd_Execution.procName,parentProcName=Cmd_Execution.parentProcName,user=Cmd_Execution.user</ArgList> </IncidentDef> <DynWatchListDef/> <userRoles> <roles custId="0"></roles> </userRoles> <TriggerEventDisplay> <AttrList>phRecvTime,eventType,reptDevName,reptDevIpAddr,destIpAddr,destName,user,parentProcId,parentProcName,procId,procName,rawEventMsg</AttrList> </TriggerEventDisplay> </DataRequest> </rules> 


研究人员Florian Roth 发布了 Sigma规则,以检测利用此漏洞的尝试。 但是,由于语言限制,使用该规则,可能仅检测到具有SYSTEM权限和父parent.exe进程的Internet Explorer启动事件,而无需随后检测到外壳程序启动。 使用Sigma工具无法在上述(1-5)的条件下跟踪必要事件的链,这就是为什么我们被迫制定自己的规则。

如何保护自己


1.为相应的操作系统版本安装日期为11月12日的Microsoft补丁。

2.如果无法安装修补程序来消除此漏洞,则应使用:

  • AppLocker规则禁止为Users组中包含的帐户启动cmd.exe和powershell.exe Shell(必须考虑绕过LOLBINS中列出的AppLocker的实用程序和技术);
  • 使用EPP,EDR类的系统的基于主机的IPS(您需要配置访问规则,以禁止进程iexplore.exe访问cmd.exe,powershell.exe)。

Source: https://habr.com/ru/post/zh-CN478616/


All Articles