• 本文作者: 阿尔法, 实验室
  • |
  • 2017年5月3日
  • |
  • 未分类
  • |

Fileless malware”无文件型恶意程序发展

作者:Lenny Zeltser

翻译:topesc alpha lab

原文地址:https://zeltser.com/fileless-malware-beyond-buzzword/

如何处理“fileless malware”(无文件型恶意程序)? 许多安全专业人士在听到这个词的时候很沮丧,很多文章和产品手册都提到了很难抵御和检测的无文件型恶意程序。 下面我来试图通过这类恶意程序样本来梳理无文件型恶意程序的演变。

疯狂的无文件型恶意程序

无文件型恶意程序的概念在行业活动,私人会议和在线讨论方面一直备受关注。 这可能是因为这一威胁凸显了旧的终端安全方法的一些缺陷,并为新解决方案提供了强调其优势的机会。

事实上,根据Google趋势,从2012年到2014年人们逐渐对这一个概念感兴趣,到2015年开始逐渐增长,并于2017年飙升。

这个图说明了近年来出现的“无文件”功能的公开讨论的恶意程序,在2017年出现爆炸式增长。

什么是无文件型恶意程序?

无文件型恶意程序往往是有文件的,但如今大多数人很一致定义无文件型恶意程序的术语:

无文件型恶意程序是恶意程序, 且不会在文件系统上保存恶意的可执行程序。

这其中包含通过文件系统上保存的恶意脚本或者正常文件触发的恶意程序,也包括将恶意程序保存在注册表中,不管是通过漏洞、社工还有其他行为触发的,都认为是无文件型恶意程序。

尽管最初无文件型恶意程序是指传播后完全存活在内存中的恶意程序,但该术语演变为包含依赖文件系统某些方面激活或保存的恶意程序。我们来回顾一下影响我们今天使用这个术语的恶意程序。

2001-2003:Code Red和SQL Slammer

完全驻留在内存中的恶意代码的概念在21世纪之前肯定存在。然而, 直到2001年的Code Red蠕虫出现,才在互联网上留下它的标记, 开始有了无文件型恶意程序的说法。我能找到日期的最早的公开信息是在2001年的夏季 ,卡巴斯基实验室公布了尤金.卡巴斯基发表的公告:

“We predict that in the very near future, such ‘fileless’ worms as Code Red will become one of the most widespread forms of malicious programs, and an anti-virus’ ineffectiveness in the face of such a threat simply invites danger.”

