×

Loading...

抓住网页恶意代码的"黑手"[转]

本文发表在 rolia.net 枫下论坛抓住网页恶意代码的"黑手"
文章来源: 鲜味包子摘要 于 2001-9-26 9:45:00:
【编者按:病毒的泛滥弄得计算机用户人人 自危,木马的流行让人感觉在互联网上毫无隐私可言,而网上愈 演愈烈的"网 页病毒"更是搅得人心惶惶,从各方面的求救信号中可以略窥这"病毒"的症状 :在无意浏览了一些网页后,就发现IE标题栏、IE起始主页被莫 名其妙地修改 了、每次开机出现莫名其妙的提示框、修改输入法启动项、启动无关程序 ......,更有文章称:有些网页"病毒"会格式化硬盘。更令人生厌的是,通过 IE"工具"菜单下的"Internet选项"操作界面根本不能修改以恢复 原状。在互联 网发达的今天,谁不天天要浏览众多网页?如果真有这样一些病毒,岂还得了 ?编者从网友来信、论坛收集了一些信息,并对此作了比较详细 的分析后,认 为这"病毒"的更大成分是恶意代码。现在就让我们一步一步地让这些恶意代码 曝光,揭开其"神秘"的面纱!】


恶意网页代码能格式 你的硬盘, 你相信吗?

相关网文摘引
  以下是从网上一篇文章节选(由于不知道出处,敬 请作者与我们联系),作者对能格式化硬盘的恶意代码来了一次" 亲密接触", 可真令人心惊胆颤的,看来说什么恶意代码能格式化硬盘并非空穴来风!

  一日,忽然听朋友说,他在上网 的时候, 不知点击了什么东西,而将他的硬盘全部给格式化了。我首先的念头就是:该 不会是中了那个有名的国产宏病毒"七月杀手"?不过这个宏病毒 是在系统 Autoexec.bat文件中加入了"deltree c:\/y",应该不会格式化整个硬盘。那该不会是……
  曾经在某个杂志 上看到过一个介绍,说什么IE浏览器可以通过执行ActiveX而把 硬盘格式化, 而且记得当时还公布了源代码,只是当时公布的源代码是针对西班牙版的 Windows,对中文版的Windows没有用,说不定那些代码现在已经被一 些高手给 改成了针对中文Windows的呢。
  问问自己的朋友,他也是稀里糊涂地 被格式化掉硬盘的,当时进入的网站也不记得了。没有办法,我只好自己跑到 国内的一些网站去找类似的主题文章。皇天不负苦心人,终于找 到了几个可以 格式化硬盘的HTML文件。网站上的版主出自好心,提醒下载的网友:只能供自 己研究,不可害人。
  考虑到危险性,我先用记事本随便打开其中一个 看看源代码,没有想到这个源文件竟给加了密,里面是用 JavaScript写的脚本 ,加密的部分好像只是一些字符的定义,而真正的脚本内容也只是显示一些字 符在屏幕上。因为自己的机器是刚装好的,没有什么特别重要的数据,所以
就抱着"过把瘾就死"的念头,用IE浏览器打开了这个HTML文件 。接着,浏 览器发出一个警告:"该页上的ActiveX控件与页上的其它部分进行交互可能不 安全,是否允许进行交互?"。如果你选择"是",则就会运行那些不安全控件 。不过我试的这个HTML文件只是给大家开个玩笑,你打开它后, 它说什么"你 的C盘已经被它强行输入格式化,一旦重新启动就格式化了。请不要启动,立 即保存有用的文件。"等诸如此类的话。我仔细检查了一下Windows启动程序里 的内容,也没有什么变化,于是放心大胆地重启,果然是开的玩 笑。
   在下载的另外一个HTML文件中,看看源代码,不禁吓了一跳。程序仅有的不足 30代代码中有24行都是调用Windows里自带的format.com命令,真是够狠的。 除了A、B两个驱外,只要你能够分的区C-Z,都会被格式化。为了 验证其效果 ,又不想我的硬盘被格式化,我把Windows里自带的format.com给改了名字, 然后用IE打开该HTML文件,浏览器同样发出一个警告:"该页上的 某些软件 (ActiveX控件)可能不安全。建议您不要运行。是否允许运行?"。当你选择" 是"的时候,会弹出几十个DOS窗口,可能是因为它找不到 format.com这个文件 ,找开的所有DOS窗口都是什么显示也没有。它不但调用了format.com,另外 还加上了一些参数,如快速格式化等,再加上格式化时窗口就已 经自动完成了 硬盘格式化的工作,等你发现时也已经悔之晚矣。幸好我事先已经把硬盘里的 format.com给改了名字,否则后果可想而知。


怎样知道自己遭了恶意代码,请看"中 毒 现象素描"?


