XieJava的博客

恶意代码是一种有害的计算机代码或 web 脚本,其设计目的是创建系统漏洞,并借以造成后门、安全隐患、信息和数据盗窃、以及其他对文件和计算机系统的潜在破坏。恶意代码不仅使企业和用户蒙受了巨大的经济损失,而且使国家的安全面临着严重威胁。1991年的海湾战争是美国第一次公开在实战中使用恶意代码攻击技术取得重大军事利益,从此恶意代码攻击成为信息战、网络战最重要的入侵手段之一。恶意代码问题无论从政治上、经济上、还是军事上,都成为信息安全面临的首要问题。让我们一起来认识一下恶意代码。

一、什么是恶意代码

恶意代码(Unwanted Code)是指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。最常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。

二、恶意代码的分类

1、恶意代码分类

恶意代码的分类标准主要是代码的独立性自我复制性,独立的恶意代码是指具备一个完整程序所应该具有的全部功能功能,能够独立传播、运行的恶意代码,这样的恶意代码不需要寄宿在另一个程序中。非独立恶意代码只是一段代码,必须嵌入某个完整的程序中,作为该程序的一个组成部分进行传播和运行。对于非独立恶意代码,自我复制过程就是将自身嵌入宿主程序的过程,这个过程也称为感染宿主程序的过程。对于独立恶意代码,自我复制过程就是将自身传播给其他系统的过程。不具有自我复制能力的恶意代码必须借助其他媒介进行传播。

分类:

类别 实例
具有自我复制能力的依附性恶意代码 主要代表是病毒
具有自我复制能力的独立性恶意代码 主要代表是蠕虫
不具有自我复制能力的依附性恶意代码 主要代表是后门
不具有自我复制能力的独立性恶意代码 主要代表是木马

2、不同恶意代码的区别

病毒侧重于破坏系统和程序的能力

木马侧重于窃取敏感信息的能力

蠕虫侧重于网络中的自我复制能力和自我传染能力

病毒 木马 蠕虫
存在形式 寄生 独立文件 独立文件
传染途径 通过宿主程序运行 植入目标主机 系统漏洞
传染速度 最慢
攻击目标 本地文件 文件、网络主机 存在漏洞的网络程序
触发机制 攻击者指定条件 自启动 自动攻击有漏洞的程序
防范方法 从宿主文件中清除 清除启动项和木马服务程序 更新安全补丁
对抗主体 用户,反病毒软件 用户、管理员、反病毒软件 应用程序供应商、用户和管理员

三、恶意代码基本技术

1、隐蔽技术

(1)本地隐藏

防止本地系统管理人员觉察而采取的隐蔽手段。

  • 文件隐蔽:将恶意代码的文件命名为与系统的合法程序文件名相似的名称,或者干脆取而代之,或者将恶意代码文件附加到合法程序文件中。
  • 进程隐蔽:附着或替换系统进程,使恶意代码以合法服务的身份运行,从而隐蔽恶意代码。还可以通过修改进程列表程序,修改命令行参数使恶意代码进程的信息无法查询。也可以借助RootKit 技术实现进程隐蔽。
  • 网络连接隐蔽:借用现有服务的端口实现网络连接隐蔽,如使用80端口,攻击者在自己的数据包设置特殊标识,通过标识识别连接信息,未标识的WWW 服务网络包仍转交给原服务程序处理。
  • 编译器隐蔽:由编译器在对程序代码进行编译时植入恶意代码,从而实现恶意代码在用户程序中的隐藏和原始分发攻击。恶意代码的植入者是编译器开发人员。
  • RootKit隐蔽:利用适当的Rootkit工具,可以很好的隐蔽自身或指定的文件、进程和网络连接等,很难被管理员发现。

(2)网络隐藏

网络隐藏主要是指通信内容和传输通道的隐藏。

  • 通信内容隐蔽:使用加密算法对所传输的内容进行加密能够隐蔽通信内容。
  • 传输通道隐藏:利用隐蔽通道技术,实现对传输通道的隐蔽。(隐蔽通道(Covert Channel)是一个不受安全机制控制的、利用共享资源作为通信通路的信息流。包括有:存储隐蔽通道和时间隐蔽通道。)

2、生存技术

恶意代码的生存技术主要包括四种类型:

  • 反跟踪技术:通过提高恶意代码分析难度,减少被发现的可能性
  • 加密技术:利用加密技术,提高恶意代码自身保护能力 模糊变换技术:利用模糊变换技术,恶意代码可以躲避基于特征码的恶意代码检测系统,提高生存能力
  • 自动生产技术:利用自动生成技术,在已有的恶意代码的基础上自动生成特征码不断变化的新的恶意代码,从而躲避基于特征码的恶意代码检测。

