教你如何将你的木马躲过杀毒软件的查杀(制作免杀木马教程)时间:2009-09-03 14:41来源:未知 作者:admin 点击:7224次
一.关于免杀的来源 为了让我们的木马在各种杀毒软件的威胁下活的更久. 二.什么叫免杀和查杀 可分为二类: 1.文件免杀和查杀:不运行程序用杀毒软件进行对该程序的扫描,所得结果。 2.内存的免杀和查杀:判断的方法1运行后,用杀毒软件的内存查杀功能. 2用OD载入,
一.关于免杀的来源
为了让我们的木马在各种杀毒软件的威胁下活的更久.
二.什么叫免杀和查杀
可分为二类:
1.文件免杀和查杀:不运行程序用杀毒软件进行对该程序的扫描,所得结果。
2.内存的免杀和查杀:判断的方法1>运行后,用杀毒软件的内存查杀功能.
2>用OD载入,用杀毒软件的内存查杀功能.
三.什么叫特征码
1.含意:能识别一个程序是一个病毒的一段不大于64字节的特征串.
2.为了减少误报率,一般杀毒软件会提取多段特征串,这时,我们往往改一处就可达到
免杀效果,当然有些杀毒软件要同时改几处才能免杀.(这些方法以后详细介绍)
3.下面用一个示意图来具体来了解一下特征码的具体概念
四.特征码的定位与原理
1.特征码的查方法:文件中的特征码被我们填入的数据(比如0)替换了,那杀毒软
件就不会报警,以此确定特征码的位置
2.特征码定位器的工作原理:原文件中部分字节替换为0,然后生成新文件,再根据杀
毒软件来检测这些文件的结果判断特征码的位置
五.认识特征码定位与修改的工具
1.CCL(特征码定位器)
2.OOydbg (特征码的修改)
3.OC用于计算从文件地址到内存地址的小工具.
4.UltaEdit-32(十六进制编辑器,用于特征码的手工准确定位或修改)
六.特征码修改方法
特征码修改包括文件特征码修改和内存特征码修改,因为这二种特征码的修改方法
是通用的。所以就对目前流行的特征码修改方法作个总节。
方法一:直接修改特征码的十六进制法
1.修改方法:把特征码所对应的十六进制改成数字差1或差不多的十六进制.
2.适用范围:一定要精确定位特征码所对应的十六进制,修改后一定要测试一下能
否正常使用.
方法二:修改字符串大小写法
1.修改方法:把特征码所对应的内容是字符串的,只要把大小字互换一下就可以了.
2.适用范围:特征码所对应的内容必需是字符串,否则不能成功.
方法三:等价替换法
1.修改方法:把特征码所对应的汇编指令命令中替换成功能类拟的指令.
2.适用范围:特征码中必需有可以替换的汇编指令.比如JN,JNE 换成JMP等.
如果和我一样对汇编不懂的可以去查查8080汇编手册.         
方法四:指令顺
序调换法
1.修改方法:把具有特征码的代码顺序互换一下.
2.适用范围:具有一定的局限性,代码互换后要不能影响程序的正常执行
方法五:通用跳转法
1.修改方法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行.
2.适用范围:没有什么条件,是通用的改法,强烈建议大家要掌握这种改法.
七.木马免杀的综合修改方法
文件免杀方法:
1.加冷门壳
2.加花指令
3.改程序入口点
4.改木马文件特征码的5种常用方法
5.还有其它的几种免杀修改技巧
内存免杀方法:
修改内存特征码:
方法1>直接修改特征码的十六进制法
方法2>修改字符串大小写法
方法3>等价替换法
方法4>指令顺序调换法
方法5>通用跳转法
木马的免杀[学用CLL定位文件和内存特怔码]
1.首先我们来看下什么叫文件特征码.
一般我们可以这样认为,一个木马程序在不运行的情况下,用杀毒软件查杀,若报警为病毒,说明存在该查毒软件的文件特征码的。
2.特征码的二种定位方法.
手动定位和自动定位
3.文件特征码的定位技巧.
通常用手动确定大范围,用自动精确定位小范围.
下面分别用瑞星和卡巴为例,实例演示并结合手动定位和自动定位二种方法来准确定位文件特征码。要定位的对像以下载者为例。
用卡巴来定位文件特征码
⑴.手动定位:
1    打开CLL
2    选择设置中的 总体参数 ,,,,,选中文件特征码手动定位,,,,以及路径
3选中设置中的 手动参数,,,,,选择替换方式 选中,,,总共生成规定个数的文件,,,生成个数为1000
4选择文件中的 特征码检测,,文件特征码检测,,,打开程序(要定位特证码的程序)
5在弹出的PE窗口中 直接点确定 ,之后弹出的窗口在点确定
6然后等CLL生成完毕之后用杀毒软件进行查杀
7在CLL中选 操作,结果定位,选中刚刚用来存放检测结果的文件夹
8在CLL中选
文件免杀之加花指令法
一.花指令相关知识:
 其实是一段垃圾代码,和一些乱跳转,但并不影响程序的正常运行。加了花指令后,使一些杀毒软件无法正确识别木马程序,从而达到免杀的效果。
