这年头几乎每周都会爆出新的报道,主题是某家财力雄厚的大型蓝筹公司遭到数据泄密事件。这些公司通常购买并部署最先进的安全工具,可是攻击者照样能够突破它们的层层防线。更不糟糕的是,许多攻击常常长达数个月没有被发现。不妨看看这种情况是如何发生的。
攻击途径
每次泄密事件必须利用至少一种攻击途径,才能将持续性恶意软件安装到受害组织的网络上。手法老到的攻击者经常使用多阶段恶意软件,最初只是安装小小的后门而已。这让更复杂的工具之后得以部署到机器和网络上。
可以使用几种攻击途径,实现主恶意软件的安装,有时也被称为感染。其目标始终是运行恶意代码。一些最常见的攻击途径如下:
•基于浏览器的社会工程学伎俩:用户受诱骗点击貌似合法的URL,该URL利用了Java和Flash中浏览器或浏览器插件的安全漏洞,进而触发代码执行操作。更先进的攻击可以隐藏在合法流量当中,根本不需要任何用户交互。这些通常被称作路过式下载。
•基于电子邮件的社会工程学伎俩和鱼叉式网络钓鱼:用户收到含有隐藏或可见的二进制代码的电子邮件,一旦用户点开邮件,代码就会执行。
•登录凭据盗窃:被猜中或被盗窃的登录凭据被用来访问远程机器,并执行(恶意)代码,比如安装后门。
规避手法
为了逃避检测,恶意软件会在安装过程中及安装之后采用五种主要的手法。
•包装。这个过程将恶意载荷(安装程序或恶意软件本身)附加到合法文件上。合法文件被安装后,恶意载荷一块安装(通常在合法文件安装之前安装)。利用静态特征来检测包装文件基本上没有效果,因为新的文件可轻松定期创建,而且常常生成误报。通过盗版软件和P2P网络分发的Windows和OS X恶意软件通常采用这种手法。IceFog是一种众所周知的恶意软件,它通常用貌似合法的CleanMyMac应用程序来包装,用来攻击OS X用户。在Windows平台上,OnionDuke与通过Tor网络共享的合法的Adobe安装程序结合使用,以感染机器。
•混淆。这是指篡改高级代码或二进制代码,并不影响代码的功能,但是完全改变了其二进制特征。混淆最初用来保护合法软件避免反向工程和盗版。恶意软件作者采用了这种手法来绕过反病毒引擎,扰乱手动安全研究。使用XOR编码是实现混淆的方法之一。隐藏进程及文件名、注册表项、URL以及其他有用信息,可以大大减慢对新的恶意软件样本进行调查/反向工程的进度。
•压缩工具。这些软件工具被用来压缩和编码二进制文件,这是另一种混淆手段。压缩工具通常嵌有恶意二进制代码,它在运行时会将载荷“解压缩”到内存中,并执行它。如今使用几种常见的压缩机制,比如UPX、PECompact、Armadillo及其他此类工具。这种手法在规避静态特征引擎方面极其有效。
•反调试。就像混淆那样,反调试最初是软件开发人员为了保护商用代码避免反向工程而开发的。反调试可以防止二进制代码在虚拟机、安全沙盒及其他仿真环境中被人分析。比如说,ZeroAccess恶意软件采用了一种自调试手法,目的是为了阻止外部调试活动。另一个例子是恶意软件企图长时间地延迟执行(或睡眠)。这一招适用于绕开沙盒解决方案,因为这种解决方案只能将二进制代码在仿真环境下保持一段时间,然后将它们分类为良性代码,将它们释放到网络上。
•瞄准。实施这种手法的前提通常是,恶意软件旨在攻击某种特定类型的系统(比如Windows XP SP 3)、应用程序(比如Internet Explorer 10)及/或配置(比如检测到未运行VMWare工具的机器,这常常表明使用了虚拟化技术)。瞄准手法确保只有在达到特定的条件时,才触发并安装恶意软件,这让恶意软件能够规避沙盒中的检测,因为它们不像受到攻击的主机。
正如恶意软件的规避技术不断发展,我们的安全措施也要与时俱进。如今业界在开展大量的工作,旨在从传统的基于特征的静态安全方法,改为基于行为的剖析、分析以及安全解决方案之间的实时信息共享。我们在研究分析上述恶意软件手法后明白的一个道理是,我们让落实的安全措施越靠近被瞄准的资产,就越有可能检测并阻止恶意软件。
英文:How Malware Bypasses Our Most Advanced Security Measures