Code Red利用了Microsoft IIS Web服务器中的一个漏洞,如CAIDA(https://www.caida.org/research/security/code-red/)所述,仅保留在受感染主机的内存中。

一年半后,另一个蠕虫SQL Slammer通过利用Microsoft SQL服务器中的漏洞像野火一样传播。 Robert Vamosi在2003年为ZDNet撰写的文章中,将此恶意程序描述为“file-less”,并提到它仅驻留在内存中,就像Code Red一样。

当时在赛门铁克公司工作的Peter Szor在2003年的申请《签名提取系统和方法》(Signature extraction system and method)专利中提到了这个术语,并将无文件型恶意程序定义为:

“Malicious code that is not file based but exists in memory only… More particularly, fileless malicious code … appends itself to an active process in memory…”

2012:能安装Lurk木马的BOT

我能找到的下一个无文件型恶意程序信息是在Code Red和SQL Slammer蠕虫病毒近十年之后。 2012年,卡巴斯基实验室的Sergey Golovanov介绍了他对Bot的分析(http://web.archive.org/web/20120319182414/http://www.securelist.com/en/blog/687/A_unique_fileless_bot_attacks_news_site_visitors),该bot没有将任何文件保存到硬盘中:

“We are dealing with a very rare kind of malware — the so-called fileless malicious programs that do not exist as files on the hard drive but operate only in the infected computers RAM.”

未命名的样本利用了Java客户端的漏洞,并仅在受影响的javaw.exe进程的内存中进行操作。 Sergey提到bot能够自动安装Lurk银行木马(https://securelist.com/blog/research/75040/lurk-banker-trojan-exclusively-for-russia/)。

当年早些时候,SecurityXploded的Amit Malik发表了一份教程(http://securityxploded.com/memory-execution-of-executable.php),介绍了如何在从Internet上下载文件之后,不保存到本地而直接在内存中执行Windows程序。

2014:Powerliks,Angler,Phase Bot

上述的恶意程序都只内存驻留,而不会在文件系统上留下任何直接的印记。由于这种特性,一旦系统重启,它们就消失了。相比之下,2014年出现的Powelliks恶意程序,G Data(https://blog.gdatasoftware.com/2014/07/23947-poweliks-the-persistent-malware-without-a-file)将其描述为“persistent malware without a file.”。此样本利用Microsoft Word漏洞进入系统。它使用PowerShell和JavaScript以及shellcode来启动并在内存中的执行。赛门铁克的Kevin Gossett描述了其存活机制(https://www.symantec.com/connect/blogs/poweliks-click-fraud-malware-goes-fileless-attempt-prevent-removal):

“Normally, malware will place an entry in the Run subkey that points to a malicious executable which is then executed. Poweliks makes the Run subkey call rundll32.exe, a legitimate Windows executable used to load DLLs, and passes in several parameters. These parameters include JavaScript code that eventually results in Poweliks being loaded into memory and executed”

一个月后,安全研究员Kafeine发现了一个无文件特征的Angler恶意程序(http://malware.dontneedcoffee.com/2014/08/angler-ek-now-capable-of-fileless.html)。该攻击利用Java客户端漏洞,并仅在受影响的javaw.exe进程的内存中进行操作。Angler在2016年开始安装Bedep下载者,根据Palo Alto的Brad Duncan描述(http://researchcenter.paloaltonetworks.com/2016/04/afraidgate-major-exploit-kit-campaign-swaps-locky-ransomware-for-cryptxxx/):

“is installed without creating any files because it is loaded directly into memory by the exploit shellcode.”

2014年底,安全研究员MalwareTech公布了一个名为Phase Bot的无文件rootkit分析(https://www.malwaretech.com/2014/12/phase-bot-fileless-rootki.html)。根据其说明,样本能够不保存任何文件到磁盘上,并且没有自己的进程而且能将恶意程序安装在Windows系统上。其通过加密恶意代码并存放在注册表中,并使用PowerShell读取并在内存中执行此代码实现隐身。像Powerliks一样,这个恶意程序通过从autorun注册表项启动rundll32.exe来执行JavaScript。

2014-2015: Duqu 2.0, kovter

2015年中期,卡巴斯基实验室发布了有关2014-2015年运行的,使用Duqu2.0平台的高级对抗攻击的详细信息。该攻击利用Windows漏洞来安装隐藏的恶意程序,这些恶意程序只存在受感染主机的内存中。它没有实现保持存活功能。相反,研究人员解释说,攻击者瞄准了长时间运行的服务器,然后重新感染重新启动的系统。

Kovter是2015年获得关注的另一个无文件型恶意程序样本。 Kovter 的感染技术与 Powerliks 的相似。开始使用恶意的Windows可执行文件感染,样本在注册表中加密存储后移除该文件。至少有一个变种是通过使用执行JavaScript的快捷方式文件保持其存活的。如Andrew Dove所述(http://blog.airbuscybersecurity.com/post/2016/03/FILELESS-MALWARE-–-A-BEHAVIOURAL-ANALYSIS-OF-KOVTER-PERSISTENCE),该脚本启动PowerShell,执行shellcode,它将恶意代码注入到非恶意应用程序后并启动它。

2016:PowerSniff,PowerWare,August

2016年年中,Palo Alto Networks的Josh Grunzweig和Brandon Levene发布了PowerSniff恶意程序分析(http://researchcenter.paloaltonetworks.com/2016/03/powersniff-malware-used-in-macro-based-attacks/)。其通过包含恶意宏的Microsoft Word文档开始感染。该样本的内存中的机制类似于Kovter的某些方面,并涉及执行shellcode的PowerShell脚本,它负责在内存中解密并执行恶意代码。 PowerSniff会将恶意DLL临时保存到文件系统。

几个星期后,Carbon Black的Mike Sconzo和Rico Valdezfa发布了名为PowerWare(https://www.carbonblack.com/2016/03/25/threat-alert-powerware-new-ransomware-written-in-powershell-targets-organizations-via-microsoft-word/)的勒索软件样本分析。像PowerSniff一样,PowerWare开始通过一个包含恶意宏的Microsoft Office文档,启动PowerShell,对系统进行感染而不需要在本地释放任何恶意可执行程序。

下半年,Proofpoint发现了另外一个被命名为August(https://www.proofpoint.com/us/threat-insight/post/august-in-december-new-information-stealer-hits-the-scene)的无文件型恶意程序样本,同样使用了Microsoft Word宏和PowerShell。经过分析,该样本从远程站点下载PowShell的payload,并在内存中执行而不在本地保存任何文件。

2017年:POSHSPY等

2017年初,卡巴斯基实验室发现了一个未命名的样本,其将基于Meterpreter生成的恶意代码仅保存在内存中,通过合法的Windows实用工具来进行调用,比如sc(安装运行基于PowerShell的恶意服务)和netsh(用于传播恶意网络流量)。

几个月后,Mandiant的Matthew Dunwoody公布了另外一个使用被命名为POSHSPY(https://www.fireeye.com/blog/threat-research/2017/03/dissecting_one_ofap.html)的无文件型恶意程序的攻击。该样本使用Windows Management Instrumentation(WMI)功能来实现自启动,并通过PowerShell加载执行以字符串形式加密保存的恶意脚本。样本可以下载保存可执行文件。Matthew认为:

这是一个非常独立的后门,他和其他传统的后门一起部署,可以确保被攻击被发现清理后继续潜伏。

上述事件可以确定,攻击者非常有实力,仅仅在目标系统上使用系统内置的正常程序就可以执行恶意程序。

“Fileless malware”(无文件型恶意程序)术语变化

2012年Sergey Golovanov 在上面提到的文章中最先使用了”Fileless Malware”。有趣的是,现在它已被修改成”Bodiless Malware”( https://securelist.com/blog/virus-watch/32383/a-unique-bodiless-bot-attacks-news-site-visitors-3/)。卡巴斯基实验室在2016年之前也称之为”Bodiless Malware”(https://business.kaspersky.com/bodiless-threat/6128/),但似乎在2017年以后都称之为“Fileless Malware”。

2013年下半年,在Wikipedia上由Triumfant公司的John Prisco创建的Advanced Volatile Threat (AVT) 引起热议。AVT命名出现在Byron Acohido’s的关于Apache后门的文章中,根据当时在ESET工作的Pierre-Marc描述,后门除了修改Web服务器二进制程序之外没有留下任何痕迹。

相比之下,Carbon Black在其2016年威胁报告中引入了无文件型恶意程序的术语更合理,其称之为“non-malware attacks”无恶意程序攻击。几个月以后,其在公司博客上Michael Viscuso 解释了这一术语意思:

“A non-malware attack is one in which an attacker uses existing software, allowed applications and authorized protocols to carry out malicious activities. Non-malware attacks are capable of gaining control of computers without downloading any malicious files, hence the name. Non-malware attacks are also referred to as fileless, memory-based or ‘living-off-the-land’ attacks.”

Gartner在2017年的报告中使用了“non-malware attack”一词,并加粗显示。然后,一个月以后Gartner发表的另外一个报告中则改为使用“fileless attach”。

它为什么重要?

我喜欢对通过合法的系统管理工具和其他非恶意程序触发的恶意攻击称之为“non-malware attacks”。相比之下,恶意代码注入到其他进程而不会保存到磁盘,对于这种我更喜欢称之为”“memory-only malware”。我也认可将避免将传统可执行文件存放在系统上的恶意程序称之为”fileless malware”。

不幸的是,现在的术语已经混合了,尽管术语含糊不清,我们可能会坚持使用术语“fileless malware”来描述上述各种情况。唉,人类语言是不精确的,并且总是在演变。 (如果我们都使用C#,也许世界会变的更好。)

我关心这个术语,是因为我在描述我在Minerva负责的反恶意程序产品的功能时,试图避免使用流行语和空白短语。它与其他端点安全工具一起运行,并阻止各种恶意程序,无论其payload是否接触到磁盘。我经常被问到我们如何处理无文件型恶意程序;所以我决定进行上述研究,以更好地了解如何和何时使用这个术语。

Written by 阿尔法, 实验室