(满意追加)免杀方法或者免杀教程,学习用,非常感谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(满意追加)免杀方法或者免杀教程,学习用,非常感谢相关的知识,希望对你有一定的参考价值。

首先来简单了解一下杀毒软件查杀病毒的原理,当前杀毒软件对病毒的查杀主要有特征代码法和行为监测法。其中前一个比较方法古老,又分为文件查杀和内存查杀,杀毒软件公司拿到病毒的样本以后,定义一段病毒特征码到病毒库中,然后与扫描的文件比对,如果一致则认为是病毒,内存查杀则是载入内存后再比对,第二个比较新,它利用的原理是某些特定的病毒会有某些特定的行为,来监测病毒。
免杀常用的工具:
Ollydbg 调试器简称OD,动态追踪工具 peid 查壳工具 PEditor PE文件头编辑工具
CCL,伯乐,MYCCL 特征码定位器 oc 地址转换器 reloc 修改EP段地址工具 zeroadd 加区工具 Uedit32 十六进制编辑器

免杀方法

一.文件免杀
1.加花
2.修改文件特征码
3.加壳
4.修改加壳后的文件

二.内存免杀
修改特征码

三.行为免杀
加花
加花是文件免 杀的常用手段,加花原理就是通过添加花指令(一些垃圾指令,类似加1减1之类废话)让杀毒软件检测不到特征码。加花可以分为加区加花和去头加花。一般加花 工具使用加区加花,当然也是可以手工加的,就是先用zeroadd添加一个区段,然后在新加区段里写入花指令,然后跳转到原入口;去头加花,是先NOP (汇编里的空操作)掉程序的入口几行,然后找到下方0000区,写入NOP掉的代码和一些花指令,再通过JMP(汇编里的无条件跳转)跳到原入口。
加花以后一些杀毒软件就认不出了,但有些比较强悍的杀毒,比如司机大叔(卡巴斯基)可能还是能查出来,这时就要定位特征码然后修改了,要修改首先必须知道特征码在哪里,所以需要先定位特征码,这是个难点,特别是复合特征码的定位。

特征码定位
特征码定位主要有两种方法:第一 直接替换法;第二 二叉数法;
直接替换法是最早开始出现的一种特征码定位方法,按一定的字节数逐个替换原代码并保存,比如木马总共100字节,可以先把0-10个字节用0替换,保存, 然后用杀毒软件扫描,不被查杀说明特征码已经被覆盖掉了,如果还被查杀则替换10-20字节,再保存,扫描……直到找出特征码。替换法的优点是容易理解, 速度快(对文件特征码而言),特征码定位工具伯乐以及CCL的手动方式就是利用的替换法原理,文件特征码定位经常使用的就是这种方法。但是对于内存特征码的定位这种方法就不太实用了,每次替换以后都要载入内存再扫描,如果木马较大,替换生成的文件会 非常多,每个都要载入内存花费太多时间,除此之外它还有一个非常大的局限性,就是只能确定只有一处特征码的情况(某种特定情况下的多特征码也是适用的,下 面的第3种情况将有讲述),杀毒软件还有别的定位特征码的机制,比如有的杀毒的定义了a,b两处特征码(三处或者更多原理是一样的,为了讲解方便,以下均 以两处为例),只要a,b有一个存在便报毒,只有加大替换范围直到两处同时被替换才不报毒,如果两处距离比较远,定义出的范围将非常粗糙,很明显直接替换 法将不再合适,这时第二种方法就有用武之地了。

二叉数法使用的原理是一半一半定位,CCL的自动方式就是运用的这个原理。将待检测段一分为二,分别替换并生成两个文件A和B,其中A是原文件后半部分被0替换后生成的,B是前半部分被0替换的,杀毒开始查杀生成文件(如果是内存特征码定位则先载入内存再扫描内存),有4种情况
(1)A存在,B被删:这种情况说明A文件中特征码已经被替换掉,因此将A的被替换部分一分为二,起始偏移为A的偏移,再进行检测;
(2)A被删,B存在:这种情况说明B文件中特征码已经被替换掉,因此将B的被替换部分一分为二,起始偏移为B的偏移,再进行检测;
(3)A存在,B存在:这种情况说明没法定位A和B中有没有特征码,因此分别对A和B再一分为二进行检测;
(4)A被删,B被删:这种情况说明两个区段都存在特征码,因此分别对A和B再一分为二进行检测。
对A再分时会将原来的B区段填充为0,相当于去除B区段的影响,只考虑A;同理对B再分时会将原来的A区段内容填0,相当于去除A区段的影响,只考虑B。

