个人产品
企业产品
安全信息
病毒专栏 | 漏洞专栏 | 木马专栏 | 防护专栏 | 安全业界 | 毒霸活动 | 热点专题 | 漫画安全 | 期刊订阅
302 Found

302 Found


nginx/1.0.5
告诉您的位置:首页 > 资讯中心 > 防护技巧 > 正文
网页“黑手”是如何攻击你的Windows系统的?
2002年06月28日10:14:01 计算机世界网 
302 Found

302 Found


nginx/1.0.5
  网络的流行,让我们的世界变得更加美好,但它也有让人不愉快的时候。比如,当你收到一封主题为“I Love You”的邮件,兴冲冲的双击附件想欣赏一下这封“情书”的时候,却在无意当中成为了病毒的受害者和传播者;或者在浏览某个网页的时候,浏览器标题栏就变成了类似“欢迎光临……”,而默认主页也被修改,并且自己的注册表莫名其妙的被“锁定”了,即当我们运行“regedit.exe”时,系统弹出一个诸如:“注册表已被管理员所禁用,请找系统管理员联系……”等等字样;更有甚者,听说浏览网页时,自己的硬盘还可能会被悄悄格式化……太可怕了!真有这样的事吗?

  当然是真的,不信,那你敢接着往下看吗?。

  其实这个爱虫病毒(“I Love You”的邮件)和那些恶意破坏你系统的网页并不可怕,它们都是由几句并不复杂的VB Script代码编写而成的,只要你弄清楚其中的道理,就自然会有应付它们的办法,那时候你还会担心它们吗?本文就对破坏系统的网页“黑手”加以分析,并给出防范和修复方法,让大家都能过上“平安幸福的生活”。

  说道VB Script,还得从WSH说起。

  一、什么是WSH?

  WSH是Windows Scripting Host(Windows脚本主机)的缩略形式。WSH这个概念最早出现于Windows 98操作系统,是一个基于32 位 Windows 平台、并独立于语言的脚本运行环境。比如:你自己编写了一个脚本文件,如后缀为 .vbs 或 .js 的文件,然后在 Windows 下双击并执行它,这时,系统就会自动调用一个适当的程序来对它进行解释并执行,而这个程序,就是 Windows Scripting Host,程序执行文件名为 Wscript.exe (若是在DOS命令提示符下,则为 Cscript.exe)。

  想知道自己的机器上有没有WSH吗?查看一下你的机器里有没有“Wscipt.exe”或者“Cscript.exe”这两个文件就可以了。如果找到,恭喜你!你已经安装了WSH。否则,自己手动安装吧:

  在Windows 98环境下,WSH是作为操作系统的一个组件自动安装的,如果不慎丢失了这个组件,可以从依次打开“控制面板-->添加/删除程序--〉Windows安装程序--〉附件”,然后将“Windows Scripting Host”前的划上“√”,再确定即可完成WSH组件的安装。

  二、脚本语言与WSH的关系

  大家知道,脚本语言(包括JavaScript和VBscript语言等)经常会被植入网页之中(其中包括 HTML 页面客户机端和 ASP 页面服务器端)。对于植入 HTML 页面的脚本,其所需的解析引擎会由 IE 这样的网页浏览器载入;对于植入 ASP 页面的脚本,其所需的解析引擎会由 IIS(Internet Information Services)提供。而对于出现在 HTML 和 ASP 页面之外的脚本(它们常以独立的文件形式存在),就需要经由 WSH 来处理了。需要说明的是:WSH 要想正常工作,还要安装IE 3.0 或更高版本的 IE,因为 WSH 在工作时会调用 IE 中的 VBScript 和 JavaScript 解析引擎。 [未结束][iduba_page]在这些被植于网页的脚本语言中,绝大多数是与网络安全无关的。但也有少数别有用心的好事者,把一些严重危及网络安全的代码(我们常常称之为“恶意代码”,他们通常都要通过修改注册表达到“恶意”的目的!),混放在正常的脚本之中,常常让我们防不胜防。但是,如果我们了解一点关于脚本语言的知识,这些“伎俩”都是非常容易识破的。还是让我们从几个简单的实例开始吧……

  三、WSH应用举例

  WSH可以处理脚本程序,怎样阅读和编写WSH的脚本源文件呢?只要你有一点Basic(会VB的编程更好,呵呵)语言的基础,学会看懂WSH脚本语言的程序并不是一件难事。去C:WINDOWSSAMPLESWSH目录以下将看看吧!里面提供了几类经典的脚本例子,而且分别提供了VBScript和JavaScript两个版本,我们只要用记事本打开它们并仔细研究就不难学到一些基本的WSH应用。

  你只需在记事本中依次输入以下每个实例中的代码,并保存为相应的“*.vbs”文件,双击这个文件,你就可以看到相应的效果了。

  〖实例一〗效果:弹出对话框窗口“欢迎共同学习WSH”。

  WScript.Echo(“欢迎共同学习WSH”)

  〖实例二〗效果:在D盘根目录下建立二十个新文件夹。

  dim objdir

  set objdir=WScript.Createobject("Scripting.filesystemobject")

  for k=1 to 20

  sNewFolder="d:WSHsample" & k ‘给新的文件夹命名

  objdir.Createfolder(sNewFolder)

  next

  〖实例三〗效果:使用 Windows Scripting Host 在c:创建一个文本文件testfile.txt

  ‘text.vbs 这是本文件的文件名

  Set RegWsh = Wscript.CreateObject("Wscript.Shell")

  RegWsh.Run ("notepad " & Wscript.ScriptFullName)

  ‘上面用SHELL对象启动程序

  Set fs = Wscript.CreateObject("Scripting.FileSystemObject")

  Set a = fs.CreateTextFile("c:testfile.txt", True)

  a.WriteLine("这只是一次测试。请检查你的机器的c:是否有testfile.txt文件出现?")

  a.Close

  很简单,是吧?呵呵,是的。只要你有一点点程序设计的基础,看懂以上几个实例中的代码是非常容易的,你也可以试着编制一些类似的“脚本”实例了……

  然而,正是因为脚本编程的门槛低,容易上手,所以在给我们的生活带来方便和高效的同时,也为少数“不法分子”提供了可乘之机。常见的恶意代码有什么特征呢?最根本的一条就是对系统注册表的访问。怎样利用脚本访问注册表? [未结束][iduba_page]四、用VBScript脚本访问注册表

  用VBScript或者Javascript都可以编写脚本程序。鉴于VBscript语言更接近VB,相信有更多的朋友都是从BASIC语言开始学编程的。所以本文不想介绍Javascript,而重点介绍VBscript。用VBscript编写的WSH程序文件的扩展名为.vbs,该脚本程序在图形界面下是由wscript.exe文件解释执行的,一般直接双击.vbs文件即可由系统自动调用wscript.exe进行解释并执行。在字符界面(DOS方式)下则是由cscript.exe文件解释执行的,命令格式为:cscript filename.vbs。先来看看几个相关的操作和方法:

  1、创建对象

  用VBScript访问注册表,必须先创建一个能与操作系统沟通的对象,再利用该对象的各种方法对注册表进行操作,创建这个对象的方法和格式如下:

  Set 对象变量名=WScript.CreateObject("WScript.Shell")

  如:Set regwsh=WScript.CreateObject("WScript.Shell") 就可以创建一个名为“regwsh”的对象。

  2、该对象常用的方法

  有了以上这个对象,还要借助它的几个重要的方法,才能达到访问注册表的目的。常用的方法有:

  ①读注册表键值的操作RegRead

  格式:object.RegRead(路径参数)

  ②创建/修改注册表键值的操作RegWrite

  格式:RegWrite 路径参数, 值 [,值类型]

  说明:当被操作的“路径参数”不存在时,创建该主键或键值;反之,则修改原有的键值。

  ③删除注册表键值的操作RegDelete

  格式:RegDelete 路径参数

  3、关于路径参数的说明

  该路径参数指出了操作的对象。它由根键、主键路径和键值三部分组成,各部分表示的方法如下:

  ①根键

  根键有两种表示方法:缩写形式(short)和完整形式(Long)。相互的对应关系为:

  Short Long

  HKCU HKEY_CURRENT_USER

  HKLM HKEY_LOCAL_MACHINE

  HKCR HKEY_CLASSES_ROOT

  而对于 HKEY_USERS 和 HKEY_CURRENT_CONFIG 两个根键则没有缩写形式。

  ②主键路径

  主键路径就是目标键在注册表中的主键位置,各个主键之间用""符分隔开。如:"SoftwareMicrosoftWindowsCurrentVersionPolicies"

  ③键值

  键值参数可以省去不写。在这种情况下,整个路径参数就以""结尾。这时,所有的操作都只针对整个主键来进行,而不是该主键的某个键值。如果想对某个主键下的某个键值进行操作,则应包含这一部分,直接接在主键路径之后即可。

  例如一个完整的路径参数如下所示:"HKCRSoftwareMicrosoftWindowsCurrentVersionPoliciesNoRun" [未结束][iduba_page]4、应用举例

  〖应用之一〗

  以下将是一个创建、读取显示、修改和删除注册表项的脚本示例。程序在每一次进行注册表的操作之前,都会给出相应的提示,建议大家在运行本程序之前,用一个窗口打开本脚本的源代码,在另一个窗口打开注册表编辑器,并找到HKEY_CURRENT_USER根键。在每一次出现提示之后,不要急于点击“确定”,按<TAB>键切换到注册表编辑窗口,按下<F5>刷新一下注册表的相关键值,并观察程序的执行情况与注册表变化之间的关系。最后切换到提示窗口,按下“确定”继续程序的执行。这样,相信大家都能立即理解并学会这几个方法的使用方法。源代码如下:

  ‘DEMO.vbs 这是脚本程序的文件名

  Dim RegWsh,sReadKey,sPrompt,sFixprompt

  sFixprompt=chr(13)&chr(10)&" 是否与写入的内容相一致?:) :-) :--)"

  MsgBox "此脚本显示如何创建、读取、修改和删除注册表项。"

  Set RegWsh = WScript.CreateObject("WScript.Shell")

  MsgBox "创建项 HKCUMyRegKey,数值为 ‘一级键值‘"

  RegWsh.RegWrite "HKCUMyRegKey", "一级键值"

  sReadKey=RegWsh.RegRead("HKCUMyRegKey")

  sPrompt="(默认)键值为:‘"&sReadKey&"‘"&sFixprompt

  msgbox "读取的HKCUMyRegKey下"&sPrompt

  MsgBox "创建项 HKCUMyRegKeyEntry,数值为 ‘二级子键‘"

  RegWsh.RegWrite "HKCUMyRegKeyEntry", "二级子键"

  sReadKey=RegWsh.RegRead("HKCUMyRegKeyEntry")

  sPrompt="(默认)键值为:‘"&sReadKey&"‘"&sFixprompt

  msgbox "读取的HKCUMyRegKeyEntry下"&sPrompt

  MsgBox "修改 HKCUMyRegKeyEntry(默认)键值为:‘修改后的二级子键‘"

  RegWsh.RegWrite "HKCUMyRegKeyEntry", "修改后的二级子键"

  sReadKey=RegWsh.RegRead("HKCUMyRegKeyEntry")

  sPrompt="(默认)键值已经修改为:‘"&sReadKey&"‘"&sFixprompt

  msgbox "读取的HKCUMyRegKeyEntry下"&sPrompt

  MsgBox "将数值项 HKCUMyRegKeyValue 设为字符类型(REG_SZ),数值为 1"

  RegWsh.RegWrite "HKCUMyRegKeyValue", 1

  MsgBox "将数值项 HKCUMyRegKeyEntry 设为 双字节型(REG_DWORD),数值为 2"

  RegWsh.RegWrite "HKCUMyRegKeyEntry", 2, "REG_DWORD"

  MsgBox "将数值项 HKCUMyRegKeyEntryValue1 设为 二进制类型(REG_BINARY),数值为 3" RegWsh.RegWrite "HKCUMyRegKeyEntryValue1", 3, "REG_BINARY" [未结束][iduba_page]MsgBox "以下将删除 HKCUMyRegKeyEntryValue1 数值"

  RegWsh.RegDelete "HKCUMyRegKeyEntryValue1"

  MsgBox "以下将删除 HKCUMyRegKeyEntry 主键"

  RegWsh.RegDelete "HKCUMyRegKeyEntry"

  MsgBox "以下将删除 HKCUMyRegKey 主键"

  RegWsh.RegDelete "HKCUMyRegKey"

  从上面的例子可以看出,用脚本访问注册表其实也很简单。当然,我们也可以将用VBScript编写的脚本代码放在网页文件(Html文档)之中,这时,一般无需对代码进行任何更改,只需要在VBScript代码的前后,分别加上<script language=vbs>和</script>即可。下面我们再举一例进行说明:

  〖应用之二〗带毒网页解析

  点击这里看带毒网页演示。如果提示网页上有错误,请下载到本地运行

  [说明]:在使用上面这个“〖应用之二〗带毒网页解析”例子的时候,请注意有一定的危险性。一定要事先做好注册表的备份!如果出现其他异常情况,请尽快用后文中的recover.htm进行恢复!!!

  有了前面所学的知识,我们已经知道,在网页中调用脚本语言访问注册表,其实是很容易的一件事。但如果所访问的注册表的键值被蓄意的进行了恶意的修改……呵呵。我们的系统的安全性就受到了严峻的挑战。欲知防范和事后补救措施,请参看《如何防治破坏Windows系统的网页“黑手”》
