攻击者对安全体系的预测、绕过、干扰与我们的应对

时间: 2017年5月24日 作者:肖新光 来源:安天

总书记在4•19讲话中曾指出“网络安全是动态的、不是静态的”,在一个动态的博弈体系中,并不是简单地依靠防御者的安全想象,而是基于双方在持续的高度对抗和变化中所能产生的能力。在此背景下,就意味着攻击者会有更多的对防御方能力的预测、绕过和干扰手段,而我们也需要采用一系列的方式进行对抗。

一、 背景与问题

首先,我们来回顾一下传统的威胁对抗以及新出现的一些在威胁对抗中的场景。

1.1 传统的对抗——载荷检测对抗

从整体上来看,载荷检测应该在安全检测防御中居于核心位置,因为无论是怎样的安全威胁,最终都要转化为目标侧的实际动作,而这是要依靠相应的代码来完成的。对于动作代码、恶意代码或者第三方工具的检测,最终将构成弹头(Payload,载荷)检测模块。传统的载荷检测对抗是依靠检测引擎进行的,检测引擎是依靠归一化的方式设计的,而传统的针对载荷检测的对抗主要是试图不被检测分支中的配套规则命中,或者是穿透检测引擎的归一化方式,使得相应的载荷不能够匹配到有效的分支之上。其他方式还包括使传统的主动防御和检测机制失能的各种操作,比如,大量的KillAV(反制杀毒)样本。

1.2 传统的对抗——主机系统场景

传统对抗的第二个思路是使整个载荷无法被安全产品的IO能力获取,既然无法被获取,也就无所谓能否进入到相应的格式先导和检测分支之中。在主机上,通常把这种技术称为Rootkit。

1.3 传统的对抗——网络侧逃逸

如今,很多人在讲AET(Advanced Evasion Technique,高级逃逸技术)。在网络侧的对抗中,除了针对网络侧检测引擎的检测规则和检测分支的归一化穿透以外,其他的加密、伪装、夹带、分片等手段使得整个检测机制无法获得完整的、直接的监测对象。

1.4 对能力点和能力闭环的攻击

过去,反复被攻击者,包括地下黑产,甚至黑产教程所教唆的相应行为,基本上是围绕着“IO(检测对象的获取)→检测(检测引擎的匹配和识别)→处置(处置动作)”展开的,试图使其中的某一个环节失能、失效,或者切断这样一个小的部署在用户侧的能力闭环。过去,传统的攻击点更多的是围绕着免杀、隐蔽、逃逸和直接对抗展开的,但今天,整个攻击方在“大玩家入场”后,特别是在国家行为体、政经集团和高能力的黑产犯罪团伙介入之后,实际上具备了无与伦比的建设自身攻击基础设施和承担攻击成本的能力。此时,整体上可攻击和可对抗的环节,就不止于用户侧的能力环节,而包括“从安全厂商的支撑能力,到用户的能力下行,再到用户侧的感知数据上行”的大闭环。在针对厂商的攻击方面,可以看到已经有大量的对威胁情报的扰动,包括类似Ququ(毒曲)2.0直接向卡巴斯基进行相应攻击渗透的事件;在整个安全厂商和用户侧的能力互动中,还可以看到NSA的CamberDADA计划以及其他的一些相应事件。

1.5 攻击装备针对主动防御、物理隔离的穿透

在这种可以承担高成本的攻防对抗中,攻击方如何理解、预测和突破防御方的能力?在针对“方程式”组织的第四篇分析报告 中,安天绘制了“方程式组织主机作业模块积木图”,实际上是把“方程式”组织的主机作业模块拼成了一个积木图:

图 1 “方程式”组织主机作业模块积木图

从中可看到“方程式”组织对主机作业的理解是,对所有操作形成原子化模块,即要最大限度地把相同的功能分离到不同的DLL上(有可能在实际场景中是通过内存加载的),要最小化地触发其在主机侧的动作。目前来看,这组能力大概是在2005~2008年期间列入到NSA装备系列中的,实际上其是针对当时主防系统基于行为加权思路所建立的一种机制。完成这种“原子”操作的模块,是不足以达到行为加权的阈值以触发主防系统拦截的。

此外,相应模块并不是简单地通过远程溢出漏洞而进入主机的,还可以利用很多硬件化的特种硬件运载平台,对此,可以从斯诺登所曝光的NSA-ANT装备体系中找到验证。即从网络窃取作业和入侵作业的角度来看,控制者未必在远方,而有可能就在隔壁,采用无线的方式进行控制,这种方式是不具备溯源性的。而用来支撑远程控制体系,包括内网横向移动的是其整个的攻击平台。可见,这种对于主动防御的穿透实际上并不是简单的对规则层面的穿透,而是对主动防御原理层面的穿透,而在这方面,我们之前一直是思考不足的。