中毒现象素描:
  笔者对网上言论进行了搜集,将其分门别类陈列如下:

(一)、默认主页被修改 :

  "最近,我的电脑发生了 一个奇怪的现象,浏览器的默认主页被自动设为www.********.com,一开始我并没有留意 ,心想只要在IE的"Internet选项"中修改回原来的设置就可以了 ,修改后,果 然没事了,但第二天开机,又被改回去了。 "

(二)、IE标题栏被修改:

  "不知从什么时候起,我 的每个打开的IE页里的 标题栏多出了什么"让历史告诉未来,知青网(www.zhiqing.org)"的字样; "

(三)、开机时出现提示框:

  "一次浏览了一个网页后 ,在看了作者高现需写的"去除IE默认主页、标题诡异添加之一招 两式"(http://www.yesky.c om/20010808/191701.shtml)后虽然解决了去除默认主页问 题,但没法去 掉开机时出现一个提示框,什么“欢迎来访www.play.cn.gs"之类的! "

(四)、IE地址栏下多出了文字 :

  "地址栏下出现一些莫名 其妙的文字,不知怎么去掉。 "

(五)、在注 册表中对IE相关的注册表项如 默认主页等修改无效:

  " 有些网站很可恶,它将IE的默认网页设置成了 该网站的名称后,我自己通过修 改注册表项的"Start Page"和 "Default_Page_URL"后仍不能生效,不知怎么办 !"

(六)、Internet Exploer中点击右键,菜单中出现非法站点 的链接:

  "同样也是由于一次访问了一个网站,以后当浏览网页时,如果点击右键,则弹出的菜单中有非法站点的链接。"

(七)、修改了操作系统

  "浏览了一个网站,后来发现系统已经禁止了'关闭系统'、'运行'、'注销'功能,并且C盘找不到了、注册表编辑器regedit不能使用、DOS程序不能运行,无法进入系统实模式"
恶意代码真的就那么神秘而不可知吗 ? 不,让我们坚决说"不"!

程序讲解

  笔者了 解一些有关Applet、ActiveX及脚本语言方面的知识,在下载含 有恶意代码后 ,对其引用的Javascript脚本文件进行了一些分析。由于安全原因,请恕我不 能将代码完整地写出来或者对程序的编写进行过细的讲解,只是 让大家了解到 这个代码并不神秘。JAVA的最初应用就是Applet程序。虽然JAVA对Applet的安 全作出了限制,但由于浏览器或语言漏洞的原因,当它与功能比较强大的脚本 语言结合时,这些小应用程序常可凭借正常或诡秘的手段对用户 的机器进行修 改,比如修改注册表,运行相关的DOS命令,在用户机器上安装木马或激活相 关的应用程序,其功能之强大远非单纯的网页所能胜任,由此看来,现在网上 所流传的说什么浏览相关网页中病毒或者硬盘被格式化也就见怪 不惊了。另外 ,还有一种嵌入式应用程序就是ActiveX,是微软的一种插件技术,也可以象 Applet一样进行一些针对本机的操作。现在让我们了解一下以下代码编制的机 理(如果你不了解脚本语言,可仅看看程序修改了哪些注册表表 项,然后找到 这些表项并修改回来)。

document.write("〈APPLET HEIGHT=0 WIDTH=0 code=.......〉〈 /APPLET〉"); file://嵌入Applet文件

