使用RubyMine搭建metasploit-framework

2020-03-30  本文已影响0人  王小宇gg

使用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
上一篇下一篇

猜你喜欢

热点阅读