病毒介绍:
TPVO/3783 病毒是一种传染性、隐蔽性都很强的病毒,它的独到之处是可以传染 WINDOWS 文件,使病毒可以在 WINDOWS 执行时驻留内存。 该病毒传染硬盘、软盘引导区及 WINDOWS、DOS 可执行程序,包括.EXE.COM.OVL.386 等等文件,不传染带覆盖的文件,程序被传染后长度增加 3783 字节, 文件日期被 加上 100 年作为传染标记。
该病毒驻留内存后,用 DIR 命令看不出文件长度的变化,用 INT 13H 读出的磁盘引导记录是正常的,而不是带毒的引导记录,用应用程序读出的带毒文件也都是正常的, 但是由 ARJ、PKZIP、RAR、LHA、BACKUP、MSBACKUP、TELIX 七个程序读出的文件却是带毒的,所以被这些压缩程序压进文件包或用 TELIX 通过调制解调器传到其他地方的文件 是带毒的,由此可见该病毒在隐藏和传播上的用心良苦。
该病毒在传染硬盘主引导区时隐藏于 0 柱面 0 头 5 扇区,传染软盘引导区时隐藏于新格式化的第 81 个磁道,传染文件时附在文件尾部,病毒本身不加密。 当带毒的 WINDOWS 系统运行时,根目录中的虚拟内存文件 386SPART.PAR 属性会变成普通属性,用 DIR 命令可以列出。
病毒分析:
1. 驻留内存及截取中断 该病毒采用修改内存控制块的方法来驻留内存,如果 UMB 存在,病毒会驻留在 UMB中,该病毒驻留内存后截取 INT 21H 和 INT 13H 中断,来完成对文件和引导区的传染, 在截取 INT 21H 时,该病毒采取了与众不同的方法。下面是 INT 21H 内部片断,在中断程序完成了初始化后,将 AH 中的功能号放在 BX 中再乘 2,再用查表的办法得到相应子 程序的地址,然后用近调用来执行相应子程序,具体见下:
...
FDC8:4198 8ADC MOV BL,AH ;AH 为子功能号
FDC8:419A D1E3 SHL BX,1 ;放于 BX 中再乘 2
...
FDC8:41EA 2E8B9F9E3E MOV BX,CS:[BX+3E9E]
;3E9E 为各功能地址表的基地址
FDC8:41EF 36871EEA05 XCHG BX,SS:[05EA] ;调用地址在 05EA 中
FDC8:41F4 368E1EEC05 MOV DS,SS:[05EC]
FDC8:41F9 36FF16EA05 CALL SS:[05EA] ;调用相应功能的子程序
...
病毒在驻留时先截取 INT 2AH,在 INT 2AH 中检测到使用的堆栈为 MSDOS.SYS 堆栈段时,表示中断由 INT 21H 发出,这时由中断返回地址得到 MSDOS.SYS 程序段的段地址, 再查找以上几句指令并将 CALL SS:[05EA] 改为 CALL XXXX:053D 指向病毒代码,在完成修改、传染等功能后再转向原来的 INT 21H 执行。由于这一段代码在 INT 21H 的第一百 多句以后,当使用 DOS=HIGH 参数启动时这一段代码被移到 HMA 中, 所以该病毒的截取手段有很大的欺骗性,不但能骗过几乎所有内存监视程序,而且即使用手工反汇编 INT 21H中断程序都不一定能觉察到异常之处。
在截取 INT 13H 时,病毒先使用未公开中断 INT 2FH 的 1300H 功能来得到 DOS 内部设备驱动程序使用的原始 INT 13H 地址,然后在 BIOS 中随机寻找一个中断号大于 E0H 号的INT XX代码,将这个中断向量指向病毒的 INT 13H服务程序,然后将 DOS 保存的原始INT 13H 地址改成指向 BIOS 中的 INT XX 指令,使得在不同的计算机中指向病毒 程序的中断向量号都不相同。
2. 传染及其他部分病毒截取 INT 13H 来传染磁盘的引导区,在进行普通的读写功能时,病毒并不传染,所以磁盘读写速度并不明显减慢,只有在对磁盘的引导区进行读写时,病毒才进行传染。 传染硬盘主引导区时,病毒隐藏在保留磁道 0 柱面 0 头第 5 扇区开始的 8 个扇区中,原引导记录被保存在 0 柱面 0 头第 13 扇区。一般软盘只有 80 个磁道,病毒在传染软 盘引导记录时,先格式化出一个第 81 磁道,再将自身隐藏于第 81 磁道 1 扇区开始的 8个扇区中,原引导记录被保存在第 81 磁道第 9 扇区。当有程序读取引导记录时, 病 毒将原引导记录读出送回。
病毒截取 INT 21H 来完成可执行文件的传染和一些欺骗功能,在 INT 21H 的 11H、12H、4EH、4FH 匹配文件寻找功能中,病毒返回正确的文件长度和时间,在 57H 读写文 件时间功能中,病毒返回正确的文件时间,在 3FH 读文件功能中, 如果读到文件被修改的部分,病毒将返回正确的内容,在 40H 写文件功能中,如果写已被传染的文件, 病毒 将文件复原,到以后关闭文件时重新传染。结果在应用软件看来,带毒文件没有任何异常之处。
当执行 INT 21H 的 3DH 打开文件、3EH 关闭文件、43H 文件属性功能、56H 文件改名、4BH 执行文件时,病毒对文件进行传染,传染后病毒附于文件尾部,文件开始指针被 指向病毒入口处。对于.COM 文件,病毒将文件第一句指令改为 JMP XXXX 跳转到病毒入口处,对于普通.EXE 文件,病毒将文件入口指针指向病毒入口处, 将堆栈指向病毒尾部 200H处。
下面详细分析病毒对 WINDOWS 可执行文件的修改,由于 WINDOWS 可执行文件的资料很少见,这里先简单介绍一下 WINDOWS 文I的结构:WINDOWS 文件由 DOS 执行部分和 WINDOWS 执行部分组成,DOS 部分只是简单的打印一句提示信息即退出,WINDOWS 部分以覆盖的方式位于文件后部。文件报头分两部分,第一部分为普通的.EXE 文件报头, 第 二部分为 "NE" 新格式可执行报头,有关部分说明如下:
普通 .EXE 文件报头 18H 字
重分配表偏移( WINDOWS 文件必须大于 0040H)
3CH 双字 "NE" 可执行报头在程序中的偏移
"NE" 可执行报头 00H 2 字节 "NE" 符号
(长 40H 字节) 14H 字 程序入口 IP
16H 字 程序入口段的段地址记录号
18H 双字 程序初始 SS:SP
1CH 字 段地址表中的记录数
22H 字 段地址表在程序中的偏移
32H 字节 段大小的计数单位 (移位值)
程序中所有的段都由段地址表中的一个记录来描述,包括段在程序中的偏移、段的大小、段的属性、段装入时要分配内存的大小,执行程序时,系统由入口段的记录号查段地 址表得出这个段在程序中的位置和大小,将代码装入内存,再由入口 IP开始执行。 段地址表中每个记录占用 8 个字节,格式如下:
00H 字 本段在程序中的偏移 (乘以计数单位)
02H 字 本段的长度 (单位:字节)
04H 字 本段的属性
06H 字 要分配的容量 (单位:字节)
病毒增加了一个段地址表记录来描述病毒代码段属性,在 WINDOWS 文件中, 段地址表一般紧接着 "NE" 报头存放,段地址表后面也紧接着其他数据,中间没有多余字节,所 以病毒将整个 "NE" 报头和段地址表前移了 8 字节,然后在空出的 8 字节中写下一个新的段地址表记录, 再将程序入口段记录号改到指向这个新的记录, 具体改动的数据有: 003CH处的 "NE" 报头偏移减 8,"NE" 报头中 16H 的入口段记录号改为病毒段,1CH 的段地址表记录数加 1,另外将 04H、24H、26H、28H、2AH 中其他相关表的偏移加 8。
2. 病毒源码:略
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!