[1] [2] [3] [4] [5]     【】
【我要发表评论】【内容指正】【论坛】【推荐给好友】·【 】【打印】·【顶部】【关闭窗口
【相关文章】 【去论坛】
· 微软推AMD64硬件安全技术 免遭恶意代码入侵 2003-11-04 15:51
· 软件缺陷和恶意代码的猛增 网络安全受威胁 2003-10-03 22:21
· 微软IE又暴露缺陷 5行代码就能使浏览器崩溃 2003-04-18 12:41
· 微软PPTP服务器缓冲溢出漏洞可运行恶意代码 2002-09-28 14:45
· 安全专家预言计算机网络恶意代码的发展趋势 2002-07-18 11:35
· 如何防治破坏Windows系统的网页“黑手” 2002-06-28 10:21
· 警惕恶意网页修改IE的另外一招 2002-06-27 16:18
· 拒绝恶意修改 还电脑以本来面目! 2002-06-27 16:08
· 防范恶意代码修改您的IE浏览器五法 2002-06-27 16:03
· 注册表损坏之症状和修复 2002-06-27 16:01
·金山毒霸单机版讨论区
·毒霸6测试专区
·金山网镖讨论区
·金山毒霸网络版讨论区
·毒霸在线业务专题讨论区
·安全软件讨论区
·病毒救援
【相关专题】
· 恶意代码(网页病毒)专题 2002-06-26 14:50
302 Found