二.加花指令使木马免杀制作过程详解:
  第一步:配置一个不加壳的木马程序。
  第二步:用OD载入这个木马程序,同时记下入口点的内存地址。
  第三步:向下拉滚动条,到零区域(也就是可以插入代码的都是0的空白地方)。并记下零区域的起始内存地址。
  第四步:从这个零区域的起始地址开始一句一句的写入我们准备好的花指令代码。
  第五步:花指令写完后,在花指令的结束位置加一句:JMP 刚才OD载入时的入口点
内存地址。
  第六步:保存修改结果后,最后用PEditor这款工具打开这个改过后的木马程序。在入口点处把原来的入口地址改成刚才记下的零区域的起始内存地址,并按应用更改。使更改生效。
三.加花指令免杀技术总节:
 1.优点:通用性非常不错,一般一个木马程序加入花指令后,就可以躲大部分的杀毒软件,不像改特征码,只能躲过某一种杀毒软件。
 2.缺点:这种方法还是不能过具有内存查杀的杀毒软件,比如瑞星内存查杀等。
 3.以后将加花指令与改入口点,加壳,改特征码这几种方法结合起来混合使用效果将非常不错。
四.加花指令免杀要点:
由于黑客网站公布的花指令过不了一段时间就会被杀软辨认出来,所以需要你自己去搜集一些不常用的
花指令,另外目前还有几款软件可以自动帮你加花,方便一些不熟悉的朋友,例如花指令添加器等。
五.常见花指令代码
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1。 VC++ 5.0
PUSH EBP             
MOV EBP,ESP           
PUSH -1             
push 515448       
PUSH 6021A8       
MOV EAX,DWORD PTR FS:[0]     
PUSH EAX             
MOV DWORD PTR FS:[0],ESP     
ADD ESP,-6C           
PUSH EBX             
PUSH ESI             
PUSH EDI 
jmp 跳转到程序原来的入口点
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2。c ++
push ebp
mov ebp,esp
push -1
push 111111
push 222222
mov eax,fs:[0]
push eax
mov fs:[0],esp
如何设置滚动条的位置pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 跳转到程序原来的入口点
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3。跳转
somewhere:       
nop        /"胡乱"跳转的开始...
jmp 下一个jmp的地址  /在附近随意跳
jmp ...      /...
jmp 原入口的地址  /跳到原始oep
--------------------------------------------------
新入口: push ebp
mov ebp,esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
loop somewhere  /跳转到上面那段代码地址去!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
4。Microsoft Visual C++ 6.0
push ebp
mov ebp,esp
PUSH -1
PUSH 0
PUSH 0
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
SUB ESP,68
PUSH EBX
PUSH ESI
PUSH EDI
POP EAX
POP EAX
POP EAX
ADD ESP,68
POP EAX
MOV DWORD PTR FS:[0],EAX
POP EAX
POP EAX
POP EAX
POP EAX
MOV EBP,EAX
JMP 原入口
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5。
在mov ebp,eax
后面加上
PUSH EAX
POP EAX
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6.
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
mov eax,403D7D
push eax
retn
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
push ebp
mov ebp,esp
push -1
push 00411222
push 00411544
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
add esp,-6C
push ebx
push esi
push edi
add byte ptr ds:[eax],al
jo 入口
jno 入口
call 下一地址
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7.
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loop 任意地址
nop
nop
———————————————
nop
nop
jmp 下一个jmp的地址  /在附近随意跳
nop
jmp 下一个jmp的地址  /在附近随意跳
nop
jmp 下一个jmp的地址  /在附近随意跳
jmp 入口
文件免杀之加壳与改入口点法
一.壳的相关知识:
1.壳的分类:压缩壳和加密壳
2.壳的作用:保护和文件免杀
二.加壳免杀的几个弱点
1.不能躲过像瑞星这类具有内存查杀功能的杀毒软件。
2.一般不能躲过卡巴的查杀
因为卡巴采用了一种叫虚拟机技术。首先把加了多层壳的木马程序在虚拟机环境下运行一下,这样木马程序就会现出本来面目,这样无论你加了多少层壳,在运行后程序还是要暴露自已的。所以大家在加壳测试过程中也会发现,能过其它的多种杀毒软件,但卡巴始终很难过,其原因就是卡巴的虚拟技术在作怪。
三.是不是现在的加壳免杀已失去意义
每种免杀技术都有他的缺点和优点,比如加壳,首先要到比较生僻的壳,而且可能以后很快被查杀.同时也不能过内存查杀,也很难过卡巴.但它操作方便,通用性好加一个壳,可能过好几个杀毒软件.又比如修改特征码.首先操作比较烦,要定位,要修改,改好后还要测试是否能正常使用.同时针对性非常强.只能针对某一种杀毒软件的免杀,各种杀毒软件的特征码都不一样,所以要躲过多种杀毒软件查杀,就要分别定位,修改每种杀毒软件的特征码.这样是相当麻烦的.但它可以通过修改特征码来躲过瑞星内存和卡巴的查杀.
所以以后免杀技术会把加壳,加花指令,改入口点,改特征码这几种方法结合起来使用.对付瑞星的内存
查杀,我们可以修改内存特征码,对付卡巴的虚拟机技术.我们可以修改卡巴的特征码.在加上加冷门壳,加花指令,改入口点.综合这些方法就可以打造金钢不死之身!
四.加壳免杀实例演示部分:
1.加生僻壳免杀:实例演示
2.加伪装壳免杀:实例演示
3.多重加壳免杀:(用木马彩衣进行多重加壳)
五.改入口点免杀法:
1.改入口点免杀原理:杀毒软件一般都检测病毒还原之后的代码,而且一般都把代码段开始的前40个字节作为特征值.入口点改变了,说明也就破坏了特征码,这样就达到免杀的效果.
2.改入口点免杀方法一:入口地址加1法.
操作步骤:
第一步:配置一个无壳的木马服务端.
第二步:用PEditor打开木马程序服务端.在入口点处的地址加1.然后点应用更改就可以了.
评论:该方法对不
同木马程序,有不同的效果,其它杀毒软件一般都可以躲过,但有些程序改过后还是被卡巴查杀.同时也不能过内存查杀,但以后结合加花指令,加壳等等方法,效果将非常不错.
3.改入口点免杀方法二:变换入口地址法.
操作步骤:
第一步:用OD载入无壳木马程序服务端.
第二步:把入口点的开始二句代码(大都为push ebp  mov ebp,esp).移到零区域也是就空白区域地方.并记下零区域的内存地址.同时在后面加一句跳转命令:JMP 到第三条指令的地址.
第三步:然后修正并保存,最后用PEditor打开该程序.把入口点改成刚才在零区域记下的内存地址.
评论:该方法效果比方法一要好.经测试,用方法一改过后被卡巴查出来,用方法二就查不出来. 以后可以结合加花指令,加壳,改特征码,打造金钢不死之身!
采用以上的方法可以躲过不少杀毒软件的追杀,并且方便快速,又很简单,所以是免杀里非常主要的手段,但是一定要检查文件是不是能够正常运行。
免杀新技术[虚拟机加密免杀]和[壳中改籽]
一 虚拟机加密免杀
最新免杀技术——虚拟机加密代码应用并非传统的修改特征码,也不是修改入口点+花指令,更不是
加壳压缩!是最新的一种免杀技术!借于这种技术你可以千变万化,是免杀对新手来说更为简单!
大家对虚拟机vmprotect是否有所了解,这个是最新的加密工具!可以加密PE文件中任何一句或一段代码
自然可以给我们用来免杀了!
免杀工具:vmprotect1.07或1.06 PEID UPX
免杀步骤:原理说明:加密区段代码使杀毒软件无法识别!你可以特征码,到后加密特征码的代码!
用PEID查看入口点:假如这里的入口点是0007DB74 基址是 00400000
3.用虚拟机vmprotect打开要免杀的文件,添加地址0047DB74=00400000+0007DB74 基址+入口点
4.选代码区域->转存->F9保存
5.测试运行->可以成功运行
6.用UPX压缩一下,缩小体积,OK 免杀成功
总结:虚拟机加密代码是比较新的免杀技术,可以和其他免杀技术有机的集合在一起,让你的木马变成金刚不坏.大家要多多掌握。
二 壳中改籽技术免杀
这种免杀很少有人用,所以免杀效果非常好,各大黑客网站也很少见到介绍,这里我把别人做黑洞免杀的文章发到这里,供大家研究.估计是浩天写的文章
先讲一下为什么这种技术叫“壳中改籽”。配置一个黑洞的服务端,然后用来查看它是用什么加的壳,查到是UPX加的变态壳,程序的区段都给隐藏了,那么先得给黑洞服务端脱壳。用 打
开它,然后在Decompress method里面选择5,点击fix,这样就修复了。再用查一下,看现在可以看到区段了吧。
为什么我一再提到这个区段呢?其实它就
是文章的重点,也就是壳里面的籽。继续脱壳,用UPXShell打开修复好的黑洞服务端,点击解压缩,完成后我们可以看到程序由原来的201 kb变成了506 KB ,大了一倍多。
有人可能要问为什么一定要给它脱壳呢?直接修改不可以吗?其实主要是因为黑洞的服务端里还有一个用做键盘记录的dll文件,它也要做免杀处理。用 Resscope1.92打开黑洞的服务端,这个可是绝好的exe资源编辑器啊,先选择dllfile里面的getkey,然后点击文件→导出资源,这样dll文件就导出来了。它也是用upx加的变态壳,因为区段被加密了,所以我们也要给它脱壳,再加壳。脱壳的过程和先前脱黑洞服务端一样先用打开它,但是这里注意在Decompress method里面,不要选择5,而是选择2修复,不然的话就脱不了壳了。
接着用UPXShell解压缩,现在dll文件的大小由原来的11 kb变成了18.5 kb,然后再用UPXShell重新给它加上壳。
三、修改upx壳里面的籽
把UPX加过壳的dll文件,用打开查看,这里有几个数据需要我们记录,等下和修改后的文件做比较用。
先分别把程序入口点:000C220、文件偏移量:00002620 ,记录下来,然后点击查看EP区段,在区段查看上面再点右键选择cave查器,把upx壳区段upx1的RVA:0000C3B5、 偏移:000027B5等参数也记录下来。
关键的时刻到了,闪亮登场。因为reloc 是一款命令下的工具,所以为了操作方便,我建议大家写一个bat文件和reloc放在同一目录。我们开始记录的数据现在派上用场了,编辑bat文件格式如下:
reloc 待修改程序 $程序入口 $文件偏移量 $壳的区段入口 $区段偏移 参数
那么对应我们的黑洞键盘记录dll文件所记录的数据,这个bat就应该这样写:
reloc 键盘记录.dll $C220 $2620 $C3B5 $27B5 5
数据前面的零不要写到bat里面,另外最后面的这个参数大家注意,其实它是设置修改时的偏移量的,一般dll文件选择5,exe文件选择5-9之间的数,一般选择6就好了。
设置完了,我们运行这个bat文件,开始修改。完毕之后我分别用国内和国外最强的杀毒软件江民、诺盾
和卡巴斯基对键盘记录.dll进行扫描,它们均未发现病毒,我们的木马成功躲了过去。用重新打开,可以发现PEiD已经无法分别键盘记录.dll是什么壳了,把原来记录的几个数据和现在对比一下发现程序入口和文件偏移量没有,而壳区段入口和区段偏移却改变。
飘舞的风在上一期的文章里面说道:“peidv0.92是通过每个程序的开头几十个字节来比较是那种壳。”,看来不仅仅如此,peidv0.92还把壳的区段入口开头的几十个字节也作为了用来判断壳的类型的特征代码,杀毒软件也是如此,这样简单修改一