Metasploit用法大全


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM