1

metasploit python 模块

 2 years ago
source link: https://blue-bird1.github.io/posts/metasploit1/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Feb 2, 2018

metasploit python 模块

metasploit在2017年尾将python作为官方支持语言,并且已经有python模块加入主分支.这使得我们开发metasploit模块可以不去学习ruby

为什么将python作为官方支持语言

  1. 很多不是metasploit官方人员编程的模块都是使用python编写
  2. 现在python流行程度非常高 很多渗透人员python熟练程度比ruby高

metasploit的python模块是什么

主分支的一个python模块 https://github.com/rapid7/metasploit-framework/blob/778e69f92912c555e72bc3318278443126704b75/modules/auxiliary/dos/http/slowloris.py

python模块实际是通过json-rpc调用与metasploit通信

metasploit获取元数据如图(来自官方博客)

+------------+
| Metasploit |
|            |  Describe yourself  +-------------------+
|            +-------------------> |  some_module.py   |
|            |                     |                   |
|            |                     |                   |
|            |   Some metadata     |                   |
|            | <-------------------+                   |
|            |                     |                   |
|            |                     +-------------------+
|            |
|            |
+------------+

模块调用如图

+------------+
| Metasploit |  Do a thing with
|            |   these options     +-------------------+
|            +-------------------> |  some_module.py   |
|            |                     |                   |
|            |                     |                   |
|            |   A bit of status   |                   |
|            | <-------------------+                   |
|            |                     |                   |
|            |  Moar status        |                   |
|            | <-------------------+                   |
|            |                     |                   |
|            |  I found a thing    |                   |
|            | <-------------------+                   |
|            |                     |                   |
|            |                     +-------------------+
|            |
+------------+

将会发生什么

实际上对于原来的开发方式没有影响,完全可以使用原来的ruby编写方式.但是对于不熟悉ruby的开发者可以使用python来方便的编写模块

python在metasploit能做什么

可以使用的和ruby模块并没有区别

如何编写一个python模块

首先需要导入需要的模块

#!/usr/bin/env python
# another:bluebird
from metasploit import module

这个metasploit实际上路径是 lib/msf/core/modules/external/python/

然后定义元数据 格式和ruby模块的一样.详细可参考这里的文档

metadata = {
	# 模块名字
    'name': 'metasploit python module demo ',
    # 模块的描述
    'description': '''
        send a http request metasploit python module demo
     ''',
     # 模块作者
    'authors': [
        'bluebird', 
    ],
    # 编写时间
    'date': '2018-02-02',
    # 漏洞参考
    'references': [
       
     ],
     # 漏洞类型 只能在已有的类型选项 
    'type': 'dos',
    # 模块选项
    'options': {
        'rhost': {'type': 'address', 'description': 'The target address', 'required': True, 'default': None},
        'rport': {'type': 'port', 'description': 'The target port', 'required': True, 'default': 80},
     }}

然后一般应该定义一个run方法.这个demo输出了helloworld

def run(args):
    module.log('helloworld')
   

最后定义主方法

if __name__ == "__main__":
    module.run(metadata, run)

让我们实际跑一下(注意请给你的python文件添加执行权限)

msf5 auxiliary(test/demo) > set rhost 127.0.0.1
rhost => 127.0.0.1
msf5 auxiliary(test/demo) > run

[*] Starting server...
[*] hello world
[*] Auxiliary module execution completed
msf5 auxiliary(test/demo) > 

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK