Skip to content
This repository has been archived by the owner on Dec 5, 2019. It is now read-only.

Latest commit

 

History

History
110 lines (87 loc) · 5.92 KB

载入外部模块.md

File metadata and controls

110 lines (87 loc) · 5.92 KB

载入外部模块

如果您正在编写或收集不属于标准分发版的Metasploit模块,那么您需要一种方便的方式在Metasploit中加载这些模块。不要担心,使用Metasploit的默认本地模块搜索路径$HOME/.msf4/modules是非常简单的,而且还有一些注意事项

镜像真正的Metasploit模块路径

您必须首先建立一个符合Metasploit对路径名称预期的目录结构。这通常意味着你应该首先创建一个exploits目录结构,如下所示:

mkdir -p $HOME/.msf4/modules/exploits

如果你正在使用auxiliarypost模块,或正在写payloads.你将会想要mkdir

创建一个适当的类别

模块按(有点任意)分类排序。这些可以是你喜欢的任何东西; 我通常使用testprivate,但是如果您正在开发一个模块,想将它提供给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社区和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模块,那么知道这些东西往往可以访问任何你有权访问的东西; 如果你使用root,更是如此. Metasploit模块是纯文本的Ruby,所以你可以阅读它们 - 但请小心,只添加来自可信来源的外部模块; 不要只是抓住你在互联网上看到的任何旧东西,因为你可能会发现自己在短时间内中了后门(或更糟)。