瑞星卡卡安全论坛技术交流区反病毒/反流氓软件论坛 思考:杀毒软件对于病毒(木马)变种的查杀机制

1   1  /  1  页   跳转

[原创] 思考:杀毒软件对于病毒(木马)变种的查杀机制

思考:杀毒软件对于病毒(木马)变种的查杀机制

鄙人结合最近从论坛学到的知识,并结合流星学长的过主动防御教程 ,有点感想,在此抒发。


    首先帖一篇文章:


    什么是特征码:
程序运行时,在内存中为完成特定的动作,要有特殊的指令,
一个程序在运行时,同一内存地址的指令是相同的
同一个程序中,一段连续的地址(它的指令相同),那么我截取这段地址,
就可以判断它是不是这个程序。
为了防止出现病毒的误查杀,可以提取出多段特征码。


在WINNT下面的NOTEPAD.EXE的反汇编程序

01006420 > $ 55          PUSH EBP
01006421    . 8BEC        MOV EBP,ESP
01006423    . 6A FF        PUSH -1
01006425    . 68 88180001    PUSH NOTEPAD.01001888
0100642A    . 68 D0650001    PUSH <JMP.&MSVCRT._except_handler3>      ; SE handler installation
0100642F    . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
01006435    . 50          PUSH EAX
01006436    . 64:8925 000000>MOV DWORD PTR FS:[0],ESP
0100643D    . 83C4 98      ADD ESP,-68
01006440    . 53          PUSH EBX
01006441    . 56          PUSH ESI
01006442    . 57          PUSH EDI
01006443    . 8965 E8      MOV DWORD PTR SS:[EBP-18],ESP
01006446    . C745 FC 000000>MOV DWORD PTR SS:[EBP-4],0
0100644D    . 6A 02        PUSH 2
0100644F    . FF15 60110001 CALL DWORD PTR DS:[<&MSVCRT.__set_app_ty>; msvcrt.__set_app_type
01006455    . 83C4 04      ADD ESP,4
01006458    . C705 38990001 >MOV DWORD PTR DS:[1009938],-1
01006462    . C705 3C990001 >MOV DWORD PTR DS:[100993C],-1
0100646C    . FF15 5C110001 CALL DWORD PTR DS:[<&MSVCRT.__p__fmode>] ; msvcrt.__p__fmode
01006472    . 8B0D 44880001 MOV ECX,DWORD PTR DS:[1008844]
01006478    . 8908        MOV DWORD PTR DS:[EAX],ECX
0100647A    . FF15 4C110001 CALL DWORD PTR DS:[<&MSVCRT.__p__commode>; msvcrt.__p__commode
01006480    . 8B15 40880001 MOV EDX,DWORD PTR DS:[1008840]
01006486    . 8910        MOV DWORD PTR DS:[EAX],EDX
01006488    . A1 54110001    MOV EAX,DWORD PTR DS:[<&MSVCRT._adjust_f>
0100648D    . 8B08        MOV ECX,DWORD PTR DS:[EAX]
0100648F    . 890D 40990001 MOV DWORD PTR DS:[1009940],ECX
01006495    . E8 86010000    CALL NOTEPAD.01006620
0100649A    . A1 C0850001    MOV EAX,DWORD PTR DS:[10085C0]
0100649F    . 85C0        TEST EAX,EAX
010064A1    . 75 0E        JNZ SHORT NOTEPAD.010064B1
010064A3    . 68 10660001    PUSH NOTEPAD.01006610
010064A8    . FF15 50110001 CALL DWORD PTR DS:[<&MSVCRT.__setusermat>; msvcrt.__setusermatherr
010064AE    . 83C4 04      ADD ESP,4
010064B1    > E8 3A010000    CALL NOTEPAD.010065F0
010064B6    . 68 0C800001    PUSH NOTEPAD.0100800C
010064BB    . 68 08800001    PUSH NOTEPAD.01008008
010064C0    . E8 17010000    CALL <JMP.&MSVCRT._initterm>
010064C5    . 83C4 08      ADD ESP,8
010064C8    . 8B15 3C880001 MOV EDX,DWORD PTR DS:[100883C]
010064CE    . 8955 94      MOV DWORD PTR SS:[EBP-6C],EDX
010064D1    . 8D45 94      LEA EAX,DWORD PTR SS:[EBP-6C]
010064D4    . 50          PUSH EAX
010064D5    . 8B0D 38880001 MOV ECX,DWORD PTR DS:[1008838]
010064DB    . 51          PUSH ECX
010064DC    . 8D55 9C      LEA EDX,DWORD PTR SS:[EBP-64]
010064DF    . 52          PUSH EDX
010064E0    . 8D45 90      LEA EAX,DWORD PTR SS:[EBP-70]
010064E3    . 50          PUSH EAX
010064E4    . 8D4D A0      LEA ECX,DWORD PTR SS:[EBP-60]
010064E7    . 51          PUSH ECX
010064E8    . FF15 48110001 CALL DWORD PTR DS:[<&MSVCRT.__getmainarg>; msvcrt.__getmainargs
010064EE    . 83C4 14      ADD ESP,14
010064F1    . 68 04800001    PUSH NOTEPAD.01008004
010064F6    . 68 00800001    PUSH NOTEPAD.01008000
010064FB    . E8 DC000000    CALL <JMP.&MSVCRT._initterm>

我们取 地址 01006420    到    0100642A 的指令(杀毒软件都是取核心部分的地址代码),如果别的程序的指令和他不一样,那这个程序就是病毒。通常杀毒软件会提取3处以上的关键代码(程序没有这段代码就无法感染文件或无法启动),如果在同一个EXE都存在则这个文件就是病毒。



    现在的杀软一般都是以提取病毒特征码为主流进行查杀

    如果是灰鸽子等便会有多处(不是一般的多)的特征码

    而普通病毒只有很小一段(为了速度)

    如果有变种  则重新添加特征码







    而病毒的免杀一般都以修改特征码和添加花指令来实现

    修改特征码是最为常用的

    硬盘中修改 内存中修改 过主动防御

    而一般的变种 会在一段时间后被杀软继续查杀



    而特殊的变种(例如很古老的远控做的免杀)则一般都是很久以后,甚至至今也没有被杀软干掉



    鄙人就想:

    是否能用一种自动变化的机制来实现特征码查杀呢?

    例如:

    首先提取多个特征码

    并融入升级包

    当杀软查杀时只应用其中的一段特征码

    并取系统时间为种子  进行某种随机算法的动态变化

    即隔一段时间则查杀的特征码进行变化

    这样貌似能抵御很多针对个人或小团体的病毒以及木马

    纯属个人想法

    欢迎批评

    绝对原创

    08.08.16

用户系统信息:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2)
最后编辑粉碎星辰 最后编辑于 2008-08-16 23:16:28
分享到:
gototop
 

回复:思考:杀毒软件对于病毒(木马)变种的查杀机制



引用:
当杀软查杀时只应用其中的一段特征码

    并取系统时间为种子  进行某种随机算法的动态变化

    即隔一段时间则查杀的特征码进行变化


不懂
gototop
 

回复:思考:杀毒软件对于病毒(木马)变种的查杀机制

为什么没人看啊?555555~~
gototop
 

回复:思考:杀毒软件对于病毒(木马)变种的查杀机制

  我认真看了两遍,感觉概念性的东西还是不理解,比如第一段特征码的定义,我就不是很理解。“一个程序在运行时,同一内存地址的指令是相同的。同一个程序中,一段连续的地址(它的指令相同),那么我截取这段地址,就可以判断它是不是这个程序。” 我比较笨,楼主再解释下。
gototop
 

回复:思考:杀毒软件对于病毒(木马)变种的查杀机制

LZ你这个特征码查杀方法只能是局限性一两个病毒的专门查杀,如专杀工具,或者特别流行的病毒,因为如果这种查杀方式应用到专业杀毒软件当中的话,一个杀毒软件要查杀N多种病毒如果一个病毒还要提取多个特征码,那么那病毒库要多大呢?????而且这种方法用在小木马上根本就是浪费,因为这种小木马本来黑客就不太关注,使用了程度极少,那些病毒弄成这样有必要么????,而且黑客看见要那么多次定位修改特征码,他还不如自己编一个算了还快一点或者用流行的,流行的病毒就算麻烦但我功能强大啊,而且现在用特征码来杀毒根本就不太管用,我只要用工具找到你所有特征码后‘最多我定位用的时间长点’(没有什么特征码是定位不出来的无法修改的只是看你汇编语言掌握的程度了)随便一个跳xxx就把你杀软过了。

现在最难过的就是行为查杀,病毒很难做到和正常软件的动作行为
最后编辑通明1 最后编辑于 2008-08-17 00:54:44
gototop
 

回复: 思考:杀毒软件对于病毒(木马)变种的查杀机制



引用:
原帖由 最硬的石头 于 2008-8-16 23:31:00 发表


引用:
当杀软查杀时只应用其中的一段特征码

    并取系统时间为种子  进行某种随机算法的动态变化

    即隔一段时间则查杀的特征码进行变化


不懂





老兄他这个含义就是通过时间变化来变化调用几号特征码查杀
假如我现在0.51分自动用一号特征码查杀
假如到了1.00分就自动调用二号特征码
但是这个几点调用几号特征码是随机的不是非要几点就调用几号特征码而且时间是取当前杀毒时间来调用的
gototop
 

回复:思考:杀毒软件对于病毒(木马)变种的查杀机制

还是通明哥哥强悍耶
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT