来源:Systematic Approach to Malware Analysis (SAMA) ,https://www.mdpi.com/2076-3417/10/4/1360/htm
摘要
恶意软件威胁对分析和逆向工程任务提出了新的挑战。这需要一个系统的分析方法,试图充分揭示其潜在的攻击载体和技术,并发现它们之间的共性。本文介绍了一种恶意软件分析方法,并报告了该方法在火红十月事件中的应用。这种方法也被不同的分析家用来分析其他恶意软件的威胁,如“震网”,“黑暗彗星”,“毒葛”,“洛奇”,“Careto”和“Sofacy Carberp”。本文提出的方法是一个系统的和方法论的分析过程,其主要目标是获取知识以及对特定恶意软件的充分理解。使用提出的方法来分析两个著名的恶意软件“火焰”和“红色十月”将有助于理解该方法的附加值。
1. 介绍
“Stuxnet”是第一个因为能够对工业基础设施造成物理破坏而受到全球关注的恶意软件。然而,也有相当数量的其他已知的恶意软件,可以被组合在一起作为一个最近的和特殊的现象称为高级持续威胁(APT),这值得从其他类型的恶意软件的注意。“火焰”,作为这个组的一部分,属于一个复杂的恶意软件家族,还包括“Stuxnet”,“Duqu”和“Gauss”。它的目的是使用不同的技术攻击特定类型的网络和基础设施,以在很长一段时间内保持[1]。另一方面,另一个主要部署在东欧和中亚国家的复杂恶意软件是“红色十月”。它的目的是攻击政府组织和外交部门。其运作重点是信息泄露,以提高攻击者的情报。
WannaCry, Locky等是其他恶意软件,被称为“勒索软件”,用来偷钱。今天有许多样本的恶意软件,如上所述,使用多种攻击技术和载体,并秘密进行,以避免被发现,以保持不被注意的控制目标系统的时间很长。另一方面,近几十年来,随着新的教育技术和大规模在线开放课程(mooc)的增长[3,4,5,6,7,8],这类恶意软件有了新的机会来“捕捉”新的目标和个人数据,这些数据可能非常重要。
在这篇文章中,我们描述了一种新的系统方法的恶意软件分析和评估(案例研究),通过应用它到目前为止出现的两个最复杂和著名的恶意软件:红色十月和火焰。它提供了一个结构化的分析过程,以及要遵循的步骤、要实现的目标和要使用的特定技术和工具的定义。它提出了四个阶段的实现,以帮助分析人员安全地工作以产生可重复的和客观的结果,并与其他分析人员合作。最后,使用这种方法可以更好地理解被分析的恶意软件,而不会忘记在正确的时刻使用正确的信息来提高分析效率的重要性。
对于任何恶意软件分析所需要的工具集,必须确认所提出的方法独立于任何特定的工具或技术,允许对恶意软件分析资源进行简单而经济的适应。本文提出的恶意软件分析方法的主要特点如下:
(1)它并不依赖于要分析的恶意软件的复杂性
(2)它独立于使其更容易采用的工具
(3)在增强恶意软件分类的重要性作为第一步要做的
(4)它考虑集成任何现有的恶意软件信息作为输入进行分析
(5)它基于对代码的分析,在动态或行为分析之前,为分析定义了一个特定的序列
它包括一个系统的反馈循环,当恶意软件的复杂性需要这样做的时候,重新采取这个过程,以及改进当前的分析与后来的阶段的结果
本文的其余部分结构如下。第2节调查我们目前对恶意软件分析技术和可用工具的类型的知识。然后,第3节和第4节讨论设计一个方法框架,以连贯和系统的方式整合这些技术。第5节提供了应用该方法分析恶意软件Red October和Flame的详细结果。最后,结论和未来的研究指南包含在第6节。
2. 背景
今天,恶意代码(以下简称恶意软件)已经发展成为影响信息技术(IT)系统安全的最重要的危险和威胁之一。分析恶意软件所需的技术复杂性和知识水平与样本的复杂程度成正比。恶意软件分析的主要好处如下[2,9]:
(1)评估组织保护系统的恶意软件检测能力
(2)评估入侵和恶意软件行为造成的损害
(3)以发现受到相同恶意软件影响的其他机器
(4)识别被恶意软件利用的漏洞,获得软件升级以减轻其危害(如果可能的话)
(5)获取足够的数据和信息来实施适当的防御机制来减轻和中和恶意软件造成的损害,包括防火墙规则,主机和网络入侵检测系统,防火墙和防病毒软件
(6)确定恶意软件的复杂程度和复杂性
(7)如果有可能,确定攻击的来源,并确定入侵者和恶意软件开发者
在恶意软件的分析中,需要一系列的方法和技术进行任何分析。它们将帮助分析人员了解与恶意软件相关的风险、威胁和意图。因此,获取的信息可以用于重新配置组织的防御,以检测它并保护它。
在分析恶意软件中使用的第一个和最古老的分析方法是观察。Jiang在他的博士论文[10]中使用了这种方法来比较验证恶意软件活动之前和之后系统的状态。仅仅通过观察机器,就可以发现对寄存器、文件或新文件的修改的线索,例如' enbieii.exe '活动,显示'冲击波蠕虫'恶意软件。Theerthagiri,在文章“恢复恶意软件,确认以下:深度安全分析检测情报”[11],提供了最相关的恶意软件分析技术的回顾。具体而言,确定了三项具体而有区别的工作,例如:
(1)静态代码分析:在不实际执行二进制文件的情况下收集尽可能多的信息的技术。为此,使用了反汇编和逆向工程技术。后一种分析技术还包括其他更具体的技术,如字符串分析、逆向工程、打包、混淆、受限执行环境等。执行这类分析的工具是IDA PRO[12]或GHIDRA[13]。
(2)动态代码分析:这种分析基本上是通过一种叫做“调试器”的工具来完成的,它与被分析的程序代码相关联,可以完全控制它们,允许逐行执行代码。一些流行的恶意软件分析调试器是OllyDbg [14], ImmunityDbg[15]和WinDbg[16]。
(3)动态或行为分析:在运行过程中对二进制或样本恶意软件进行分析,重点是对恶意软件与环境的交互进行监控。其目的是查找正在运行的受感染机器的变化、网络流量以及与命令和控制服务器的潜在外部通信。它可以在虚拟或物理环境中手动完成,使用不同的工具收集其与受感染机器的交互数据,或由“Sandbox”工具集[17]自动完成。
图1总结了用于分析恶意软件的主要方法和技术,我们已经确定为一个框架。正如前面提到的,所有这些软件都有一系列的优点和缺点,这意味着不能使用单一的方法或技术进行恶意软件分析。
一旦恶意软件分析的不同类型和方法被展示出来,下面的段落将展示在不同的科学研究文章中所反映的各种考虑。
恶意软件不断发展通过开发混淆技术使用变形和多态技术阻挠静态代码分析[2]。Moser等人[18]提出了一种混淆方法,该方法表明,仅靠静态分析技术可能不再足以分析复杂的恶意软件样本。此外,在[19]中,“静态恶意软件分析方法的问题”,他们指出,有时恶意软件样本的源代码是不容易获得的。由于二进制文件的分析是复杂的,并且需要对逆向工程有很高的了解,因此很可能对恶意软件的二进制文件进行反汇编会产生不明确的结果。鉴于这类分析所指出的问题,本文论证了它必须与其他类型的分析相辅相成,以最大限度地提高其有效性。
由于人工分析的资源和时间成本,一些自动化过程的方法已经被开发出来,例如本文中所介绍的方法。它的实现是通过被称为“沙箱”[11]的虚拟和隔离运行环境完成的。基本上,它是一个监督和控制恶意代码的执行环境,这样它就不会对托管虚拟环境的真实系统造成任何伤害。它通常通过虚拟环境实现,在虚拟环境中模拟处理器、内存和文件系统。
考虑到执行手动分析的复杂性,由于人力资源和时间的高成本,原则上出现了自动化分析的需求。然而,现在只能在使用虚拟化环境的行为分析中实现这种自动化。这并不构成一个恶意软件分析的全球解决方案。尽管如此,考虑到下面提出的一些不便之处,它可以作为一个支持因素。
一个自动动态恶意软件分析[20]的主要目的是为了支持分析人员了解恶意软件的行为和获取有效的数据,以方便逆向工程设计有效的对策。
此外,在[9]中,它指出使用“沙箱”有重要的缺点,例如,运行恶意软件的不便和丢失信息,因为它的复杂性,缺乏登记所有事件。为了解决这个限制,总是需要执行动态代码分析。
也有不同类型的工具来执行这种类型的分析(有些是免费的,有些是收费的),像CWSandbox [21], Norman SandBox [22], Cuckoo [23], TTAnalyzer [24], Anlyz [25], Malwr [26] ,ThreatExpert[27],或Cobra[19]。在[19]中,包含了一个包含不同沙箱解决方案详细分析的表。
它们都自动记录被分析的恶意软件所采取的行动,但它们的缺点是只分析单一的执行路径,因此可以忽略恶意软件的相关行为。(恶意软件逻辑行为在某些条件下,如系统日期)。根据Gandotra等人[2]的说法,“执行恶意软件的虚拟环境与真实环境不同,恶意软件可能以不同的方式执行,从而导致人为的行为,而不是确切的行为”。
使用这类工具和执行动态分析和行为技术必须面对的另一个问题是恶意软件规避的方法。这意味着,为了防止对恶意软件的分析,它可以检测到分析环境的存在,迫使恶意软件隐藏或抑制其恶意行为[19]。Pafish[28]工具允许分析人员测试分析环境是否被正确实现,这是可能的,因为它可以像恶意软件一样检测沙箱和分析环境。
恶意软件分析方法的另一个重要方面是识别在不同类型的恶意软件分析中使用的工具。正如之前所说的,有许多免费和付费的工具可供使用。
为了建立一个有效的恶意软件分析实验室,对这些工具的研究是必要的。这意味着根据将要使用的机器和将要执行的分析类型,必须选择一个特定的工具集。本文中显示的特定工具集是基于方法的每个阶段的需求及其功能进行研究的结果,考虑到易用性和它们提供的功能。表1显示了基于其功能的工具分类。
人们发现,要确定一个可以被视为标准的工具箱是相当复杂的。分析恶意软件的工具、技术和方法种类繁多,动态分析自动化工具的缺点,沙箱,以及恶意软件日益增加的复杂性,推动了许多工具的发展。这种情况迫使我们研究了大约一百种工具,以便选择最合适的工具在本文中使用。
它已经被证实,有一个方法独立于技术工具可能是有用的,以适应复杂性,不同类型的恶意软件可能呈现[29]。除了技术工具或个别类型的分析之外,似乎有一种方法可以让我们系统地响应今天的恶意软件所呈现的复杂性是必要的。因此,有必要开发系统的和方法论的分析过程,以提供一套程序、方法和技术及其相关工具,以帮助分析人员获得理解和完成所研究的恶意软件信息。这样,通过应用该方法过程,“对恶意软件的分析系统化”就成为可能,并且由于应用该方法后所获得的结果,可以对通过识别恶意软件来加强预防做出贡献。
如果没有高层次的结构化方法,不仅很难知道必须使用哪个工具,而且也很难知道什么时候、在哪里、以什么顺序使用工具。这就是为什么需要一种方法论是合理的,因为它为恶意软件分析提供了进行系统和方法分析过程的基础。
另外,建立这种方法可以将恶意软件分析阶段分配给不同的分析师、实验室或计算机,每个人都有自己的优势、知识和特定的分析资源。使用这种方法还可以将结果与能够理解它的其他分析师组共享(如果他们知道所使用的方法)。
3.相关工作
目前,我们只确定了一种恶意软件分析方法[30]。它提出了一个全面的恶意软件分析方法,包括一个结构化的分析过程。它还定义了实现目标的步骤以及在每个阶段中使用的技术和工具。
它提出了四个逻辑阶段,这将帮助分析人员产生一个可重复的和客观的输出,以便更好地理解分析的恶意软件。这些阶段如下:
(1)检测
(2)分离和提取
(3)行为分析
(4)代码分析
然而,我们不认为它是非常合适的,因为有其他程序获得的恶意软件是更有效的,因为恶意软件已经被压缩,或者它甚至可以从另一个组织获得,该组织已经提取了它自己的取证程序,确保了一直的保管链。它还建议将其适用于司法部门,这只是上述案件的一个特例。
这种方法首先包括“检测”阶段。这意味着高度的复杂性,因为获取恶意软件需要非常不同的方法,包括复杂和昂贵的防御系统,如防病毒、入侵检测系统(IDS)、防火墙或安全信息和事件管理(SIEM)。这意味着系统化和标准化的难度很高,所以这一阶段是包含在内的。
“隔离和提取”阶段主要关注rootkit恶意软件的提取过程。现在,更危险和复杂的恶意软件,如高级持久威胁(APT)或勒索软件,不像旧时流行的恶意软件,使这个阶段对这些类型的样本无效。结论是,这个阶段不能充分响应当前恶意软件的复杂性。这些任务的主要目标是收集、分析和保存来自IT机器的数据,作为取证过程的一部分,以使其在法庭上被接受[31,32]。
由于上面提到的原因,我们认为没有必要在本文中列出的方法中包括前面的两个阶段。除上述外,还发现了一些重要的差别:
与本文中提出的方法的主要区别之一是各阶段的执行顺序,首先执行“代码分析”阶段,然后是“动态或行为分析”阶段。这就是为什么在“代码分析”期间收集的信息对于以下阶段非常有用,比如密码、安装命令、命令和控制命令、可能的执行路径等等。
MARE不包括通过调试器对代码进行动态分析的技术。这项技术对于理解恶意软件如何工作非常重要。
它还没有公布其应用到一个特定的案例研究恶意软件,以便测试和验证。然而,所提出的方法已应用于个案例,其中两例被纳入本文。
图2表示MARE和SAMA与前面段落中指出的差异的比较。
4. 方法的建议
该方法的目的是在对复杂恶意软件进行详细分析时提供有效的指导。这种方法的结果将是有价值的信息,它将允许分析人员开发有效的对策,并扩展我们对恶意软件的来源和在行动中使用的攻击媒介的知识。
在分析过程中进行系统的、可重复的和方法论的过程对于促进获取关于特定恶意软件的知识是非常重要的。然后主要的目标是分析和充分了解它,从它的运作,它的识别和消除威胁的方法。在应用数据分析方法的过程中所要获得的目标和具体信息列在表2中。
1、分析总结
(1)主要观察结果
(2)建议
(3)限制
(4)报告日期和作者
2、分类
(1)文件名
(2)文件大小
(3)文件类型
(4)散列文件
(5)识别的杀毒软件
3、特性
(1)感染的能力
(2)自我保护的能力。
(3)扩散机制
(4)数据泄漏能力
(5)远程攻击者的迭代
4、依赖关系
(1)支持操作系统
(2)所需的Libs
(3)配置文件
(4)脚本和可执行文件
(5)URL的
5、代码分析和行为
(1)行为分析
(2)静态代码分析
(3)动态代码分析
(4)内存的分析
6、支持元素
(1)日志
(2)截图
(3)函数列表
(4)字符串
7、事件的建议
(1)IOC
(2)消除步骤
下图描述了该方法的主要结构及其主要阶段和应用流程。
正如前面所强调的,“代码分析”阶段是在“行为分析”之前执行的,因为在第一步获得的数据可以用来改进第二步,获得更多更好的数据。
SAMA方法包括在“行为分析”阶段的最后阶段和“分类”阶段之间的反馈回路。当分析中的恶意软件在运行时使用多个文件或样本时,该特性将非常有用。该方法的一般流程图及其相关过程如图3所示:
这个过程开始了一系列的行动,目的是开始分析恶意软件在一个干净的状态,没有任何可能的感染。接下来,在“分类”阶段,输入经过密码压缩和保护的恶意软件。在此阶段执行代码分析。
在最后一个阶段,“行为分析”,恶意软件的安全措施,以避免其在虚拟环境中执行检查。为此,使用IDA Pro工具可以搜索VMware的神奇代码。如果它被建立,实验室必须被修补以允许在虚拟环境中运行分析。如果失败,最后一个选项是使用物理环境进行分析。
然后,进行动态行为分析。如果恶意软件很复杂,它可能会在执行过程中生成更多的样本,迫使分析人员对每一个新创建的样本或样本进行“分类”。这意味着根据恶意软件的复杂性,SAMA可以对生成的每个恶意软件至少应用一次。
完成整个过程后,将提供表2中列出的所有信息。本方法所建议的阶段或步骤详列如下:
表2要搬到这里来,可以吗?
最初的行动。它包括执行一系列的动作,主要是为了获取分析所涉及机器的配置记录,目的是为了获得一个参考,使我们能够比较运行所研究的恶意软件之前和之后的相同状态。具体来说,在接下来的步骤流程图中,如图4所示:
○通过停用服务来保持完整性:系统恢复和自动更新
○通过生成系统配置的基线来保存完整性:受害者的虚拟机、监视器和服务的快照(VMWare);快照单元C:(Systracer)
○保证生成样本的完整性:C单元快照的MD5哈希:通过“Md5sum”工具和“WinMD5”验证。
为这些阶段选择的工具是Systracer、MD5Sum和Gmer。
分类。它是检查恶意软件的可执行文件,而不访问你的代码,以确认它是某种恶意软件,并获得信息的开放源代码,如互联网,其功能,以帮助实现以下阶段的分析。它甚至能使企业实现简单的网络,应该有必要对系统进行紧急的保护。本阶段执行的任务有:
○转换恶意软件
○识别恶意软件
○检查恶意软件
○在开放源码中寻找关于恶意软件的信息
○恶意软件二进制文件的字符串分析
○分析用于恶意软件混淆的技术
○分析文件格式
具体来说,在下一个流程图中,步骤如图5所示:
在这一步骤中要获得的目标和具体信息将在表3中显示。
如果恶意软件被混淆,接下来的过程将是(见图6):
为这些阶段选择的工具有Winmd5、Ssdeep、Bintext、String、PEiD、Detect It、Scylla、Yara(使用packer和cipher规则)、Binwalk、PEBrowse、Winhex、PE Explorer、ProcDump 32和Dependecy Walquer。
代码分析。它由一个静态和动态分析恶意软件的代码,汇编语言,执行一个详细的浏览过程,以获得更好的理解其功能。这是一个为实施下一阶段提供信息的复杂过程。它需要一个逆向工程分析师来发现隐藏的特性,包括新的执行路径,可以被恶意软件在下一个阶段尝试与用户交互。这些发现将有助于更好地理解其用途和功能。在下一个流程图中,分析步骤的细节如图7所示:
在完成动态代码分析阶段后,系统将回到原来的未感染状态,因为使用调试器意味着在受害机器上执行恶意代码。
本步骤所要取得的目标和具体资料将载于表4:
执行此阶段所选择的工具有PE Explorer、IDA Pro、Ghidra、逆向工程编译器和Ollydbg。
行为分析(见图8)。它在模拟真实环境的实验室中分析恶意软件的实现,以观察恶意软件的行为、产生的网络流量以及在目标系统上采取的行动(注册表修改、文件等)。
本步骤所要取得的目标和具体资料将列于表5。
这个阶段选择的工具是Systracer, Process monitor, ProcessHacker, PsFile, AutoRuns, TCPview, Regshot, Spymetool, Wireshark, Apate Dns, Netcat NotMyfault, Volatility, String,和Inet Sim。
这个阶段分为五个阶段。首先,一种方法是使用特定的工具对系统进行快照,以比较它们在恶意软件执行之前和之后的状况。这有助于识别系统中添加或修改的文件,并了解在恶意软件执行后发生了什么变化。
在这个阶段,需要通过模拟的通道分析机器之间的网络流量,以检测恶意软件与命令控制之间的交互。在启动不同的恶意软件功能之后,所有捕获的流量将允许分析人员对恶意软件执行更详细的分析。
添加到其他分析,它是RAM内存检查,可以做的工具波动或记忆如下图9:
所提议的方法是作为系统分析复杂和灵活的恶意软件的方法过程的基础,这些复杂和灵活的恶意软件可能需要细微的变化,因为现有的恶意代码类型众多,而且在开发过程中使用的技术可能适用于代码的特定或细粒度部分。但是,这种情况并没有改变其总体结构。