Meterpreter
Meterpreter號稱“黑客瑞士軍刀”,Meterpreter是Metasploit框架中的一個殺手鐧,通常作為漏洞溢出后的攻擊載荷使用,攻擊載荷在觸發漏洞后能夠返回一個我們控制通道,例如利用遠程過程帶哦用RPC服務的一個漏洞,當漏洞被觸發后,我們選擇Meterpreter作為攻擊載荷,就能夠獲得目標系統上的一個Meterpreter Shell連接。Meterpreter是Metasploit框架的一個擴展模塊,可以調用Metasploit的一些功能,對目標系統進行更加深入的滲透,這些功能包括反追蹤、純內存工作模式、密碼哈希值獲取、特權提升、跳板攻擊等。
認識 Meterpreter
獲得Meterpreter會話
攻陷目標操作系統系統后就可以進入Meterpreter會話
根據《首次系統滲透Win_xp》的內容成功進入xp系統,隨即出現meterpreter命令交互界面
獲得目標系統的Meterpreter會話后,可以利用基本的Meterpreter命令完成更多的騷操作。(help幫助信息不要完了使用哦)
截屏:screenshot
命令 screenshot 可以獲取活動用戶的當前屏幕界面的圖片並保存在本地指定的目錄
如上圖,我們成功的獲得了桌面圖像信息,由此可以獲得更多的重要信息。(由於是靶機,所以比較干凈,如果是正常的工作機,我們就會看見用戶的安全軟件安裝了哪些?桌面上的信息等等……)
平台信息:sysinfo
命令 sysyinfo,可以幫助我們獲取操作系統平台的詳細信息
如上圖,是我們sysinfo命令獲取的平台信息,包括如下信息:
- 完整的計算機名
- 操作系統的版本
- 系統架構體系
- 工作組名
……
獲取鍵盤記錄
我們可以使用 ps 命令來捕獲目標主機正在運行的任務進程:
我們看見了目標主機系統的PID:1684的explorer.exe進程,該進程是控制系統的GUI的哦!
執行 migrate 命令將會話遷移至explorer.exe進程空間中,然后調用keylog_recorder模塊(使用Ctrl+C終止),在另一個終端里可以看見鍵盤的記錄
在實驗的時候出了小小的意外,所以沒有出現記錄內容。
獲取攝像頭信息
meterpreter > webcam_list #查看查看攝像頭信息
meterpreter > webcam_snap #獲取攝像頭攝制的圖像
攝像頭的圖像信息被保存在 /root/IykcCaUp.jpeg
挖掘用戶名和密碼
提取密碼哈希值
Windows系統存儲哈希值的方式一般是LM、NTLM或者NTLMv2。
在明文密碼輸入后系統會將密碼轉為哈希值;由於哈希值的長度限制,將密碼切分為7個字符一組的哈希值;
以password123456密碼為例,哈希值會以 【{passwor}{d123456}】每個花括號是一組哈希值共兩組,所以攻擊者只要破解7個字符一組的密碼,而不是原始的14個字符,而NTLM存儲方式和密碼長度無關,密碼將作為整體哈希值存儲。
獲取密碼和哈希值*
use priv 命令:意味着運行在特權賬號上。
post/windows/gether/hashdump模塊:獲取系統所有的用戶名和密碼哈希值
獲取安全賬戶的賬號管理器SAM數據庫,我們需要運行在System權限下(use priv),以求繞過注冊表的限制,獲得受保護的用戶和密碼的SAM存儲。
- 哈希值解析:
- 以 aad3b435 開頭的哈希值是一個空的或不存在的哈希值(空字串的占位符)。
- 傳遞哈希值:
用哈希值傳遞技術,用psexec模塊就可以實現,
權限提升
meterpreter會話中我們可以通過 net user 命令創建Windows系統下的普通用戶賬號。
如果是以受限的用戶賬號滲透登錄,將會被限制執行一些命令。
-
在Win端cmd執行以下命令:
C:\ > net user mirror 926498 /add
命令執行后,我們就在win端創建了一個 mirror 用戶。
建立Meterpreter會話
- 創建一個Meterpreter攻擊載荷的程序——payload.exe;復制到XP靶機中,在bob用戶下執行。
- 本地創建程序接收目標靶機的會話
handler模塊創建“監聽”后,等待目標靶機的mterpreter會話
- Mterpreter會話連接
我們在靶機環境下啟動msfvenom.exe程序,啟動后,終端就會建立Merterpreter會話
我們執行攻擊載荷的系統環境是一個普通用戶,所以我們開始執行提權了!
提權第一步
- 查看當前用戶的權限和名稱:getuid
meterpreter > getuid #查看當前會話的對方的用戶權限和名
ps:meterpreter控制台中,輸入background可以跳轉到MSF終端里,Meterpreter會話仍在運行,然后輸入sessions -i [會話ID]返回Meterpreter控制台。
- 升級權限 System
輸入 use priv 命令加載priv擴展,以便訪問某些特權模塊位置。
輸入 getsystem 命令嘗試將權限提升至本地系統權限或者管理員權限。
輸出 getuid 命令檢查當前獲得的權限等級。
令牌偽造
我們將會獲取目標系統的一個Kerberos令牌,將其用在身份認證的環節,假冒當初創建這個令牌的用戶。
比方說:我們建立了一個Meterpreter的控制台會話后,管理員用戶登錄過這個機器,在該用戶登入這台機器的時候,一個kerberos令牌將會發送到服務器上,並在隨后的一段時間之內一直有效;可以依靠這個令牌完成入侵系統,通過Meterpreter假冒為管理員的角色,而不需要破解密碼。
我們利用 ps 命令列舉當前系統的應用程序
- 使用 steal_token 命令和PID參數盜取用戶的令牌
成功的盜取了用戶的身份令牌,現在Meterpreter是以該用戶的身份令牌進行運行的。
另外,我們可以使用 incofnito模塊list_token -u 命令列舉出系統上可以利用的所有令牌。
meterpreter > use incofnito # 加載incofnito模塊
meterpreter > list_token -u # 列舉處系統是所有可利用令牌
- 權限提升的奧秘可以單獨研究哦!
跳板攻擊
跳板攻擊,允許從Meterpreter終端攻擊網絡中的其他系統;比方說,入侵一台系統后,就可以利用該主機作為跳板攻擊同一個內網中的其他主機(內網擴展)。
入侵一個系統並在內部獲得Metrpreter會話,可以通過這個系統建立路由去侵入其他主機
- 入侵WinXP主機
按照之前的兩種方法:
- 利用MS08_067漏洞
- 主機上傳攻擊載荷程序(Payload.exe程序)
- 使用外部腳本:get_local_subnets
使用get_local_subnets腳本獲得目標主機的子網信息 ==>
local subnet:192.168.2.0 / 255.255.255.0
- 路由信息
Routing Table(route print)告訴我們,路由信息,子網端和掩碼以及通過session 4會話進行路由。
待補充
Meterpreter腳本
通過 run 腳本名字 命令,我們就可以在Meterpreter控制終端中運行擴展腳本。
run screen_unlock 命令允許得到並操作遠程桌面。
遷移進程
如果目標的主機上沒有開啟我們需要利用的軟件或者關閉了我們利用的漏洞建立會話的程序進程,就會導致我們的Meterpreter會話斷開;為了避免這個問題,我們可以使用 遷移進程的后滲透攻擊模塊,將Meterpreter會話遷移到內存空間中其他穩定、不會被關閉的服務器進程中,以維持穩定的系統控制連接。
遷移后,我們發現,程序被遷移到了進程 2068 的程序中(該進程是系統的記事本)
關閉殺毒軟件
- 使用 killav 關閉掉殺毒軟件
獲取系統密碼哈希值
- 使用run hashdump命令獲取哈希值
查看目標主機的流量
- run packetrecorder -i 1
獲取系統信息
- run scraper
控制持久化
Meterpreter的persistence腳本允許注入Meterpreeter代理,以確保系統重啟之后,Meterpreter會話還可以連接,如果是反彈連接方式,可以設置攻擊機的時間間隔,如果是綁定方式,可以設置在指定時間綁定開放端口。
向后滲透攻擊模塊轉變
Shell升級為Meterpreter會話
命令: sessions -u
Raligun組件操作WIndowsAPI
我們可以通過Metasploit附加組件——Raligun,直接與Windows系統API進行交互。
【全文只是對Meterpreter的控制做了非常簡單的介紹】