论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 2064阅读
  • 1回复

[求助-软件问题]免杀精华(值得菜鸟们一看) [复制链接]

上一主题 下一主题
离线王者
 
发帖
*
今日发帖
最后登录
1970-01-01
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-10-09 10:20:20
学习免杀,首先你得学会汇编把,基础的指令要懂得一些,一般的指令修改必须会,一般的修改这里就不赘述了,接下来就是掌握一些常用的免杀技巧,这里总结一些
    第一:我们学习免杀的方向:只是为了保护自己的黑软的话!就不会学的那么累(没必去学汇编编程)有时候简单加下壳或者脱下壳就OK!如果是要挑战世界的杀毒软件的话,毕竟每个PC用户安装的杀软都不一样!想抓鸡拿服务器的朋友就要进修脱壳破解,高级汇编的内容了,这将决定你免杀技术的高低!
    第二:免杀的环境:做免杀,逃不了测试这个木马是不是修改成功!所以为了保护自己的系统,我建议学免杀要先学会使用虚拟机,很多人会说,为什么不用影子?影子系统虽然也是可以保护的,暂用资源又少,但是有些反弹型木马,我们运行后如果失败(即使成功)都需要重启来完成完全清除的工作!做过QQ盗号木马跟黑鹰远控软件免杀的朋友应该深有体会!
    第三:杀软的安装设置:个人建议安装卡巴,NOD32,小红伞,瑞星,金山!(当然配置好的电脑可以再加上江民,麦咖啡)!硬盘大的朋友建议全利用虚拟机安装杀软(方便以后重做系统,节省升级病毒库的时间)杀软的设置,可以说是很简单的!每安装完一个杀软,我们都要先在杀软设置里把监控跟自我保护的选项的钩去掉!然后升级病毒库!升级完后再关闭服务跟启动项(利用360安全卫士)这样安装其他的杀软就不会起冲突了!这里注意下!瑞星升级后会自己更改自己的服务为自动,所以瑞星建议最后装,最后升级,再关闭它的服务!这里我想大家肯定是关心杀软的序列号从哪来的吧!瑞星有体验版,金山有37天试用版,NOD32利用PPLOVE网络电视有180天试用!卡巴等洋货在百度上搜索均有可用的序列号!这个就是考验大家的细心了!呵呵!卡巴不建议装6.0.7.0的,人家都在央视打广告了,我们就装2009把!(虽然卡巴的启发比不上 NOD32的,但是它的主动可是免杀爱好者的“粉丝”)
    杀软的查杀特点:
    卡巴:主动+高启发扫描~~,效果相当厉害,卡巴的主动非常麻烦,SSDT也被封了,启发式也极难通过,还是要取决于木马本身的实力了,
    瑞星:国内木马的超级对手可以这么说!对国内的木马定位的特征是洋货的N倍(鸽子见证)主要查杀技术是内存查杀技术,但是对一些生僻的木马,内存病毒库里竟然没有,只要过了表面就可以过内存......主动主杀敏感字符串,不过2009的主动貌似改进了不少......广告卖的倒不错,但是只是针对流行木马!其他不常见木马并没有加大什么强度!
    NOD32:启发扫描的头领!主杀输入表函数,针对MYCCL******做过调整!定位建议用 multiCCL这个来定位!不过这个大块头对生僻壳的侦壳能力不强!加些生僻壳把一些函数保护起来可以让它无用武之地!(这类壳主要是加密型,不建议用压缩型)