302 Found


nginx/1.0.5
302 Found

302 Found


nginx/1.0.5
·全民围剿 新春无毒 
·
毒霸、网镖新功能体验版 
·
毒霸网络版2.0 sp1发布 
·
毒霸6新禧礼包惊喜登场
·
毒霸网络版 人人有礼
·毒霸网络版“租用服务”
·
金山毒霸网络版大事件
·第三次缉毒万里行专题
·JPEG图片病毒专题
·金山引爆“双响炮”计划
·金山毒霸6增强版介绍
·
十面埋伏围剿木马发布会
·
6.12北京用户产品座谈会
·
金山"网游防火墙"产品
·
反电子垃圾新功略专题
·“金山毒霸再获桂冠”
·金山“安全体验风暴”
·“冲击波”病毒之罪?
·全球黑客攻击专题
·金山毒霸V金山网镖V介绍
·金山V攻略详解专题
·金山毒霸&智冠捆绑销售
·金山软件爱心服务活动
·2003年病毒疫情调查专题
更多...
302 Found

302 Found


nginx/1.0.5
·病毒短信 ·在线杀毒
·病毒上报 ·专杀工具
·产品答疑 ·
媒体合作
金山简介 | 业务合作 | 广告服务 | 招聘信息 | 客服中心 | 网页报错 | 添加毒霸到QQ上
© 2007 Kingsoft Corp. 增值电信业务经营许可证B2-20040288号