1.6 攻击者的感知覆盖和能力前出

今天,我们无比强调态势感知,但是需要看到另外一个问题——攻击方也同样在做防御方是否已经感知到了其相应能力的反感知设备。CamberDADA计划实际上是NSA始于2007年的一个计划,以卡巴斯基为主要目标,并在全球计划监控23家安全厂商(安天很不幸地,也很幸运地成为其中唯一的一家中国厂商)。如果把其为了建立相应能力而针对卡巴斯基所涉及到的一些对象做一个列表(如图2),其中,绿色的是俄罗斯的电信运营商;红色的是其最终所关注的攻击目标,比如,俄罗斯国防产品出口公司、信息与分析技术研究所;蓝色的是俄罗斯的一些基础软件产品厂商,也就是说该计划可以在其中进行供应链植入。

图 2 CamberDADA计划所涉及到的部分对象和攻击目标

在此过程中,该计划实际上并非通过入侵卡巴斯基而得知卡巴斯基是否已经感知其攻击的,而是发现了用户与安全厂商之间互动链的脆弱性其实是在运营商侧,其中大量的邮件通讯是明文的,因此NSA可以利用自己已经击穿了俄罗斯基础运营商体系,并且能在其上获取数据的基础,来获取用户发给卡巴斯基的告警邮件。这时,如果在邮件中看到己方样本,则说明己方行动已经暴露;如果发现有第三方样本,则可以分析相关样本中是否有可利用的后门或者漏洞,也可以把第三方样本经过修改后再投递给第四方从而制造相应的麻烦和障碍。同时,随着这种攻击者的能力前出,随着超级大国前出型的感知能力覆盖了全球的基础运营商体系,实际上构成了对其本身攻击侧能力的保护。

1.7 网络靶场——防御能力的搭建和模拟

过去,我们认为反病毒的根本软肋从来不是所谓的“它是一种基于非黑即白规则或者特征的检测技术”,它历来都是由黑白名单相结合,带有大量特征检测的技术体系,但为什么不能有效地应对全部的安全载荷风险,皆因为反病毒是一种易于获得的安全资源。一个有精力的攻击者几乎可以从互联网上公开获取到所有的反病毒产品,然后进行免杀测试,直到无法检测出之后再进行投放。但是在当前的攻防体系下,在攻击者能够承担更高攻击成本的条件下,这种安全产品被获取、搭建成模拟靶场来进行测试的问题不只限于AV产品,而是覆盖了所有的安全产品。在超级大国所引导的大量网络靶场中,结合着招投标公告和网络拓扑情报,几乎可以模拟大量的敌国或关联国家的关键基础信息网络和其他网络系统的防御体系,在这个体系搭建后,再进行相应的攻击。这一问题是值得高度关注的,而且解决这个问题的方法正是我们开始时所讲的——如何建立攻击者难以预测的某种安全能力。

1.8 威胁情报也是情报威胁

如今,很多人都在讲安全情报,在《2016年网络安全威胁的回顾与展望》 中,安天曾写道“威胁情报不只是防御方资源,威胁情报也是情报威胁,是攻防双方的公共地带。同样的数据,对防御方来说是规则和线索,对攻击方来说则是攻击资源和痕迹”。比如,在Virus Total(VT)上运行着全球几乎所有具有恶意代码检测能力厂商的引擎,是最成功的安全能力共享平台和威胁情报体系之一,但是从某种意义上,其构成了同时影响所有主流厂商的干扰量的注入手段。

1.8.1 安天的机理型误报事故因何引发全球反病毒厂商的集体误报?

2016年4月,Locky勒索病毒爆发,为了检测该病毒,安天在AVL SDK反病毒引擎中添加了一个基于某算法的检测模型,大概在一周之后,我们发现该方法的测试不充分,具有严重的机理型问题。但后来在我们追溯整个事件时发现,从最开始我们的误报,到后来Nod32、Kaspersky、Microsoft、McAfee等十余家主流厂商对无害文件的报警,引发了一次比较严重的VT集体脚本误报事件。该事件实际上是因为主流安全厂商之间是本着检测结果互认规则而进行工作的,但是这也使得任何一个厂商的干扰量都可能会被传递到其他厂商。同时,VT恰恰提供了一个平台,使得当这种干扰量恶意注入时,有可能会在短时间内到达所有安全厂商。

