如何开始编写Metasploit模块/漏洞?

时间:2017-07-03 19:43:42

标签: ruby metasploit

我想为Metasploit Framework贡献代码,但我不知道他们的格式指南和代码要求。开始编写自己的Metasploit模块有哪些贡献指南?

1 个答案:

答案 0 :(得分:0)

如果您点击此链接:

  

How to get started with writing an auxiliary module

您不仅可以找到有关设置metasploit模块的有用参考,还可以找到有关metasploit开发和使用的106页的完整维基(<撰写本文时)。

现在,我说参考而不是教程,因为制作metasploit模块需要查找10%样板代码和90%没有任何东西的老红宝石与metasploit有关。

以这个简单的模板模块为例:

require 'msf/core'

class MetasploitModule < Msf::Auxiliary

  include Msf::Auxiliary::Scanner

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'Module name',
      'Description'    => %q{
        Say something that the user might want to know.
      },
      'Author'         => [ 'Name' ],
      'License'        => MSF_LICENSE
    ))
  end

  def run
    # use `print_status` to print to the metasploit console, instead of `puts`
  end

end

逐行走过它:

require 'msf/core'

首先我们需要metasploit文件,以便我们可以使用它们。

class MetasploitModule < Msf::Auxiliary

然后我们定义一个继承自metasploit辅助类的新类。

  include Msf::Auxiliary::Scanner

这里我们包含了metasploit扫描程序,因此我们可以在代码中使用它。您可以在此处包含任何metasploit模块,以便在您自己的模块中使用它们;但是,您可能找不到模块的教程。您需要阅读文档以了解如何使用它们。

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'Module name',
      'Description'    => %q{
        Say something that the user might want to know.
      },
      'Author'         => [ 'Name' ],
      'License'        => MSF_LICENSE
    ))
  end

这个初始化方法基本上是样板代码,它告诉metasploit有关你的模块的信息,以便它可以向metasploit控制台内的用户显示所述信息。

  def run
    # use `print_status` to print to the metasploit console, instead of `puts`
  end

这是您的代码所在!这也是metasploit结束和好老红宝石开始的地方。如果您要使HTTP服务器回显恶意负载,请使用http服务器gem并编写逻辑。你可以在这里使用metasploit模块,但是你可以像使用任何其他ruby gem或库一样使用它们(并学习如何使用它们):查看文档和API参考。

end

就是这样!最终,您发现了什么使IT安全成为一个困难的领域。没有任何教程可以教你如何破解或可以帮助你创建漏洞的框架。 Metasploit更像是一个用于策划攻击集合的工具,编写自己的模块只是将您的漏洞“插入”到metasploit,以便其他人可以轻松使用它。漏洞利用本身只是一些ruby代码,用于使用基本网络库做一些聪明的事情。

创建一个全新且有用的黑客工具将是一些重要的事情,一些付费的安全专业人员只梦想实现。我建议你选择一个已经存在的黑客工具(密码破解程序,网络扫描程序,网络爬虫等),研究工具的目的和功能,熟悉它的使用,并努力创建自己的版本。然后,有一次,你已经做了你想做的事情,把你的代码包装在metasploit模板中,以便可以从metasploit访问它。

如果你遇到困难,你可以回到stackoverflow更具体的问题(例如“我如何扫描IP上的开放端口?”或“我如何访问metasploit模块中的选项?”)我们很乐意为您提供帮助!

干杯,祝你好运!