金山:数据流查杀技术的代表!简单来说跟瑞星内存查杀技术有点一样!病毒库升级,查杀病毒速度都是超级快!但是杀毒能力比较上面的几款有点逊色!
    360与金山清理专家:行为查杀的代表,金山清理专家比360查杀力度还大!但是监控能力......实在不想说!不过360的5.0版加了木马云查杀,据说不是很好过(没试过~~~)
    以上可以说是所有集合杀软的特点:文件查杀,内存查杀,启发查杀,数据流查杀!行为查杀!主动防御!每个杀软都有自己的特点,一个人也不可能把全球杀软都安装起来研究,但是以上4个杀软跟一个辅助可以说全包括了病毒查杀特点!也不能说哪个不好,哪个很好!有些木马这个杀软杀不出来~~那个就可以杀出来!所以对于现在网上有些朋友对个别杀毒软件不重视,就会导致你所谓的“肉鸡”插翅难飞!嘻嘻!
    接下来就说说技巧方面的
    1.字符串上我们比如这个特征码定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion \Run,遇到这个我想大家一定是修改大小写吧,但是有时候修改大小写还是被杀。这个我们可以怎么办呢,我们可以移动位置,因为这个肯定是一个api函数的参数,我们找到那个函数然后修改下调用地址就行了。所以有时候大家不能总用通用方法,要学会变通。
    2.NOD32的疑问,前天有人来问我他说它定位NOD32,定位到了资源上,这个有一个可能是你的定位有错误。这个你可以通过multiccl把资源和输入表段保护起来,然后定位,看可以定位出其他的特征码不能,至于MYCCL,一般的定位最好在代码段开始定位,填充可以选择FF,66什么的,或者反向定位,定位的方法很多的,别人填充00,你就填充00么,现在的杀软已经把myccl扒的一干二净了,有反定位措施...
       3.花指令 花指令无非是一些干扰程序调试的一些手段,当然也可以作为用来迷惑杀毒软件使杀毒软件找不到我们的特征码,从而达到免杀。为什么大家总是喜欢用网上的一些什么花指令方法。其实我发现其实多调用一些子程序,多加一些跳转,要比你们写花指令要好的多。不过本人不推荐使用花指令免杀.
      4.为什我服务端做了免杀,可是生成出来被杀。这个大家首先可以对比一下有什么不同的地方,这个我给大家一个思路,现在杀毒软件就喜欢定位有标志型意义的地方(通俗点讲版权信息),大家在做的时候因为为了保护我们的木马,所以就委屈下原作者,呵呵。版权信息给改了。还有一个就是比如说灰鸽子,现在杀软会定位到它的一些dll文件名上,你修改完dll然后找到调用dll文件的函数,然后修改下参数即可。。。。

    高强度花指令--SEH
        SEH是WINDOWS系统中处理计算机异常行为的一种方式,这种方式的特点就是用入栈的方式把断点保存起来,所以他的效率很高,往往能够处理很多的异常状态。在免杀中我们可以通过它给木马加花,让他“错误”地跳到入口点。
     奉上汇编代码如下:
push 原入口点   -OEP
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
mov ebx,0
div ebx
       复制代码
    这样混淆的强度就很大了,其实还有很多这样的方法,自己漫漫研究把。。
    小鱼和Medusa的免杀技巧
