NTLM
00 min
2024-12-16

NTLM 是什麼?

NTLMNT LAN Manager)是由 微軟(Microsoft) 開發的一種舊式身份驗證協議,用於在計算機之間進行安全通信。它最初是為了支持基於 Windows 網絡的驗證需求,現在主要用於兼容舊系統或作為後備身份驗證機制。
NTLM 是 挑戰/響應(Challenge-Response) 的身份驗證協議,通過加密的方式驗證用戶身份,而不直接傳遞用戶密碼。然而,這種機制已被認為不夠安全,並逐漸被 Kerberos 協議取代。

NTLM 的歷史與版本

NTLM 是基於更早期的 LAN Manager(LM)身份驗證協議,並做了改進。以下是 NTLM 的主要版本:
  1. LM(LAN Manager)
      • 最早的身份驗證協議,已被視為高度不安全。
      • 使用弱加密算法,容易被暴力破解。
  1. NTLMv1
      • NTLM 的第一個版本,改進了 LM,但仍存在安全漏洞。
      • 使用基於 MD4 的哈希算法。
  1. NTLMv2
      • NTLM 的改進版本,增加了安全性。
      • 引入了更強的加密和完整性保護機制,但仍然無法防禦中間人攻擊(Man-in-the-Middle, MITM)和中繼攻擊(Relay Attacks)。
注意:在現代 Windows 網絡中,Kerberos 協議已成為主要的身份驗證機制,但 NTLM 仍被保留作為後備身份驗證方式,尤其是在無法使用 Kerberos 或需要兼容舊系統的情況下。

NTLM 的工作原理

NTLM 是基於挑戰/響應的身份驗證協議,其工作流程如下:
  1. 身份驗證請求
      • 用戶(或客戶端)向伺服器或域控制器(DC)發送身份驗證請求。
  1. 伺服器發送挑戰(Challenge)
      • 伺服器生成一個隨機數(稱為 挑戰碼),並將其發送給客戶端。
  1. 客戶端響應(Response)
      • 客戶端使用其密碼的哈希值,對挑戰碼進行加密,生成響應碼,並將其發送回伺服器。
  1. 伺服器驗證
      • 伺服器使用存儲在 Active Directory 或本地安全帳戶管理器(SAM)中的用戶密碼哈希值,對客戶端的響應進行驗證。
      • 如果挑戰/響應匹配,用戶身份驗證成功。

NTLM 的應用場景

儘管 NTLM 已被 Kerberos 取代,但在以下情況下仍可能使用 NTLM:
  1. 無法使用 Kerberos 的場景
      • 當系統或應用程序不支持 Kerberos 協議。
      • 當客戶端無法直接訪問域控制器(例如在跨網段或無法進行 DNS 解析的情況下)。
  1. 兼容舊系統
      • 在舊版 Windows 系統(如 Windows NT 4.0、Windows 2000)中,NTLM 是唯一可用的身份驗證協議。
  1. 本地身份驗證
      • NTLM 可用於本地帳戶的身份驗證,而不依賴 Active Directory。
  1. 後備身份驗證
      • 如果 Kerberos 身份驗證失敗,系統可能回退到 NTLM。

NTLM 的安全問題

儘管 NTLM 在設計之初是為了保護用戶憑據,但其安全性已經無法滿足現代需求,主要存在以下問題:
  1. 無法防禦中間人攻擊(MITM)
      • NTLM 缺乏內置的完整性和加密保護,很容易被中間人攔截和篡改。
  1. 易受中繼攻擊(Relay Attack)
      • 攻擊者可以將 NTLM 驗證轉發到其他服務,冒充用戶執行操作。
  1. 憑據哈希值攻擊(Pass-the-Hash)
      • NTLM 的身份驗證基於密碼哈希值,而不是密碼本身。
      • 如果攻擊者獲得用戶的 NTLM 哈希值,即使不知道明文密碼,也可以直接使用該哈希值進行身份驗證。
  1. 弱加密算法
      • NTLM 使用的加密算法(如 MD4)已經過時,容易被暴力破解或彩虹表攻擊。

如何防禦 NTLM 的攻擊

由於 NTLM 存在多種安全問題,建議採取以下措施來減少風險:

1. 禁用 NTLM(如果可能)

  • 在 Active Directory 環境中,考慮禁用 NTLM 身份驗證,強制使用 Kerberos。
  • 可以通過組策略(GPO)禁用 NTLM:

    2. 啟用 NTLM 保護

    • 開啟 NTLM 中繼保護(NTLM Relay Protection)Extended Protection for Authentication (EPA)
    • 限制 NTLM 身份驗證的使用範圍。

    3. 強制使用 Kerberos

    • 確保所有系統和應用程序支持 Kerberos,並將其作為首選的身份驗證協議。

    4. 審計 NTLM 使用

    • 使用 Windows 事件日誌審計 NTLM 身份驗證的使用情況,找出依賴 NTLM 的服務和應用程序。

    5. 加固憑據管理

    • 使用 LSA 保護 防止憑據哈希值被提取。
    • 禁止普通用戶訪問高權限賬戶的 NTLM 哈希值。

    NTLM 與 Kerberos 的對比

    特性
    NTLM
    Kerberos
    身份驗證方式
    挑戰/響應
    基於票證(TGT 和 TGS)
    加密安全性
    弱(使用 MD4 和 RC4)
    強(使用 AES)
    受攻擊風險
    易受 MITM、Relay 和 Pass-the-Hash
    更安全,但仍需防範錯誤配置
    適用場景
    舊版系統、本地身份驗證
    現代 Active Directory 環境
    依賴域控制器
    不需要域控制器
    需要域控制器(Kerberos KDC)

    總結

    NTLM 是一種舊式的身份驗證協議,雖然在現代 Windows 網絡中已逐漸被 Kerberos 取代,但仍然存在於某些場景中(如舊系統、本地驗證或後備機制)。由於其安全性較弱,建議企業逐步淘汰 NTLM,並強制使用更安全的 Kerberos 協議。同時,應實施適當的保護措施來減少 NTLM 攻擊風險,例如禁用 NTLM 中繼和加固憑據管理策略。
    上一篇
    HB
    下一篇
    AZ-900