注册表是一个很神奇的"东东",为什么这么神奇?因为即可利用注册表来搞破坏,又可以利用注册表防止黑客搞破坏;"矛与盾"学习就是本片文章主要的内容。 "好的,跟着我的文章开始学习吧!" 一、注册表的由来 从Windows 95开始,Microsoft在Windows中引入了注册表的概念。注册表是表格吗?这样理解是不准确的,注册表是Windows的核心数据库,表中存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序运行的正常与否,如果该注册表由于某种原因受到了破坏,轻者可以使Windows的启动过程出现异常,重者可能会导致整个Windows系统的完全瘫痪。因此对于黑客入门学习,正确地认识和学习注册表是非常有必要的。 二、注册表的打开方法 1.大家可以在开始菜单中的运行里输入regedit 2.也可以在DOS下输入regedit 三、注册表的结构 注册表由键、子键和值项构成,一个键就是分支中的一个文件夹,而子键就是这个文件夹中的子文件夹,子键同样是一个键。一个值项则是一个键的当前定义,由名称、数据类型以及分配的值组成。一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。 在注册表中,所有的数据都是通过一种树状结构以键和子键的方式组织起来,十分类似于目录结构。每个键都包含了一组特定的信息,每个键的键名都是 和它所包含的信息相关的。如果这个键包含子键,则在注册表编辑器窗口中代表这个键的文件夹的左边将有"+"符号,以表示在这个文件夹中有更多的内容。如果这个文件夹被用户打开了,那么这个"+"就会变成"-"。 六大根键的作用 : 1、HKEY_CLASSES_ROOT 这个子树包含了所有应用程序运行时必需的信息;在文件和应用程序之间所有的扩展名和关联所有的驱动程序名称。类的ID数字(所要存取项的名字用数字来代替)用于应用程序和文件的图标; 在Windows用户图形界面下每件事、每个文件、每个目录、每个小程序、每个连接、每个驱动都被看做一个对象,每个对象都有确定的属性和它联系。HKCR包含着对象类型和他们属性的列表。 HKCR主要功能设置为; 一个对象类型和一个扩展名关联; 一个对象类型和一种图标关联; 一个对象类型和一个命令行动的关联。 定义对象类型相关菜单选项和没一个对象类型属性选项。 2、HKEY_CURRENT_USER 此根键(子树)中记录的是当前用户的配置数据信息,用户可以利用此根键下的子键修改Windows的许多环境配置。 HKEY_CURRENT_USER根键中的主键 (1)AppEvents主键,包含了已注册了的各种应用事件。 (2)Console主键Windows2003控制台子系统存储设置,控制台子系统运行所有基于字符的应用程序。 (3)Control Panel主键,包含了与控制面板有关的内容。 (4)Environment主键,已登录用户表示环境变量的设置的数据项值。 (5)Identities它是当前用户的ID,但不是主要的ID。在HKEY_USERS中,每个用户都有唯一的ID。这与之相匹配。 (6)Keyboaed Layout储存安装键盘的布局信息,包含硬件和驱动器设置。 (7)Network仅当当前用户具有映像的网络磁盘时才存在。是父项,不保留重要数据。 (8)Printers在计算机打印机上的相关信息,包括用户设置的配置选项。 (9)Session Information包含当前会话中使用的与应用程序相关的信息。 (10)Software存储登录用户的特定应用程序用户设置和程序变量、 (11)Volatile Environment 当前用户会话设置。 3、HKEY_LOCAL_MACHINE 此根键保存与计算机、硬件、所安装的设备驱动器,以及影响所有计算机用户的配置选项(安全和软件设置)等相关信息。它包含了5个项。 (1)HARDWARE Ntdetect.com(Windows 2003硬件识别程序)在启动过程中,从头开始建立这个项的内容。该信息保存在RAM中,子项的层次结构保存计算机所有的硬件组件信息。 (2)SAM 安全账户管理器,存储用户和数据组的地方,SAM数据由所有本地用户和组组成包括用户访问文件夹,文件以及外设的权限。 (3)SECURITY 有安全有关的数据项,保存安全策略和用户组策略的配置信息。 (4)SOFTWARE 操作系统在这里保存计算机设置,包括组策略配置生效的设置,所安装的软件、版本等等。 (5)SYSTEM 控制操作系统的启动。几乎控制操作系统所做的每一件事(特别是内核服务),这是对计算机配置的正确性的方法。 4、HKEY_USER 包含计算机默认用户的配置文件和已知用户的配置文件的子项。 5、HKEY_CURRENT_CONFIG 保存计算机启动时所使用的与硬件配置文件相关信息。它是HKEY_LOCAL_MACHINESYSTEMCurrentControlSetHardware Profilescurrent的别名。 6、HKEY_DYN_DATA 该根键存放了系统在运行时动态数据,此数据在每次显示时都是变化的,因此,此根键下的信息没有放在注册表中。 四、注册表里的主要内容 1、保存个人文件夹、 收藏夹的路径 Hkey_local_machine/software/microsoft/windows/currentVersion/explorer/user shell folders 2、保存键盘使用的语言以及各种中文输入法 Hkey_local_machine/system/currentControlSet/control/keyboard Layouts 3、保存IE浏览器地址栏中输入的URL地址列表信息。清除文档菜单时将被清空。 Hkey_users/.Default/software/microsoft/internet explorer/typeURLs 4、保留程序菜单排序信息 Hkey_users/.Default/so../mi../wi../currentVersion/ex../menuOrder/startMenu 5、 保存"开始 * 运行..."中运行的程序列表信息,清除文档菜单时将被清空 Hkey_users/.Default/so../microsoft/windows/currentVersion/explorer/RunMRU 6、保存最近使用的十五个文档的快捷方式(删除掉可解决文档名称重复的毛病),清除文档菜单时将被清空。 Hkey_users/.Default/so../microsoft/windows/currentVersion/explorer/ecents 7、 保存已安装的Windows应用程序卸载信息。 Hkey_local_machine/software/microsoft/windows/currentVersion/uninstall 8、保存Windows应用程序的纪录数据。 hkey_users/.default/software/microsoft/windows/currentVersion/applets 9、保存控制面板-增添硬件设备-设备类型目录。 Hkey_local_machine/system/CurrentControlSet/services/class 10、保存由控制面板设定的计算机启动时运行程序的名称,其图标显示在任务条右边。[启动文件夹程序运行时图标也在任务条右边] Hkey_local_machine/software/microsoft/windows/currentVersion/run 11、保存由用户设定的计算机启动时运行程序的名称,其图标显示在任务条右侧。 hkey_users/.default/software/microsoft/windows/currentVersion/run 12、保存桌面中特殊的图标,如回收站、收件箱等。 Hkey-local-machine/ software/ microsoft/ windows/ currentVersion/ explorer/ desktop/namespace 五、黑客利用注册表能做什么事 "黑客"利用注册表主要干的坏事主要是启动黑客程序,黑客会利用注册表实现"病毒、木马"程序的自启动,木马要实现远程控制,就需要木马服务器端时刻在线,这样黑客就可以利用客户端来操控被植入木马的用户的计算机了。所以利用注册表实现程序的自启动就很重要。 那么如何通过修改注册表实现自启动呢? 注册表中可被利用的表项非常多,常见的如下: 1. Run注册表键 HKCUSoftwareMicrosoftWindowsCurrentVersionRun HKCUSoftwareMicrosoftWindowsCurrentVersionRunOnce HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce 需要注意的是,这里的RunOnce只会运行一次,之后该表项内容就自动删除。 2. Load注册表键 HKCU SoftwareMicrosoftWindowsNTCurrentVersionWindowsload 3. Userinit注册表键 HKLM SOFTWAREMicrosoftWindows NTCurrentVersionWinlogonUserinit 通常该注册键下面有一个userinit.exe,但这个键允许指定用逗号分隔的多个程序,例如:userinit.exe,OSA.exe。 下面通过编程修改HKCUSoftwareMicrosoftWindowsCurrentVersionRun为例,将我们的对话框在开机时实现自启动: 将上述代码加入到上一章的Main函数中,重启计算机后,"病毒"就可实现自运行。可以修改上述代码中相应的注册表代码,以添加到不同的注册表项中实现自启动。 这里再讲一下整个程序的执行流程。首先当双击这个可执行文件后,会弹出对话框,提示用户"中毒",之后单击"确定",对话框消失,程序将自身复制到Windows目录以及系统目录中,之后创建并执行批处理文件以删除自身与该批处理,最后将Windows目录下的Hacked.exe添加到注册表中,以实现自启动。 上述功能也可以用批处理实现:代码如下: @echo off echo Windows Registry Editor Version 5.00 >>1.reg echo [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun] >>1.reg echo "Hacked.exe"="C:WindowsHacked.exe" >>1.reg regedit /s 1.reg del /f 1.reg 上述批处理代码会首先创建一个注册表文件(REG),将相应的代码写入该文件中,运行后再删除该注册表文件。 六、如何利用注册表防止黑客的破坏 通过修改注册表来对付病毒、木马、后门以及黑客程序,保证个人计算机的安全。 1.清理访问"网络邻居"后留下的字句信息 在HEKY_CURRENT_USERNetworkRecent下,删除下面的主键。 2.取消登陆时自动拨号 在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionNetworkRealModeNet 下修改右边窗口中的"autologon"为"01 00 00 00 00"。 3.取消登录时选择用户 已经删除了所有用户,但登录时还要选择用户,我们要取消登录时选择用户,就要在HKEY_LOCAL_MACHINENetworkLogon 下,在右边的窗口中,修改"UserProfiles"值为"0"。 4.公开上机用户登录的名字 在HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionWinlogon下在右边的窗口中新建字符串"DontDisplayLastUserName",设值为"1"。 5.预防Acid Battery v1.0木马的破坏 在 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices下若在右边窗口中如发现了"Explorer"键值,则说明中了YAI木马,将它删除。 6.预防YAI木马的破坏 在 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices下若在右边窗口中如发现了"Batterieanzeige"键值,则说明中了YAI木马,将它删除。 7.预防Eclipse 2000木马的破坏 在 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices下若在右边窗口中如发现了"bybt"键值,则将它删除。 然后在 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices下删除右边的键值"cksys",重新启动电脑。 8.预防BO2000的破坏 在 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices下若在右边窗口中如发现了"umgr32.EⅩE"键值,则说明中了BO2000,将它删除。 9.预防爱虫的破坏 在HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun下若在右边窗口中如发现了"MSKernel32"键值,就将它删除。 10.禁止出现IE菜单中"工具"栏里"interner选项" 把c:windowssystem下的名为inetcpl.cpl更名为inetcpl.old或则别的名字后就会出现禁止使用的情况把名字再换回来,就可以恢复使用。 11.预防BackDoor的破坏 在HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun下若在右边窗口中如发现了"Notepad"键值,就将它删除。 12.预防WinNuke的破坏 在HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDMSTCP下在右边的窗口中新建或修改字符串"BSDUrgent",设其值为0。 13.预防KeyboardGhost的破坏 在 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices下如发现 KG.EⅩE这一键值,就将它删除,并查找KG.EⅩE文件和kg.dat文件,将它们都删除。 14.查找NetSpy黑客程序 在HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun下,在右边的窗口中寻找键"NetSpy",如果存在,就说明已经装有NetSpy黑客程序,把它删除。 15、让"文件系统"菜单在系统属性中消失为了防止非法用户随意篡改系统中的文件,我们有必要把"系统属性"中"文件系统"的菜单隐藏起来。隐藏时,只要在注册表编辑器中用鼠标依次打开HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem键值,在右边的窗口中新建一个DWORD串值:"NoFileSysPage",然后把它的值改为"1"即可。 16、让用户只使用指定的程序为防止用户非法运行或者修改程序,导致整个计算机系统处于混乱状态,我们可以通过修改注册表来达到让用户只能使用指定的程序的目的,从而保证系统的安全。设置时,可以在注册表编辑器窗口中依次打开HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer键值,然后在右边的窗口中新建一个DWORD串值,名字取为"RestrictRun",把它的值设为"1"。然后在RestrictRun的主键下分别添加名为"1"、"2"、"3"等字符串值,然后将"1","2"、"3"等字符串的值设置为我们允许用户使用的程序名。例如将"1"、"2"、"3"分别设置为word.EXE、notepad.EXE、write.EXE,则用户只能使用word、记事本、写字板了,这样我们的系统将会做到最大的保障,也可以限制用户运行不必要的软件了。 17、禁用"任务栏属性"功能任务栏属性功能,可以方便用户对开始菜单进行修改,可以修改的很多属性和运行的程序,这在我们看来是件很危险的事情,所以有必要禁止对它的修改。修改设置时,首先运行regedit进入注册表编辑器,找到如下分支HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer,在右窗格内新建一个DWORD串值"NoSetTaskBar",然后双击"NoSetTaskBar"键值,在弹出的对话框的"键值"框内输入1,就可以达到禁用"任务栏属性"功能了。 18、禁止修改显示属性有许多用户为了使自己使用的电脑外观设置变得更漂亮一点,以便能体现出个性化的风格,往往通过修改显示属性达到更改外观的目的。但在实践操作中,我们有时要保证所有计算机的设置都必须相同,以方便同步教学,这时我们就需要禁止修改显示属性了。修改时,可以用鼠标依次打开如下分支:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem,接着在右边的窗口中新建一个DOWRD串值:然后将"新值#1"更名为"NoDispCPL",并将其值设为"1"就可以了。