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./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 記錄下攻擊過程對目標系統進行了哪些修改,可以更容易地隱藏蹤跡
|