另外一件很有意思的事情是,关于WannaCry的变种。实际上,如果大家再去看我们发布的关于WannaCry的系列报告会发现,WannaCry的变种传闻是来源于卡巴斯基的一次乌龙事件,但在这次乌龙事件之后,全球媒体迅速跟进,在VT上也发现提交了抹去“开关域名”和修改“开关域名”的相关样本,但从监测来看,相关样本的流传度似乎极低。此外,其中抹去“开关域名”的版本是基于一个勒索模块不能工作的原始版本修改而来的,那么这些样本究竟是真实存在于网络空间中传播的样本,还是为了变种而存在的样本?在这个问题上,我认为虽然猜测都没有实证,但值得怀疑。即依托相应的威胁情报平台有可能能够构造出一个事实上并不存在的网络引擎。

1.8.2 白名单的污染

之前,我们曾经提出一个观点——要以可靠的基础支撑能力来支撑威胁情报,这是因为哈希白名单是非常容易被污染的,如果没有基础的文件采集能力来进行相互的印证,这种干扰是很难排除的。比如,2004年,王小云教授宣布MD5算法被破解,在当时的情况下,很多安全人士认为,该方法是无法用于实际攻击的,因为其并不能把一个恶意文件的哈希构造成一个已知白名单文件的哈希,需要两个数据体同时变化才能生成同样的哈希。但在2016年,安天发现了一组白名单污染事件,因为MSI格式文件通常是大安装包,如果在其签名域中计算完整文件的哈希,可能会消耗较长的时间,因此在MSI文件中并非计算完整文件的哈希,而是计算部分哈希,这就使得MSI文件在进行了相应的数据填充、维护等操作之后,依然可以通过数字签名验证。但这事实上就给干扰白名单带来了一种手段,即当一个恶意文件和一个构造出的MSI文件被伪造成同一个签名时,这个所谓的正常的MSI文件可以被提交给具有验证能力的安全厂商,由于对其而言,这是一个具有可信厂商可通过签名的文件,就会很自然地把这个哈希指向白名单,而这就相当于构造了一次哈希污染。从中可以看到,在过去的小循环和威胁情报非共享的时代下,相应的事件不会带来如此大的影响,但是在当前具备了大量威胁情报平台的情况下,就具有了向厂商侧进行污染的安全手段。这说明在整个厂商侧与用户之间的大闭环以及安全厂商和安全团队所获取的安全资源方面,当前已经有大量的潜在的攻击方式。

二、 深度用户赋能

在这种复杂的基础条件下,在安全能力可以被高度预测的情况下,需要一系列方法来降低攻击者对客户侧所具备的实际安全防御能力的可预测性和改善相应的安全价值。

2.1 流量侧的全要素采集

态势感知与SIEM和SOC的区别是什么?SIEM和SOC是在传统的基础安全能力上建立起的日志聚合,而态势感知实际上是根据感知需求反向去思考端点侧和主机侧的要素采集需求,因此可以建立全要素采集的能力,比如,把五元组扩展到十三元组;不再区分有毒格式和无毒格式,而对所有格式建立起相应的解析。

2.2 传统的威胁检测引擎VS下一代威胁检测引擎

传统的检测引擎实际上是基于对象来生成相应的黑白判定,如果是黑的,则输出相应的名称;如果是白的,也给出相应的结果。但当前仅靠这种模式的问题在于,检测是有条件的,意味着对不报警的载体放行,但分析是无条件的,所以下一代的威胁检测引擎,实际上是将其作为分析器的成分增加,针对每一个对象都形成一个相应的向量空间。

2.3 端点侧的全要素采集和全向量分析

那么该检测引擎在实际场景下是如何工作的?当检测引擎针对对象拆解出数百个向量之后,一定是在这些向量的基础上做出相应的单体判定,也就是我们所说的静态向量转化为行为属性标签,这是下一代威胁检测引擎的一项工作。但是从整个防御体系来看,这是不够的,因为向量向行为标签转化是基于确定性的能力,这对于攻击者而言也是一样的。实际上其不可预测性在于,每一个文件所生成的对象向量不都具备标签转化价值,一些向量可以是无意义的,但是其本身可以构成主机所有对象的一个向量集合,在与主机场景向量叠加之后,汇入到一个整体的向量大数据中,从而形成整个系统的向量。而攻击者在实际的攻击预测中,最具备可模拟性的恰恰是安全产品本身的能力,而最不具备可模拟性的恰恰是用户的使用群体、使用习惯和使用状态。所以,在这种数据所形成的画像之后,即使攻击者搭建了一个模拟环境,也不会生成类似或者高度一致的基础数据。由于场景的差异化和大量向量的无意义化所最终形成的相应数据挖掘价值才是整个防御模型个性化的关键。