function f){ file://做出种种修改的语句就在这个函数里
try
{
//ActiveX initialization
a1=document.applets[0]; file://获取applet运行对象,以下语句指向注册表中有关IE的表项
a1.setCLSID("{.............}");
a1.createInstance();
Shl = a1.GetObject();
a1.setCLSID("{.............}");
a1.createInstance();
FSO = a1.GetObject();
a1.setCLSID("{.............}");
a1.createInstance();
Net = a1.GetObject();

try
{
if ( document.cookie.indexOf("Chg") == -1)
{
//以下是对操作系统相关注册表项值项的修改

//使系统没有“运行”项,以防止用户就不能通过注册表 编辑器 来修复设置。
Shl.RegWrite ( "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\ Policies\\ Explorer\\NoRun", 01, "REG_BINARY");


//让操作系统无“关闭系统” 选项
Shl.RegWrite ( "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\ Policies\\ Explorer\\NoClose", 01, "REG_BINARY") ;

//让操作系统无“注销”选项
Shl.RegWrite ( "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\ Policies\\ Explorer\\NoLogOff", 01, "REG_BINARY");
注:使受害者系统没有“注销”项
//让操作系统无逻辑驱动器C
Shl.RegWrite ( "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\ Policies\\ Explorer\\NoDrives", "00000004", "REG_DWORD");

//禁止运行所有 的DOS应用程序;
Shl.RegWrite ( "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\ Policies\\ WinOldApp\\ Disabled","REG_BINARY") ;

//让操作系统无法切换 至传统DOS的实模式下
Shl.RegWrite ( "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\ Policies\ \WinOldApp\\NoRealMode","REG_BINARY") ;

// 让系统登录时显示一个登录窗口,以下是写入启动弹出对话 框标 题
Sh1.RegWrite ( "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\ Winlogon\\Legal NoticeCaption", "........");

// 写入启动弹出对话框内 容
Sh1.RegWrite ( "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\ Winlogon\\Legal NoticeText", "...............");


//以下是对IE 相关注册表项值项 的修改

// 设置浏览器默认主页
Sh1.RegWrite ("HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\Start Page", "..............");

// 修改启动中的输入法启动项
Sh1.RegWrite ( "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\ Run\\internat.e xe", "..............");

// 设置注册不可更改
Sh1.RegWrite ( "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\ Policies\\WinOl dApp\\NoRealMode", "00000000", "REG_DWORD");

//修改 浏览器的标题栏
Shl.RegWrite ("HKLM\\Software\\Microsoft\\Internet Explorer\\Main\\Window Title", "...............");
Shl.RegWrite ("HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\Window Title", "..............");

// 以下程序是将含恶意代码的网页添加至 收藏夹中
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))
{
AddFavLnk(loc, "显示标题.....", "URL......" );
}
}

//设置 cookie值
var expdate = new Date((new Date( )).getTime() + (1));
document.cookie="Chg=general; expires=" + expdate.toGMTString( ) + "; path=/;"
}
}
catch(e)
{}
}
catch(e)
{}
}
//初始化函数,并每隔一秒执行修 改程序
function init()
{
setTimeout("f()", 1000);
}
init();
"水来 土掩,兵来将挡",让我们向恶意代码举起铁拳头!

因应对策:

   当不小心遭了恶意代码时,首先需要做的是动修改注册表相关表 项值:

一、手动修改

1、改正对默认 主页的修改:
在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main中的 "Start Page"和"Default_Page_URL"。

2、更改对Internet Explorer的标题栏的修改:
在 HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main中右边的 窗口中修改字符串值“Window Title”为新标题的名 字。

3、改正对地址栏 下的文字修改:
在 HKEY_CURRENT_USER\Software\Microsoft\Interner Explorer\Toolbar,在右边找到键值LinksFolderName,将其中的内容删去即可 。

4、改正对Windows启动栏的 修改:
这种情况适用于通过修改注册表项?quot;Start Page"和 "Default_Page_URL"仍不能生效的情况,可试着依次打开如下主键: HKEY_LOCAL_MACHINE/Microsoft/Windows/CurrentVersion/run修改右栏里的 “qwe”的键值,删掉表项值,重新启动计算机。

5、改正在Internet Exploer中点击右键中出 现非法站点的链接:
在 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt中删除 非法链接的该键值即可。

6、清除浏览器中地址栏中无用的地址:
在 HEKY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypeURLs中删除无用的键值即可。

二、应用工具软件
  下载《反修改精灵》软件:
  该软件能有效地防止IE修改 ,可到天极网mydown下载站下载。

三、备份与命令恢复

  1:对于Win9x用户,可在机器启动时按F8 键,选择到MS-DOS方式下,使用Scanreg/restore命令来恢复以前备份的正常注册表。
  2:对于Win2000用户,把以下内容copy下来,存 为 recover.reg文件,选带命令行的安全模式,用命令regedit recover.reg导入,然后重启机器:

recover.reg文件内容如下:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Policies\Explorer]
"NoDriveTypeAutoRun"=dword:00000095
"NoRun"=hex:
"NoLogOff"=hex:
"NoDrives"=dword:00000000
"RestrictRun"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Policies\System]
"DisableRegistryTools"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Policies\System]
"DisableRegistryTools"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Policies\WinOldApp]
"Disabled"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Policies\WinOldApp]
"NoRealMode"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion \Winlogon]
"LegalNoticeCaption"=""
"LegalNoticeText"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main]
"Window Title"=""

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"Window Title"=""


与其被动挨打,无如主动出击, 作好防微杜渐的措施尤为必 要!


