## 载入外部模块
如果您正在编写或收集不属于标准分发版的Metasploit模块,那么您需要一种方便的方式在Metasploit中加载这些模块。不要担心,使用Metasploit的默认本地模块搜索路径`$HOME/.msf4/modules`是非常简单的,而且还有一些注意事项
#### 镜像真正的Metasploit模块路径
您必须首先建立一个符合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.
所以让我们试试看
~~~ bash
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窗口
~~~ bash
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 <todb@metasploit.com>
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社区和Pro版本
请注意,Metasploit Community Edition 的$HOME目录将会是root而不是您自己的用户目录.所以如果您希望模块出现在Metasploit CE (or Express, or Pro) web UIs.您将需要讲您的外部模块放到`/root/.msf4/modules`。当然,这意味着您需要root权限访问那台机器,但是,您是Metasploit用户,所以不应该太难。
另外请注意,如果您的模块未显示在Web UI中,则应重新启动Pro服务。
#### window
对于Windows用户来说,除了从Web GUI访问模块外,以上都是一样。可悲的是,你有一点点运气不好,Windows上的模块加载路径有一些限制,并且不允许使用外部模块。但是,基于Console2的Metasploit控制台(Start > Programs > Metasploit > Metasploit Console)可以很好地工作。
### 新的mixin和协议
任何需要更改核心库函数的模块,比如新的协议解析器或其他库mixin模块.是不会为你这样做的.你将会在你的模块中到处试图加载这些类。在几乎所有情况下都可以编写完全自包含的模块(感谢Ruby的开放式体系结构),但是之后这些模块几乎总是会被重构,以使其他模块可使用
在这种情况下,最好使用像开发分支这样合适的GitHub checkout来处理模块 - [请参阅开发环境设置文档](安装metasploit.md),了解更多信息
### 最后的警告
如果你正在加载新的令人兴奋的的Metasploit模块,那么知道这些东西往往可以访问任何你有权访问的东西; 如果你使用root,更是如此.
Metasploit模块是纯文本的Ruby,所以你可以阅读它们 - 但请小心,只添加来自可信来源的外部模块; 不要只是抓住你在互联网上看到的任何旧东西,因为你可能会发现自己在短时间内中了后门(或更糟)。
- Home
- 开始使用
- 安装metasploit开发环境
- 使用metasploit
- 使用git
- 报告一个bug
- 贡献代码
- 贡献给metasploit
- 创建一个loginscans Metasploit模块
- 接受模块和增强功能的指导
- 常见的Metasploit模块代码错误
- 样式提示
- metasploit提交者
- metasploit开发
- 为什么是ruby
- 样式提示
- 如何开始写一个exploit
- 如何开始写一个辅助模块
- 如何开始写一个post模块
- 如何开始写一个Meterpreter脚本
- 载入外部模块
- exploit rank
- Metasploit模块引用标识符
- 怎么在你的exploit中确认window补丁程序级别
- 如何使用filedropper清理文件
- 如何弃用metasploit模块
- 如何在模块开发中报告或储存数据
- 在metasploit如何使用日志
- 如何在metasploit对JavaScript进行混淆
- 如何解析一个http响应
- 如何使用HTTPClient发送HTTP请求
- 如何使用命令阶段
- 如何使用数据储存选项
- 如何在window后期开发中使用railgun
- 如何在exploit中使用powershell
- 如何使用PhpEXE来利用任意文件上传漏洞
- 如何使用FILEFORMAT mixin创建一个文件格式exploit
- 如何使用BrowserExploitServer编写一个浏览器exploit
- 如何使用HttpServer编写浏览器exploit
- 如何编写一个check()方法
- 如何使用Seh mixin来利用异常处理程序
- 如何在Windows上使用WbemExec进行写入权限攻击
- 如何使用httpserver和httpclient编写一个模块
- payloads如何工作
- 如何免杀
- 如何正确使用metasploit模块