理解未知威胁——是针对签名的防护来说,签名绕过太容易,需要基于行为提供泛化能力更强的检测算法(AI)==>已知的未知威胁+未知的未知威胁
笔者是一名网络安全从业者,毕业至今已经在这个行当里混迹了5年之久,虽然还远远谈不上资深,但这几年来也见过了不少安全事件,自己作为技术支持,也处理了其中一些。就在我慢慢觉得这一行已经没有了当初的新鲜感的时候,公司派我去一家网络新闻媒体协助解决他们最近遇到的安全问题。未曾想到,这一次“难忘”的工作经历让我对网络安全又有了新的认识。
事情发生在一个夜晚,即将入眠的我突然接到了公司一线销售人员的求助电话,电话中说到这家网络新闻媒体的数据遭到了丢失、篡改,运维人员却无法找到此次攻击的根源所在。
“有点意思……”挂断电话的我,从床上慢慢坐了起来,思忖着。
“未知”的“未知”
既然被攻击的原因与所有已知的漏洞与威胁都不匹配,我经过分析之后,觉得客户应该是被一种新的攻击手段入侵了,用网络安全界的行话,这叫做“未知威胁”。未知威胁又分为两种,一种是能预测到可能会发生的,可以一定程度上进行防范的,称为“已知的未知威胁”,而另一种则是无法预测,因此让人觉得无从防范的,则称为“未知的未知威胁”。
客户作为一家网络新闻媒体,铁肩担道义,妙笔著文章,为社会传递了大量的正能量,有着极大的社会影响。但是,仍有不法分子为了牟取自身利益,利用“未知的未知威胁”对这家客户进行网络攻击,居心不可谓不叵测。愤慨之余,我深感责无旁贷,一定要帮助客户扫除威胁,还客户一片网络净土。
“摸着石头过河”
越来越多的未知攻击是如今安全攻防的一个最大的特点,客户所面临的攻击工具可能是之前从来没有使用过的,甚至是身边的监控视野从来没有看到过的。如何有效地应对未知威胁的确是一个令人头大的问题,传统入侵检测方法基于的是特征码或规则,要求软件必须提前“知道”入侵的“定义”,才可以识别对应的入侵。但是,面对全新品种的恶意软件,其特定入侵指标(IOC)自然就不为人知,传统入侵检测方法又如何能检测出未知攻击呢?
既然传统的方式行不通,我决定改变思路。虽然所谓“未知的未知攻击”在之前并没有出现过,但是既然攻击了客户的系统,就总会留下一些异常的痕迹,正如业内一位德高望重的前辈告诉我的那样,异常不一定是威胁,但一般来说威胁一定有异常。需要将“未知的未知威胁”转为“已知的未知威胁”来控制问题,如果能够从业务的运转中,抽取生成内在的监控指标,并对指标进行持续地观测和分析,那么无论遇到什么攻击,都会引起指标变化而被察觉。
与客户沟通了我的这些想法之后,我们在客户的服务器集群上部署了青藤万相·主机自适应安全平台,根据客户的业务运行状况设立数万个监测指标,对文件进程、主机访问、业务关系等建立多维度、多层次的纵深检测体系,可以无间断对入侵行为进行监控,实现实时的入侵检测和快速响应,一旦发现异常情况,就会进行毫秒级报警。
凭借着青藤万相·主机自适应安全平台强大的持续监控能力,终于找到了客户系统被攻击的根本原因,原来是攻击者制作了一个新的更轻量级、功能更全的Webshell。找到原因,剩下的工作就简单多了。于是,我们顺利地协助客户守护了他们的数据安全。
这次的工作经历给我的网络安全职业生涯上了重要的一课,要守护网络安全,不仅要在技术上强过攻击者,更要在意识上领先于攻击者,对“未知的未知”给予足够的重视,未雨绸缪,只有这样,才能做到固若金汤,不给黑客任何可乘之机。
无论公司企业还是个人消费者,都对零日攻击担心不已,怕保护不好自己的数据。如果都不知道威胁长什么样子,谈何御威胁于家门之外?
一段时间以来,以防御未知威胁为目的的安全工具不断涌现,但零日攻击利用新漏洞或新技术的本质,让此类攻击难以被传统安全软件检测。
以杀毒软件和反恶意软件工具为例,用户不得不持续安装更新的原因,就是新品系或新版本的恶意软件特征码要不断加入到这些防护软件的字典中。没有特定恶意软件的定义,这些软件就对该特定恶意软件视而不见,任其长驱直入。
检测恶意软件的传统方法依赖发现入侵指标(IOC)。这一方法的问题在于,通过IOC检测恶意软件需要之前“看到”过这些IOC。
这基本上就是基于特征码和基于规则的方法,要求软件必须“知道”入侵的“定义”才可以识别入侵。可想而知,既然零日恶意软件是全新品种的恶意软件,其特定IOC自然就不为人所知,这种必须先见过才能检测的方法又怎么能检测得出零日攻击呢?
这些传统应用程序在防御已知威胁上表现良好。但我们又是否能训练机器来发现之前从未观测过的恶意软件呢?换句话说,机器能检测零日攻击吗?
当然可以。
行为分析,也就是我们所谓的“新”方法,就是特别适合检测零日攻击的,与以上传统方法完全不同的另一条路。其中秘诀在于,几乎所有恶意软件,包括零日恶意软件,都会展现出昭示攻击进行时的一些行为。
行为分析的核心是用异常检测来查找这些异于常规软件的行为。所有恶意软件在行为上或多或少都有些异常,因而也就能被分析检测。
依赖行为而非特征码的另一个巨大优势在于,所谓的“无文件恶意软件”也能被检测出来。如其名称所显示的,无文件恶意软件并不将自身保存成主机上的文件,而是寄生内存之中,基于文件特征码的传统扫描和白名单技术几乎不可能检测到。但即便是无文件恶意软件,也要表现出一些能被检测的行为。
我们不妨考虑一下最坏的场景:零日无文件攻击。这种最坏情况下,行为分析检测过程是怎样的呢?
首先,网络钓鱼邮件将一份恶意Word文档投放到你电脑上。然后,恶意软件尝试在被感染主机上获取立足点;微软Word启动PowerShell,注册表键被篡改。接下来,PowerShell与命令与控制(C&C)中心通联,准备好攻击载荷。最后,载荷被下载执行。攻击任务完成。
零日恶意软件的情况下,因为之前没“见过”该恶意软件,你的杀毒软件不能在恶意软件进入到主机时识别出来。加之这还是个无法被扫描的无文件攻击,不会在主机上安装任何新的可执行代码,还只利用主机已有程序作恶。杀软就更加无法发现了。但是,上述入侵过程中它所进行的很多活动都是可以被行为分析工具打上“不正常行为”标签的。
Word启动PowerShell就是个不正常的父-子进程。C&C域名查询会触发异常DNS频率和时刻报警。协议隧道的建立则会表现出该协议的不正常网络负载。诸如此类。这种情况下,即便零日威胁本身是完全未知的,但其导致的行为变化是无法隐藏的。