企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 载入外部模块 如果您正在编写或收集不属于标准分发版的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,所以你可以阅读它们 - 但请小心,只添加来自可信来源的外部模块; 不要只是抓住你在互联网上看到的任何旧东西,因为你可能会发现自己在短时间内中了后门(或更糟)。