恶意代码定义与分类
恶意代码的英文是 Malicious Code,它是一种违背目标安全策略的程序代码,会造成目标系统信息泄露、资源滥用,破坏系统的完整性及可用性。它能够经过存储介质或网络进行传播,从一台计算机系统传到另外一台计算机系统,未经授权访问或破坏计算机系统。通常许多人认为“病毒”代表了所有感染计算机并造成破坏的程序。事实上,“恶意代码”的说法更为通用,病毒只是一类恶意代码而已。
恶意代码的种类:
根据恶意代码的传播特性,可以将恶意代码分为两大类,如图 所示。
恶意代码攻击模型
恶意代码的行为不尽相同,破坏程度也各不相同linux虚拟机,但它们的作用机制基本相同。其作用过程可大概分为以下 6 个步骤:
侵入系统:恶意代码实现其恶意目的的第一步就是要侵入系统。恶意代码入侵有许多途径,如:从互联网下载的程序,其自身也许就带有恶意代码;接收了已被恶意感染的电子邮件;通过光盘或软盘在系统上安装的软件;攻击者故意植入系统的恶意代码等。维持或提升已有的权限:恶意代码的传播与破坏需要建立在盗用用户或者进程的合法权限的基础之上。隐蔽:为了隐蔽已经侵入系统的恶意代码linux find,可能会采取对恶意代码改名、删除源文件或者修改系统的安全策略等方式。潜伏:恶意代码侵入系统后,在具有足够的权限并满足某些条件时就会发作,同时进行破坏活动。破坏:恶意代码具有破坏性的本质,为的是造成信息丢失、泄密,系统完整性被破坏等。重复前面 5 步队新的目标实施攻击过程。
恶意代码生存技术
1. 反跟踪技术
1) 反动态跟踪技术
2) 反静态分析技术
2. 加密技术
加密技术是恶意代码进行自我保护的手段之一,再配合反跟踪技术的使用,让分析者不能正常调试和阅读恶意代码,无法获得恶意代码的工作原理,自然也不能抽取特征串。从加密的内容上划分,加密手段有三种,即信息加密、数据加密和程序代码加密。
3. 模糊变换技术
恶意代码每感染一个客体对象时都会利用模糊变换技术使潜入宿主程序的代码不尽相同。尽管是同一种恶意代码,但仍会具有多个不同样本,几乎不存在稳定的代码,只采用基于特征的检测工具一般无法有效识别它们。随着这类恶意代码的增多,不但使病毒检测和防御软件的编写难度加大,还会使反病毒软件的误报率增加。
4. 自动生产技术
普通病毒能够利用“多态性发生器”编译成具有多态性的病毒。多态变换引擎能够让程序代码本身产生改变,但却可以保持原有功能。
5. 变形技术
在恶意代码的查杀过程中,多数杀毒厂商通过提取恶意代码特征值的方式对恶意代码进行分辨。这种基于特征码的病毒查杀技术的致命缺点是需要一个特征代码库,同时这个库中的代码要具有固定性。病毒设计者利用这一漏洞,设计出具体同一功能不同特征码的恶意代码。这种变换恶意代码特征码的技术称为变形技术。
6. 三线程技术
恶意代码中应用三线程技术是为了防止恶意代码被外部操作停止运行。三线程技术的工作原理是一个恶意代码进程同时开启了三个线程,其中一个为负责远程控制工作的主线程,另外两个为用来监视线程负责检查恶意代码程序是否被删除或被停止自启动的监视线程和守护线程。注入其他可执行文件内的守护线程,同步于恶意代码进程。只要进程被停止,它就会重新启动该进程,同时向主线程提供必要的数据,这样就使得恶意代码可以持续运行。
“中国黑客”就是采用这种技术的恶意代码。
7. 进程注入技术
在系统启动时操作系统的系统服务和网络服务一般能够自动加载。恶意代码程序为了实现隐藏和启动的目的,把自身嵌入与这些服务有关的进程中。这类恶意代码只需要安装一次,就能被服务加载到系统中运行,并且可以一直处于活跃状态。
8. 通信隐藏技术
9. 内核级隐藏技术
1)LKM 隐藏
LKM 是可加载内核模块linux 防恶意代码软件,用来扩展 Linux 的内核功能。LKM 能够在不用重新编译内核的情况下把动态加裁到内存中。基于这个优点,LKM 技术经常使用在系统设备的驱动程序和Rootkit 中。LKM Rootkit 通过系统提供的接口加载到内核空间,将恶意程序转化成内核的某一部分,再通过 hook 系统调用的方式实现隐藏功能。
2)内存映射隐藏
内存映射是指由一个文件到一块内存的映射。内存映射可以将硬盘上的内容映射至内存中,用户可以通过内存指令读写文件。使用内存映射避免了多次调用 I/O 操作的行为,减少了不必要的资源浪费。
恶意代码攻击技术
1. 进程注入技术
系统服务和网络服务在操作系统中,当系统启动时被自动加载。进程注入技术就是将这些与服务相关的嵌入了恶意代码程序的可执行代码作为载体,实现自身隐藏和启动的目的。这类恶意代码只需要安装一次,就能被服务加载到系统中运行,并且可以一直处于活跃状态。
2. 超级管理技术
部分恶意代码能够攻击反恶意代码软件。恶意代码采用超级管理技术对反恶意代码软件系统进行拒绝服务攻击,阻碍反恶意代码软件的正常运行。例如,“广外女生”是一个国产特洛伊木马,对“金山毒霸”和“天网防火墙”采用超级管理技术进行拒绝服务攻击。
3. 端口反向连接技术
防火墙对于外网进入内部的数据流有严格的访问控制策略,但对于从内到外的数据并没有严格控制。指令恶意代码使用端口反向连接技术使攻击的服务端(被控制端)主动连接客户端(控制端)端口。最早实现这项技术的木马程序是国外的“Boinet”,它可以通过 ICO、IRC、HTTP 和反向主动连接这 4 种方式联系客户端。“网络神偷”是我国最早实现端口反向连接技术的恶意代码。“灰鸽子”则是这项技术的集大成者,它内置 FTP、域名、服务端主动连接这 3 种服务端在线通知功能。
4. 缓冲区溢出攻击技术
恶意代码利用系统和网络服务的安全漏洞植入并且执行政击代码,攻击代码以一定的权限运行有缓冲区溢出漏洞的程序来获得被攻击主机的控制权。缓冲区溢出攻击成为恶意代码从被动式传播转为主动式传播的主要途径之一。例如,“红色代码”利用 IIS Server 上Indexing
恶意代码分析技术
恶意代码的分析方法
1. 静态分析方法
1)反恶意代码软件的检测和分析。反恶意代码软件检测恶意代码的方法有特征代码法、校验和法、行为监测法、软件模拟法等。根据恶意代码的信息去搜寻更多的资料,若该恶意代码的分析数据已被反恶意代码软件收录,那就可以直接利用它们的分析结果。
2)字符串分析。字符串分析的目的是寻找文件中使用的 ASCII 或其他方法编码的连续字符串。一些有用的信息可以通过在恶意代码样本中搜寻字符串得到,比如:①恶意代码的名字;②帮助和行选项;③用户对话框,可以通过它分析恶意代码的目的;④后门密码;⑤恶意代码相关的网址;⑥恶意代码作者或者攻击者的 E-mail 地址;⑦恶意代码用到的库,函数调用,以及其他的可执行文件;⑧其他的有用的信息。
3)分析。恶意代码如果是用 JS、Perl 或者 等脚本语言编写的,那么恶意代码本身就可能带有源代码。通过文本编辑器将脚本打开查看源代码。脚本分析能帮助分析者用较短时间识别出大量流行的脚本类型,表 14-1 列出了常用脚本语言。
4)静态反编译分析。对于携带解释器的恶意代码可以采用反编译工具查看源代码。源代码在编译时,代码会被编译器优化,组成部分被重写,使得程序更适合解释和执行,上述面向计算机优化的特性,使得编译的代码不适合逆向编译。因此,逆向编译是将对机器优化的代码重新转化成源代码,这使得程序结构和流程分离开来,同时变量的名字由机器自动生成,这使得逆向编译的代码有着较差的可读性。
5)静态反汇编分析。有线性遍历和递归遍历两种方法。GNU 程序 objdump 和一些链接优化工具使用线性遍历算法从输入程序的入口点开始反汇编,简单地遍历程序的整个代码区,反汇编它所遇到的每一条指令。虽然方法简单linux 防恶意代码软件,但存在不能够处理嵌入指令流中的数据的问题,如跳转表。递归遍历算法试图用反汇编出来的控制流指令来指导反汇编过程,以此解决上面线性遍历所存在的问题。
2. 动态分析方法
1)文件监测。恶意代码在传播和破坏的过程中需要依赖读写文件系统,但存在极少数恶意代码只是单纯依赖内存却没有与文件系统进行交互。恶意代码执行后,在目标主机上可能读写各文件,修改程序,添加文件,甚至把代码嵌入其他文件,因此对文件系统必须进行监测。
2)进程监测。恶意代码要入侵甚至传播,必须有新的进程生成或盗用系统进程的合法权限,主机上所有被植入进程的细节都能为分析恶意代码提供重要参考信息。
3)网络活动监测。恶意代码经历了从早期的单一传染形式到依赖网络传染的多种传染方式的变化,因此分析恶意代码还要监测恶意代码的网络行为
4)注册表监测。Windows 操作系统的注册表是个包含了操作系统和大多数应用程序的配置的层次数据库,恶意代码运行时一般要改变 Windows 操作系统的配置来改变Windows 操作系统的行为,实现恶意代码自身的目的。
5)动态反汇编分析。动态反汇编指在恶意代码的执行过程中对其进行监测和分析。其基本思想是将恶意代码运行的控制权交给动态调试工具,该监测过程从代码的入口点处开始,控制权在程序代码与调试工具之间来回传递,直到程序执行完为止。
恶意代码防范策略
恶意代码防御成为用户、网管的日常安全工作。要做好恶意代码的防范,一方面组织管理上必须加强恶意代码的安全防范意识。因为,恶意代码具有隐蔽性、潜伏性和传染性,用户在使用计算机过程中可能不知不觉地将恶意代码引入所使用的计算机中,所以防范恶意代码应从安全意识上着手,明确安全责任、义务和注意事项。另一方面,通过技术手段来实现恶意代码防御。防范恶意代码的总体框架如图 所示。
学习参考资料:
信息安全工程师教程(第二版)
建群网培信息安全工程师系列视频教程
信息安全工程师5天修炼
本文原创地址://gulass.cn/eydmdyyfldgb.html编辑:刘遄,审核员:暂无