美文网首页
使用RubyMine搭建metasploit-framework

使用RubyMine搭建metasploit-framework

作者: 王小宇gg | 来源:发表于2020-03-30 18:15 被阅读0次

    使用RubyMine搭建metasploit-framework远程开发调试环境

    考虑到很多人都是在远程主机或者虚拟机Linux环境下使用msf进行安全测试或者模块开发,因此搭建一套msf远程开发调试环境就变得十分有必要。

    环境准备

    1. 运行Linux+msf的远程主机
    2. 装有RubyMine的MacOS或者Windows机器

    准备IDE

    在远程主机上clone一份metasploit-framework代码,用来在本地做开发,不建议直接使用/opt/metasploit-framework目录下的模块代码。
    具体可参考 https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-Environment

    RubyMine配置远程SDK

    在RubyMine的Preferences => Ruby SDK and Gems下添加远程SDK。注意Ruby路径要设置为metasploit-framework安装目录下的ruby,例如:

    /opt/metasploit-framework/embedded/bin/ruby
    

    同步代码

    RubyMine提供很方便的文件同步功能,可以快速的将修改完的文件同步的远程主机。

    1. 在Tools => Deployment => Configuration里添加远程主机为SFTP主机。在Mappings选项卡里配置目录映射关系。
    2. 选择Tools => Deployment => Browse Remote Host,IDE会打开远程主机文件浏览功能,选择之前git下来的metasploit-framework目录,将/lib、和/modules目录下载到本地,如下图:


      截屏2020-03-30下午4.49.06.png

    设置依赖搜索路径

    为了能使RubyMine正确解析依赖文件,如msf/core等,需要将lib目录设置为Load Path Root。
    通过右击lib目录,选择Mark Directory as => Load Path Root,这样RubyMine可以正确解析依赖文件。

    安装调整工具pry-byebug

    使用metasploit-framework目录下的gem下载pry-byebug

    /opt/metasploit-framework/embedded/bin/gem install pry-byebug
    

    开始调试

    测试msf/core提供的函数

    在RubyMine的Project下创建Test文件夹,并通过Mark Directory as标记为Test Sources Root,如下图:


    截屏2020-03-30下午5.07.31.png

    在开始测试msf框架提供的函数之前,需要将lib目录添加到环境变量LOAD_PATH中。如下示例代码。将代码拷贝到test.rb中运行。

    lib = File.expand_path("../../lib", __FILE__) # 向LOAD_PATH中添加lib目录
    $:.unshift(lib)
    
    require 'msf/core'
    
    class Test < Msf::Exploit::Remote
      def initialize
        super(
            'Name' => 'My custom TCP scan',
            'Version'        => '$Revision: 1 $',
            'Description'    => 'My quick scanner',
            'Author'         => 'Your name here',
            'License'        => MSF_LICENSE
        )
      end
      def hello
        shellcode = rand_text_alpha_upper(10) //msf框架提供的函数
        puts shellcode
      end
    end
    
    t = Test.new
    t.hello
    

    使用pry-byebug调试module

    参考如下代码: simple_tcp.rb。

    require 'msf/core'
    require 'byebug'  # 加载调试工具
    class MetasploitModule < Msf::Auxiliary
      include Msf::Exploit::Remote::Tcp
      include Msf::Auxiliary::Scanner
    
      def initialize
        super(
            'Name' => 'My custom TCP scan',
            'Version'        => '$Revision: 1 $',
            'Description'    => 'My quick scanner',
            'Author'         => 'Your name here',
            'License'        => MSF_LICENSE
      )
      register_options(
          [
              Opt::RPORT(12345)
          ], self.class)
    end
    
      def run_host(ip)
        connect()
        greeting = "HELLO SERVER"
        sock.puts(greeting)
        data = sock.recv(1024)
    
        byebug # 在此处开始调试
        print_status("Received: #{data} from #{ip}")
        disconnect()
      end
    end
    

    将该代码同步到远程主机后,在将该module拷贝到metasploit-framework modules目录下。运行msfconsole并use该module。

    cp simple_tcp.rb /opt/metasploit-framework/embedded/framework/modules/auxiliary/scanner/
    

    在另一个终端里运行nc监听端口

    nc -l 12345
    

    运行该module,效果如下图,程序会自动在byebug后自动停止,可使用调试命令查看各类变量信息。


    截屏2020-03-30下午4.06.16.png

    相关文章

      网友评论

          本文标题:使用RubyMine搭建metasploit-framework

          本文链接:https://www.haomeiwen.com/subject/ggzvuhtx.html