如果您正在编写或收集不属于标准分发版的Metasploit模块,那么您需要一种方便的方式在Metasploit中加载这些模块。不要担心,使用Metasploit的默认本地模块搜索路径$HOME/.msf4/modules
是非常简单的,而且还有一些注意事项
您必须首先建立一个符合Metasploit对路径名称预期的目录结构。这通常意味着你应该首先创建一个exploits
目录结构,如下所示:
mkdir -p $HOME/.msf4/modules/exploits
如果你正在使用auxiliary
或post
模块,或正在写payloads
.你将会想要mkdir
它
模块按(有点任意)分类排序。这些可以是你喜欢的任何东西; 我通常使用test
或private
,但是如果您正在开发一个模块,想将它提供给Metasploit发行版,您将需要镜像真正的模块路径。例如
mkdir -p $ HOME /.msf4/modules/exploits/windows/fileformat
假设你正在开发Windows文件格式的exploit。
一旦你有一个目录放置它,随时下载或开始编写你的模块。
如果您已经运行了msfconsole,请使用reload_all命令来获取新模块。如果没有,只需启动msfconsole,他们就会自动提取。如果你想测试一些通用的东西,我有一个模块放出来,在这里 https://gist.github.com/todb-r7/5935519. 所以让我们试试看
mkdir -p $HOME/.msf4/modules/exploits/test
curl -Lo ~/.msf4/modules/exploits/test/test_module.rb https://gist.github.com/todb-r7/5935519/raw/17f7e40ab9054051c1f7e0655c6f8c8a1787d4f5/test_module.rb
todb@ubuntu:~$ mkdir -p $HOME/.msf4/modules/exploits/test
todb@ubuntu:~$ curl -Lo ~/.msf4/modules/exploits/test/test_module.rb https://gist.github.com/todb-r7/5935519/raw/6e5d2da61c82b0aa8cec36825363118e9dd5f86b/test_module.rb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1140 0 1140 0 0 3607 0 --:--:-- --:--:-- --:--:-- 7808
然后 在我的msfconsole窗口
msf > reload_all
[*] Reloading modules from all module paths...
IIIIII dTb.dTb _.---._
II 4' v 'B .'"".'/|\`.""'.
II 6. .P : .' / | \ `. :
II 'T;. .;P' '.' / | \ `.'
II 'T; ;P' `. / | \ .'
IIIIII 'YvP' `-.__|__.-'
I love shells --egypt
=[ metasploit v4.6.2-2013052901 [core:4.6 api:1.0]
+ -- --=[ 1122 exploits - 707 auxiliary - 192 post
+ -- --=[ 307 payloads - 30 encoders - 8 nops
msf > use exploit/test/test_module
msf exploit(test_module) > info
Name: Fake Test Module
Module: exploit/test/test_module
Version: 0
Platform: Windows
Privileged: No
License: Metasploit Framework License (BSD)
Rank: Excellent
Provided by:
todb <[email protected]>
Available targets:
Id Name
-- ----
0 Universal
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
DATA Hello, world! yes The output data
Payload information:
Description:
If this module loads, you know you're doing it right.
References:
http://cvedetails.com/cve/1970-0001/
msf exploit(test_module) > exploit
[*] Started reverse handler on 192.168.145.1:4444
[+] Hello, world!
msf exploit(test_module) >
这就是它的全部。人们(包我自己)到的最常见的问题是
- 试图在
$HOME/.msf4/modules/
创建一个模块 这是行不通的.因为你需要指定它是一个exploit还是一个payload或者什么的。检查ls /opt/metasploit/apps/pro/msf3/modules/
(或者你安装Metasploit的地方) - 试图在$HOME/.msf4/modules/auxiliary/创建一个模块 这是行不通的,因为您至少需要一个分类.它可以是新的,像auxiliary/0day/或现有的一样 像
auxiliary/scanner/scada/
- 试图在$HOME/.msf4/modules/exploit 或$HOME/.msf4/posts/创建一个模块 注意目录名称的复数 它们是不同的 Exploits, payloads, encoders, 和 nops 是负数 . auxiliary 和 post 是单数
请注意,Metasploit Community Edition 的$HOME目录将会是root而不是您自己的用户目录.所以如果您希望模块出现在Metasploit CE (or Express, or Pro) web UIs.您将需要讲您的外部模块放到/root/.msf4/modules
。当然,这意味着您需要root权限访问那台机器,但是,您是Metasploit用户,所以不应该太难。
另外请注意,如果您的模块未显示在Web UI中,则应重新启动Pro服务。
对于Windows用户来说,除了从Web GUI访问模块外,以上都是一样。可悲的是,你有一点点运气不好,Windows上的模块加载路径有一些限制,并且不允许使用外部模块。但是,基于Console2的Metasploit控制台(Start > Programs > Metasploit > Metasploit Console)可以很好地工作。
任何需要更改核心库函数的模块,比如新的协议解析器或其他库mixin模块.是不会为你这样做的.你将会在你的模块中到处试图加载这些类。在几乎所有情况下都可以编写完全自包含的模块(感谢Ruby的开放式体系结构),但是之后这些模块几乎总是会被重构,以使其他模块可使用
在这种情况下,最好使用像开发分支这样合适的GitHub checkout来处理模块 - 请参阅开发环境设置文档,了解更多信息
如果你正在加载新的令人兴奋的的Metasploit模块,那么知道这些东西往往可以访问任何你有权访问的东西; 如果你使用root,更是如此. Metasploit模块是纯文本的Ruby,所以你可以阅读它们 - 但请小心,只添加来自可信来源的外部模块; 不要只是抓住你在互联网上看到的任何旧东西,因为你可能会发现自己在短时间内中了后门(或更糟)。