第(1)(2)对应的是只有一处特征码的情况,比较容易理解;
第(3)对应的是定义了a,b两处特征码的情况,但是和前面提到的那种不同,杀毒软件为避免误判,定义了a,b两处特征码,要ab同时存在时才报毒,假设a,b分别存在于A,B中,a,b不同时存在,杀毒对A,B均不报警,接下来该如何判断呢?举个例子说明一下
木 马原来是…a……b…,第一次替换以后A:…a…000000,B:000000…b…,现在ab不同时存在,A,B都不被杀,则分别对A,B再次一分为 二,…a……b000,…a…000…,000……b…,…a000…b…,再次扫描就可以找到两处特征码的位置,如果还是不行,再继续分……直到全部找 到;其实这种类型的多特征码直接替换也是可以定位的,甚至效果更好,按一定位数替换,然后扫描,只要替换了一个特征码就不再报毒,所以不报毒的便是特征码 被覆盖的,不管有几处都可以定位出,而且修改时也只要修改任意一处就可以了。

第(4)种对应的情况也是杀毒定义了多处特征码,就是上面提到的那种情况,只要有一处符合就认定是病毒。还是以a,b两处特征码为例,第一次替换后的结果同(3),两部分分开考虑,互不影响, 相当于分解成两个单个特征码的情况,第二次替换后变成000000…b000,000000…000…,000…000000,…a000000000, 依此类推,直到精确定位出所有特征码,如果有N处特征码就相当于分解成N个单特征码来定位,现在N一般小于等于3,这种情况定位出的所有特征码必须全部修 改了才能免杀。

二叉数法是个很不错的思路,可以解决大部分的问题,但是不是无懈可击呢?回答是否定的!可恶的杀毒软件还有一个杀手锏,就是复合特征码,给我们定位特征码 带来了很大的麻烦。复合特征码的定位机制是,先定义出N个特征码,只要里面某些同时出现便认为是病毒。举个简单例子说明一下:木马原来是…a1…b1… c1…a2…b2…c2…(a1,a2一样,加标号只是为了后面描述方便),只要abc同时出现就认为是病毒,这该如何定位呢?原理不是很难,也是利用替 换再查杀的方法,先从后往前用0替换,替换精度假设为每次替换量增加1000字节,开始一直显示是病毒,直到替换到地址13140040(为叙述方便随便 说的一个地址)时替换的字节达到15000个,即…a1…b1…00000000,两个c都被替换掉了,此时显示不是病毒,由此可知,特征码c1就在 13140040后面1000字节内,减小替换字节数比如改为替换14900字节,即精度改为每次替换减小100字节,还是无毒则减为替换14800字 节,不断重复……直到精确定位出c1的位置;如果改为从前往后替换,则可以定位出a2的位置;其他特征码的定位可以利用已经定位到的c1,a2,把其中一 个用0替换了比如c1,从后往前就可以定位出c2,直到定位出所有特征码,其实原理并不复杂,但是要真正手动操作起来却是非常麻烦的,我们可以利用 MYCCL,它用的原理与之类似,具体操作可以看MYCCL的操作帮助。还有一种方法更科学,原理是一样,但是替换的字节数不是等量增加的,而是以2的n -1次方增加的,第一次替换1字节,第二次2字节,第三次4字节……减小时也按照这种规律,这种替换方法有点类似于二叉数法,可以更快定位出特征码的位 置,我想这也是MYCCL在复合特征码定位方面应该改进的地方吧。

复合特征码虽好,大家也不用害怕,认为所有杀毒都来个复合特征码我们就要累死了,定义复合特征码需要单个特征码几倍的病毒库,不方便用户的升级,所以除了特别流行的病毒,定义复合特征码的也不是很多。

定位特征码有些经验可以告诉大家,文件特征码的定位一般用直接替换法,可以借用CCL的手动定位;内存特征码定位,一般用二叉数法,可以用CCL自动定位。对于EXE文件如果文件较小,可以两种方法结合,先用直接替换法生成,可以用伯乐这个工具(为什么不用CCL呢,因为伯乐生成的是EXE文件可以看出图标的模样),找到还能正常运行的,那些图标都变了的说明PE头已经损坏了,就不要试了,然后载入内存,再扫描内存,如果既能正常运行又不被杀,恭喜你!成功了!定位出了大体范围,再用CCL自动定位,很快就可以完成。如果文件较大,用伯乐生成的文件太多,也不方便,还是用CCL定位,对于DLL文件也只能老老实实用CCL定位了。

