【Windows身份認證】NTLM


前言

前幾天自己在學習域滲透時突然對Windows的身份認證機制產生了興趣,但看了好幾天自己還是懵懵懂懂,期間自己看了許多師傅的優質文章,也做了一些例子的復現,於是有了這篇文章,可以說是自己的筆記或總結吧。

由於自己了解的也不是很深入,這篇文章寫的技術可能比較淺,像NTLM和Kerberos的中間過程並沒有寫的很詳細。自己還畫了簡單的過程圖來加深理解和記憶,圖畫的不好,這些還請各位師傅見諒。

如果本文的內容有錯誤,還請各位師傅指正。

Windows身份認證機制

Windows身份認證機制主要有NTLMKerberos兩種,其中NTLM主要被用在本地以及工作組環境,而在域環境中優先使用的是Kerberos。

在早期的windows系統(win2000以前)還有一種認證方式叫LM,但該方式的加密算法較脆弱,基本已經被淘汰掉了。

NTLM

NTLM(NT LAN Manager)是Windows中最常見的身份認證方式,主要有本地認證和網絡認證兩種情況。

NTLM Hash

在介紹NTLM之前,需要介紹NTLM中最關鍵的憑證:NTLM Hash。正常的明文密碼加密為NTLM Hash的方法如下:

password ----> 十六進制編碼 ----> Unicode轉換 ----> MD4加密 ----> 得到NTLM Hash

例如:

admin -> hex(16進制編碼) = 61646d696e

61646d696e -> Unicode = 610064006d0069006e00

610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

本地認證

在本地認證過程中,當用戶進行注銷、重啟、開機等需要認證的操作時,首先Windows會調用winlogon.exe進程(也就是我們平常見到的登錄框)接收用戶的密碼。

之后密碼會被傳送給進程lsass.exe,該進程會先在內存中存儲一份明文密碼,然后將明文密碼加密為NTLM Hash后,與Windows本地的SAM數據庫(%SystemRoot%\system32\config\SAM)中該用戶的NTLM Hash對比,如果一致則通過認證

 

 

網絡認證

工作組環境

網絡認證需要使用NTLM協議,該協議基於挑戰(Challenge)/響應(Response)機制。

  1. 首先客戶端向服務端發送用戶名以及本機的一些信息(此處更正)
  2. 服務端接收到客戶端的用戶名后,先生成一個隨機的16位的Challenge(挑戰隨機數),本地儲存后將Challenge返回給客戶端
  3. 客戶端接收到服務端發來的Challenge后,使用用戶輸入密碼的NTLM Hash對Challenge進行加密生成Response(也叫Net NTLM Hash),將Response發送給服務端
  4. 服務端接收到客戶端發來的Response,使用數據庫中對應用戶的NTLM Hash對之前存儲的Challenge進行加密,得到的結果與接收的Response進行對比,如果一致則通過認證

 

 

引用地址:https://xz.aliyun.com/t/6600


免責聲明!

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



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