反病毒理念、历史、现状与未来

场景:反病毒理念历史现状与未来(zt)解决思路

反病毒理念、历史、现状与未来(zt)
原文:http://www.xfocus.net/articles/200612/896.html
创建时间:2006-12-31   更新时间:2006-12-31
文章属性:原创
文章提交:killer   (killer_at_xfocus.org)

反病毒理念、历史、现状与未来


killer   <killer②xfocus.org>

注:图片不方便显示,PDF版下载:http://killer.9i3g.cn/tmp/AVhistory&future_killer.pdf

一、玩的就是概念:

        AV是我习惯的简写,全名应该叫Anti-Virus,从这个英语字面含义和一些对反病毒历史的追溯,我发现最初人们想表现的并不是杀毒,今天我们总是习惯叫杀毒软件,其实是不准确的。Anti的本意是抵制、防护,它应该叫抗病毒,或者防病毒。不论抗或者防都说明对病毒的未雨绸缪。杀毒则是一种后发补救的策略,虽说亡羊补牢犹未晚,但毕竟还是有一些损失的。

        叫杀毒软件则是典型的中国特色,比如健康,中国人一般平时是不太注意健康的,等到有病了才要去看病。中国的反病毒公司出于宣传效果需要,就必然要搞的威风凛凛,给AV技术带来一层杀气腾腾的神秘色彩。
        说起概念,我很欣赏一些国外的宣传,这里不防就给NAV做个广告:
       
[img]http://killer.9i3g.cn/imgage/aver/Symentec1.jpg[/img]
       
        看到没,上面这图就是Symentec给自己做的宣传页,诺顿在发布会上用瑜伽诠释了它的文化“自由分享,安心沟通”,瑜伽的充分舒展身体,意味着自由,意味着无限延伸。

        如今的网络你可以安心沟通么?显然不能!网络上广告满天飞,流氓插件群魔乱舞,垃圾邮件像一只只马蜂乱蛰,一些“黑客”整天无聊的扫来扫去,D站D得不亦乐乎。这个时候,你认为你需要的,显然不是浪费时间和精力的去检查,去杀灭,你希望的也许是一个安心的防护套件,让我们可以自由、安心的冲浪。
        反病毒理念的不同造就各种不同的反病毒产品,不过上天有好生之德,本文作者亦本着万物以自己的喜好为准,所以并不特别推荐你用哪种AV,也请勿问我。

二、混沌初开:

        自从盘古开天辟地的以来,出来了两个神仙级的人物,一个被人称为Doctor   Soloman,一个叫Eugene   Kaspersky,另外还有两个叫Peter   Norton和Mcafee。这几位神仙有感人间妖风阵阵^-^,病毒横行。决定制定一套法典,用来解救世人,于是他们的研究,促成了当年反病毒理论的基础。这些基础理论,经过后来的一些教授、专家们推广开来,就形成了今天的反病毒体系。

        在那个时代,还有无数的高人,自己苦心孤诣的修炼,但终因天资所限、时不与我,或者剑走偏锋,步步险招,无法修炼成正果。
       
        远古的反病毒软件主要有:
        Anti-virus   collection   by   V.Bontchev
        F-Prot
        File   Shiled     by   McAfee
        NOD   of   Slovak   AV
        TbScan
        AVP   by   E.Kaspersky
        Dr.Web   by   Igor   Daniloff
        Norton   AV
        Solomon 's   Toolkit
        LEVEL3   virus   dedicated   AV   by   SAC
        IBM   Anti-Virus
       
        除了这些,还有更多的针对某个病毒的专杀,这里就不一一列出了。值得注意的是:我在这里尽量列出今天你还能熟知的名字,然而尽管我努力,历史终究是无情的。你在上面看到的,一部分和大多数我没列出来的已经成为遥远的过去,只有像我这样喜欢怀旧的人,偶尔会想起那些曾经的同病毒决战的侠士。
       
        最初病毒不多,能掌握写病毒会被人视为天才,好像现在还是这样?大家的抗病毒办法都是针对一个个病毒写专杀,后来因为病毒多了,大家开始编写类似批处理的脚本,这样用户在选择1   2   3   菜单来选择查杀哪个病毒,这本质还是一对一的检测方式。

        还有多少朋友记得DOS中那个编制菜单用来选择的命令?      
       
        早期的AV几乎都是这样过来的,但是随后神仙们发现这样做不行,病毒数量膨胀的太快,文件格式具备通用处理过程,每次的专杀都有一些重复工作的地方。所以神仙们的反病毒理论逐渐浮出水面,这个时候,开始形成了通用反病毒技术。整个的针对大量的病毒的处理,也开始了模块化分工,扫描/清除,文件修复等。

        于是AV开始转型,具备扫描模块、清除模块、特征库,AV外围技术也开始如火如荼的发展起来,主动监控、完整性检查、免疫技术等等。

        下面这一段就是最初一个完整的用来清除引导病毒的AV源代码:
=====================================================================
.model   tiny
.radix   16
.code
                org   100
