我想为Metasploit Framework贡献代码,但我不知道他们的格式指南和代码要求。开始编写自己的Metasploit模块有哪些贡献指南?
答案 0 :(得分:0)
如果您点击此链接:
您不仅可以找到有关设置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模块中的选项?”)我们很乐意为您提供帮助!
干杯,祝你好运!