2.4 建立向量级别的规则

可以看到,在安全厂商本身可以把其中的一部分能力确定性地从向量转化为威胁标签之后,下一代反病毒引擎或者产品的关键是把其所能形成的向量能力全部开放给用户,用户可以在任意一个向量分支节点、向量的组合以及组合之间的逻辑关系上来定制相应的规则,这些规则可以生成结果,也可以生成相应的知识标签,最后达成基于向量分析和标签聚合的检测能力。由于这种模型是在用户场景下形成的,因此大量的规则是依靠客户自身的安全经验所维护的,基于高度的客户赋能,就形成了攻击者难以预测的安全能力。

三、 私有化的模型与客户场景的结合

3.1 “人工智能+专家经验”——实现私有化的安全服务

虽然基于下一代检测引擎的客户赋能构成一个基础,但是在实际的实体化模型中,如何与客户场景结合?当然,在其中带有大量的算法和其他的因素,但其依然是基于传统的信誉分析和其他算法生成的,其中构成了一个初始解析的向量空间,然后进行人工智能的向量标签筛选,形成私有化规则服务,最后形成客户侧私有的安全能力和事件匹配结果。

3.2 信誉与场景结合的威胁发现

可以以主机侧场景举一个比较容易理解的例子,假定我们采用了一个哈希的白名单机制,就意味着任何一个由微软官方发布的文件都应该被视为可信对象,但文件信誉不能简单地由厂商侧白名单决定,也不能仅仅依靠签名进行判断,一定要有相应的场景规则,这种场景规则结合了终端分布(原则上来看,一个威胁不可能在短时间内感染到全部的节点)、行为一致性(即使在客户侧有专有的应用,其也应该产生相对一致的行为预期,假定某个应用产生了不一致的行为预期,就有可能是受到了攻击)与使用的群体相匹配(程序的行为画像是与主体的、使用者的行为画像相一致的)等要求。

3.3 机器学习、人工智能的正确应用

如今很多人都在讨论机器学习和人工智能,但是我们始终认为如果没有深刻的工程师所形成的基础的、前置型的积累和预制的知识,而仅是简单地在大数据或样本集合上叠加机器学习和人工智能算法,无论何种算法都不可能是有效的。同时,其最终的目标并不是产生有效的判定率或者是降低误报率,而是要和安全业务进行实际的融合。

四、 更庞大的支撑体系

4.1 安全厂商的结构——“冰山”还是“大黄鸭”

对于攻击者而言,更需要为其建立的一个安全挑战是,因为任意一个安全产品不管使用了多么复杂的算法,都不可能抵抗现在的逆向工程,卡巴斯基的引擎被公认是非常复杂的,但事实上在中国至少有100人可以讲清楚其数据结构。所以,安全厂商只有一个更为庞大的位于自有云端的支撑体系和团队,才能形成有效的支撑,这即是我们之前所讲的“安全厂商应该是一个冰山”,所有用户可见的安全能力,包括产品和服务,其实是水面上的部分,而水面下的部分是其所建立的对感知、捕获、威胁对象分析的相应积累。相反,不合理的安全厂商结构就像一个“大黄鸭”,虽然同样也可以浮在水面之上,但当一阵风吹来,有可能会被吹跑;当有利器击打时,有可能会漏气。因此,安全厂商需要一个强大的后端支撑体系。

4.2 支撑体系——安全厂商自身的复杂巨系统

在之前的报告中,我们已经多次讲过“安天从2002年开始建立恶意代码分析流水线”,但这种仅对载荷进行持续分析,每日可以消化百万量级新增文件的流水线体系已经不能有效覆盖如今的威胁,而如今所需要的后端体系实际上是,把前端感知、载荷捕获和分析,以及整个的数据产出和回馈结合在一起的体系。

4.3 “水面之上”和“水面之下”

如今,我们可以看到在水面之上的是相关的安全产品、其中的威胁检测引擎以及相关的功能,构成了从有效防护到资产监测,到情报服务和事件响应的能力,但是其后端要有全球化的网络支撑体系、基础的支撑环境、人机协作的对抗性平台,以及相关的威胁情报系统。

4.3 “水面之上”和“水面之下”

过去几年间,在硅谷的创业小清新中,出现了很多下一代反病毒的概念,比如,有人介绍“可以在40兆的情况下,不进行升级,也不借助云,就可以有效地、持续地对抗威胁”。实际上,它是基于传统AV的分类结果,对这种根据分类所形成的每一类基础数据,再做一个精细化的向量机或进行其他的算法。

