恶意代码分析实战第0章 恶意代码分析技术入门_恶意代码分析实战第0章 恶意代码分析技术入门试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 恶意代码分析实战 > 第0章 恶意代码分析技术入门

恶意代码分析实战——第0章 恶意代码分析技术入门

在我们学习恶意代码分析的具体技术之前,首先需要定义一些术语、了解一些常见的恶意代码类型,以及介绍恶意代码分析的基本方法。任何以某种方式对用户、计算机或网络造成破坏的软件,都可以被认为是恶意代码,包括计算机病毒、木马、蠕虫、内核套件、勒索软件、间谍软件,等等。尽管恶意代码以许多不同的形态出现,但分析恶意代码的技术是通用的。你选择使用哪项技术,将取决于你的目标。 0.1 恶意代码分析目标 恶意代码分析的目标,通常是为一起网络入侵事件的响应提供所需信息。因此,你的目标往往是确定到底发生了什么,并确保你能够定位出所有受感染的主机和文件。在分析可疑恶意代码时,你的目标通常是确定某一个特定的可疑二进制程序到底可以做什么,如何在网络上检测出它,以及如何衡量并消除它所带来的损害。 一旦你确定了哪些文件需要全面分析,便是时候来编写出相应的检测特征码了,以便在网络中检测出恶意代码感染的主机。你可以从本书中学到,恶意代码分析可以用来编写出基于主机的和基于网络的检测特征码。 基于主机的特征码,或称为感染迹象,用于在受感染主机上检测出恶意代码。这些迹象经常是恶意代码所创建或修改的文件,或是它们对注册表的特定修改。与反病毒软件所使用的病毒特征码不同,恶意代码感染迹象关注的是恶意代码对系统做了什么,而不是恶意代码本身的特性。这使得有时它们较反病毒软件特征码会更加有效,比如检测那些经常变化自身形态的多态性恶意代码,甚至是恶意代码已经将自身文件从硬盘中删除。 网络特征码是通过监测网络流量来检测恶意代码的。网络特征码可以在没有进行恶意代码分析时创建,但在恶意代码分析帮助下提取的特征码往往是更加有效的,可以提供更高的检测率和更少的误报。 在获得特征码之后,最终目标是要弄清楚究竟这些恶意代码是如何工作的。而这往往是高级管理人员经常提出的问题,他们希望得到一起重大入侵事件的详细解释。从本书中你所学习到的技术,将允许你确定出恶意程序的目标与功能特性。 0.2 恶意代码分析技术 在大多数情况下,进行恶意代码分析时,你将只有恶意代码的可执行文件本身,而这些文件并不是人类可读的。为了了解这些文件的意义,你需要使用各种工具和技巧,而每种只能揭露出少量的信息。因此你需要综合使用各种工具,才能看到一个全貌。 恶意代码分析有两类基本的方法:静态分析与动态分析。静态分析方法是在没有运行恶意代码时对其进行分析的技术,而动态分析方法则需要运行恶意代码,而这两类技术又进一步分为基础技术和高级技术。 0.2.1 静态分析基础技术 静态分析基础技术包括检查可执行文件但不查看具体指令的一些技术。静态分析基础技术可以确认一个文件是否是恶意的,提供有关其功能的信息,有时还会提供一些信息让你能够生成简单的网络特征码。静态分析基础技术是非常简单,同时也可以非常快速应用的,但它在针对复杂的恶意代码时很大程度上是无效的,而且它可能会错过一些重要的行为。 0.2.2 动态分析基础技术 动态分析基础技术涉及运行恶意代码并观察系统上的行为,以移除感染,产生有效的检测特征码,或者两者。然而,在你可以安全运行恶意代码之前,你必须建立一个安全环境,能够让你在避免对你的系统与网络带来风险的前提下,研究运行的恶意代码。像静态分析基础技术一样,动态分析基础技术可以被大多数没有深厚编程知识的人所使用,但是它们并非对所有恶意代码都是有效的,也会错过一些重要功能。 0.2.3 静态分析高级技术 静态分析高级技术,主要是对恶意代码内部机制的逆向工程,通过将可执行文件装载到反汇编器中,查看程序指令,来发现恶意代码到底做了什么。这些指令是被CPU执行的,所以静态分析高级技术能够告诉你程序具体做了哪些事情。然而,静态分析高级技术较基础技术相比,有着较为陡峭的学习曲线,并且需要掌握汇编语言、代码结构、Windows操作系统概念等专业知识,而所有这些你都可以在本书中学到。 0.2.4 动态分析高级技术 动态分析高级技术则使用调试器来检查一个恶意可执行程序运行时刻的内部状态。动态分析高级技术提供了从可执行文件中抽取详细信息的另一条路径。 这些技术在你尝试获取采用其他技术难以得到的信息时是最有用的。在本书中,我们会向你展示如何结合使用动态分析高级技术和静态分析高级技术,更完备地分析可疑的恶意代码。 0.3 恶意代码类型 进行恶意代码分析时,你会发现一个非常有用的经验技巧,就是一旦你能够猜测出这个恶意代码样本在尝试做些什么,然后去验证这些猜想,就会加速你的分析过程。当然,如果你知道恶意代码通常会做哪些事情,那么你就能够做出更准确的猜测。到目前为止,绝大多数的恶意代码都可以被分到如下类别中。 后门:恶意代码将自身安装到一台计算机来允许攻击者访问。后门程序通常让攻击者只需很少认证甚至无须认证,便可连接到远程计算机上,并可以在本地系统执行命令。 僵尸网络:与后门类似,也允许攻击者访问系统。但是所有被同一个僵尸网络感染的计算机将会从一台控制命令服务器接收到相同的命令。 下载器:这是一类只是用来下载其他恶意代码的恶意代码。下载器通常是在攻击者获得系统的访问时首先进行安装的。下载器程序会下载和安装其他的恶意代码。 间谍软件:这是一类从受害计算机上收集信息并发送给攻击者的恶意代码。比如:嗅探器、密码哈希采集器、键盘记录器等。这类恶意代码通常用来获取E-mail、在线网银等账号的访问信息。 启动器:用来启动其他恶意程序的恶意代码。通常情况下,启动器使用一些非传统的技术,来启动其他恶意程序,以确保其隐蔽性,或者以更高权限访问系统。 内核套件:设计用来隐藏其他恶意代码的恶意代码。内核套件通常是与其他恶意代码(如后门)组合成工具套装,来允许为攻击者提供远程访问,并且使代码很难被受害者发现。 勒索软件:设计成吓唬受感染的用户,来勒索他们购买某些东西的恶意代码。这类软件通常有一个用户界面,使得它看起来像是一个杀毒软件或其他安全程序。它会通知用户系统中存在恶意代码,而唯一除掉它们的方法只有购买他们的“软件”,而事实上,他们所卖软件的全部功能只不过是将勒索软件进行移除而已。 发送垃圾邮件的恶意代码:这类恶意代码在感染用户计算机之后,便会使用系统与网络资源来发送大量的垃圾邮件。这类恶意代码通过为攻击者出售垃圾邮件发送服务而获得收益。 蠕虫或计算机病毒:可以自我复制和感染其他计算机的恶意代码。 恶意代码还经常会跨越多个类别。例如,一个程序可能会有一个键盘记录器,来收集密码,而它可能同时有一个蠕虫组件,来通过发送邮件传播自身。所以不要太陷入根据恶意代码功能进行分类的误区。 恶意代码还可以根据攻击者的目标分成是大众性的还是针对性的两类。大众性的恶意代码,比如勒索软件,采用的是一种撒网捞鱼的方法,设计为影响到尽可能多的机器。在这两类恶意代码中,这类是最为普遍的,通常也不会太过复杂,而且是更容易被检测和防御的,因为安全软件以这类恶意代码作为防御目标。 而针对性恶意代码,比如特制后门,是针对特定组织而研制的。针对性恶意代码在网络上是比大众性恶意代码更大的安全威胁,因为它们不是广泛传播的,而你的安全产品很可能不会帮你防御它们。如果没有对针对性恶意代码的具体分析,你要保护你的网络免受这类恶意代码侵害或是移除感染,都几乎是不可能的。针对性恶意代码通常是非常复杂的,而你对它们的分析往往需要借助本书中提到的一些高级分析技巧。 0.4 恶意代码分析通用规则 在本章的最后,我们将介绍几个在进行恶意代码分析时需要牢记的通用规则。 首先,不要过于陷入细节。大多数恶意程序会是庞大而复杂的,你不可能了解每一个细节。你需要关注最关键的主要功能。当你遇到了一些困难和复杂的代码段后,你应该在进入到细节之前有一个概要性的了解。 其次,请记住对于不同的工作任务,可以使用不同的工具和方法。这里没有一种通吃的方法。每一种情况是不同的,而你将要学习的各种工具和技术将有类似的,有时甚至重叠的功能。如果你在使用一个工具的时候没有很好的运气,那么尝试另外一种。如果你在一个点上被卡住了,不要花太长时间在这个点上,尝试转移到其他问题。尝试从不同角度来分析恶意代码,或只是尝试不同的方法。 最后,请记住,恶意代码分析就像是猫抓老鼠的游戏。在新的恶意代码分析技术开发的同时,恶意代码编写者也在回应着可以挫败分析的新技术。作为一名恶意代码分析师,你如果想要取得成功,就必须能够认识、理解和战胜这些新技术,并能够快速地应对恶意代码分析艺术的新变化。

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《恶意代码分析实战》其他试读目录

• 第0章 恶意代码分析技术入门 [当前]
• 第6章 识别汇编中的C代码结构
• 第19章 shellcode分析