【恶意代码】那些事

news/2025/1/16 0:15:33/文章来源:https://www.cnblogs.com/o-O-oO/p/18341188

一、什么是恶意代码

恶意代码(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)沙箱技术:

目的:在受控环境下进行完整的恶意代码动态行为监控与分析

沙箱是一项安全技术,它提供了受限制的执行环境,使得在沙箱中运行的代码不能修改用户系统,从而提供了一个用于运行不可信程序的安全环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/777373.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重学 KMP 小记

重学 KMP 小记 前言 KMP 这个东西赛时用到的几率很小(虽然圣人说概率不小、也不是很大),但是如果一旦考字符串类的题又极可能考匹配问题。当时掌握得也是一知半解,所以现在来重学来了。 情境引入 现实中我们会遇到类似的问题:给你一篇报道,让你找一找这篇报道中有没有出现…

Manhattan Triangle

纪念一下代码打得太慢了导致比赛结束3分钟才做出来的E题 我的做法: 考虑确定枚举三角形的一个点。最开始尝试枚举\(x\)最大的点,但是后面发现不太好讨论,于是尝试枚举\(x\)在中间的点,此时发现由于曼哈顿是三角形不可能是钝角三角形,剩下两个点要么同时在中间点的上方,要…

JAVA游戏源码:天天酷跑

学习java朋友们,福利来了,今天小编给大家带来了一款天天酷跑源码。注意:此源码仅供学习使用!! 源码搭建和讲解 启动main入口://************************************************************************ // ************完整源码移步: gitee典康姆/hadluo/java_game01…

从零开始的JAVAday29~day35

后续语法if()语法 若满足()中的语法,则执行后面的语句。循环for(a;b;c)和while(c)语法 for(a;c;b)语法意思为在循环前进行a语句每次循环结束后进行b语法,若满足c语句则再次循环。whlie(c)循环若满足c条件则循环。

Unittest框架的介绍及使用

介绍 基本概念 ​ unittest是Python自带的一个单元测试框架, 它可以做单元测试, 也能用于编写和运行重复的测试工作。它给自动化测试用例开发和执行提供了丰富的断言方法, 判断测试用例是否通过, 并最终生成测试结果. 四大组件test case:就是我们的测试用例,unittest中提供了…

Docker常用容器安装

docker安装与卸载以及使用docker安装常用容器Docker安装 安装docker(centos) docker引擎安装官网地址:Install Docker Engine on CentOS | Docker Documentation 手动安装 # 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ doc…

探究spring中如何如何从ioc中拿到对象,ioc中都存了什么

引言ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");Monster monster01 = (Monster)ioc.getBean("monster01");这是我们接触spring时接触的第一行代码,我们只是习惯性的通过ioc.getBean获取我们需要的对象,但是你有没有想过…

服务器性能分析软件「 WGCLOUD 」完整功能介绍

WGCLOUD是一款国产开源的服务器状态性能监测软件,免费高效,轻量实用,部署简单,上手操作容易,颜值在线,更好的是它具有极低的资源占用WGCLOUD官网下载地址:www.wgstart.com WGCLOUD可以支持哪些操作平台,如下: Linux:Debian,RedHat,CentOS,Ubuntu,Fedora,SUSE,麒…

Day13

逻辑运算符: &&都真为真 ||一真为真 !真为假假为真 短路运算:若两个运算中前一个为假,则不会执行后一个运算 二进制运算 A&B 相同为本,不同为0 A/B 相同为本,不同为1 A^B 相同为0 不同为1 ~B取反 位运算效率最高 << 左移*2 >>右…

Linux 防火墙系统

iptables 和 nftables iptables 是 Linux 中最常用的防火墙工具,它通过 Linux 内核中的 netfilter 模块提供的 Hook 来管理网络数据包的处理和转发。 nftables 是 iptables 的代替品,在 Debian 10、Ubuntu 22、CentOS 8 中已经由 iptables 切换到了 nftables。 iptables 的操…

[计算机网络]HTTPS

HTTP 与 HTTPS 有哪些区别? HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。 HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。…