工作原理:用户访问一个受侵的网站,不小心下载了最新类型的恶意软件。如果你的杀毒软件运行良好的话,就会阻止下载,至少能够检测到并隔离硬盘上的入侵文件。但是如果硬盘上没有文件监测呢?如果恶意软件只入侵内存,运行在受信任的进程中呢?
这正是在今年年初发生在俄罗斯的事情。超过3万台计算机感染了一种独特类型的恶意软件——fileless僵尸程序。在僵尸程序肆无忌惮地感染几个月后,卡巴斯基实验室声明已经发现了一个罕见的感染,通过俄罗斯在线信息资源进行传播。广告由AdFox(一个第三方广告网络)提供给网站,Java恶意软件包含其中,通过浏览器从网络罪犯控制的服务器下载。
fileless僵尸程序入侵原理
第一步:用户访问受感染的网站。用户甚至不需要干其他的事情,便不知不觉地被重定向到罪犯的服务器上,我们称之为“主服务器”。
第二步:主服务器将一个加密的动态链接库(DLL)文件注入到用户的电脑上的Java进程(javaw.exe)中。Java进程运行在内存中。DLL利用一个众所周知的Java漏洞。
第三步:恶意软件建立用户计算机和主服务器之间的通信。被感染的计算机的技术细节信息被发送到主服务器。从这个意义上说,恶意软件和其他僵尸程序一样——作为一个软件僵尸程序,可以在互联网上执行自动化的任务。但是,AdFox是无实体文件的,只在内存中运行。
第四步:恶意软件令用户帐户控制(UAC)失去效力。UAC是一个Windows安全组件,保护用户的系统免受黑客攻击。恶意软件利用权限再次安装一个更有破坏力的恶意软件。在俄罗斯计算机事件中,下载的恶意软件是Lurk Trojan,主要窃取敏感数据来访问网上银行服务。
第五步:Lurk Trojan突袭cookie jar。
Java漏洞
正如上面提到的,fileless恶意软件利用了众所周知的Java漏洞(CVE-2011-3544)。俄罗斯事件中,网络罪犯利用此漏洞攻击Windows计算机。但是,Mac OS也支持Java,因此Apple计算机也可能受到感染。幸运的是,Oracle在2011年10月推出补丁,只有电脑没有更新,因此易受感染。
然而,对于那些没有补丁的计算机,罪犯可以轻而易举地将僵尸程序加载到受信任的Java进程中。大多数情况下,杀毒软件检测不到。僵尸程序本质上是无行的。
网络罪犯使用AdFox用户帐号更改了俄罗斯网站上的banner代码。特意往代码中添加了JavaScript IFrame。IFrame是内联框架,允许单独的HTML文件被加载到一个单独的文档。在IFrame内,他们嵌入一个加密的链接,将用户重定向到.EU域中的主服务器。
Fileless造成的麻烦
虽然这次暴风式的对俄罗斯的袭击很少见,但是过去的十年里也发生过类似的情况,最具代表性的是红色代码和监狱蠕虫。两者皆利用了缓冲区溢出的弱点。
这些攻击已经发生过几次,没有不再出现的理由。也并不只针对俄罗斯或Windows计算机。也不局限于是Lurk Trojan。其他国家和操作系统也是很可能遭受攻击的,其他的恶意软件也可能轻易地传播开来。
好消息是,因为fileless僵尸程序只存在内存中,只需要重启操作系统就能解决问题(如果不是已经太晚了的话)。只要用户不访问相同的或其他受感染的网站,应该不会有再大的问题。当然,你也需要确保计算机上的Java应用程序定时更新最新的安全补丁。这至少会免受俄罗斯僵尸程序的袭击。
但与恶意软件的不同类型一样,规则也不断改变。你可以保护用户避免最新的fileless攻击,但没有理由假设每个人都是安全的。
另外,苹果最新声明,在发布下一代Mac OS Update之前,浏览器里不会使用Jave。这是否与fileless僵尸程序有关无从定论。安全研究员Adam Gowdiak在报道中称,已经找到了两个Java安全漏洞。所以苹果显然在确保自身安全。