一、什么是恶意代码
恶意代码(Unwanted Code) 是指故意编制或设置的对网络或系统会产生威胁或潜在威胁的计算机代码。最常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马 (简称木马)、计算机蠕虫 (简称蠕虫)、后门、逻辑炸弹等等。
二、恶意代码的分类
恶意代码分类
恶意代码的分类标准主要是代码的独立性和自我复制性。
不同恶意代码的区别:
病毒侧重于破坏系统和程序的能力,木马侧重于窃取敏感信息的能力,蠕虫侧重于网络中的自我复制能力和自我传染能力
常见的恶意代码:
三、恶意代码基本技术
-
隐蔽技术
➢ 文件隐蔽:将恶意代码的文件命名为与系统的合法程序文件名相似的名称,或者干脆取而代之或者将恶意代码文件附加到合法程序文件中。
➢ 进程隐蔽:附着或替换系统进程,使恶意代码以合法服务的身份运行,从而隐蔽恶意代码。还可以通过修改进程列表程序,修改命令行参数使恶意代码进程的信息无法查询。也可以借助RootKit技术实现进程隐蔽。
➢ 网络连接隐蔽:借用现有服务的端口实现网络连接隐蔽,如使用80端口,攻击者在自己的数据包设置特殊标识,通过标识识别连接信息,未标识的www服务网络包仍转交给原服务程序外理。
➢ 编译器隐蔽:由编译器在对程序代码进行编译时植入恶意代码,从而实现恶意代码在用户程序中的隐藏和原始分发攻击。恶意代码的植入者是编译器开发人员。
➢ RootKit隐蔽:利用适当的Rootkit工具,可以很好的隐蔽自身或指定的文件、进程和网络连接等,很难被管理员发现。
➢ 通信内容隐蔽:使用加密算法对所传输的内容进行加密能够隐蔽通信内容。
➢ 传输通道隐藏:利用隐蔽通道技术,实现对传输通道的隐蔽。(隐蔽通道(Covert Channel) 是一个不受安全机制控制的、利用共享资源作为通信通路的信息流。包括有:存储隐通道和时间隐蔽通道。
-
生存技术
恶意代码的生存技术主要包括四种类型:
➢ 反跟踪技术:通过提高恶意代码分析难度,减少被发现的可能性。
➢ 加密技术:利用加密技术,提高恶意代码自身保护能力。
➢ 模糊变换技术:利用模糊变换技术,恶意代码可以躲避基于特征码的恶意代码检测系统,提高生存能力。
➢ 自动生产技术:利用自动生成技术,在已有的恶意代码的基础上自动生成特征码不断变化的新的恶意代码,从而躲避基于特征码的恶意代码检测。
-
攻击技术
➢ 进程注入技术:恶意代码程序将自身嵌入到操作系统和网络系统的服务程序中,不但实现了自身的隐藏,而且还能随着服务的加载而启动。
➢ 三线程技术:恶意代码进程同时开启三个线程其中一个为主线程,负责远程控制的工作。另外两个辅助线程分别是监视和守护线程。一旦发现主线程被删除,则立即设法恢复。
➢ 端口复用技术:重复利用系统或网络服务打开的端口(如80端口),可以欺骗防火墙,具有很强的欺骗性。
➢ 超级管理技术:恶意代码采用超级管理技术对反恶意代码软件系统进行攻击,使其无法正常运行。
➢ 端口反向连接技术:指使恶意代码的服务端(被控制端)主动连接客户端(控制端)的技术。
➢ 缓冲区溢出技术:恶意代码利用系统和网络服务的安全漏洞植入并且执行攻击代码,造成缓冲区溢出,从而获得被攻击主机的控制权。
四、恶意代码传播方式及攻击机制
➢ 利用操作系统和应用软件的漏洞进行传播
➢ 通过网站传播:在网页上挂载恶意代码,如主机浏览该网页时,恶意代码会自动下载到主机执行。
➢ 将恶意代码与正常应用软件捆绑如:主机下载正常软件运行时,恶意代码也随之自动运行。
➢ 利用移动媒介传播:如主机访问U盘和硬盘时,恶意代码可以自动执行。
➢ 利用用户之间的信任关系传播:如冒充用户发送虚假链接、图片、邮件等。
(1)侵入系统
侵入系统是恶意代码实现其恶意目的的必要条件。恶意代码入侵的途径很多,包括前面传播方式的各种途径。
(2)维持或提升权限
恶意代码的传播与破坏必须盗用用户或者进程的合法权限才能完成。
(3)隐蔽策略
为了不让系统发现恶意代码已经侵入系统,恶意代码可能会改名、删除源文件或者修改系统的安全策略来隐藏自己。
(4)潜伏
恶意代码侵入系统后,等待一定的条件并具有足够的权限时,就发作并进行破坏活动。
(5)破坏
恶意代码本质具有破坏性,其目的是造成信息丢失,泄密,破坏系统完整性等。
(6)重复
重复(1)至(6)对新的目标实施攻击过程。
七、恶意代码分析技术
通过反病毒引擎扫描识别已知的恶意代码家族和变种名。逆向分析恶意代码模块构成,内部数据结构,关键控制流程等,理解恶意代码的机理,并提取特征码用于检测。
(1)恶意代码扫描:
目的:标识已知恶意代码
使用工具:反病毒引擎
使用现成的反病毒软件来扫描待分析的样本,以确代码是否含有病毒。
(2)文件格式识别:
目的:确定攻击平台和类型,获知恶意代码所期望的运行平台
恶意代码通常是以二进制可执行文件格式存在的,其他的存在形式还包括脚本文件、带有宏指令的数据文件、压缩文件等。
(3)字符串提取分析:
目的:寻找恶意代码分析线索
有时恶意代码的作者会在自己的作品中放入某个特定的url或email地址,或者恶意代码会使用到某个特定的库文件和函数。利用字符串提取技术,可以帮助我们分析恶意代码的功能和结构。
可能获得的有用信息:恶意代码实例名、帮助或命令行选项、用户会话、后门口令、相关URL信息、Email地址、库、函数调用……
(4)加壳识别
目的:识别是否加壳,加壳类型
壳的分类:压缩壳、加密壳、伪装壳等等。
常见壳::UPX, PEPack, ASPack, PECompact
壳识别:peid, VMUnpacker
(5)代码脱壳
目的:对抗代码混淆,恢复原始代码
恶意代码的加壳会对深入的静态分析构成阻碍,因此对加壳进行识别以及代码脱壳是支持恶意代码静态分析一项关键性的技术手段。
方法:自动脱壳工具、手工脱壳 (寻找程序入口点,dump出程序,修复PE文件(导入、导出表等)
(6)反汇编
目的:二进制代码 → 汇编代码
(7)反编译:
目的:汇编代码 → 高级语言
工具:Java反编译、C/C++反编译
通过在受控环境中执行目标代码,以获取目标代码的行为及运行结果。
(1)快照比对:
目的:获取恶意代码行为结果
对原始的“干净”系统资源列表做一个快照,然后激活恶意代码并给予充分的运行时间,如5分钟,之后我们再对恶意代码运行后“脏”的系统资料列表进行快照,并对比两个快照之间的差异,从而获取恶意代码行为对系统所造成的影响。常使用的工具有:FileSnap,RegSnap,完美卸载等。
(2)系统动态行为监控(API Hooking):
目的:实时监控恶意代码动态行为轨迹
行为监控技术,Notification机制 (Win32/Linux系统本身提供的行为通知机制),API Hooking技术 (对系统调用或API调用进行劫持,监控行为)动态行为监控、文件行为监控、注册表监控、进程行为监控、完整的动态行为监控
(3)网络协议栈监控方法:
目的:分析恶意代码网络监听端口及发起网络会话
可从本地网络上的其他主机来检测承受恶意代码攻击的机器的行为,如恶意代码所开放的TCP或UDP端口,对外发起的网络连接和通信会话等。
(4)沙箱技术:
目的:在受控环境下进行完整的恶意代码动态行为监控与分析
沙箱是一项安全技术,它提供了受限制的执行环境,使得在沙箱中运行的代码不能修改用户系统,从而提供了一个用于运行不可信程序的安全环境。
标签:恶意代码,代码,系统,技术,隐蔽,那些,监控 From: https://www.cnblogs.com/o-O-oO/p/18341188