特征码修改
特征码修改可能需要一点汇编的知识,光盘里有常用的汇编语法介绍,修改主要有直接修改法和跳转修改法。
直接修改法利用的是等效指令替换,比如
add eax,0c等效于sub eax,-0c
或者指令顺序的改变不影响执行的效果,比如
add eax,0c;eax寄存器加上0c再赋给eax
add ebx,05;ebx寄存器加上05再赋给ebx
等效于
add ebx,05;ebx寄存器加上05再赋给ebx
add eax,0c;eax寄存器加上0c再赋给eax
还有一种是如果特征码是ASCII码,可以直接修改大小写,小写字母换成大写,大写的换成小写。
加壳
不用说了,用工具大家都会,加壳的原理是给原程序加上一段保护程序,有保护和加密功能,运行加壳后的文件是先运行壳再运行真实文件从而起到保护作用。我想提醒大家的是,再好的壳用的人多了,还是会被杀的,所以可以努力学好E文,自己到国外的网站找加壳工具,比较好。

修改加壳后的文件
加壳以后程序入口处会有一段特殊代码,可以自己用OD打开不同加壳工具加过壳的文件, 可以发现不同的壳开头那段代码是不同的,也可以说成是壳的特征代码吧,对于常用的壳杀毒软件可以脱掉壳再查杀,也就是所谓的穿壳技术,为了避免杀毒软件认 出是加的哪种壳我们可以加双壳,或者自己修改开头那段代码,从而让杀毒看不出是什么工具加的壳,这里我只讲一种修改方法,可以参照去头添加花指令,在空白 区域加入一段别的壳的特征头,然后JMP跳到原入口,这样杀毒就会误判加壳工具,从而达到免杀的效果,其实方法是多样只要愿意思考总能想出应对的方法。

还有一种修改壳的方法就是修改EP段的入口,用Peid查一下加过壳的木马,可以发现EP段的地址,也就是区段入口,通过修改EP入口地址可以达到免杀的效果,利用的工具是reloc,具体使用方法自己去问google。

行为免杀
这种杀毒的代表是绿鹰PC万能精灵。一般说来木马在运行以后会复制到系统目录下然后运行,原文件可能会自动删除,现在的木马一般是插入进程来访问网络的,在进程里可以看到被插入的进程,设置开机启动也是木马必须做的可以写入注册表,加入服务,写入驱动等等,这些便是木马特有的行为。我们可以用注册表监控,文件修改监控的工具比如木马辅助查找器记录修改的文件、注册表,推测杀毒可能监控的是哪个行为从而对应修改行为来达到行为免杀。还有一个一般的方法,行为杀毒是不会查杀系统的启动项的,我们可以把木马的启动项替换成非系统必须的开机自启动项就可以成功免杀了。至于其他的方法,大家可以自己再研究。

至于网上流传的入口加1,就是用PEditor将木马入口地址+1,有时也是可以达到免杀的效果,好象是瑞星比较吃这个,还有个小窍门可以告诉大家,要让 自己的免杀木马尽量久的不被查到,最好选择比较老的木马来做,对新木马,杀毒盯的紧会经常更新病毒库,而老的呢……不用说了吧。

