1、预备知识:注册表
注册表和组策略是Windows系统提供的两个对系统参数进行配置的应用服务。其中,修改组策略的本质是修改注册表的键值。
(1)注册表的概念
从用户的角度看,注册表系统由注册表数据库和注册表编辑器两部分组成。其中,注册表数据库包括SYSTEM.DAT和USER.DAT两个文件。SYSTEM.DAT用来保存计算机的系统信息;USER.DAT用来保存每个用户的特定信息。注册表编辑器(rededit.exe)是一个专门用来编辑注册表的程序,使用它来进行注册表的基本浏览、编辑和修改操作。注册表的架构采用树形结构:子树目录、键与子键、数值。
1)子树目录。也称根文件夹或者根键。其中,HKEY_LOCAL_MACHINE保存着本地计算机的设置数据,如硬件设置、设备驱动程序设置等信息,系统利用这些设置值来决定如何启动与设置计算机环境;HKEY_CLASSES_ROOT下保存着程序的文件类型关联信息,以及COM对象的设置数据;HKEY_CURRENT_USER下保存着当前登录者的用户配置文件,如用户的桌面设置、网络驱动器、网络打印机等;HKEY_USERS下保存着多个子键,其中“.DEFAULT”表示启动时显示“按Ctrl+Alt+Delete”登录窗口,“当前登录者的SID”保存着当前登录者的用户配置文件;HKEY_CURRENT_CONFIG下保存着当前的硬件配置文件数据。
2)键与子键。键与子键之间的关系就相当于文件夹与子文件夹之间的关系,即在键下可以创建数值与子键。简单的将,在注册表左侧窗口中前面带“+”或“-”的项都称为键,而子树目录下创建的键称为子键。
3)数值。每一条数值内包含数值名称、数值类型和数值数据三部分。不同的windows版本注册表支持的数据类型不同,下表列出了Windows server 2012支持的数据类型及说明:
数据类型 | 说 明 |
REG_SZ | 单一字符串 |
REG_MULTI_SZ | 多重字符串 |
REG_BINARY | 二进制数值 |
REG_DWORD | 32位数值 |
REG_QWORD | 64位数值 |
REG_EXPAND_SZ | 包含变量(如%systemroot%)的字符串 |
(2)注册表的安全设置
由于注册表的重要性,系统管理员可以通过加固注册表来提高系统的安全性,防止攻击者提高修改注册表来破坏系统。攻击者在入侵目标系统后提高权限提升拥有对注册表的修改权限,再通过修改注册表实现对系统的攻击或为下一次攻击做好准备。主要操作有:
1)禁用注册表编辑器。在windows系统安装结束后,用户可以使用注册表编辑工具regedit.exe对注册表进行修改,存在较大安全隐患。对于提供信息服务的重要系统,可以通过禁止用户使用注册表编辑工具来提高系统的安全性。
具体实现方法:运用注册表编辑工具regedit.exe,打开“注册表编辑器”窗口,依次展开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Polices\System,在“System”键(没有就新建一个)下新建一个子键“DisabkeRegistryTools”,将“数值数据”设置为“1”即可(系统默认0)。
2)限制对注册表的远程访问。由于注册表是Windows系统的核心,而且默认情况下所有安装Windows操作系统的计算机注册表在网络上都是可以被访问的,攻击者完全可以利用这个漏洞来对目标主机进行注册表攻击,修改文件内容,插入恶意代码。为了保护Windows操作系统的安全,可以禁止对注册表的远程访问。具体方法是:在本地“服务”列表中找到“Remote Registry”服务,将其“启动类型”设置为“禁用”即可。
3)禁用注册表的启动项。一些恶意代码或攻击程序通过注册表的启动项(RUN值)来加载运行。出于安全考虑,可以在注册表编辑器中依次展开HKEY_LOCAL_MACHINE\Software\Microsoft\CurrentVersion\Run,将子键“RUN”的权限设置为“读取”,取消对“完全控制”权限的选择。
2、实验清单
windows server 2003、Filemon、directory monitor、regmon
3、实验步骤
(1)运行file.exe文件,运行该文件之后,该文件会将所有与文件相关的操作全部记录下来,选项栏以此是序号、时间、进程、请求、路径等。
(2)如果需要查看相关的进程,可以在选取了指定进程后右击,在出现的快捷菜单中选择“进程属性”选项;
(3)双击某个进程,可以打开该进程所在的文件夹;
(4)复制某个文件夹,运行directorymonitor.exe,新增监视项
(5)对监视的文件夹进行修改、访问、删除等都会被记录下来;
(6)运行regmon.exe, 可以查看注册表信息;
(7)双击任意进程,可以看到该进程所在注册表的具体位置。