免杀基础知识总结

来源:互联网 发布:linux 笔试题 编辑:程序博客网 时间:2024/04/30 02:24
        最近研究木马免杀,先了解一下基础的免杀知识,看了《杀不死的秘密》、《黑客免杀攻防》等免杀书籍,发现都大同小异,基本内容都是一样的,找特征码,修改特征码....我认为免杀还是要针对杀毒软件的查杀特性来做,所谓知己知彼,用在免杀上就特贴切。能够写在书本上的技术肯定不是最新的技术,反病毒软件肯定也有了应对措施,要想真正做到免杀,还是要通过其它渠道学习或是自己深入研究。但是,曾经的免杀方法并不是无用了,而是成为基本的步骤了,所以了解免杀基础知识还是必要的。以下是我的学习总结,以备今后温故之用。

1.免杀的最基本思想就是破坏特征,可能是特征码,可能是行为特征。                               

2.PEID通过进行壳特征码比对来判断被载入文件的加壳信息,防病毒软件亦如此。

3.特征码查杀技术

    两个最基本要素:特征码和该特征码所在的偏移。
    复合特征码查杀
    隐含特征码查杀
    启发式扫描查杀
        NOD32启发式扫描:将危险的函数整理出来,按照病毒的特性排列这些API的顺序,若发现类似的调用API顺序,判为病毒。
        主动防御是一种特殊的API HOOK,它HOOK了一些木马病毒常用的API.卡巴斯基主动防御对函数的监控及环境判断。

特征码定位技术:MyCCL 、MultiCCL定位文件特征码和内存特征码。

4.文件扫描

    1.第一代扫描技术,字符串扫描,通配符扫描等。
    2.第二代扫描技术,智能扫描法,近似精确识别法(多套特征码,校验和),骨架扫描法,精确识别法。

5.脱壳方法

    1.单步跟踪法。遇到程序往上跳转的时候在回跳的下一句代码上单击并按键盘上的'"F4"键跳过回跳指令。 单步跟踪法也是其它方法中要用到的基本的方法。过UPX.
    2.ESP定律法。OD加载程序后F8走到下一条指令,若ESP发生变化,在命令行中输入hr [esp中的值],F9运行,然后用单步跟踪法。原理:我们可以把壳看成一个子程序,必须要遵循堆栈平衡原理。过NSPACK.
    3.二次断点法。首先在“选项”---“调试设置”----“异常”勾选全部复选框,即忽略所有异常,“alt+M"打开内存窗口,在.rsrc设断点,shift+f9,再在.text下断点,shift+f9,然后单步跟踪法。过ASPACK.
    4.末次异常法。首先在“选项”---“调试设置”----“异常”清除所有复选框,即不忽略任何异常,连续按shift+f9,直到程序运行,记下总次数X,重新加载,按下X-1次shift+f9,在栈窗口中找到se句柄,在该地址处下断点,shift+f9,然后单步跟踪。
    5.SFX自动脱壳法。将OD设置为忽略所有异常;将”调试选项“对话框的SFX选项卡中选择”字节模式跟踪实践入口“并确定;加载程序,会自动停在OEP处。成功后记得吧SFX的设置改回去。过DXPACK
    6.出口标志法。OD加载程序后查找“所有命令”,输入”popad"并查找。逐一尝试跟踪。
    7.使用脱壳工具脱壳。

6.常用免杀方法:

    1.利用加多花指令。利用软件zeroadd加一个全0区段,在里边加入花指令,最后一条指令jmp OEP,然后更改程序入口点为该区段的偏移地址。
    2.利用壳前加花指令。原理同前。
    3.利用FreeRes实现加多壳免杀。一般先给木马加上一层加密壳,然后用FreeRes这个工具进行释放,就可以被另一个壳进行二次处理了。
    4.利用修改壳头实现免杀。利用等效代码实现对木马壳头的修改。如jmp xxxx换成call xxxx 或用ja xxx   jnb xxx  jb xxx替换,add ebx,ebp 换成 adc ebx,ebp.
    5.利用去头加花的方法实现免杀。在文件中找到一段0空间或插入0区段,将程序入口点改为该处地址,在该地址处写上花指令后再加上原入口处的n条指令,然后jmp 到n+1条指令处。
    6.利用SEH技术给木马加花。生成0区段,写入 
        push OEP 
        MOV EAX DWORD PTR FS:[0]
        push eax
        mov dword ptr fs:[0],esp
        mov ebx,0
        div ebx
    7.利用reloc改壳免杀。
    8.利用LoadPE重建PE实现免杀。
    9.利用添加PE数字签名实现免杀

7.从PE结构入手的免杀

    1.加壳免杀
        按免杀效果分:
            1.文件免杀壳,多为加密壳。
            2.内存免杀壳,多为加密壳,往往利用某特定杀软的杀毒引擎缺陷。
            3.行为免杀壳,针对某些行为检测工具。
    2.加花免杀
    3.修改特征码免杀    

8.特征码修改技术

    1.等值替换。2.修改ASCLL特征码大小写,windows对文件扩展名大小写不敏感,但对API函数大小写敏感,需要区别对待。
    3.移除无用ASCII特征码。4.移动ASCII特征码位置。程序都是将字符串首字节的地址压入栈中利用的。改变ASCII特征码在文件中的位置,然后在源码中修改引用地址为新地址。  5.颠倒无依赖关系的指令从而改变特征码。6.利用跳转法修改特征码。
    7.移动输入表函数特征码。杀软常把内存特征码定位在输入表函数上。输入表特征码分两种:1.位于输入表函数上的特征码2.位于输入表函数所在的DLL文件。 
    8.加\x90免杀输入表文件名。9.移动输出表函数特征码。输出表特征码分两类:1.输出表函数名特征码。2.输出表动态链接库文件名特征码。
    10.利用异或算法加密特征码。
    11.特征码交换,新入口点设置" mov 特征码内存地址 ,X",然后"jmp 原入口点,将特征码用其它字符替换。

9.RootKit

    最关键的思路:通过勾住特定的系统函数,从而改变系统函数执行路径的目的,以使其在做关键操作时被我们提供的函数拦截并过滤。
    本质:就是各种钩子的应用。

10.免杀技术的发展趋势

    免杀技术从2008年以后就已经脱离了修改特征码与修改PE文件的阶段,进而发展内核层对抗,在内核层被大部分反病毒软件掌控后,主要战场有转移到用户层。随着云查杀和白名单技术相结合,病毒防护效果得到巨大提示,免杀技术已经与信息安全领域内其他技术有了较大的结合。免杀技术将会持续着向两方面发展:1.基于本地溢出漏洞的技术方向。2.基于用户对抗 的技巧方向。
0 0
原创粉丝点击