总结:
一般免杀步骤是先定义内存特征码,修改内存特征码,加花指令做文件免杀,如果还被某些杀毒查杀则定义文件特征码,修改特征码,接下来是行为免杀,然后加壳,再修改壳。内存免杀一般只要做瑞星的就可以了,其他的杀毒软件没有真正意义上的内存杀毒,比如卡巴斯基的内存扫描就是文件快速扫描,一般加入花指令(稍微学点汇编,折腾些垃圾代码是很简单的)以后就可以躲过金山,瑞星,江民的文件查杀,万一有不过的就要定位特征码再修改,卡巴的文件查 杀是很牛的,加了壳也几乎都能可以查出来,一般都要定位特征码再修改,对于诺顿这种喜欢把特征码定位在PE头的只要用北斗之类工具加个壳,把PE头改得一 塌糊涂,它就不认识了,如果还想把免杀做好点,可以把自己的服务和注册表键值改成非系统必须的,要是你是不折不扣完美主义者,可以再修改一下加壳后的文件,把免杀进行到底!
参考技术A 绝技一:快速搞定文件查杀操作步骤: 第一步:用OD载入,来到程序的入口点。 第二步:把入口点的第一句PUSH EBP 改成POP EBP 然后保存就可以躲过瑞星的表面查杀。
绝技二:快速定位与修改瑞星内存特征码原理:因为目前的内存查杀杀毒软件,只有瑞星才能威胁到我们的木马。也就是说只要搞定瑞星的内存查杀,那我们的木马在内存就畅通无阻了. 但由于技术原因,目前瑞星的内存特征码在90%以上把字符串作为病毒特征码,这样对我们的定位和修改带来了方便.
操作步骤:第一步:首先用特征码定位器大致定位出瑞星内存特征码位置.第二步:然后用UE打开,找到这个大致位置,看看,哪些方面对应的是字符串,用0替换后再用内存查杀进行查杀.直到找到内存特征码后,只要把字符串的大小写互换就能达到内存免杀效果.
绝技三:如何快速躲过诺顿的查杀诺顿的查杀特点:大家有时候会发现,通过改特征码,加花指令,改内存特征码,等等,卡巴,江民,金山,瑞星都过了,但无论如何都过不了诺顿,这时候是不是感到很纳闷.其实诺顿特征码的定义和其它杀毒软件不一样,其它杀毒软件的特征码都在代码段而只有它把特征码定义在PE头文件里面.而在头文件里面,一般都用字符串作为病毒特征码,知道了原理,就有下面的二种方法来应付.
方法一:只要把头文件的字符串的大小字互换一下就可以搞定了.方法二:有二款压缩软件WinUpack和北斗星,经过他们的压缩,会把我们的木马程序的头文件改的面目全非.所以把我们的木马做好其它的杀毒软件的免杀后,再用这二款压缩软件的压缩就可以躲过诺顿的查杀.
绝技四:一个不太通用的免杀方法免杀方法一:把入口点第三句开始的几行(20字节内)汇编代码移到零区域去执行,也达到一定的免杀效果.
绝技五:用VC++加了花指令后入口点下移法操作过程:加花指令后,可以把入口点下移好一位,这样可以进一步达到免杀效果.
一.木马免杀综合方案
修改内存特征码--->1>入口点加1免杀法 1>加压缩壳1>--->再加壳或多重加壳 2>变化入口地址免杀法 2>加生僻壳--->2>加壳的伪装.
3>加花指令法免杀法 3>加压缩壳3>--->打乱壳的头文件 4>修改文件特征码免杀法以上免杀方法可以自由组合成多种不同的免杀方案。
二.常用免杀方案1.实例完全免杀方案一:内存特征码修改+加UPX壳+秘密行动打乱壳的头文件。所需工具:UPX加壳工具,秘密行动2.完全免杀方案二:内存特征码修改+加花指令+加压缩壳3.完全免杀方案三:内存特征码修改+加压缩壳+加壳的伪装或多重加壳4.完全免杀方案四:内存特征码修改+去头变换入口点地址+压缩壳5.完全免杀方案五:内存特征码修改+修改各种杀毒软件特征码+压缩壳6.完全变态免杀方案六:内存特征码修改+加花指令+去头变换入口点+加UPX壳+用秘密行动打乱壳的头文件
三.解决加花指令后运行出错问题1.分析其原因:我们加花指令时,一般都找代码段最后面的空白代码地方也就是所谓的零区域,然后把我们准备好的花指令填进去,然后一个跳转跳到入口点。但是我们木马的体积比较大,从入口点到最后面零区域的间隔比较远,所以从低部跳到头部由于间隔较远就非常容易出错。
3.新研究的免杀方法完美的解决了该问题:我把它取名为:中间过渡跳转法
实例演示:中间过渡跳转法来修改灰鸽子V1.22版或VIP2.0版。
中间过渡中转法实现原理:首先我们在代码段的中间位置,备份部分代码,然后把我们要添加的花指令写进去,写完后,再跳到零区域,在这个零区域填入刚才我们备份好的代码.填完后又要跳回填入花指令的生面.总之一句话:把花指令填在代码中间,被花指令覆盖的代码移到零区域去执行,然后又要跳回来.最后把入口点改成花指令的首地址.这样就算完事了.
4.该新的免杀技术优点:以前的花指令只能填到零区域,也就是说入口点一般都比较后面,所以有时会被卡巴查杀,但有了这种新方法后,程序入口点就变的非常灵活,可以定位在代码段的任何位置,每定位一个新的入口点就是一种新的免杀方案.而且这种方法对付卡巴也很有效.把入口点放到代码段的中间,是杀毒软件万万想不到的,所以免杀效果是最好的.同时他解决了由于跳转太远使程序无法运行的缺点,所以这种方法是相当完美的免杀方法.希望大家灵活运用
参考技术B 主流的免杀工具基本没用了,我从06年开始自己学的,接触过pcshare,鸽子,上兴,黑洞,暗组等,都是正向反向定位特征码(ccl和myccl还有个黑框的定位软件,忘了叫什么),移位,删指针,改PE头,修改壳文件头等等都用过,现在都淘汰了。想学免杀,要多学习汇编语言和基础语言,从而实现编程免杀,同时也有利于你对文件敏感代码的修改。 参考技术C 不免费的,分没用 参考技术D 给一个更简单的答案:去百度打 XXX免费破译版杀毒工具

以上是关于(满意追加)免杀方法或者免杀教程,学习用,非常感谢的主要内容,如果未能解决你的问题,请参考以下文章

20145239杜文超《网络对抗》- 免杀原理与实践

不可不学!一些webshell免杀的技巧

灰鸽子怎么做免杀?我用的破解版VIP2006和2007

如何打造一款免杀Metasploit WAR木马

shellcode 免杀

MSF制作免杀木马