欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

漫谈无文件恶意软件的发展历史

来源:本站整理 作者:佚名 时间:2017-04-25 TAG: 我要投稿

一、前言
究竟什么是“无文件恶意软件(fileless malware)”?谈到这个名词时,许多安全行业的专业人员都心有余悸,许多文章和产品手册在介绍无文件恶意软件时,总会顺带提到我们难以防御和分析这类威胁。我在这篇文章中会试着抛开这些陈词滥调,追溯无文件恶意软件的最初起源,并以此类恶意软件的几个样本为例,勾勒出这个名词的演变轮廓。
二、这是一个热门话题
人们在工业事件、私人会议以及在线讨论中经常会提到无文件恶意软件这个话题。原因可能在于这类威胁放大了传统端点安全技术的缺点,又给了新型安全技术展现实力的机会。
事实的确如此,Google趋势给出的资料表明,人们在2012年到2014年之间对这个名词鲜有问津,自2015年后人们对它的兴趣逐步提升,并在2017年到达了一个峰值。

       这种趋势与近年来公众对具备“无文件”能力的恶意软件的讨论不无关系,特别是在2017年,有大量关于这个话题的研究成果和出版物喷涌而出。
三、什么是无文件恶意软件
首先我们得明确一点,那就是“无文件恶意软件有时候还是会使用文件”。现如今,大多数人们在使用无文件恶意软件这个名词时,似乎约定俗成地使用了以下这个定义:
“无文件恶意软件是一种不需要在文件系统中存放恶意可执行文件的软件”。
这个定义对于利用恶意脚本或者文件系统中良性可执行文件进行传播的恶意软件来说是适用的。对于隐藏在注册表中恶意软件来说,这个定义也是正确的,虽然这种情况下注册表本身还是存储在Windows文件系统中。这个定义不需要考虑恶意文件的传播途径,不论是通过漏洞利用、社会工程学技巧还是滥用某些正常功能来进行传播,这个定义都是适用的。
虽然无文件恶意软件最初指的是那些不使用本地持久化技术、完全驻留在内存中的恶意代码,但这个术语的范围在逐渐扩大,现在也将那些依赖文件系统的某些功能以实现恶意代码激活和驻留的恶意软件包括在内。让我们一起回顾一下对这个术语的演变过程造成影响的那些恶意程序。
四、2001-2003: Code Red以及SQL Slammer
完全驻留在内存中的恶意代码肯定在21世纪前就已经存在。然而,直到2001年,Code Red蠕虫在互联网上肆意传播,才将“无文件恶意软件”这个名词带给普罗大众。我所能找到的最早与此有关的公开资料发布于2001年的夏天,当时卡巴斯基实验室发表了一份公告,其中提到:
“我们预测,在不久的将来,像Code Red之类的‘无文件’蠕虫将泛滥成灾,无法处理这类威胁的反病毒软件只能给大众带来安全风险”。
Code Red蠕虫使用了微软IIS web服务器中的一个漏洞进行传播,能够完全驻留在受害主机的内存中,详细的分析可以参考CAIDA的这篇文章。
一年半以后,另一个蠕虫(SQL Slammer)就像燎原野火一般传播。SQL Slammer利用的是微软SQL服务器中的一个漏洞。Robert Vamosi在2003年为ZDNet撰写的一篇文章中,将这个蠕虫归类为“无文件”类别恶意软件,指出它“与Code Red类似,仅驻留在内存中”。
我也在Peter Szor(彼时正在赛门铁克工作的一名资深前辈)于2003年提交的一份专利申请中找到了一些资料。专利名为“签名提取系统及方法”,其中给出了无文件恶意软件的定义,如下所示:
“无文件恶意软件指的是不依赖文件、仅存在于内存中的恶意代码……更具体地说,无文件恶意代码……可以将自身附加到活动进程的内存空间中……”。
无文件恶意软件的原始定义与这个名词字面上的意思非常接近,指的是能够在没有残留文件的前提下保持活跃的那些恶意软件。
五、2012:安装Lurk木马的僵尸程序
我能找到与无文件恶意软件有关的另一份资料,是在Code Red和SQL Slammer蠕虫诞生的近十年之后。2012年,卡巴斯基实验室的Sergey Golovanov发表了一份分析报告,介绍了某个没有文件落盘行为的僵尸程序(bot),其中提到:
“我们面对的是一个非常罕见的恶意软件,这种无文件程序不存在于硬盘文件中,仅在受感染计算机的内存中活动”。
这个僵尸程序利用了Java客户端的某个漏洞,仅在受感染的javaw.exe进程的内存空间中活动。Sergey提到这个僵尸程序具备安装Lurk银行木马的功能。
在2012年的早些时候,SecurityXploded的Amit Malik发表了一篇技术短文,介绍了从互联网下载Windows程序后,如何在不保存到本地硬盘的前提下,实现Windows程序的“内存化或无文件执行”。
六、2014:Powerliks、Angler以及Phase僵尸程序
前面提到的程序完全驻留在内存中,不会在文件系统中留下任何明显的蛛丝马迹。因为这种特性,它们在系统重启后就消失得无影无踪。相比之下,2014年出现的Poweliks恶意软件是一种“无需文件的可持久化恶意软件”(G Data的原话)。这个恶意软件利用了微软Word的某个漏洞来进入系统,使用带有shellcode的PowerShell以及JavaScript脚本实现内存中的执行功能。赛门铁克的Kevin Gossett对它的本地持久化技术进行了分析,其中提到:
“通常情况下,恶意软件会在注册表的Run键值中添加一个子项,指向某个恶意可执行文件以完成本地持久化。Poweliks将Run键值的子键指向rundll32.exe,利用这个合法的微软程序加载DLL文件,并向其传递几个参数。传递的参数中包括JavaScript代码,最终实现将Poweliks加载到内存中并执行的目的”。
一个月之后,安全研究员Kafeine发表一篇关于Angler漏洞利用工具的分析文章。恶意软件的攻击目标是存在漏洞的Java客户端,仅在受感染的javaw.exe进程的内存空间中活动。2016年,Palo Alto的安全研究员Brad Duncan在一篇分析报告中提到,Angler开始出现安装Bedep下载器的行为,且在安装时不涉及到任何文件创建,因为Angler将下载器直接加载到内存中运行。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载