使用RubyMine搭建metasploit-framework遠程開發(fā)調(diào)試環(huán)境
考慮到很多人都是在遠程主機或者虛擬機Linux環(huán)境下使用msf進行安全測試或者模塊開發(fā)颤诀,因此搭建一套msf遠程開發(fā)調(diào)試環(huán)境就變得十分有必要。
環(huán)境準(zhǔn)備
- 運行Linux+msf的遠程主機
- 裝有RubyMine的MacOS或者Windows機器
準(zhǔn)備IDE
在遠程主機上clone一份metasploit-framework代碼,用來在本地做開發(fā)递惋,不建議直接使用/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路徑要設(shè)置為metasploit-framework安裝目錄下的ruby径筏,例如:
/opt/metasploit-framework/embedded/bin/ruby
同步代碼
RubyMine提供很方便的文件同步功能,可以快速的將修改完的文件同步的遠程主機障陶。
- 在Tools => Deployment => Configuration里添加遠程主機為SFTP主機滋恬。在Mappings選項卡里配置目錄映射關(guān)系。
-
選擇Tools => Deployment => Browse Remote Host抱究,IDE會打開遠程主機文件瀏覽功能夷恍,選擇之前git下來的metasploit-framework目錄,將/lib媳维、和/modules目錄下載到本地酿雪,如下圖:
設(shè)置依賴搜索路徑
為了能使RubyMine正確解析依賴文件,如msf/core等侄刽,需要將lib目錄設(shè)置為Load Path Root指黎。
通過右擊lib目錄,選擇Mark Directory as => Load Path Root州丹,這樣RubyMine可以正確解析依賴文件醋安。
安裝調(diào)整工具pry-byebug
使用metasploit-framework目錄下的gem下載pry-byebug
/opt/metasploit-framework/embedded/bin/gem install pry-byebug
開始調(diào)試
測試msf/core提供的函數(shù)
在RubyMine的Project下創(chuàng)建Test文件夾,并通過Mark Directory as標(biāo)記為Test Sources Root墓毒,如下圖:
在開始測試msf框架提供的函數(shù)之前吓揪,需要將lib目錄添加到環(huán)境變量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框架提供的函數(shù)
puts shellcode
end
end
t = Test.new
t.hello
使用pry-byebug調(diào)試module
參考如下代碼: simple_tcp.rb。
require 'msf/core'
require 'byebug' # 加載調(diào)試工具
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 # 在此處開始調(diào)試
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監(jiān)聽端口
nc -l 12345
運行該module踪栋,效果如下圖焙格,程序會自動在byebug后自動停止,可使用調(diào)試命令查看各類變量信息夷都。