【文稿】APT对传统反病毒技术的威胁和我们的应对尝试
时间 : 2012年10月20日 来源: 6163银河.net163.am
编者按:本文稿是根据作者2012年10月20日在CNCC2012中国计算机大会信息安全专题论坛速记稿,整理增删而成。
1、 引言
APT(Advanced Persistent Threat,高级持续性威胁)是我们目前非常感兴趣的方面,我们也曾多次在公开场合谈论APT,而与上一次在NINIS(国家网络信息安全技术研究所)的安全威胁论坛中总结我们的一些不足相比,我们已取得了更多实际的工作进展。今天我想站在传统的反病毒从业者的角度(而不只是站在一个分析者的角度)再进行一次自我的分析和反思。
无论是谈APT还是谈任何安全威胁,以至于谈到任何安全问题或安全事件,都脱离不开几个基本的要素。像一切其他事物一样,安全事件的要素必然也包括:时间、地点、“人物”等等,这就引出了我们今天要讨论的话题:试想在APT时代的时间、地点和人物观,与在传统的病毒时代的时间、地点和人物观之间有什么不同。
1.1 对比之“时间”
首先让我们从时间的角度回顾一下更为传统的恶意代码。在感染式病毒、DOS病毒基于磁盘传播的时代,最早的恶意代码是由于人与人之间或设备与设备之间简单的介质交换产生的,这是一个极度的慢速扩散的结果。而“时间”这个概念真正被提升到反病毒工作者的意识日程上,则是在蠕虫时代到来之后。杜跃进博士曾把恶意代码断代划分为蠕虫时代、木马时代和窃密时代,我的理解这是一个从“以手段为主导”向“以对象目标为主导”的演进。尽管上世纪90年代末,类似Melissa、Happy99等蠕虫已经出现,但所谓蠕虫时代多数人基本认为是从2000年开始的。
病毒名称 |
释放时间 |
发现时间 |
CodeRedII |
2001年8月3日 |
2001年8月3日 |
冲击波(Blaster) |
2003年8月11日 |
2003年8月12日 |
震荡波(Sasser) |
2004年4月30日 |
2004年5月1日 |
Zotob |
2005年8月13日 |
2005年8月16日 |
Nyxem |
2006年1月20 |
2006年2月3日 |
表1-1蠕虫时代
此处我们列举了从2001年到2006年5个比较典型的恶意代码,包括像CodeRedII、冲击波、震荡波等这些具有快速传播能力且赫赫有名的恶意代码,我们可以得出一个结论,无论当时这些恶意代码把反病毒厂商和安全响应组织打得多么措手不及,但不可否认的是这些安全团队对它的感知时间都没有超过24小时。从另一种意义上来讲,当代反病毒厂商的应急捕获体系是经过蠕虫时代的快速网络传播感染的历练所成熟起来的,过去的反病毒对抗是一种捕获-辨识对抗到查杀对抗的过程,在这个过程中,更多是对我们捕获链条和规划反噬的穿透,并形成了这样一种时间链条。
病毒名称 |
释放时间 |
发现时间 |
Stuxnet |
2009年6月 |
2010年7月 |
Duqu |
2007年或2008年? |
2011年8月 |
Flame |
2007年12月之前? |
2012年5月 |
表1-2APT时代
与之对比,我们再看一看APT时代的时间链条。在APT时代有三个非常典型的恶意代码:Stuxnet、Duqu和Flame。我们将释放推测时间与发现时间进行一下对比:
Stuxnet是在2010年7月被发现的,根据其对应的时间戳信息,我们认为它的释放时间是在2009年6月;
Duqu是在2011年8月被发现的,目前认为它的释放时间是在2007年底或在2008年初;
Flame则更晚,它在2012年5月才被发现。但从其一些早期被发现的驱动以及陆续注册的域名来看,其体系在2007年底就已经开始了早期的活动。
从上面的时间对比中,我们可以看出令整个安全业界感到非常尴尬的一点,就是这些APT蠕虫至少存在了几乎一年之久才被业内广泛感知和进行相应处理。而更让安全业界感到尴尬的是,根据现在的时间链条推导,这些恶意代码的释放时间正好与发现时间的顺序相反。我们基本上认为,这次的整个APT事件就是以最终彻底破坏伊朗相关工业体系的Stuxnet为最终攻击结果,而以Flame和Duqu为前置的搜集前导。也就是说在Flame几乎长达5年的活跃时间内,整个安全业界没有任何感知,直到最后Stuxnet发动致命一击,安全业界才开始关注工控系统安全,关注APT攻击,并通过逐步的定向、发现、挖掘,在有用户提交样本的配合下,最终发现了最早的Flame。这种“释放时间->发现时间”关系的倒错,反映了整个APT时代时间观的变化,反病毒厂商已经由“24小时”敏锐感知能力退化到了以“月”甚至以“年”为单位的迟钝感知能力。
1.2 对比之“地点”
我们再来回顾一下传统的病毒时代的地点观的变化。图1-1是国外有关机构所发布的Slammer蠕虫发作30分钟后的感染范围示意图(注:Slammer蠕虫于2003年1月25日首次出现,它是一种SQL蠕虫,长度为384字节,通过UDP广播方式快速传播,在很短时间内感染全球大量SQL Server服务器。)从整个示意图中我们可以看出,Slammer蠕虫密度比较大的区域主要集中在美国全境、西欧全境和中国的东南沿海,这说明恶意代码在没有定向性的情况下,它的传播分布密度是与信息化程度成正比的,即信息化技术程度越高的国家和地区,其恶意代码的感染范围越大;而信息化技术程度非常弱或者是非常地广人稀的国家和地区,如图中非洲、俄罗斯靠东及南美的部分区域,其恶意代码的感染范围就较小,甚至没有被感染。这就是在无定向性时代的蠕虫传播情况。
图1-1 Slammer发作30分钟感染范围示意图
图1-2是另一个厂商发布的Stuxnet早期感染范围示意图,从图中我们可以看出全球基本上是一片绿色,而Stuxnet整个的感染范围积聚于中东地带,并可能与某种地缘性影响相关,顺带感染了沿着印度洋到太平洋、赤道的这条线乃至整个东南亚群岛一线。这就说明在APT时代整个恶意代码的分布不再与信息化程度相关,而是与它初始投放的目标息息相关。
图1-2 Stuxnet早期感染范围示意图
当然在蠕虫时代也存在一些定向性的案例,比如我们之前提到的CodeRed就是一个具有定向性的案例。比如为什么在CodeRedI出现时国内并没有很关注,而在CodeRedII出现时才开始关注呢?据推测CodeRed可能是由中国的网络攻击者所写的病毒,当时采取的策略是如果发现是中文系统则停止传播,发现是英文系统则继续传播,因此在当时的情况下,CodeRed基本是在境外活跃,就没有引起国内的重视。而据传这个恶意代码后来被一个荷兰的黑客组织进行了修改,使其在英文系统上以300个线程传播,而到中文系统上,传播的线程数则增加一倍,导致其在国内的传播范围和密度更大。虽然它同样实现了一定意义上的定向性,但是我们可以看到这种定向能力是非常粗粒度的,仅是简单的以语言集作为区限的划分,而不是现在APT时代中,以一种非常具体的目标状态来判断,使用多标志组合和远程验证服务来综合判定是否发作的情况。所以说从地点的角度,蠕虫时代和APT时代具有非常明显的非定向性与定向性的差异。
1.3 对比之“人物”
我们再来看一下相应的人物要素。在病毒与传统攻击时代,类似于CIH作者(陈盈豪,中国台湾)、Melissa作者(Smith,美国)、震荡波作者(Sven Jaschan,德国)等一些病毒的作者和攻击的始作俑者,无一例外的都有一个共同的特点,就是他们都被司法打击、被追责、被发现和被定位。虽然有大量经典的危害甚多的恶意代码,但一般来说只要整个社会的应急响应能力和社会的司法机构愿意承受其代价,只要国际应急协同和司法互动机制正常运转,基本上都可以将病毒作者和病毒的释放者定位并绳之以法。
而在APT时代,到目前为止在我们已知的具有鲜明的国家和政治集团色彩的APT攻击中,究竟有哪一个被惩罚了呢,谁是元凶,我们可能定位到具体的人吗?可能定位到具体的组织吗?以Stuxnet事件为例,从媒体报道和公众猜测上来看,最开始美国媒体说,这可能是以色列干的,以色列媒体说,这可能是美国干的,后来又有所谓“深喉”出来讲这件事是美以双方共同做的(根据一些媒体推测,“泄密”可能是由于奥巴马方面出于选情考虑,在大选前树立强势风格的需要)。但这个事情的受害者能去通缉两个对等的或者敌对的国家吗,这是不可能的。所以说整个APT时代的时间、地点和人物观,与传统的病毒时代相比都发生了巨大的变化,引发这种巨大变化的根本背景是“大玩家”的入场,而所谓的“大玩家”就是国家和政治利益集团。
2 、回看传统反病毒
前面介绍了APT时代相对于传统病毒时代的要素变化,现在我们再回看一下传统反病毒的体制。
2.1 传统反病毒的基础架构
图2-1是6163银河.net163.am自己的ArrectNET监控捕获处理体制,这是比较传统的体系架构,在恶意代码整个的分析流水线中最重要的两个要素:一个是前端的捕获,一个是后端的分析,而在这里APT很重要的一点影响就是“捕获”。在过去,捕获有很多立体的手段,有流量捕获、诱饵信箱、现场采集、也有国际和国内的兄弟厂商之间的样本交换、还有用户主动上报。我们认为每一种手段都有其缺点和优点,包括最为主动的流量采集、蜜罐手段,虽然能够在第一时间获得样本,解决样本的实时性问题,但是其数量小、代价大,在云时代到来后,几乎已经没有人否认终端自动上报才是最优手段。
我们当时也对各种样本上报通道做了一个性质上的拆解:
从来源类型上,我们把所有的样本获取通道分成可控通道与不可控通道,所谓的可控通道,是指AV厂商本身对整个通道有完全的策略管理和完整的数据回收能力,即厂商可以随时接入和随时获取,而其他的方式都属于不可控通道。
从样本质量上,我们把样本拆解为多个维度,包括实时性(即在第一时间获取样本)、全面性(即完整获取样本所有模块)、完整性(即样本文件是否完好,没有破损)等等。
基于这种拆解我们定义了最开始的捕获体系图,但在APT时代,由于我们对跨年度的恶意代码都无法及时感知,其实就是传统反病毒体系的获取实时性首先遭到了挑战。
图2-1传统反病毒的基础架构
2.2 传统反病毒的工作机理
从整个反病毒核心工作机理的角度,实际上我们可以把反病毒体系概括为一个工作流程,将整个流程的模型抽象拆解为以格式识别为先导,由匹配器、预处理器、鉴定器和处置器构成的若干分支的结合。
图2-2传统反病毒机理的模型抽象
我们可以将传统反病毒的模型维护分成三部分,包括归一化体系的维护,精确检测的维护,以及未知检测的维护。
图2-3传统反病毒的模型维护
归一化体系的维护是指当前的反病毒引擎基本上是以文件格式为先导,由若干个归一化分支来构成。相当于在过去病毒与恶意代码辨识对抗阶段时的“穿透”,当时我们认为它有两种穿透方式:第一种叫规则穿透,即恶意代码不被既有规则所命中;第二种叫归一化穿透,即恶意代码无法进入当前的各个检测分支,或者使检测分支失效。比如说在PDF格式溢出出现之前,反病毒软件可能不识别PDF格式,或者作为无毒格式跳过,PDF格式溢出的出现就不是简单的检测规则穿透,而是归一化穿透,因为需要添加新的格式解析方法和归一化分支。所以传统反病毒的模型维护一定先有一个归一化维护的部分,而这部分就是一个通过新的格式特征建立新归一化分支的过程。
第二部分就是精确规则检测部分,即其是一对一规则提取或者有一定涵盖性规则提取的样本,是针对恶意代码个体或者少量聚集群体的样本集合的规则检测。
在精确规则检测之上还有一个层次,就是我们原有的未知检测。在此我要纠正公众对反病毒软件的两种误解:第一种误解是很多人认为反病毒就是一对一的检测,是没有未知检测方法的,对现有反病毒体系来说未知病毒是不可检测的,AV厂商没有做未知检测的工作,很多粗糙的学术论文都用这种观点攻击AVER业界,以证明自己成果的价值。而第二种误解是有人认为反病毒就应该什么都能检测出来,应该是万能的,检测不出来就是无能的,或者认为反病毒是存在某些终极检测方法的,这也是一类误解。
实际上AVER在未知检测上的工作包含了三部分:第一部分是基于相近基因片段的关联性聚合形成家族特征;第二部分是基于共有的行为聚合形成行为特征。这两部分分别形成了基因关联型家族和行为关联型家族的通用检测方式。而第三部分是通过增减修改启发式的判定点、对其的配置调整和模型调整,来改善启发式检测的能力。这些工作都是AV厂商很早以来就在做的工作,AVER的先行者们,在DOS病毒时代已经打下了这些工作的基础,这些工作不应被神化、也不应被视而不见。我们只是说,这个粒度的工作应对APT必然是不足的。
2.3 传统反病毒的真正软肋
虽然AVER做了大量的工作,但目前的这种未知检测工作仍是不足以应对APT攻击。传统反病毒引擎的根本软肋在于它是一种易于获得的安全资源,比如我们访问download.com站点,我们通过antivirus关键词检索到562个结果,都是各种主流的反病毒软件和他们一些不同版本的下载。反病毒的软肋就在于此,它本来就是一个服务于大众的产品,因此它必然是一种很容易获得的资源,它必然无法对抗持续的修改。而基于这个软肋,当前整个攻方的工作效率已经比逐个安装测试提升了一个高度,多引擎扫描已经成为非常成熟的工程化方法,不仅有像VirusTotal、VirSCAN这种在线服务站点,国外还有多个厂商推出大的黑匣子服务器,就是在这样的一个背景下来作为APT与传统反病毒引擎对抗的前导。同时由于APT有长期的外调和踩点过程,它并不需要对抗所有的反病毒软件,它只需要对抗指定场景中所安装的反病毒软件即可。
总结一下:正是因为反病毒软件易于获得,所以其易于被前导测试,导致其成为了反病毒的根本软肋,也就是反病毒不可能对抗APT的根本原因。
进步与慌乱
在这些年里,反病毒业界也在一直前进,基本可以概括为以下几点:
1. 云查杀
回顾云查杀的发展,它并不是AVER非常主动地把云的方法应用于反病毒体制,而由于其最先遇到了规则(包括黑名单和白名单)膨胀考验,这种规则膨胀是客户端资源难以承载的,同时在恶意代码本身的快速改造变形能力已经非常强,使原有通过高频度的发放病毒库,然后本地再初始化的模式已经变得不够及时的情况下,产生了基于反病毒响应流程的时效性和客户体验的改进需求。我们从最终结果来看,云查杀的前导是由于把海量的数据置于云端,使其在网络带宽获得保证的情况下节省了终端宝贵的内存和计算资源,同时由于云端的规则是数据库级别的,解决了实时响应和误报的快速修补问题。而后才逐渐把云查杀的种种实践基础逐渐发展成为信誉云或鉴定云。
2. 程序信誉
这个概念与传统的厂商数字签名机制相关,又融合进了反病毒的行为受信等级制,信任有数字签名的程序,这是安全产业职责分工的结果,同时安全厂商也有其本身建设的一套体系。比如一些“寄生型”AV厂商基本是靠“后台对照扫描+前台全HASH”检测实现的,这种程序的信誉观就是一段时间内(比如三个月)没有任何引擎报警的文件进准白名单,准白名单更长时间(比如一年)再扫一遍,发现是黑的再追加回黑名单中。但如果有用户在论坛举报其误报、漏报,则进入人工分析快速应对,这是基于互联网的交互响应,以用户的反馈响应来进行解决的流程,但也是程序信誉的一种建立方法。
3. URL
过去我们是以单一文件为工作对象,加入URL后就引入两个概念:第一个就是源,即这个程序是从哪里来的,它的源是不是可信的;第二个是复合验证,即把源的安全性验证和文件的安全性验证做了一个复合,形成一个闭环,通过文件判定URL的安全性,通过URL的安全级别推广到目录的安全级别,到子站的安全级别,再到主域名的安全级别。
4. 主动防御
其采用了一些规则外手段,比如对内存喷射的检测和保护、比如对所有来源为互联网的PE执行都予以强提示或者拦截等等。
上面这些手段是近5~7年来反病毒技术并没有停滞的象征,从传统反病毒的角度来讲它们是在进步的,但是回头来看它相对于APT是非常慌乱的。
3、 APT给AVER的困扰点
基于之前讲的这些,我们再来看看APT给反病毒工作者们的几个困扰点。
3.1 APT颠覆之模式
APT是一种模式颠覆,它颠覆不仅是反病毒的模式,而是整个信息安全的模式。比如说Stuxnet的程序数字签名是使用Realtek的,Duqu则使用的是C-Media的,都算是主流厂商。为什么过去的反病毒软件要信任具有数字签名的程序呢?这说明整个信息安全体系是存在分工的,对于黑名单的检测主要由反病毒厂商负责,对于白名单的信用主要由CA认证机构证书厂商负责,而开发者要对自己的证书签发环境的安全负责。
在过去一系列的APT和相关的攻击中,整个的信息安全的程序信誉体系链条开始崩塌:“RSA被入侵,用于生成电子令牌的随机数种子被窃取,导致需要召回4000万个电子令牌,而且此事件间接导致了美国几个相关军工和重要工业厂商被入侵;荷兰CA被入侵,最终倒闭。”电子认证机构自己尚且如此,更不要说证书用户签名环境的安全了,可以看出这是一个上游的崩溃。我们的困扰在于它不只颠覆了我们的价值规律和链条,而是颠覆了整个原有的信息安全的分工体系。
3.2 APT颠覆之捕获
之前我们讲到了传统反病毒的捕获方式,包含了多种工作,但是在APT时代这些捕获方式都几近失效。回顾之前的Stuxnet事件,最先在伊朗传播,伊朗没有一些反病毒厂商的用户,而恶意代码又是高度定向的,所以当它的投放位置在这些厂商可捕获地域之外,这些厂商将无法捕获。再比如说Flame是卡巴斯基最先关注和报导的,但它不是卡巴斯基主动发现的,而是由一个沙特的用户主动联系的卡巴斯基,这就又回到了原始的数据上报时代。从过去来看,厂商之间本来可能呈现某种对称性:第一,传统恶意代码传播并没有绝对的定向性,而是依靠一定的范围的覆盖,比如说,无论大厂商拥有多达几个亿的装机量,还是小厂商几十万的装机量,都可能将其捕获;第二,由于厂商之间的交换关系,弥补了厂商覆盖能力的不足。但在APT时代,前者被高度定向性干扰了,后者会不会受到国家背景因素的制约,我们还不得而知。
3.3 APT颠覆之隐私
但即使厂商的产品覆盖了遭遇APT攻击的用户,厂商就一定能感知到攻击么?因为这不是一个简单的问题,首先是感知器是否存在;其次是有了感知器厂商有没有权利获取。APT很多是以复合文档格式溢出为先导,无论是RSA SecurID被窃取,还是Google被入侵等事件,很多都是以复合文档格式解析0-Day漏洞的,是在反病毒本身的已知检测环境中检测不到的,即使反病毒产品或者感知器能部署在获取样本的位置,但因为文档类型的文件肯定是比较敏感的,因此很难获得用户许可,因为这将有可能成为一种泄密通道。
3.4 APT颠覆之代价
从APT时代开始,反病毒厂商的角色从初始的单点防御或快速查杀转化为要进行纵深分析。一般来看,APT在被分析时往往是已宣告得手之时,这时需要评估的是其实际造成的损失和其整个的工作记录。卡巴斯基曾说“Stuxnet样本共500K,我们用了几个月来分析,那我们是否要用更长的事件去分析20M的Flame文件呢?”
我们自己也有一个例子,Stuxnet据说可以通过U盘传播,我们也从代码里读到遍历文件、拷贝文件的部分,但为什么到环境中执行就无法传播,最后我们经过分析,证明了它是基于一个配置,其中与7个标志位有关,而在0xC8处的标志位默认是关闭的,也就是说它默认是不进行U盘传播的,只有把所有标志位全部适配的时候才能够进行传播,当时这个单点分析我们大概做了一周时间,那么整个大的模块体系要分析多久呢?这个代价我们是否能承受的起?这就是它的时间代价。
我再回顾总结了一下我们在这3个蠕虫时代所做的工作,其中包括基于综合分析,编写各种文献16篇,其中10篇已在网络/媒体上公开,另外还翻译各种文献7篇,我们累计人工分析样本文件近百个,提取网络检测规则多条;编写专杀工具一个;也制作了工控系统安全威胁实景模拟系统一套。
我们从之前Stuxnet 篇幅为14页的分析报告,到现在Flame百页级的分析报告,我们的分析投入已经不断增加;但当我们与国外厂商对比时,依然发现差距巨大。虽然大家在样本的获取点上基本差不多,但我们在后续的每一个分析阶段包括论述核心过程、最后揭示核心原理都比别人落后1个月到2个月的时间,这是一种硬能力的不匹配,一种资源组织能力的不匹配,一种信息的不对称。所以我们必须承认国内厂商与国外厂商存在这种真实的差距。
4 、应对与尝试
基于以上的背景来看,我们做了一些相应的应对和尝试。
4.1 捕获/分析能力前置化
关于APT我想我们需要重复强调一些观点。第一、不管是谁,在本身是隔离内网的情况下,任何厂商都无法完整的覆盖相应的需要保护的目标体系;第二、即使我们部署进去也不可能把大量的文件回传进行分析。所以在APT时代,我们从思想上突破就是捕获/分析能力前置化,即把厂商能力前置到用户端,通过前端搭建私有云和配套分析设备的思想,把厂商能力转化为用户能力,把这种用户能力变成销售给用户的产品。
4.2 判定展开
在这里整个引擎的设计细节将存在哪些变化呢?首先从两个鉴定的角度来看,传统的反病毒引擎的报警原则是针对一个检测对象,在诸个判断模块给出的多个结果中挑选出风险级最高的结果,与报警阈值比较,如果高于阈值就报警。但这个机制本身是很容易受到攻方的前期测试来对抗的。因此我们认为未来应对APT的反病毒引擎的产品形态的根本变化是谁能揭示更多的信息细节,谁就优胜。因此我们新的静态鉴定器实际上是基于一个从白名单方法到黑名单方法的信用鉴定过程,然后把几十个判定点的命中结果完全体现并揭示给用户。我们就是认为在APT时代反病毒很难靠自动化的机制保证重点用户的安全。
4.3 分析方法的动静态结合
在APT时代之前,动态检测已经不断被强化,但到APT时代之后,静态的作用会被重新提起来,因为只有在静态的条件下是无条件的,而APT的挑战,让重点用户能愿意接受过去不能承担的静态分析时间代价。在整个静态的环境下,我们强化了这样的响应过程,在APT的体制下,静态的手段是可以强化的。动态分析很重要的一点是更准确的解决了格式化溢出的问题。但国内用户有国内用户的特点,比如WPS、比如Foxit阅读器,这些也可能是溢出的对象,这个必须在设计中考虑进去,整个的动态分析环境要基于这样的场景去搭建,然后发现相应的格式溢出。从过去来看这些深度的动静态分析绝不在AV厂商交付给用户的范围内,是一个厂商后台环节。我们要把这两个环节封装成一个盒子,把我们的引擎变成一个具有分析能力的系统,销售给用户。
4.4 病毒档案的建立与教训
我们希望能够建立一个恶意代码档案(http://www.virusview.net),以给6163银河.net163.am引擎的用户提供更多的支持,目前我们已经上传了大概110万篇。在此处我要讲一个教训,那就是在动静态分析中产生的大量信息实际是干扰项,是由分析环境、加载机理等产生的,这些信息不能被有效的过滤,就很难对真正的个性信息予以关注。
5 、APT检测我们还有很多路要走
5.1 与场景的结合
从数据结果分析上来看,我们认为反病毒检测是分成多个层次的。比如一个PE文件在网上传输,它在邮件附件中和在HTTP上或在FTP上风险级是不同的,一般来看它有可能作为邮件附件的风险是最高的,或者邮件附件含在一个包裹里面的风险是最高的。传统的文件风险或者未知文件风险只与文件内容相关,有的考虑到了与主机的某些场景相关,但如何有效而深入的与网络的场景关联起来,这是后续要注意的。
5.2 依托海量数据分析自动分类
目前来看我们还是更多地应用一些统计和聚合的基本方法,依托半人工的方式,来提升相应的处理。
基因特征向量
离群点的分析和处理
噪声处理
图5-1 依托海量数据分析自动分类
5.3 数据结果分析呈现
实际上最后我们是通过整个鉴定链条,提供我们在整个鉴定链条中的每一个命中标志来为用户揭示完全的安全场景,然后提供一种综合的更细粒度的结果呈现。
图5-2 APT时代需要更精准分析结果
5.4 补充观点
这里我还要补充提出一些观点:
第一、 APT颠覆了全球主要国家阵营间艰难形成的应急协作体制。
在从过去互联网时代开始的20年时间里,从最开始各个国家独立的进行信息高速高路的赛跑,经过大融合、小碰撞、小摩擦,使全球逐渐的形成基本的应急响应链条。一般来看,很多大国的基础国际战略逻辑是基于假设敌构造,“伟大的国家必有巨大的假设敌”,这是一些国家发展包括国民心理的重要支撑点和动力源。目前全球大国间信任是基于统一反恐背景形成的,但本拉登的被击毙作为一个政治标志,将带来新的格局,会不会让东西方从原来的大合作中小对抗,变成大对抗中小合作的背景,所以说原有的应急体系就被颠覆掉了。
第二、 APT是AV厂商一个新的28定律分水岭。
28分水岭就是在反病毒业界中符合其他产业中的一个通用规律:20%的工作解决80%的问题。反病毒也是这样,只要做20%的工作能查80%的病毒。在所有的厂商在快速的发展的情况下,只要做一个自动化提取点、一个样本循环、一个对照扫描加上一个哈希提取,然后云查杀的模式,这就是20%的工作,以此解决大范围的事情,但一旦一个硬指标出现的时候,就会淘汰一些“硬能力不足”的厂商。因为当一个巨大的、必须付出的代价需要承担,有能力付出这个代价的就能生存下去,克服不了的就会被淘汰。过去也出现过28分水岭,比如宏病毒,它是中国民间和商业反病毒团队的分水岭,宏病毒易写、易改、难杀,从国内当时的情况来看,国内有很多的小的反病毒团队,而到了宏病毒时代,民间团队却全部被淘汰了,这是因为微软不愿意向中国厂商公开OLE结构,必须逆向解决,谁抗得住逆向分析的几个月,谁就能成功。当然在这个分水岭上我们就能看到一些非技术能力的差异。McAfee等厂商在很多时间之内就可以通过和微软联系获得OLE的文档,国内厂商却被微软拒绝了。因此到了APT时代之后,各厂商的技术能力能不能跟得上,挺得住,耗得起,这就成为了一个新的分水岭。
第三、 APT在原有的采集加自动化能力的比拼之外,增加了深度分析能力和耐心的比拼。
原来的AV链条单纯就是谁终端数多,谁更主动;谁后端分析能力更强、自动化分析规模更大,谁更主动,而现在又加上了深度分析能力和耐心的比拼。比如卡巴斯基和赛门铁克曾出现过沉默的45天。赛门铁克沉默的45天内彻底分析清楚了Stuxnet整个作用于WinCC和PLC的全过程,而卡巴斯基则在45天内分析清楚了Stuxnet和Duqu的基因关联模型。国际厂商在APT样本分析中做了巨大的投入,分析团队里不只投入分析人员,还投入了大量的系统架构人员和核心开发人员,而且在一段时间内为了攻克关键过程,可能偃旗息鼓一样没有任何消息放出,对于炒短线、很功利的国内安全行业氛围来看是不是熬得起?所以我说这不仅是技术能力的比拼,还增加了耐心的比拼。
第四、 APT的大众与小众,必然有产品模式的变化。
APT绝不是一个大众产品,甚至不是一个现金牛型的产品,普通网民并不会觉得对生活有什么影响,之前的反病毒产品会依然如旧,而APT是一个小众场景,对于小众场景的反APT产品应该怎么做,这将必然导致产品模式的变化。
第五、 APT对抗的本质依然是资源和代价对抗,我们已经输在起跑线上了……
为什么中国的厂商或产业已经输在起跑线上了?首先是先天不足,就是信息不对称,操作系统以别人的为主导、大的搜索引擎和数据聚合以别人的为主导、关键的硬件安全环节也以别人为主导、整个的基础的工业体系和信息化能力仍以别人为主导;其次是后天不足,中国实际上是独立安全厂商能力非常弱的国家,只有独立厂商才是基础安全研究的动力,国内在这方面相当不足,是缺少这种动力的,特别是在主战场上,目前是以互联网厂商为主导的,互联网模式下厂商的思维方式往往不看重传统安全团队的那种系统性、严谨性和耐心,而更看重敏锐、快捷、前台体验,这不是优劣对比,这是团队价值导向所决定的。人力、物力、财力、分析能力,以及所储备的大量的海量的样本与基因是反APT综合的代价对抗,但是我们已经输在了起跑线上。
5.5 尾声:那些恐惧的日子
在搞反病毒的20年来,我有几天是非常恐惧的:
2003年3月10日
2003年3月10日,一个叫做rongrong的蠕虫…
第一次是在2003年3月10日,而在3月8日之前我们都在响应口令蠕虫,在非常疲惫憔悴的时候,突然就在机器上发现了另外一种蠕虫,我们起名为rongrong,它也是通过口令蠕虫感染机制传播的,它实际上存在的时间比当时的口令蠕虫更久,但是我们没有发现。我们刚开始发现有口令蠕虫这种机制传播时很兴奋,整个团队的好手都投入其中,突然间出现这个蠕虫,因此陷入到了很大的恐惧中,因为当时团队规模很小,深度分析、编写专杀、编写扫描验证模块等等,已经耗尽兵力和精力了,当时感觉到的是无力和无能。但是这个事件触发的是我们完成了国内反病毒历史上比较早的一份完整的针对行为关联家族的分析报告,这份报告对从样本库中检索到的,所有的基于psexec远程投放机理的恶意代码蠕虫进行了还原分析,它是在6163银河.net163.am历史上第一篇10页以上的分析报告,也在国内开创了样本家族间基于分析关联方法的先河。
2005年4月
2005年4月,一个手工清除失败的木马…。
第二次是2005年4月,当时也是一个相对有重要价值的节点,在用户现场排查的时候,发现了一个rootkit,当时借助了大量我们自己编写的和第三方工具进行手工处理,大概用了一个小时,最终宣告失败。我突然想起当年在DOS下分析每一个恶意代码都是手工分析和手工提取,自己感觉好像又回到了手工对抗的时代。但在这个rootkit和当时的木马数据汇总驱动下,我们做了一个内部的技术报告,这是一个有预测性的报告,是一个有数据支撑的报告。基本结论是,中国信息安全可能会崩盘于木马。
2012年10月19日
第三次就是2012年10月19日,在CNCC做这个报告的前夜,尽管已经做了很多工作,但对APT的无力感和恐惧感却那样强烈。
6 结束语
每次我感到历史螺旋仿佛回到起点之时,我就会有一种恐惧感,这些年做了大量的自动化分析流水线的工作,但每次应对新的威胁依然感到力不从心。但我并不悲观,曾经我们觉得蠕虫很难对抗,短时间内可以瘫痪全球互联网,但是事实证明,它不是不可遏制的,木马的数量飞速膨胀也曾让我们忧心忡忡,但从目前来看,其几个级别的膨胀速度已经开始下降,实际上我们每次都有效应对了,只不过我们可能还不够积极主动,而且没有把它转化成有效的产品形式。我觉得,我们对于对手的恐惧和无力感是我们对于技术的敬畏与执著的源泉。
我突然想起了恩格斯的名言“人类历史了上的每一次巨大灾难,都是以巨大进步为补偿的。”我不相信APT是终极的威胁,APT可能不会被消灭,但我相信肯定是会被遏制的,同时新的,更高级别的威胁也还会出现,我们也同样会找到应对的方式,这种对抗史将贯穿于人类的信息技术史中,而我们最终只是这个历史的片段。