恶意代码与反病毒的基本概念
恶意代码的基本概念及危害
只要是运行用户预期之外的目的的代码都算恶意代码
以目的划分类型
- 木马(控制、信息获取)
- 病毒(破坏)
- 其他(捆绑、广告等其他经济利益)
蠕虫
蠕虫其实并不算某一种恶意代码,它算是一种手段,只要能够用来传播的手段,都可以称为蠕虫。
恶意代码的基本逻辑
通过代码中的内容,去修改计算机的环境从而达到攻击者的目的。
如何分析代码?从恶意代码的目的开始分析,去找修改的计算机的环境(注册表,开机启动项),在去寻找可能的内容(API函数)。
比如说达到开机启动的目的,那么我们寻找的环境就可以是注册表、服务、计划任务。去寻找的恶意内容就可能是API函数,命令行等。
恶意代码的要素:
- 代码本身
- 运行环境
- 目的
恶意代码的危害:
计算机的控制权限:
交互的接口———-行为的产生————影响
信息的获取:
文件权限的设置————-文件内容的阅读环境
破坏:
- 利用漏洞——-破坏计算机当前内存环境
- 文件加密——-硬盘数据的不可读
- 硬件————-配置的修改超出硬件的可承受范围或者硬件不可用
反病毒的发展与影响
反病毒的概念:
规定可能是用户预期之外的行为,然后以此为依据通过行为观察或者代码观察的方式做及时处理
发展:
1. 从专杀到通杀
由于早期的恶意代码数量少,种类少,并且由于当时的编码环境大部分都是汇编写的,所以变化程度不大。所以早期的反病毒工具大部分都是专杀,也就是设计之初就是完全针对某一类恶意代码实现的。
随着编程工具的日益发展,编程语言的不断普及,恶意代码的数量和种类都大幅度增加,而且在与专杀工具的对抗中发现到变化越多越不容易被杀,由此各种混淆、加壳、加花等代码变化的方式出现。反病毒工具也意识到专杀已经不现实了,所以推出了通杀的方式。
2.从硬盘到内存
随着操作系统功能不断完善,针对于内存的使用越来越方便,对于各种api函数的管理也越来越简单,所以早期的反病毒工具仅仅是识别目标的二进制代码一直到现在的可以识别内存这个变化让反病毒工具有了更高的准确度。
3.从代码到行为
代码—–分析行为
行为触发———判断代码
早期的反病毒工具基本都只是做到对于目标的代码识别,对于内存的识别也仅仅停留在代码层面。但是 随着代码的变化越来越多,反病毒工具开发人员发现如果只是从代码的角度出发已经不够识别足够多的 恶意代码了,所以逐渐地出现了以行为判断为依据的反病毒工具。
行为的识别也有一段发展的过程。最开始的反病毒工具通常是比较行为触发前的内容和行为触发后的内 容之间作比较来识别的,但是这种方式是后知后觉,并且代码效率并不高,所以慢慢地发展出了挂钩函 数的方式,也就是统计哪些函数可能会触发哪些行为,哪些行为可能是用户预期之外的,然后对这些函 数在调用的过程中去做监控。
4.从本地云私有到云端共享
再以病毒库匹配机制的反病毒工具中,由于早期的云技术还没有普及,所以早期的反病毒工具的病毒库都是以本地方式保存在计算机中,但是这样就不能保护到自己的知识产权,并且会让整个工具变得非常臃肿。随着云技术的发展,越来越多的反病毒工具将自己的病毒库保存在自己的公开或者私有的云端,这样既将病毒库的公开权力掌握在自己手上,也能够大大简化反病毒工具本身的结构从而提高工作效率。
当然随着反病毒技术的发展,一些组织或者机构愿意公开自己的一些规则并且规定了一些格式,方便相关从业人员更好地学习。
5.从正则匹配到机器学习
人们发现传统的正则匹配的方式也不太能够完全覆盖所有的恶意代码的情况,并且恶意代码的编程风格和运行逻辑也越来越多样。随着机器学习的不断发展与应用,越来越多的反病毒工具也开始使用基于机器学习的方法去识别恶意代码。
影响:
1.对于反病毒工具本身的影响:
自定义的行为:
随着用户对计算机的正常应用要求越来越多样化,为了保证反病毒工具在这样的工作环境中能正常使用,反病毒工具也推出了很多可自定义的规则选项以及白名单机制。
立体化及宏观层面的应用:
将反病毒作为其中一种功能添加到一些综合性的安全产品中实现立体化也就是多种权限控制结合,多网段多机器的综合使用也是现在的常用功能。
2.对于操作系统的影响
更多的状态监控支持:
更多的监控,amsl
的应用,内存的读写权限优化等功能的完善也为反病毒工作提供了更多的便利。
其他的保护手段:
漏洞的修复,tpm
,文件卷影等事件后处理手段也不断发展,为减少恶意代码损失起到了很大作用。