硬件需求:
存儲:
10G存儲空間。建議30G存儲空間。
內存:
Linux“HOST”最小內存要求
1GB系統內存(RAM)
實際上2GB以上
Kali“GUEST”最小內存要求
至少512兆字節(MB)的RAM(推薦1GB)//更多從不傷害!
實際上1GB或更多,具有相同價值的SWAP文件
Metasploitable“GUEST”最小內存要求
至少256兆字節(MB)的RAM(建議512MB)//更沒有傷害!
(可選)每個Windows“GUEST”最低內存要求
至少256兆字節(MB)的RAM(推薦1GB)//更多從不傷害!
實際上1GB或更多,具有相同價值的SWAP文件
處理器處理速度推薦:500MHz
通暢的互聯網訪問:建議1M/S,以及無阻礙的訪問全球網絡。
資源:
通過https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/,下載帶有漏洞的瀏覽器以及虛擬的環境。
虛擬機:VMware,VirtualBox和KVM
推薦的發行版:Kali Linux
受害者環境:Metasploitable(默認登錄名和密碼為msfadmin:msfadmin,部署參考:https://community.rapid7.com/docs/DOC-1875)
Metasploit文件系統():
data: Metasploit使用的可編輯文件
documentation: 提供框架的文檔
external: 源代碼和第三方庫
lib: 框架代碼庫的“meat”
modules: 實際的MSF模塊
plugins: 可以在運行時加載的插件
scripts: Meterpreter和其他腳本
tools: 各種有用的命令行工具
Metasploit Libraries(這個庫幫助使用者,無需額外編寫基礎的代碼):
Rex:
大多數任務的基本庫
處理套接字,協議,文本轉換等
SSL,SMB,HTTP,XOR,Base64,Unicode
Msf::Core:
提供“基本”API
定義Metasploit框架(https://www.offensive-security.com/metasploit-unleashed/introduction/)
Msf :: Base:
提供“友好”API
提供用于框架的簡化API
Metasploit框架由模塊組成:
Exploits(漏洞):
定義為使用有效載荷的模塊
沒有有效載荷的漏洞是輔助模塊
Payloads, Encoders, Nops(有效載荷,編碼器,Nop):
有效載荷由遠程運行的代碼組成
編碼器確保有效載荷使其到達目的地
Nop保持有效載荷大小一致
Primary Module Tree(主模塊樹):
位于/ usr / share / metasploit-framework / modules /
User-Specified Module Tree(用戶指定的模塊樹):
位于?/ .msf4 / modules /
這個位置是私人模組的理想選擇
Loading Additional Module Trees(加載其他模塊樹):
外部加載
內部加載(msfconsole命令內部):
Metasploit對象模型:
在Metasploit框架中,所有模塊都是Ruby類:
模塊從類型特定的類繼承
類型特定的類繼承自Msf :: Module類
模塊之間有一個共享的公共API
有效載荷略有不同:
有效載荷是在運行時從各種組件創建的
用不同的階段粘在一起
Metasploit Mixins和插件:
快速了解Ruby:
每個類只有一個父。
一個類可能包含了很多模塊。
模塊可以添加新的方法。
模塊可以重載舊的方法。
Metasploit模塊繼承了Msf :: Module,并包含了mixins來添加功能。
Metasploit Mixins:
Mixins很簡單:
Mixins'包括'一個類別到另一個
這是不同的,類似于繼承
Mixins可以覆蓋類的方法
Mixins可以添加新功能,并允許模塊具有不同的“風味”。
協議特定(即:HTTP,SMB)
行為特定(即:暴力)
connect()由TCP mixin實現
connect()然后被FTP,SMB等重載。
Mixins可以改變行為:
掃描器mixin超載run()
掃描儀更改run_host()和run_range()的run()
它根據THREADS設置并行調用它們
BruteForce mixin是類似的
Metasploit插件:
插件可以直接使用API??:
他們操縱整個框架
插件插入事件子系統
它們自動執行手動執行繁瑣操作的特定任務
插件只適用于msfconsole:
插件可以添加新的控制臺命令
它們擴展了Framework的總體功能
示例代碼:
class MyParent
def woof
puts “woof!”
end
end
class MyClass > MyParent
end
object = MyClass.new
object.woof() => “woof!”
================================================================
module MyMixin
def woof
puts “hijacked the woof method!”
end
end
class MyBetterClass > MyClass
include MyMixin
end
示例代碼