Sophos对于这种厂商有一个很有意思的介绍,其大概的意思是“如果没有一个基础的、全量的威胁样本的持续分析和解析能力,如果没有相应的基础体系和资源,只凭借一些所谓的单点技术创新,怎么可能支撑起全面的威胁对抗”。可见,这种小清新式的下一代反病毒其实是高度可笑的,在这个领域中,永远没有“银弹”,也永远没有“一招鲜吃遍天”。

五、 差异化的威胁情报分享与私有化的威胁情报生产

如何解决威胁情报的公共性和威胁情报也是情报威胁的问题?其实,我们认为威胁情报的本质不是每人买一个账号进行公共查询,在该方式下,威胁情报很简单地就变成了攻防双方的公共资源地带。从厂商的威胁情报供给来看,应该采用一种差异化向客户输出的手段,而类似于沙箱或者蜜网的产品不应该被简单地看作是增强的判定器和分析工具,而是要将其转化为有效的能为客户产生私有化威胁情报的平台。

从整个威胁情报来看,实际上,其所具备的是向客户进行有效威胁聚类的能力,而这种聚类实际上是可以用来分析威胁的有效性的,比如,对银行而言,我们并非简单地提供给银行用户其所面临的恶意代码的“白防”,而是在基于安天后台对这些恶意代码进行深入分析之后,可以评价每一种恶意代码对其网银防护手段的相应威胁。

六、 战略的预判

安全厂商需要有能力完成战略的预判,对威胁的前置性预判可使防御者预判安全趋势和攻击者将要采取的行为,只有这样才能有效地决定布防点,这其中既有战略性的也有战术性的。

6.1 安天预言中的军火外溢和勒索蠕虫

如今很多人都在讲网络军火和勒索蠕虫。2015年5月27日,安天在一篇分析报告 中写道——

“我们需要提醒各方关注的是,鉴于网络攻击技术所存在的极低的复制成本的特点,当前已经存在严峻的网络军备扩散风险……但对于缺少足够的安全预算、难以承担更多安全成本的国家、行业和机构来说,会成为一场噩梦。”

“在攻防两端均拥有全球最顶级能力的超级大国,对于有效控制这种武器级攻击手段的扩散,应该负起更多的责任。”

2016年11月4日,在针对“方程式”组织的一篇分析报告 中,安天写道——

“我们看到了相关的Exploit储备和攻击思路流入到网络犯罪组织、甚至恐怖主义组织的可能性。鉴于网络攻击技术存在极低的复制成本的特点,当前已经存在严峻的网络军备扩散风险。因此,超级大国能否合理控制自身网络军备发展的速度和规模,并对因自身未有效履行责任而使网络领域发生可能的军备扩散,进行有效地干预和控制,是我们能达成一个更安全的网络世界的关键因素。”

2017年1月5日,安天在预发布版的网络威胁年报 中明确预言了——

“勒索模式带动的蠕虫的回潮不可避免。”

正是因为有这样的预见,我们才会因此做相应的储备,从而更好地应对威胁。

七、 结束语

如今,我们需要建立攻击者难以预测的在客户侧部署的安全能力,但是我们不认为这种安全能力是用户要求安全厂商定制出来的,而必须是基于标准化的安全产品完成的,反标准化实际上就是反生产力。那么如何使标准化的安全产品产生攻击者难以预测的安全能力?这就要依靠:

厂商本身具备深度的能力,并且能够实现客户赋能;

厂商本身具有庞大的后端支撑体系来增加攻击者对该体系进行逆向工程的难度;

需要在客户侧通过私有化的部署建立客户侧私有化的经验和数据;

需要把其所拥有的威胁情报差异化地分享给用户,并且使自身的产品能力在用户侧具有威胁情报的二次生产价值。

2016年,安天翻译了一篇非常重要的文献——《网络安全滑动标尺模型》。实际上,在从体系架构到被动防御,到主动防御,再到情报获取的阶段中,可以看到:架构安全解决安全本身的纵深性问题,被动防御使得其中的安全环节具有不可绕过性,主动防御形成了安全防御的能力弹性,主动防御与威胁情报的结合以及客户赋能达成相应的不可预见性。

最后,感谢中心多年以来对安天的指导和支持,我把这篇非常仓促的报告献给应急中心和安天在WannaCry蠕虫响应中72小时连续作战的战友们!我相信,无信念,则无以为坚持;无预见,则无以知方向;无能力,则无以撑格局;无苦行,则无以成梦想。谢谢!