本文为笔者从零基础学习系统安全相关内容的笔记,如果您对系统安全、逆向分析等内容感兴趣或者想要了解一些内容,欢迎关注。本系列文章将会随着笔者在未来三年的读研过程中持续更新,由于笔者现阶段还处于初学阶段,不可避免参照复现各类书籍内容,如书籍作者认为侵权请告知,笔者将立刻删除。强调本系列所有内容仅作为学习研究使用,作者对此文章中的代码造成的任何后果不负法律责任。

前文链接
[系统安全] PE文件格式详解1
[系统安全] PE文件格式详解2
[系统安全] Windbg Preview调试记录
[系统安全]《黑客免杀攻防》MFC逆向基础实战
[系统安全] windows下C++编写第一个加壳程序
[系统安全] PE文件格式分析实战基础—分析helloworld文件
[系统安全]《黑客免杀攻防》逆向基础之经典脱壳基础


本篇文章为《黑客免杀攻防》笔记,如书籍作者认为侵权请告知,笔者将立刻删除。除了rootkit部分的两章没有看,其他部分赖赖叭叭地过了一遍,也学到了一些知识,最后总结一下几乎贯穿全书的反病毒技术和免杀技术的经典角度和原理。


文章目录

  • 1 反病毒技术原理
    • 1.1 基于文件扫描的反病毒技术
    • 1.2 基于内存扫描的反病毒技术
    • 1.3 基于行为监控的反病毒技术
    • 1.4 启发式扫描原理
    • 1.5 云查杀原理
  • 2 免杀技术原理
    • 2.1 改特征码免杀原理
    • 2.2 花指令免杀原理
    • 2.3 加壳免杀原理
    • 2.4 修改PE文件免杀
    • 2.5 内存免杀原理
    • 2.6 行为免杀原理
    • 2.7 rootkit免杀

1 反病毒技术原理

反病毒技术主要从两个方面切入,一个是对静态文件的特征码分析,当然这个特征码包含各种类型的特征码,比如在磁盘上的特征码或者文件要执行前映射到内存后的特征码;另一个是对动态文件的行为分析。

1.1 基于文件扫描的反病毒技术

说白了就是上面提到的在文件中检索病毒特征序列

1.1.1 字符串扫描技术
一般使用从病毒中提取出来的具有特征的一段字符来检测病毒,这些字符在一般程序中是很少出现的。例如格式化所有硬盘的命令字符串。

1.1.2 通配符扫描技术
在字符串的基础上加上类似正则的匹配符号来检测。

1.1.3 近似精确识别
使用多套特征码,该方法采用两个或更多个字符串集来检测每个病毒,如果扫描器检测到其中一个特征符合,那么就会警告发现变种,但并不会执行下一步操作(例如清除病毒体或删除文件)。如果多个特征码全部符合,则报警发现病毒,并执行下一步操作。

1.1.4 校验和
利用了白名单的思路,先让每一个无毒的文件生成一个校验和,等待下次扫描时进行简单的校验和对比。如果校验和有所变化,再做进一步的扫描,否则就说明这个文件没有被感染,这样有利于提升扫描器的效率。

1.1.5 windows下对PE文件进行分析
可疑的区段头部属性
可疑的区段头部属性分为很多种类型,最为典型的就是代码段具有可写属性,数据段具有可执行属性。一些恶意程序如果要完成某些特定的恶意行为就会制造出这些特征来,例如蠕虫在感染一个文件时只有三种方案,一是增加一个新的可执行区段,另一种是在现有的代码段中插入恶意代码,最后一种方法就是将恶意代码分别穿插到不同的区段中,并修改相应区段的属性。
可疑的代码节名称
一个微软没有定义名称的节名肯定是可疑的。
多个PE头部
可执行文件包含需要释放的dll或sys,也可能是一个正常文件被捆绑了木马。一般情况下将其中包含的可执行文件加密一下就可以避免。
导入表项存在可疑导入
导入表导入方式可疑,例如从kernel32.dll中基于序号导入或者使用偏移调用api。
导入表导入可疑函数,比如GetProceAddress函数。
最后一个区段为代码段
正常程序的代码段通常位于首位,后面的区段在绝大多数情况下都是没有可执行权限的。
但有些程序的最后一个区段为代码段,造成最后一个区段为代码段的原因有很多,但是几乎都是由免杀行为或加壳行为所导致的。例如黑客们在修改特征码时为了方便起见往往会将含有特征码的代码块变形并移动到非代码区段中,有的甚至干脆在后面加一个可执行的区段用以保存类似的数据。