start:
                mov           dx,offset   message
                mov           ah,09
                int           21
                xor           ax,ax
                int           16
                or             al,20
                cmp           al, 'y '
                je             Goforit
                mov           dx,offset   notdone
                mov           ah,09
                int           21
                mov           ax,4c01
                int           21
GoForIt:
                xor           ax,ax
                mov           ds,ax
                mov           ax,word   ptr   ds:[413]
                mov           cs:ConvMEM,ax                
                mov           di,offset   Int13
                mov           si,13*4
                movsw
                movsw
                push         cs
                pop           ds
                cmp           ConvMem,280
                je             RegConvMem
                mov           ah,09
                mov           dx,offset   StrangeConv
                int           21
RegCOnvMem:
                mov           ax,0201
                mov           bx,offset   OrgSector
                mov           cx,1
                mov           dx,80
                int           13
                call         TunnelInterrupts
                mov           ax,0201
                mov           bx,offset   NewSec
                mov           cx,1
                mov           dx,80
                int           13
                push         cs   cs
                pop           es   ds
                mov           di,offset   NewSec
                mov           si,offset   OrgSector
                mov           cx,200
                repz         cmpsb
                jcxz         NoDifference
                mov           ax,0301
                mov           bx,offset   OrgSector
                mov           cx,1
                mov           dx,80
                int           13
                mov           ah,3c
                mov           dx,offset   sample
                xor           cx,cx
                int           21
                xchg         bx,ax
                mov           ah,40
                mov           dx,offset   NewSec
                mov           cx,200
                int           21
                mov           ah,3e
                int           21
LOCKEMIN:
                cli
                mov           ah,09
                mov           dx,offset   fixed
                int           21
                xor           ax,ax
                int           16
                jmp           LOCKEMIN
Nodifference:
                mov           ah,09
                mov           dx,offset   noprob
                int           21
                mov           ax,4c00
                int           21
TunnelInterrupts:
                push         ax   bx   cx   dx   es   ds   si   di
                xor           ax,ax
                mov           ds,ax
                push         word   ptr   ds:[04]
                push         word   ptr   ds:[06]
                cli
                mov           word   ptr   ds:[04],offset   Int1
                mov           word   ptr   ds:[06],cs
                pushf
                pushf
                pop           ax
                or             ax,100
                push         ax
                popf
                xor           ax,ax
                call         dword   ptr   cs:[int13]       ;tunnel   interrupt   13
                pushf
                pop           ax
                and           ax,0feff
                push         ax
                popf
      ExitTunnel:
                les           bx,dword   ptr   cs:[Root13]
                cli
                xor           ax,ax
                mov           ds,ax
                pop           word   ptr   ds:[06]
                pop           word   ptr   ds:[04]
                mov           word   ptr   ds:[13*4],bx
                mov           word   ptr   ds:[13*4+2],es
                sti
                pop           di   si   ds   es   dx   cx   bx   ax
                ret
Int1:
                cmp           cs:found,1
                je             exitint1
                push         bp
                mov           bp,sp
                push         ax   bx   cx   dx   es   ds   si   di
                mov           ax,ss:[bp+2]
                mov           cx,4
                shr           ax,cl
                add           ax,ss:[bp+4]
                cmp           ax,0c000
                jb             DoneInt1
                mov           cs:found,1
                les           bx,SS:[bp+2]
                mov           word   ptr   cs:[Root13],bx
                mov           word   ptr   cs:[Root13+2],es
    DoneInt1:
                pop           di   si   ds   es   dx   cx   bx   ax   bp
exitint1:
                iret
StrangeConv   db       0a,0dh, 'Conventional   Memory   Suspicious. ',0a,0dh,24
Fixed       db             0a,0dh, 'Virus   Cleaned   -   sample   saved   in   VIRUS.MBR   . ',0a,0dh    
                db                           'Now   COLD   REBOOT   IMMEDIATELY!!!!!!!!!!!!!!!! ',0a,0dh,24
NoProb     db             0a,0dh, 'No   Stealthing   Detected.     No   Action   Taken. ',0a,0dh,24
notdone   db             0a,0dh, 'No   Action   Taken. ',0a,0dh,24
Message:
db             0a,0dh
db             '--==[Stormbringer ' 's   Instant   Stealth   MBR   Virus   Remover.]==-- ',0a,0dh
db             '                     USE   AT   YOUR   OWN   RISK!     RTFM   Before   Using!                   ',0a,0dh
db             0a,0dh, 'Continue   (y/N) ',24
sample                     db             'Virus.MBR ',0
found                       db             0
NewSec                     db             200   dup(?)
OrgSector               db             200   dup(?)
Int13                       dd             ?
Root13                     dd             ?
ConvMem                   dw             ?
end   start


------解决方案--------------------
第一次看到
------解决方案--------------------
两个月前看过,也是病毒高发时期,而且貌似局限在国内。

现在有略显平静下来的迹象。
------解决方案--------------------
学习