3、攻击技术

  • 进程注入技术:恶意代码程序将自身嵌入到操作系统和网络系统的服务程序中,不但实现了自身的隐藏,而且还能随着服务的加载而启动。
  • 三线程技术:恶意代码进程同时开启三个线程,其中一个为主线程,负责远程控制的工作。另外两个辅助线程分别是监视和守护线程。一旦发现主线程被删除,则立即设法恢复。
  • 端口复用技术:重复利用系统或网络服务打开的端口(如80端口),可以欺骗防火墙,具有很强的欺骗性。
  • 超级管理技术:恶意代码采用超级管理技术对反恶意代码软件系统进行攻击,使其无法正常运行。
  • 端口反向连接技术:指使恶意代码的服务端(被控制端)主动连接客户端(控制端)的技术。
  • 缓冲区溢出技术:恶意代码利用系统和网络服务的安全漏洞植入并且执行攻击代码,造成缓冲区溢出,从而获得被攻击主机的控制权。

三、恶意代码传播方式及防范手段

1、传播方式

传播途径

  • 利用操作系统和应用软件的漏洞进行传播
  • 通过网站传播 在网页上挂载恶意代码 如:主机流览该网页时,恶意代码会自动下载到主机执行。 将恶意代码与正常应用软件捆绑 如:主机下载正常软件运行时,恶意代码也随之自动运行。
  • 利用移动媒介传播 如:主机访问U盘和硬盘时,恶意代码可以自动执行。
  • 利用用户之间的信任关系传播 如:冒充用户发送虚假链接、图片、邮件等。

总的来说,恶意代码的传播是因为用户的软件出现了漏洞、操作不慎或者是两者的结合造成。

(1)病毒。病毒具备有自我复制能力,一般嵌入主机的程序中。当被感染文件执行操作,如,用户打开一个可执行文件时,病毒就会自我繁殖。病毒一般都具有破坏性。 (2)木马。这种程序从表面上看没有危害,但实际上却隐含着恶意的意图和破坏的作用。一些木马程序会通过覆盖系统中已经存在的文件的方式存在于系统之中;另外有的还会以软件的形式出现,因为它一般是以一个正常的应用程序身份在系统中运行的,所以这种程序通常不容易被发现。 (3)蠕虫。蠕虫是一种可以自我复制的完全独立的程序,它的传播不需要借助被感染主机中的程序和用户的操作,而是通过系统存在的漏洞和设置的不安全性来进行入侵,如通过共享的设置来侵入。蠕虫可以自动创建与它的功能完全相同的副本,并能在无人干涉的情况下自动运行,大量地复制占用计算机的空间,使计算机的运行缓慢甚至瘫痪。

2、攻击机制

恶意代码的行为表现各异,破坏程度千差万别,但基本作用机制大体相同,其整个作用过程分为6个部分。 (1)侵入系统。侵入系统是而已代码实现其恶意目的的必要条件。恶意代码入侵的途径很多,包括前面传播方式的各种途径。如:从互联网下载的程序本身就可能含有而已代码;接收已感染恶意代码的电子邮件;从光盘或U盘往系统上安装软件;黑客或者攻击者故意将恶意代码植入系统等。 (2)维持或提升权限。恶意代码的传播与破坏必须盗用用户或者进程的合法权限才能完成。 (3)隐蔽策略。为了不让系统发现恶意代码已经侵入系统,恶意代码可能会改名、删除源文件或者修改系统的安全策略来隐藏自己。 (4)潜伏。恶意代码侵入系统后,等待一定的条件,并具有足够的权限时,就发作并进行破坏活动。 (5)破坏。恶意代码本质具有破坏性,其目的是造成信息丢失,泄密,破坏系统完整性等。 (6)重复(1)至(5)对新的目标实施攻击过程。 恶意代码的攻击模型

3、防范手段

通用恶意代码检测技术包括静态和动态检测技术:

  • 基于特征的扫描技术 建立恶意代码的特征文件,在扫描时根据特征进行匹配查找
  • 校验和法 对需要监控的文件生成校验,周期性的生成新校验和并与原始值比较

  • 沙箱技术 根据程序需要的资源和拥有的权限建立运行沙箱,可以安全地检测和分析程序行为

  • 基于蜜罐的检测技术 将主机伪装为运行着脆弱的服务或系统,同时安装强大的监测系统。

其中基于特征的扫描技术和校验和法是静态检测技术,沙箱技术和基于蜜罐的检测技术属于动态检测技术。

四、常见恶意代码

常见的恶意代码

参考文献: 《网络攻防技术与实战 深入理解信息安全防护体系》 郭帆 《恶意代码及其防御》知乎 Drifter 《恶意代码》MBA智库百科


博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!