1.2 基于内存扫描的反病毒技术

对于加壳的恶意代码,其在硬盘上和运行前映射到内存上的代码有很大的差别,如果只对恶意代码进行硬盘存储时的检测,那就很有可能被壳蒙混过关。所以会在程序映射到内存后再进行以此特征码匹配,这套特征码稍有不同于再硬盘上存储的静态文件的特征码。

1.3 基于行为监控的反病毒技术

基于行为监控的反病毒技术一般需要与虚拟机、主动防御等技术配合工作。
其原理是主要针对病毒木马行为进行分析比对,如果某些程序在执行后会进行一些非正规的、可疑的操作(行为特征),那么即便这是一个新生病毒,也会被拥有这种技术的反病毒产品拦截。会使用到沙箱技术。

1.4 启发式扫描原理

通过本地各种简单手段进行特征匹配,并进行权值计算,得出恶意得分,高于一定阈值判为恶意,是应对未知病毒的一种有效手段。

1.5 云查杀原理

把每个与云端联网的客户机看作一个监测点,当整个网络中某一个客户机检测出恶意程序时,云端向所有客户机发送通知使得短时间内让所有客户机都具有免疫能力。云查杀要和本地查杀紧密结合起来才能有好的效果。


2 免杀技术原理

免杀的最基本思想就是破坏特征,这个特征有可能是特征码,有可能是行为特征,只要破坏了病毒与木马所固有的特征,并保证其原有功能没有改变,就能完成了一次免杀。


注意修改特征码之前要先定位特征码。

所以杀毒软件也会在骇客定位特征码这个角度做一些工作。也就是反特征码定位,比如以下两种操作。

释放干扰码
隐藏真正的特征码并随机释放假的特征码,从而迷惑正在执行特征码定位的骇客的定位方向,让其找不到真正的特征码。

定位行为判定
骇客定位特征码时会有一些特征,比如扫描的文件数量很多,文件类型都一样,并且扫描的文件大小都基本一样,以此分辨出当前反病毒软件是否正遭受特征码定位攻击,并采取以后的应对措施。


2.1 改特征码免杀原理

所谓的特征码,我们可以将其理解为反病毒软件的黑名单。
无法将木马从反病毒软件的黑名单中删除,所以他们要让病毒改头换面!
修改字符串:大小写,00填充NOP汇编,加1减1汇编,多次跳转汇编,对顺序无关紧要的汇编上下文调换,等值替换je=jz,add eax,1=sub eax,-1。

2.2 花指令免杀原理

花指令其实就是一段毫无意义的指令,也可以称之为垃圾指令。花指令是否存在对程序的执行结果没有影响,所以它存在的唯一目的就是阻止反汇编程序,或对反汇编设置障碍。

2.3 加壳免杀原理

将原来能被杀毒软件检测到的文件进行加密处理,以此来达到免杀的效果。

2.4 修改PE文件免杀

修改入口点免杀为例。
将入口点的一小段汇编指令复制到空白处,并在最后加上跳转到复制的指令段的下一条指令的地址,
首先,如果将入口点的内容删除,并将其位移到其他地方,在物理硬盘中保存的文件的内容肯定也会发生相应变化,如果反病毒软件恰好将特征码定位在入口点附近,无疑就会收到非常理想的效果。
其次,这种方法可以和后面将要涉及的花指令很好地配合,可以使花指令的免杀效果更为明显。
另外,修改入口点也会对反病毒软件的内存特征码扫描器产生一定的干扰。

2.5 内存免杀原理

反病毒软件可以对加载到内存的文件进行进行特征检查,其原理和对存储在硬盘上的文件检查基本一致,只不过特征码有所不同。所以这里的免杀可以从绕过两层特征码入手。

2.6 行为免杀原理

比如有些一些恶意软件会先判断自己是否在杀毒软件构建的沙箱虚拟环境中,如果在虚拟环境中就表现出正常的行为,如果是在真实的主机中才会做出真实的恶意行为。

2.7 rootkit免杀

rootkit定义为一组在恶意软件中获得root访问权限、控制目标操作系统和其底层硬件的技术编码。通过这种控制,恶意软件能够在系统中隐藏其存在。严格地说,rootkit不是恶意软件,而是恶意软件用来发挥自身优势的一种技术。

