与来自IT、信息、网络安全行业很多缩略词一样,APT(高级持续性威胁)这个术语正变得广为人知。就像新生概念一样,它和它的兄弟词语AET(高级逃逸技术)占据了当今各大媒体的头条。
然而,从这两个术语涉及的最基本层面上来看,它们并没有任何创新。新的简写的确概括了当今这个高度信息化的时代遇到的一些真正的威胁,但它们只是在没人注意的时候偷偷重新发明了自己。因此,APT里代表持续性(Persistent)的那个“P”看上去才显得如此恰当(apt本身就是个英文单词,有恰当的、合适的意思)。
随着攻击技术的不断发展,历史上的威胁和今天的威胁之间有一个微妙的区别。一些人利用严肃的计划和项目管理技术创造了用于实战的高级逃逸技术,这使得当今的恶意行为如虎添翼。
早在1993年,计算机病毒还是当时最新潮的现象。在英国皇家空军的计算机安全部门进行计算机病毒研究的人员提出了一个疯狂想法:使用单层或多层封装将恶意代码数据隐藏起来,以规避反病毒系统。也就是说,这就是上个世纪90年代的APT。
如今,很多网络安全社区倾向于给遇到的每个安全问题都打上普适性的标签,然后把问题踢给一些相关的技术保护概要,这份概要又会提供某个可行的全/半自动解决方案,最后导出使用某种信息安全灵丹妙药的确切等级。
然而,以APT为例,上述过程并没有考虑到攻击的多面性。例如,APT是病毒?零日漏洞?系统漏洞?还是全新的恶意脚本?对所有这些问题的答案都是令人费解的。
为了对APT的能力和目的有更深刻的理解,我们应当整体审视一下OSI七层模型。然后我们可以看到,APT的制造者是如何依据自己的想象力,将攻击向量运用到针对OSI模型特定一层或几层的漏洞上,并取得成功的。以下是OSI模型七层协议:
* 应用层
* 表示层
* 会话层
* 传输层
* 网络层
* 链路层
* 物理层
在面对APT攻击时,一件非常重要的事情是意识到这些攻击有可能随设计者的意图随意演变。攻击者运用攻击向量的某几点展开攻击,目标是找到一些要素的漏洞,或者是一些和OSI协议栈相关的要素。尽管,从某种程度上来讲,不管APT有没有被定制好,都要用到大量暴露的通常信息,但这正是我们防不胜防的东西。
举例而言,攻击者可能决定将攻击放在OSI协议栈的上层部分,并在这部分直接发掘漏洞,这样做有可能导致更底层的漏洞暴露。如果黑客利用社会工程攻击锁定目标人员、跟踪数据包,可能导致OSI模型中更接近技术接口的层面受到威胁,进而使得网络层上的实体遭到针对性攻击。#p#
文章写到这里,应该介绍一下APT的真实定义了:
“它是一种使得攻击成为可能的逻辑/物理条件,能造成在多重向量层面上的不利状态,使得人员、软件、系统陷入危险,实现攻击者的直/间接访问,进而发掘目标实体的部分漏洞,甚至造成漏洞的全面暴露。”
关于APT攻击最值得记住的威胁点是,我们完全不知道它们在逻辑上是如何组织的,也不知道它们针对的是OSI协议栈的哪一层的漏洞。举例而言,通过混合型鱼叉式网络钓鱼的方法投放数据包,可以对单个或多人开展攻击;攻击的目标则可以很多样化,或是利用Windows XP的漏洞,或是对外围信息安全基础设施进行直接攻击,亦或是伪造IP包头,骗过保护系统;攻击的结果是在网络层上成功建立恶意连接。
恶意连接有可能是未授权的数据出口,它使得攻击者得以远程调用目标系统上的命令行(Shell操控接口),进而运行强大的Windows管理规范命令行程序(wmic.exe),再向受害网络发送INTERROGATE询问控制请求,勘察字符段;或者通过网络向同组服务器发送硬盘取证软件。
有一些APT攻击可能针对人类心理的弱点,比如好奇心。举例而言,黑客在攻击一个总部位于伦敦的公司时,把USB盘分散扔到公司停车场里,并给U盘标上个人理财、2015裁员、女朋友的相片等等标签。然而,这些USB盘都感染了基于Hacksaw、Switchblade制作的U盘病毒,一旦把USB盘插到计算机上,病毒就会通过计算机I/O感染整个系统。
整体来看,针对性的APT攻击流程大致包括:对目标进行踩点;搜集开源情报(Open Source Intelligence, OSINT)以及任何其它黑客能够挖出来的信息。单个的信息含金量可能并不高,但是当信息组合起来,有可能构成发动一次攻击的基础。
举例而言,一家公司从基于元数据的构件里泄露出了信息,这些信息是从该公司的网站上无意之中大量泄露的,而公司并不知情。这些信息包括IP地址、用户名、本地系统名称、文件夹、操作系统,以及基础应用程序的版本:比如Oracle。这都会被有心的攻击者利用起来。
真的有公司想告诉世界他们仍然在用Windows NT 4.0 Service Pack 6a,而且公司内的Windows XP覆盖率居高不下吗?抑或是公司业务都运行在过时的服务器上,且有多项随时有可能被黑客瞄准的中高安全级漏洞? 所有这些信息都可能对想捏软柿子的APT攻击者产生至关重要的作用。
如果要考虑哪些要素在数据/元数据泄密方面不是那么重要,就要考虑哪些暴露的通常信息会帮助攻击者构建攻击。对上述例子而言,我们来看看隐藏在元数据属性里的潜在信息,下图是一个例子。有着家大业大的微软庇护,直到2015年,Windows NT 4.0依然有它的一席之地,这些老旧产品周期里的系统存在很大的安全风险。
接下来看社会工程学在APT里面所占的地位,请想象以下场景。在一次早期的踩点行动中,攻击者发现了一系列不安全的文档,它们来自于一个雇员发布在银行网站上的信息。经过分析提取,攻击者得知了雇员的个人背景;通过仔细翻阅相关的元数据,攻击者得以发掘一些关于文档创建的内部信息。攻击者的下一步就是以个人信息为侦查目标,对目标银行进行开源情报(OSINT)分析,确定目标个人。很容易就能发现,这个人的部门和分机号码被关联到了他自己的登录用户名上。
到了这个节点,在Facebook、LinkedIn上查找更多情报就是非常容易的了,攻击已经箭在弦上。现在的问题只是给目标打电话,作为陌生人主动展开对话,使用已经收集到的信息骗取目标的信任,然后对无防备的目标发起恶意通信。#p#
APT相当多元化,依照顺序,以下是它所利用到的工具:
* 开源情报
* 情报分析
* 社会工程
* 发掘目标PC的漏洞
* 发送数据包
当然,还有很多对目标产生威胁的方法,这些方法不一定同源,也不一定易于发现。不容忽视的是,其它作为干扰的攻击手段也经常和APT混在一起,以将企业遭到逻辑攻击时的注意力和防御资源从真正危险的攻击中移开。
要想防御逻辑攻击,真正有效的办法是去思考有多少暴露的通常信息,而且不要通过名字、商标、档案来查询这些信息:部署一种专门寻找直/间接安全事件,或安全反常行为的防御系统。信息安全灵丹妙药的时代早已远去,我们生活在一个不安全的时代。这意味着我们应当最大限度地运用想象力,在大量暴露的信息中保护我们的资产。
这一现状也决定了,公司应当配备高性能的探测预警系统,如果可能的话,应当对整个公司的安全事件进行标记,在对任何远程第三方组织打开接口时更应如此。以一家英国公司作为反例,在遭到APT攻击后四周,这家公司才建立了依赖IT基础架构库(ITIL)的安全方案,以防止渗透攻击、未授权高权限账户创建,以及病毒感染。这无疑是应对APT攻击时最糟糕的解决办法,尤其是在内部网络已经受到确定无疑的威胁时。对任何APT攻击而言,它都制造了一个理想机会,攻击找到的后门可能持续几个月甚至几年都不会被发现。
上文的结论如下。任何APT攻击向量都基于对OSI协议栈上层或底层的攻击,而且会在栈上多个层次寻找漏洞来实现攻击的最终目的。攻击可能需要用到一系列工具,包括混合攻击,垃圾邮件,可疑链接,以及简单有效的社会工程方法。
而且,在APT攻击逐渐流行的大潮流下,我们不能忘记开源情报、数据泄密,以及其它能够为攻击者所用的潜在信息。大量暴露的信息所带来的安全威胁意味着我们必须考虑、调查每一个潜在的隐患。
在2015年,我们必须意识到,非传统的APT攻击需要非传统的防御。老办法已经行不通了。