防患于未然:
  笔者阅读了网上相关文章,对防御方法作了一些总结,希望 你能作些 积极的防范。

  1、要避免中招,关键是不要轻易去一些自己并不 了解的站点,特别是那些看上去美丽诱人的网址更不要贸然前往 ,否则吃亏的 往往是你。

  2、运行IE,点击“工具→Internet选项→安全→ Internet区域的安全级别,把安全极别由“中”改为“高” 。

  3 、由于该类网页是含有有害代码的ActiveX或Applet、 Javascript的网页文件 ,因此在IE设置中将ActiveX插件和控件、Java脚本等 全部禁止就可以避免中 招。具体方法是:在IE窗口中点击“工具→Internet选 项,在 弹出的对话框 中选择“安全”标签,再点击“自定义级别”按钮,就会 弹出“安全设置”对话框,把其中所有ActiveX插件和控件以及Java相关全部 选择“ 禁用”即可。不过,这样做在以后的网页浏览过程中可能会造成一些正 常使用ActiveX的网站无法浏览。唉,有利就有弊,您还是自己看着办吧。

  4、对于Windows98用户,请打开 C:\WINDOWS\JAVA\Packages\CVLV1NBB.ZIP,把其中的“ ActiveXComponent.class”删掉;对于WindowsMe用户,请打开 C:\WINDOWS\JAVA\Packages\5NZVFPF1.ZIP,把其中的“ ActiveXComponent.class”删掉。请放心,删除这个组件不会影响到你。

  5、安装网络防火墙,特别是安装了Norton2001后,进 入该类网 页就会报警提示有脚本写注册表,国产反病毒软件KVW3000也有此类功效,建 议您也安装一个这样的软件。

  6、虽然经过一番辛 苦的劳动修 改回了标题和默认连接首页,但 如果以后又不小心进入该站就又得麻烦一次 。其实,你可以在IE中做一些设置 以便永远不进该站点:

  打开IE,点击“工具”→ “Internet选项 ”→“内容”→“分级审查”,点“启用”按钮,会调出“分级审查”对话框 ,然后点击“许可站点”标签,输入不想去的网站网址,如输入 : http://www.XXX.com,按“从不”按钮,再点击“确定”即大功告成! 正常 浏览网页的

  7、设置注册表相关值项,为注册表"加锁"
  (1)运行注册表编辑器regedit.exe;
  (2)在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System下,增加名为DisableRegistryTools的DWORD值项,并将其值改为“1”,即可禁止使用注册表编辑器regedit.exe。
  如果你由于其它原因需要修改注册表,可用如下解锁方法:

  用记事本编辑一个任意名字的.reg文件,比如recover.reg,内容如下:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableRegistryTools"=dword:00000000

  则双击运行recover.reg即可。



对恶意代码不仅要 知其然,还要知其 所以然!


背景资料:

一、什么是注册表

注册表是在 Windows中,存储关于计算机配置信息的数据库。注册表包含 Windows 2000 操作时不断引用的信息,例如:

每个用户的配置文件。

计算机上安装的程序和每个程序可以创 建的文档类型。

文件夹 和程序图标的属性设置。

系统中 的硬件。

正在使用的端口 。

注册表按层次结 构来组织,由项、子项、配 置单元和值项组成。

请 参阅配置单元 ;子项;值项。
二、什么是值项

  出现在注册表窗口右窗 格中的数据字符串,它定义了当前所选项的值。值项有三个部分 :名称、数据 类型和值本身。

三、什么是注册表项

  在“ 注册表编辑器”中,出现在“注册表编辑器” 窗口 的左窗格中的文件夹。项可 以包含子项和值项。例如,Environment 是 HKEY_CURRENT_USER 的一个项。

四、 什么 是Java Applet

  Java 语言可以编写两种类型的程序:应 用程序 (Application)和小应用程序( Applet)。应用程序是 可以独立运 行的程序,而Applet不能独立运行,需要嵌 入HTML文件,遵循一套约定,在支 持Java的浏览器(如: Netscape Navigator 2.02版本以上, HotJava,Microsoft Internet Explorer 3.0版本以上)运行,是Java一个重要的应用分支,也是 当时Java最 令人感兴 趣的地方(它一改网页呆板的界面),就是在WWW网页( Home Page / Pages)设计中加入动画、 影像、音乐等,而要达到这些效果使用最 多的 是Java Applet和Java Script (这是一种Java的命令稿语言)。

五、什么是JavaScript

   JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言 、与Web 客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或 文件引用在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是 Java与HTML折衷的选择,具有基于对象、简单、安全、动态、跨 平台性等特性 。

六、什么是ActiveX

   ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对 象模型)使得软件部件在网络环境中进行交互的技术。 它与具体的编程语言无关。作为针对Internet应用开发的技术 ,ActiveX被广 泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便 地创建普通的桌面应用程序。在Applet中可以使用ActiveX技术 ,如直接嵌入 ActiveX控制,或者以ActiveX技术为桥梁,将其它开发商提供的多种语言的程 序对象集成到Java中。与Java的字节码技术相比,ActiveX提供 了“代码签名 ”(Code Signing)技术保证其安全性。

Date: Sep 26, 2001 on 18:13更多精彩文章及讨论,请光临枫下论坛 rolia.net
Report

Replies, comments and Discussions: