在前一节课中,我们看到使用Meterpreter API运行Ruby脚本。在本节课中,我们将更深入一步。假设我们想要在被攻那个破的主机上开启远程API调用,最简单的方法是什么?当然是Railgun。它是Meterpreter扩展,允许攻那个击者直接调用DLL函数。通常,它用于调用Windows API,但是我们可以调用受害者计算机上的任何DLL。

准备工作

      想要启动Railgun,我们首先需要一个与目标主机建立的活动的Meterpreter会话。要启动Ruby解释器,我们使用irb命令,跟上一节课讨论过的一样。如下图所示:

Meterpreter入门与精通(十九)_工作原理

图1: 启动Ruby解释器

操作步骤

      1、识别您要调用的函数;

      2、在​https://msdn.microsoft.com/en-us/library/aa383749​(v=vs.85).aspx找到函数;

      3、检查函数所在的库(DLL),例如:kernel32.dll。可以调用所选的库函数client.railgun.dll_name.function_name(arg1,arg2,…);

      4、Windows MSDN库可用于识别要在目标计算机上调用的有用的DLL和函数;

      5、我们用client.sys.config.sysinfo API调用来收集目标主机信息。如下图所示:

Meterpreter入门与精通(十九)_工作原理_02

图2: 收集目标主机信息

      6、如果我们只想要操作系统版本信息,可以使用client.sys.config.sysinfo[‘OS’],如下图所示:

Meterpreter入门与精通(十九)_版本信息_03

图3: 获取操作系统版本信息

      使用Railgun可以带来非常强大而令人兴奋的体验。您可以练习自己的调用和脚本来分析输出结果。但是如果您想调用的DLL或函数不是Railgun的一部分怎么办?不用当心,Railgun具有一定的灵活性,使您能够在Railgun中添加自己的函数和DLL。在后面的课程中我们会讨论。

工作原理

      Railgun是Meterpreter的扩展,它使我们无需编译自己的DLL即可调用Windows API。Railgun可用于对目标主机进行远程DLL调用。远程DLL调用是渗那个透测试中的一个重要过程,因为它们向我们提供了目标主机的命令,可以以完全特权执行任何系统指令。

扩展知识

      Railgun现在支持10种不同的Windows API DLLs。您可以在以下文件夹中找到它们的定义:/usr/share /metasploit-framework/lib/rex/post/meterpreter/extensions/stdapi/railgun/def。