加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 策划 > 正文

“黑客”深度学习之“免杀技术原理与实现”

发布时间:2019-03-12 22:43:21 所属栏目:策划 来源:信息安全我来讲你来听
导读:杀毒和免杀矛与盾的两者,对于黑客来说两者都应该学习,做到知己知彼才能达到真正的王者,今天就以本篇文章给大家分享一下免杀的技术原理与实现过程。 一、 杀软是如何检测出恶意代码的? 1. 检测特征码 人有自己的特征,代码也有自己的特征。杀毒软件都有

如果特征码是数据,那么修改数据位置,访问数据的代码位置等(思想类比非源码方式)。

  • 加花指令,这是最有效也是最常用的方式,要点在于如何加话指令。
  • 加数据计算代码,加减乘除各类组合。
  • 加字符串操作代码,增加、删除、查找、替换等。
  • 加多层跳转,跳转间加无效指令(不会执行的)。
  • 加貌似有效的API调用,如LoadLibrary+GetProcAddr+API等。
  • 等等。

(2) 工具免杀(盲免杀)

在没找到有效的特征码,或者不好修改的时候,可以试试这种方式。

资源操作:

  • 加资源:使用ResHacker对文件进行资源操作,找来多个正常软件,将它们的资源加入到自己软件,如图片,版本信息,对话框等。
  • 替换资源:使用ResHacker替换无用的资源(Version等)。
  • 加签名:使用签名伪造工具,将正常软件的签名信息加入到自己软件中。

几种方式可以交替重复多次进行组合使用。

PE操作:

  • PE优化:使用PE优化工具对文件进行优化,删除0,PE头优化,附加数据等。
  • 增加节:增加节数据,随意加入无效数据。

加壳:

可以将加壳简单理解为:解密器/解压器+加密器/压缩器(原始代码)。

通过加密器/压缩器将原始代码进行加密压缩,让其特征码变化隐藏,然后组装上解密器/解压器到文件中,运行是先运行解密/解压器,将加密压缩内容解密解压,然后继续运行原始代码。

a.加冷门壳

壳也有特征,知名壳都已经被分析的非常多了,杀软基本都能查这类壳,或者自动脱壳,然后进行查杀。

所以加冷门壳,壳特征未被分析,不能自动脱壳,可以更好隐藏原始代码,得到免杀效果。

b. 加壳改壳

将常用壳进行修改,让壳特征变化,也可以是杀软失效。

比如修改入口,区段信息修改,入口代码移位。

可以类比为免杀壳,上面介绍的方法都可以使用。

(二) 其次,行为动态免杀

杀毒软件现在都会有主防的功能,对恶意行为进行拦截提示。

比如这些行为:

注册表操作,添加启动项,添加服务,文件写入、读系统文件、删除文件,移动文件

杀进程,创建进程,注入、劫持等

1. 行为拦截原理

说白了,恶意行为都是通过API调用来完成的,可能是一个API,可能是多个APi组合。

杀软通过技术手段拦截这些API调用,通过策略来判断是否属于恶意行为。

关键点:

  • API
  • 策略(顺序,调用源,参数等等)

所以后面的方法就是针对这两点做的工作。

2. 如何进行行为免杀呢?

下面介绍的方式对非源码、源码都有效,但是非源码修改起来非常非常麻烦...

(1) 替换api

使用相同功能的API进行替换,杀软不可能拦截了所有API,所以这种方式还是有效的。比如MoveFileEx替换MoveFile。

(2) 未导出api

寻找相同功能的未导出API进行替换,杀软拦截一般是导出API,或者底层调用,寻找未导出API有一定效果。

寻找方法,通过分析目标API内部调用,找到内部一个或多个未导出API,来完成相同功能。

(3) 重写api

完全重写系统API功能(通过逆向),实现自己的对应功能API,对于ring3的行为拦截非常有效。比如实现MoveFile等。

(4) api+5

ring3的API拦截通过是挂钩API头几个字节内容,然后进入杀软自己函数进行参数检查之类的。

那么如果调用API时,跳过头部几字节,就可以避开这种拦截方式。

__API:

  1. push ebp; 
  2. mov ebp, esp; 
  3. mov edi, edi; 
  4. ... 

调用时,不适用1地址,而使用4地址,然后自己函数内部还原跳过几字节的调用。

__API_MY:

  1. push ebp;  
  2. mov ebp, esp;  
  3. mov edi, edi;  
  4. call 4 

(5) 底层api

该方法类似于2和3,杀软拦截API可能更加高层(语义更清楚),那就可以找更底层API进行调用,绕过拦截,比如使用NT函数。

或者通过DeviceIoControl调用驱动功能来完成API功能。

模拟系统调用。

(6) 合理替换调用顺序

有时拦截行为是通过多个API组合来完成的,所以合理替换顺序,绕过杀软拦截策略,也可以绕过改行为拦截。

比如,先创建服务,再将服务对应文件拷贝过去。

(7) 绕过调用源

通过调用其它进行功能来完成API的功能。比较经典的如,通过rundll32.exe来完成dll加载,通过COM来操作文件等等。

小结:

方法大概就总结到这,要更好的完成免杀,需要各种方式进行合理灵活组合变化,或者挖掘更多的方法

四、免杀实例讲解

实验主机:Vmware 虚拟机

操作系统:XP sp3

实验用具:MyCCL 2.1、C32Asm、一份病毒样本(encode.exe)、百度杀毒、360杀毒

实战开始:

第一步将杀毒软件的实时防护关闭,以免一会自动把我们实验的样本杀了,然后点击设置:

第二步用杀软查杀一下病毒样本看看:

确定没问题。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读