第十六课 与注册表的交互

      注册表是系统定义的数据库,用于存储一个或多个用户、应用程序和硬件设备配置等系统所需的信息。

准备工作

      注册表中存储的数据根据Microsoft Windows的版本而有所不同,因此在与目标系统进行交互时需要考虑到这一点。

      通过观察注册表,您能够发现什么文件本使用过、什么网页被浏览过、什么程序被使用过、什么USB设备被接入过等等信息。

操作步骤

      1、要与目标主机的注册表交互,我们可以使用reg命令,在开始之前我们先看看该命令可用的选项。如下所示:

      1)-d <opt>:要存储在注册表值中的数据;

      2)-h:帮助菜单;

      3)-k <opt>:注册表项路径,例如:HKLM\Software\Foo;

      4)-r <opt>:要连接的远程计算机名称(使用当前进程凭据);

      5)-t <opt>:注册表值的类型,例如:REG_SZ;

      6)-v <opt>:注册表值的名称,例如:Stuff;

      7)-w <opt>:设置KEY_WOW64标志和有效值(32/64);

      接下来是命令:

      1)enumkey:枚举提供的注册表项(-k <key>);

      2)createkey:创建提供的注册表项(-k <key>);

      3)deletekey:删除提供的注册表项(-k <key>);

      4)queryclass:查询提供的键的类(-k <key>);

      5)setval:设置注册表值(-k <key> -v <val> -d <data>);

      6)deleteval:删除提供的注册表值(-k <key> -v <val>);

      7)queryval:查询值的数据内容(-k <key> -v <val>);

      如你所见,reg命令允许我们完全控制注册表。在本课中我们将使用reg命令通过Script Web Delivery漏洞利用模块创建注册表后门。

      首先,我们需要设置一个Web服务器来提供我们的PowerShell payload。如下图所示:

Meterpreter入门与精通(十六)_Meterpreter

图1: 设置Web服务器

      2、接下来,我们使用reg命令创建一个新的注册表项,不论何时用户登录机器就会运行PowerShell payload。如下图所示:

Meterpreter入门与精通(十六)_Meterpreter_02

图2: 创建新的注册表项

      3、要枚举注册表项,我们可以使用reg命令以及enumkey选项,后跟-k和我们希望枚举的项。如下图所示:

Meterpreter入门与精通(十六)_Meterpreter_03

图3: 枚举注册表项

      4、要显示值的数据内容,我们可以使用带有queryval选项的reg命令,后跟-k(用于指定注册表项)和-v(用于指定要查询的值)。如下图所示:

Meterpreter入门与精通(十六)_Meterpreter_04

图4: 显示值的数据内容

      5、现在我们已经设置好后门,只需要目标主机重启我们就能回到以系统级特权运行的远程shell。如下图所示:

Meterpreter入门与精通(十六)_Meterpreter_05

图5: 目标主机重启,攻()击机获得后门

      如您所料,Metasploit框架为我们提供了模仿对手并测试最常用的持久性方法所需的所有工具。