漏洞说明:
RPC(Remote Procedure Call)Buffer Overrun蠕虫漏洞,微软于7月16日发布此漏洞的安全补丁(MS-0326)。漏洞原理及攻击代码最早为Flashsky发布在安全焦点,发布时并有安全专家预测会有针对此漏洞的蠕虫病毒,2个星期之后病毒代码被病毒作者利用写出MSBlast蠕虫病毒。还没等用户更新此安全补丁,就己经导致MSBlast蠕虫病毒在全球范围内大规模传播,相信这几天MSBlast蠕虫病毒将会导致更多使用者受此病毒的攻击。微软公司针对此漏洞进行详细讲解。 微软针对缺陷的安全补丁: http://www.microsoft.com/technet/treeview/?url=/technet/security/bulletin/MS03-026.asp
病毒浅析:
该病毒使用C编写,病毒可执行使用UPX软件压缩之后总长度为6176字节,在病毒程序中包含Flashsky编写的漏洞攻击代码,说明该病毒是利用Flashsky编写的攻击代码。此攻击代码主要针对Windows 2000操作系统而编写,攻击代码中包含绝大部分Widnows 2000溢出文件偏移地址,针对NT4 XP 2003溢出攻击都不会成功,因为操作系统版本不相同,溢出文件偏移地址也不相同,溢出不成功将会导致Remote Procedure Call (RPC)服务停止,文件复制贴粘无法使用,COM属性无法正常使用。NT4 XP 2003操作系统溢出不成功将会导致RPC服务被终止,而PRC服务进程被异常终止之后可能会导致计算机重新启动。PRC服务通讯则依赖TCP/135端口进行通讯。 病毒执行之后将会在%SystemRoot%\system32\目标下生成msblast.exe病毒可执行文件。并在注册表添加自运行键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,键值项目名称为windows auto update,键值会批向%SystemRoot%\system32\msblast.exe目录下,病毒程序进程名为msblast.exe。蠕虫病毒成功执行后并在本机创建TFTP UDP/69服务端,如果溢出攻击成功,则利用cmd.exe绑定目标主机TCP/4444端口,发送TFTP下载命令将病毒文件msblast.exe复制到目标操作系统。病毒程序将向当前IP地址C段发送SYN封包扫描。完成C段IP扫描之后病毒程序将会随机产生IP地址向外部进行扫描,病毒程序在进行扫描过程中会消耗大量网络资源及系统资源。 蠕虫病毒攻击代码针对Windows XP 2003操作系统并不会成功,但会造成Windows XP 2003 PRC服务停止,导致操作系统重新启动。 发现蠕虫病毒中文本数据: billy gates why do you make this possible ? Stop making money and fix your software!
感染步骤:
首先A主机感染之后向B主机发送攻击代码:
如果攻击成功: (1)开启B机器TCP/4444端口,发送TFTP下载命令将A主机上的病毒文件复制到B主机并执行。执行之后B机器又会向其它IP地址进行扫描并进行溢出攻击。
如果攻击失败: (1) B主机屏蔽135端口,A主机无法发送攻击代码至B主机,导致溢出攻击失败。 (2) B主机被溢出攻击之后,因文件偏移地址不同,导致溢出不成功。并会将RPC服务停止,文件复制贴粘无法使用,COM属性无法正常使用,XP操作系统攻击之后会造成机器重启。重新启动操作系统会恢复正常,但极易再次受到溢出攻击。
解决对策:
针对解决对策强烈建议你安装微软MS-0326操作系统补丁,因MSBlast蠕虫病毒是利用微软这个操作系统缺陷进行攻击。
Windows Me 98 Windows Me 98不受此病毒的影响,建议安装防火墙产品防止病毒及入侵者进攻。
WinNT 4 针对Windows NT4操作系统己经发布针对此漏洞进行修正补丁,补丁下载地址为: http://microsoft.com/downloads/details.aspx?FamilyId=2CC66F4E-217E-4FA7-BDBF-DF77A0B9303F&displaylang=en
Windows 2000 针对Windows 2000操作系统己经发布针对此漏洞进行修正补丁,补丁下载地址为: http://microsoft.com/downloads/details.aspx?FamilyId=C8B8A846-F541-4C15-8C9F-220354449117&displaylang=en
Windows XP 针对Windows XP操作系统己经发布针对此漏洞进行修正补丁,补丁下载地址为: 32位操作系统 http://microsoft.com/downloads/details.aspx?FamilyId=2CC66F4E-217E-4FA7-BDBF-DF77A0B9303F&displaylang=en 64位操作系统 http://microsoft.com/downloads/details.aspx?FamilyId=2CC66F4E-217E-4FA7-BDBF-DF77A0B9303F&displaylang=en
Windows 2003 针对Windows 2003操作系统己经发布针对此漏洞进行修正补丁,补丁下载地址为: 32位操作系统 http://microsoft.com/downloads/details.aspx?FamilyId=2CC66F4E-217E-4FA7-BDBF-DF77A0B9303F&displaylang=en 64位操作系统 http://microsoft.com/downloads/details.aspx?FamilyId=2CC66F4E-217E-4FA7-BDBF-DF77A0B9303F&displaylang=en
清除工具:
清除病毒之后需要了解病毒感染原理,针对MSBlast蠕虫病毒晚上写了一个清除工具,包含杀死病毒进程,清除病毒可执行文件。建议先断开网络,安装操作系统补丁重启操作系统之后运行清除工具即可。如文中有表达错误的地方还请您的指教!谢谢~
//****************************************************** // MSBlaster清除软件 By 19821119 //组织主页 http://www.4ngel.net/ //组织主页 http://www.ph4nt0m.net/ //组织主页http://www.cnvcl.org //个人主页 http://www.19821119.com/ //联系方式 19821119@vip.sina.com //2003/8/12于深圳市罗湖区清水河 //****************************************************** program KillRPC;
uses
Windows,SysUtils, tlhelp32,registry;
procedure Kill; var ID:DWORD; I: string; Ret: Boolean; tmp:string; SnapshotHandle: THandle; PE32: tProcessEntry32; hh: HWND; begin I := lowercase('msblast.exe'); SnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); PE32.dwSize := SizeOf(PE32); Ret:= Process32First(SnapshotHandle, PE32); while Integer(ret) <> 0 do begin tmp:=lowercase(PE32.szExeFile); if pos(i,tmp)>0 then begin Id := PE32.th32ProcessID; hh := OpenProcess(PROCESS_ALL_ACCESS, True,Id); TerminateProcess(hh, 0); end; Ret:=Process32Next(SnapshotHandle,PE32); end; end;
function getdir:string; var reg:tregistry; begin result:=''; reg:=tregistry.create; with reg do begin rootkey:=HKEY_LOCAL_MACHINE; openkey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false); result:=readstring('windows auto update') end; reg.free; end;
procedure clearrun; var reg:TRegistry; begin reg:=tregistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey ('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',true); reg.DeleteValue('windows auto update'); Reg.CloseKey; end;
begin kill; deletefile(extractfilepath(getdir)+'\msblast.exe'); clearrun; end. |
查看所有10条评论>>