[系统安全] 反病毒与免杀原理概论相关推荐

  1. 【黑客免杀攻防】读书笔记1 - 初级免杀基础理论(反病毒软件特征码提取介绍、免杀原理、壳)...

    在52pojie发表<xxxx>病毒查杀的帖子后,感谢论坛里的会员GleamJ牛不但指出我文章后所添加服务名字符串作为特征码方式的不足,还分享了他工作中4种提取特征码的方法.让我更加觉得要 ...

  2. 《黑客免杀攻防学习笔记》——反病毒软件与免杀原理

    1.反病毒软件原理与反病毒技术介绍 1.1反病毒软件工作原理 反病毒软件一般由扫描器.病毒库与虚拟机组成,并由主程序将他们整合在一起.扫描器用于查杀病毒,大多数反病毒软件基本都由多个扫描器组成,病毒库 ...

  3. 20145221高其_免杀原理与实践

    20145221高其_免杀原理与实践 免杀 概述 免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字翻 ...

  4. Atitit.木马 病毒 免杀 技术 360免杀 杀毒软件免杀 原理与原则 attilax 总结...

    Atitit.木马 病毒 免杀 技术 360免杀 杀毒软件免杀 原理与原则 attilax 总结 1. ,免杀技术的用途2 1.1. 病毒木马的编写2 1.2. 软件保护所用的加密产品(比如壳)中,有 ...

  5. 自己收集的一些逆向工程的入门概念——壳、注册机、算法求逆、反病毒、免杀

    一.软件逆向工程 大多数时候都会被简称为逆向工程(Reverse engineering)或直接将其称为逆向(Reverse).软件逆向工程的基本思路是将二进制代码按照一定格式进行正确有效的反汇编,并 ...

  6. 20145326蔡馨熠《网络对抗》——免杀原理与实践

    20145326蔡馨熠<网络对抗>--免杀原理与实践 报告内容 1.理解免杀技术原理. 免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti- ...

  7. 20145308 《网络对抗》 MAL_免杀原理及实践 学习总结

    20145308 <网络对抗> MAL_免杀原理及实践 学习总结 实践内容 (1)理解免杀技术原理 (2)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免 ...

  8. 20155222卢梓杰 实验三 免杀原理与实践

    实验三 免杀原理与实践 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧 实验步骤如下 1.先对实验二中生 ...

  9. 2018-2019-2 网络对抗技术 20165301 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165301 Exp3 免杀原理与实践 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用 ...

  10. 20145317 《网络对抗技术》免杀原理与实践

    20145317 <网络对抗技术>免杀原理与实践 免杀技术 技术分类 改变特征码 加壳:使用专业的加壳软件,掩盖特征码: 使用encode等进行编码,进行异或.+1.-1等类似操作改变特征 ...

最新文章

  1. python下载安装教程3.8.1-Python3.8.1下载
  2. 0基础学python编程难吗-对于0基础的人,直接学 Python 编程合适吗?
  3. 算法工程师_浅谈算法工程师的职业定位与发展
  4. 重新抛出异常与异常链
  5. raspberry pi_在Raspberry Pi上使用TensorFlow进行对象检测
  6. 模拟网页行为之实践四
  7. MySQL之一篇读懂binlog redolog undolog
  8. JAVA反射-面试题
  9. 360路由器v2刷第三方固件_路由器不拆闪存,编程器刷机技巧,恢复出厂固件办法...
  10. android6.0原生brower_android原生browser分析(二)--界面篇
  11. js基础代码大全_关于前端业务代码的一些见解
  12. Matlab求矩阵均值
  13. 服务器系统启用flash,基础设置:Windows Server 2012及2012R2 启用IE Flash
  14. java 因数分解_Java--分解质因数
  15. 双非计算机硕士在郑州,双非院校的研究生有必要读吗?答案非常现实!
  16. 词性标记:VA,VC,VE,VV等
  17. Jquery引用在线CDN公共资源库
  18. 已会背诵英文文章 How To Boost Your Confidence
  19. graphpad画生存曲线怎么样去掉删失点_Graphpad 作图教程 | 这份超详细的生存曲线绘制指南,科研新手一看就会!...
  20. 太原学院汾东校区计算机,太原学院汾东校区试运行寝室限电

热门文章

  1. 成为指弹更好的吉他手必做的10件事
  2. 如何关闭android键盘,软键盘怎么关,教您如何关闭软键盘
  3. 【语言模型系列】实践篇:ALBERT在房产领域的实践
  4. 用药安全,从娃娃抓起
  5. Unity--Configurable Joint——实战带你了解可配置关节
  6. MonthCalendar 的使用
  7. 百度网盘Mac客户端无法上传和下载问题解决办法
  8. 小屏幕android手机,小尺寸、小屏幕的安卓手机有哪些
  9. Problem D: 字符构成的图形
  10. Make Your First GAN With PyTorch:1.PyTorch基础