Metasploit用戶接口
msfconsole
Armitage: KaliGUI啟動;armitage命令啟動
Metasploit功能程序
msfvenom
集成了載荷生成器、載荷編碼器、空指令生成器的功能
查看詳細指令選項:msfvenom-h
服務器消息塊協議掃描
msf>useauxiliary/scanner/smb/smb_version
搜尋配置不當的MicrosoftSQLServer
msf>useauxiliary/scanner/mssql/mssql_ping
SSH服務器掃描
msf>useauxiliary/scanner/ssh/ssh_version
FTP掃描
msf>useauxiliary/scanner/ftp/ftp_version,發現ftp服務器
msf>useauxiliary/scanner/ftp/anonymous,檢查是否允許匿名登錄
簡單網管協議掃描
msf>useauxiliary/scanner/snmp/snmp_login
滲透攻擊基礎
msf>showexploits
msf>showauxiliary
msf>showoptions
msf>showpayloads
msf>showtargets
info
set和unset
setg和unsetg
save
你的第一次滲透攻擊
操作機:KaliLinux
靶機:WindowsXPSP2
Step1:Nmap腳本掃描發現漏洞
Nmap腳本掃描:nmap--script=SCRIPT-NAME(腳本名)
Nmap腳本路徑:/usr/share/nmap/scripts/SCRIPT-NAME.nse
Step2:使用msf,根據漏洞選擇攻擊模塊
msf>searchMODULE_KEYWORD(模塊名)
關鍵字通常為:漏洞編號,漏洞軟件名稱,msf模塊名稱
Step3:根據信息搜集結果,配置攻擊模塊,完成攻擊
msf>showoptions
攻擊Metasploitable主機
操作機:KaliLinux
靶機:Metasploitable2(Ubuntu8.04)
Step1:Nmap掃描發現漏洞 Nmap腳本掃描:nmap–sT–A–P0
Nmap腳本路徑:/usr/share/nmap/scripts/SCRIPT-NAME.nse
Step2:使用msf,根據漏洞選擇攻擊模塊
根據服務或軟件信息,使用搜索引擎查找相關漏洞信息
msf>searchMODULE_KEYWORD
關鍵字通常為:漏洞編號,漏洞軟件名稱,msf模塊名稱
Step3:根據信息搜集結果,配置攻擊模塊,完成攻擊
msf>showoptions
Metasploitable2有很多漏洞,嘗試對多個漏洞進行利用
全端口攻擊載荷:暴力猜解目標開放的端口
全端口攻擊載荷是為了應對防火牆
當然,我們可以使用Nmap達到同樣的目的,這樣的載荷是為了提高自動化程度
msf>search allports
攻陷WindowsXP虛擬機
攻擊路徑:
使用nmap掃描端口
攻擊MSSQL
暴力破解MSSQL服務
xp_cmdshell
Meterpreter基本命令
獲取鍵盤記錄
挖掘用戶名和密碼
提取密碼哈希值
Windows系統存儲哈希值的方式一般為LANManager(LM)、NTLANManager(NTLM),或NTLANManagerv2(NTLMv2)。
使用Meterpreter命令獲取密碼哈希值
meterpreter>usepriv
meterpreter>runpost/windows/gather/hashdump
彩虹表
傳遞哈希值
smb/psexec模塊
使用密碼哈希值進行認證,繞過密碼破解
權限提升
利用低權限用戶建立反向shell連接,獲得Meterpreter會話
利用Meterpreter的priv擴展
meterpreter>usepriv
meterpreter>getsystem
meterpreter>getuid
這樣的方法是否奏效,取決於低權限用戶具有的權限
MSF會話管理
CTRL-Z
sessions–l
sessions–iSESSION_ID
令牌假冒
令牌假冒是Meterpreter最強大的功能之一,對滲透測試非常有幫助。
示例場景:你正在對某個組織進行滲透測試,成功地入侵了系統並建立了一個Meterpreter的終端,
而域管理員用戶在13小時內登錄過這台機器。在該用戶登入這台機器的時候,
一個Kerberos令牌將會發送到服務器上(進行單點登錄)並將在隨后的一段時間之內有效。
你可以使用這個活動令牌來入侵系統,通過Meterpreter你可以假冒成域管理員的角色,
而不需要破解他的密碼,然后你就可以去攻擊域管理員賬號,甚至是域控制器。
示例體現了令牌假冒的強大,也描述了使用的前置條件,
如:建立Meterpreter,啟用域,受控機器上有域管理員的有效令牌,等
使用PS
盜取令牌的兩種方式:1.steal_tokenPID
meterpreter>ps,獲取PID
steal_tokenPID,盜取令牌2.incognito模塊
有些情況下ps命令不能列出域管理員賬號
meterpreter>useincognito
meterpreter>list_tokens–u
meterpreter>impersonate_tokenDOMAIN\\USERNAME
通過跳板攻擊其他機器
Meterpreter進行跳板攻擊
meterpreter>runget_local_subnets
msf>routeadd
通過添加路由實現跳板,依賴於攻擊機與跳板機之間的Meterpreter會話,一旦會話斷開,跳板將失效
使用MetasploitPro的VPN跳板
商業版本功能
接入目標內網,擴大了攻擊面和可選攻擊方式
使用Meterpreter腳本
遷移進程
關閉殺毒軟件
獲取系統密碼哈希值
查看目標機上的所有流量
攫取系統信息
控制持久化
向后滲透攻擊模塊轉變
如果想列舉所有的后滲透攻擊模塊,可以這樣輸入然后在末尾按TAB鍵:
meterpreter>runpost/
Displayall199possibilities (yorn
將命令行shell升級為Meterpreter
sessions–u
setg命令將LPORT和LHOST參數設置為Metasploit的全局變量,而不是局限在這一個模塊之內。
在使用sessions-u命令升級為Meterpreter的時候是必需的。
exploit–z,CTRL-Z
通過附加的Railgun組件操作WindowsAPI
meterpreter>irb
irbshell允許使用Ruby的語法與Meterpreter直接交互
Railgun能為你提供與Win32本地應用程序一樣訪問WindowsAPI的能力
msfvenom:載荷生成,載荷編碼
msfvenom--help
常用參數:
msfvenom-pPAYLOADNAME--payload-options,查看載荷參數
msfvenom–f,指定載荷輸出格式
msfvenom–e,指定載荷編碼方式
msfvenom–l MODULENAME,列出指定類型的模塊清單
隱秘地啟動一個攻擊載荷
msfvenom–k,配置攻擊載荷在一個獨立的線程中啟動
這種模式下,當包含載荷的程序被啟動,宿主程序也會正常運行,避免被用戶察覺
-k選項不一定能用在所有的可執行程序上,在實際攻擊前請確保你已經在實驗環境中進行了測試
加殼軟件
UPX加殼
加密,壓縮
與MSF編碼器的情況類似,目前,僅使用加殼,免殺效果不明顯
基於瀏覽器的滲透攻擊
基於瀏覽器的滲透攻擊原理
HeapSpraying(堆噴/堆噴射)
關於空指令
X86:\x90
空指令滑行區+Payload
內存保護機制日益完善,單一技術手段已經不足以完成漏洞利用,但是仍可以作為漏洞利用的組成部分,其思路也值得借鑒
使用調試器揭秘空指令
目的:搞清楚空指令和匯編指令是如何執行的
OllyDbg動態調試
在Shellcode尾部設置斷點
在攻擊機開啟監聽
IE瀏覽器極光漏洞的利用
msf>usewindows/browser/ms10_002_aurora
載荷執行過程中,目標用戶機器會變遲鈍,為了防止用戶關閉瀏覽器,導致滲透攻擊中斷,Meterpreter提供了一些指令
手動遷移進程:meterpreter>run migrate –f
模塊高級選項:msf exploit(ms10_002_aurora)>show advanced
文件格式漏洞滲透攻擊
MS11-006,在微軟Windows系統函數CreateSizedDIBSECTION中存在的一個棧溢出漏洞
msf>use windows/fileformat/ms11_006_createsizeddibsection
確認攻擊模塊的目標系統版本:
msf exploit(ms11_006_createsizeddibsection)>show targets
此類攻擊方式載荷是文檔,往往需要與釣魚攻擊結合起來
發送攻擊負載
郵件,下載鏈接
開啟多線程監聽
如果用戶在文件夾中設置了使用縮略圖(thumbnails)方式查看文件,當用戶打開payload文件所在的文件夾,即可觸發攻擊
Metasploit輔助模塊(auxiliary module)
輔助模塊不使用payload,但提供了端口掃描、指紋識別、暴力猜解、Fuzz測試等很多類型的工具
msf>show auxiliary
輔助模塊剖析
FoursquareAPI和自定義輔助模塊
目的:查看輔助模塊的內部結構,這是一個和滲透測試無關的簽到工具
查看FousquareAPI文檔,了解如何使用API 通過調用Metasploit框架提供的方法,使用FoursquareAPI,完成自定義模塊
使用Metasploit框架進行開發能讓我們將注意力集中在模塊功能細節上,而不是處理大量重復的代碼
配置SET工具包
項目地址:https://github.com/trustedsec/social-engineer-toolkit
配置文件:config/core/set_config
修改metasploit目錄為實際目錄:METASPLOIT_PATH=/usr/share/metasploit-framework
開啟郵件釣魚:WEBATTACK_EMAIL=ON
關閉自動檢測:AUTO_DETECT=OFF
開啟Apache攻擊:APACHE_SERVER=ON
針對性釣魚攻擊向量
Spear-Phishing Attack Vectors
Abobe PDF 的Collab.collectEmailInfo漏洞
設置發件郵箱時需注意,常見郵箱的安全防護措施,如附件檢測、第三方郵件客戶端認證等
Web攻擊向量
JavaApplet
客戶端Web攻擊
用戶名和密碼獲取
標簽頁劫持攻擊(Tabnabbing)
中間人攻擊
網頁劫持
綜合多重攻擊方法
SET的其他特性
SET的交互式shell:該交互式shell可以替換Meterpreter作為一個攻擊載荷
RATTE:一個基於HTTP隧道攻擊載荷,它依賴於HTTP協議進行通信,並利用了目標主機的代理設置
Web圖形界面:一個完整的Web應用攻擊程序,能夠自動化實施上述討論的攻擊過程
無線攻擊向量:在目標主機上創建一個假冒的無線熱點
在MSSQL上進行命令執行
突破口:MSSQL弱口令
調用系統管理員權限的擴展存儲過程xp_cmdshell,這個存儲過程使得你可以在MSSQL服務的運行賬戶環境(通常是Local System)下執行底層操作系統命令
xp_cmdshell的激活 msf>use auxiliary/admin/mssql/mssql_exec
分析mssql_exec模塊
調用Metasploit核心庫的MS SQL協議模塊:include Msf::Exploit::Remote::MSSQL
激活xp_cmdshell存儲過程:mssql_xpcmdshell_enable
調用mssql_xpcmdshell執行操作系統命令
編寫一個新的模塊
PowerShell
運行Shell滲透攻擊
編寫Powershell_upload_exec函數
從十六進制轉換回二進制程序
計數器
運行滲透攻擊模塊
Fuzz測試器模塊
目標:使服務器端崩潰
使用Ollydbg對服務器端進行調試
根據調試結果對Fuzz字符串長度進行調整
控制結構化異常處理鏈
查看SEH鏈內容
查看導致SEH改寫的堆棧內容
計算SEH覆蓋發生位置:tools/pattern_offset.rb
調整Fuzz長度字符串長度
繞過SEH限制
一段任意的緩沖區填充
NOP空指令滑行區
Shellcode
近跳轉
短跳轉
POP-POP-RETN
獲取返回地址
定位POP-POP-RETN指令序列
使用工具查找:msfpescan –p TARGETAPP.exe
用於調試攻擊載荷(發送中斷指令):generic/debug_trap
調整初始緩沖區長度
壞字符和遠程代碼執行
壞字符:導致shellcode被截斷的字符
壞字符取決於攻擊目標,最快的方法是從攻擊目標相同/相似的滲透代碼中找壞字符
http://en.wikibooks.org/wiki/Metasploit/WritingWindowsExploit#Dealing_with_badchars
分析multi_meter_inject腳本
查看命令行選項和配置語法格式
變量和函數定義,命令行選項
host_process.memory.allocate調用
隱藏啟動遠程進程
Meterpreter API
打印輸出
基本API調用
Meterpreter Mixins
編寫Meterpreter腳本的規則
只使用臨時、本地和常數變量,永遠不要使用全局或者類變量,因為他們可能與框架內的變量相互沖突。
使用tab鍵進行縮進,不要使用空格鍵。
對程序塊來說,不要使用大括號{},使用do和end語法模式。
當聲明函數時,養成在聲明前進行注釋,提供函數用途簡要介紹的習慣。
不要使用sleep函數,使用"select(nil,nil,nil,<time>)"。
不要使用puts等其他標准的輸出函數,使用print,print_line、print_status、print_error、和print_good函數。
總是包含-h選項,該選項將對腳本進行簡要的功能說明,並列出所有的命令行選項。
如果你的腳本需要在特定操作系統或者Meterpreter平台運行,確保他們只能在所支持的平台上運行,並在不支持的操作系統和平台運行時報錯。
創建自己的Meterpreter腳本
自定義Meterpreter腳本:execute_upload
繞過Windows用戶賬戶控制(UAC)防護功能
msf>use exploit/windows/local/bypassuac
對已經建立的、受UAC限制的Meterpreter會話使用,建立繞過UAC限制的會話,達到提權的目的
**********************************************************************************************
*****一次模擬的滲透測試過程*****
**********************************************************************************************
*****前期交互目標信息
Windows XP
網絡環境:互聯網+內網
開放端口:80
Metasploitable Linux
網絡環境:內網
在內網開發大量端口
目標:
控制內網中的Metasploitable主機
*****情報搜集
Nmap掃描:nmap–sT–P0
發現80端口的http服務
確認為Web服務器
*****威脅建模
手動測試/工具測試
手動測試是否存在SQL注入漏洞
確定攻擊路徑
*****滲透攻擊
根據攻擊建模結果選擇方式或工具
Sqlmap利用MSSQL注入漏洞
獲取注入點,用於MSF終端中的滲透攻擊
*****MSF終端中的滲透攻擊過程
msf>use exploit/windows/mssql/mssql_payload_sqli
完成Meterpreter Shell植入
*****后滲透攻擊
掃描Metasploitable靶機
在跳板機上使用nmap掃描內網
識別存有漏洞的服務
根據端口掃描結果,使用msf輔助模塊中針對特定服務的掃描器
*****攻擊Postgresql數據庫服務
根據掃描結果,確認存在Postresql服務及端口號
搜索msf中與Postgresql相關的模塊
選擇合適的模塊進行滲透攻擊,這一過程需要嘗試,並不是每一個查找到的模塊都能成功利用
弱口令字典:
Wordlists
*****攻擊一個偏門的服務
根據掃描結果,目標提供IRC服務
遇到不熟悉的應用或服務,在攻擊前需要更多的時間進行深入研究
通過MSF的攻擊模塊查找、exploit-db、搜索引擎等對目標服務的進行研究,查找可能存在的漏洞信息
*****隱藏你的蹤跡
修改時間戳:meterpreter>timestomp
修改事件日志:meterpreter>runevent_manager
流行的取證分析工具:Encase
記錄下攻擊過程對目標系統進行了哪些修改,可以更容易地隱藏蹤跡