1. 遇到特征码定位在jmp指令上面的 构造替换 push xxxxx ret。
举例: jmp xxxxx
构造替换 push xxxxx
ret
2. 遇到特征码定位在call指令上的。
举例:
call xxxxx
构造替换: push @f
jmp xxxxx
@@:
;@@的标号表示的是你jmp xxxx指令后面的内存地址。 @f也就是引用@@ 的标号,所以此时@f这里填写的就是jmp xxxxx指令后面的内存地址。。
3. 遇到特征码定位在ret上
举例: ret
构造替换:
jmp dword ptr [esp]
4. 遇到特征码定位在test eax, eax je xxxx or eax, eax, je xxxxx cmp eax, 0 jexxxxxx
举例: test eax, eax
je xxxxxx
构造替换: xchg eax, ecx
jecxz xxxxx
5. 遇到特征码定位在 push [xxxxxx]上的。
举例:push [xxxxx]
构造:
在其之前通过 xchg [xxxxxx], ebx
然后用寄存器传参: push ebx
最后在下面在通过xchg [xxxxxx], ebx 交换回来。
6. 数据段动态恢复和巧用算法加密结合起来。
前提是对汇编大家一定要有所了解,例如一些人说金山杀的是配置信息上,你完全可以将其这些配置信息所处的地址的数据进行一层加密。或者你可以将其这些偏移所处的数据 通过xchg 交换。
dll注意下 要进行重定位
call $+5 ;机器码是 E8 00000000 00000000是相对地址
@@: pop ebx
sub ebx, @b
下面你就可以通过[ebx+你的偏移]来进行变址寻址了。。
test eax,eax
je xxxxxx
将test eax,eax nop掉,改je为jb
或将两句nop掉
test eax,eax
jnz xxxxxx
将两句nop掉
mov ebx,xxxxxx
mov ebp,eax
双mov可以上下调换
add     edx, dword ptr [ebp+6E]
imul esi, dword ptr [edi+ebx*2+44], 614D6C6C
imul ebp, dword ptr [esi], 0
00              00
00              00
00              00
考虑下移
and eax,80000007
改为:
or eax,7FFFFFF9
用C32asm改,80000007为-80000007,C32asm会自动变为80000007的负数7FFFFFF9
je   等于则跳   改成   jle   也是等于则跳
这是瑞星的新把戏
00436008   09C0 xor EAX,EAX
改为
00436008   09C0 OR EAX,EAX
004A19BD   6A 00 PUSH 0
改为
004A19BD   6A 01 PUSH 1
0049D775   /77 07 JA SHORT 021.0049D77E
改为
0049D775   /7F 07 JG SHORT 021.0049D77E
特征码定位出来用OD载入却显示无此地址的解决方法
dll:
也许你经常遇到特征码定位出来用OD载入却显示无此地址.
我们用灰鸽子VIP2006的GETKEY.DLL做演示.
假若特征码为
[特征] 000009DA_00000002 004015DA   (OC导出的内存地址)
使用OC导出的地址到OD中却不能使用.这时用lordpe打开GETKEY.dll
00013000
00400000 上下相加得00413000
OD载入入口为00883000 > 55              PUSH EBP
把40换成87就是真正的特征码.008715DA
Dll实例(黑洞1.97 瑞星dll特征):
OK=1
CharactorTotal=3
Codz1=H_0000354C_0092414C
Codz2=H_0001A4B4_0093B0B4
Codz3=H_0003C958_0095D558
先用lord_PE打开,再用OD打开
文件入口:00042948      
               > -------> 00442948
镜像:00400000                      
                                       >----------->相减   00520000
内存入口                   00962948

零区无法定位可执行文件数据的问题
1.c32asm来解决,静态反汇编改特征

2.加一0区段,跨区段jmp跳,然后再新区段保存"所有修改",再回到原特征码处jmp,保存
免杀关键是技巧,关键你对这些汇编指令掌握的程度,以及你对汇编程序的熟练度。。

接下来再说一下NOD32的高启
《一个钉子和一个国家灭亡的故事》大家都知道
如果有那一个钉子,不丢那个马掌,不折那匹战马,不伤那位将军…………
有太多不确定了,只要我们破坏了其中任何一个环节启发杀毒就会全线溃败。
NOD32通过PE结构寻找特征代码 以导入表函数的修改为例 (这个简单,其实还有更复杂的上次那个木马就是12处关联,但是12处关联破坏一个就免杀了)
首先他会从PE MZ那里开始计算PE HARD的位置 在从PE HARD处寻找数据段 计算数据段位置寻找指针的提示位置,然后通过指针的提示位置找到指针,通过指针找到导入表函数。
启发杀毒理解比较困难但是修改还是很简单的,可以说比普通的特征码更容易。我们只要破坏他以上分析的任何一个环节他就会全线溃败。
以前的pcshare有一个超简单过NOD32的方法,那就是将子系统设置为未知,就直接过NOD32的高启发,因为NOD32默认的对未知PE文件不予检测报毒,而恰巧,我们的pcshare通过这样更改之后仍然可以运行,达到了免杀目的,就是这么简单

1条评分
惊鸿一剑 电魂 +3 继续努力,期待您的下篇杰作 2009-10-09
离线quen2008
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 沙发  发表于: 2009-10-09 13:34:54
免杀对新手还是有点难度的