Microsoft NTLM

Windows Challenge/Response (NTLM) ist das Authentifizierungsprotokoll, das in Netzwerken verwendet wird, die Systeme mit dem Windows-Betriebssystem und eigenständigen Systemen enthalten.

Das Microsoft Kerberos-Sicherheitspaket bietet Systemen in einem Netzwerk eine höhere Sicherheit als NTLM. Obwohl Microsoft Kerberos das Protokoll der Wahl ist, wird NTLM weiterhin unterstützt. NTLM muss auch für die Anmeldeauthentifizierung auf eigenständigen Systemen verwendet werden. Weitere Informationen zu Kerberos finden Sie unter Microsoft Kerberos.

NTLM-Anmeldeinformationen basieren auf Daten, die während des interaktiven Anmeldeprozesses abgerufen wurden, und bestehen aus einem Domänennamen, einem Benutzernamen und einem unidirektionale Hash des Kennworts des Benutzers. NTLM verwendet ein verschlüsseltes Abfrage-/Rückmeldungsprotokoll, um einen Benutzer zu authentifizieren, ohne das Kennwort des Benutzers über das Netzwerk zu senden. Stattdessen muss das System, das die Authentifizierung anfordert, eine Berechnung durchführen, um zu belegen, dass es Zugriff auf die geschützten NTLM-Anmeldeinformationen hat.

Die interaktive NTLM-Authentifizierung über ein Netzwerk umfasst in der Regel zwei Systeme: ein Clientsystem, auf dem der Benutzer die Authentifizierung anfordert, und einen Domänencontroller, bei dem Informationen zum Kennwort des Benutzers gespeichert werden. Die nicht interaktive Authentifizierung, die möglicherweise erforderlich ist, um einem bereits angemeldeten Benutzer den Zugriff auf eine Ressource wie z. B. eine Serveranwendung zu ermöglichen, umfasst in der Regel drei Systeme: einen Client, einen Server und einen Domänencontroller, der die Authentifizierungsberechnungen im Namen des Servers durchführt.

Die folgenden Schritte enthalten eine Gliederung der nicht interaktiven NTLM-Authentifizierung. Der erste Schritt stellt die NTLM-Anmeldeinformationen des Benutzers bereit und erfolgt nur im Rahmen der interaktiven Authentifizierung (Anmeldung).

  1. (Nur interaktive Authentifizierung) Ein Benutzer greift auf einen Clientcomputer zu und stellt einen Domänennamen, einen Benutzernamen und ein Kennwort bereit. Der Client berechnet einen kryptografischen Hash des Kennworts und verwirft das tatsächliche Kennwort.

  2. Der Client sendet den Benutzernamen (in Klartext) an den Server.

  3. Der Server generiert eine 8-Byte-Zufallszahl, die als Challenge oder Nonce bezeichnet wird, und sendet sie an den Client.

  4. Der Client verschlüsselt diese Herausforderung mit dem Hash des Kennworts des Benutzers und gibt das Ergebnis an den Server zurück. Dies wird als Antwort bezeichnet.

  5. Der Server sendet die folgenden drei Elemente an den Domänencontroller:

    • Benutzername
    • An den Client gesendete Anforderung
    • Vom Client empfangene Antwort
  6. Der Domänencontroller verwendet den Benutzernamen, um den Hash des Kennworts des Benutzers aus der Security Account Manager-Datenbank abzurufen. Es verwendet diesen Kennworthash, um die Abfrage zu verschlüsseln.

  7. Der Domänencontroller vergleicht die verschlüsselte Herausforderung, die er (in Schritt 6) berechnet hat, mit der antwort, die vom Client (in Schritt 4) berechnet wurde. Wenn sie identisch sind, ist die Authentifizierung erfolgreich.

Ihre Anwendung sollte nicht direkt auf das NTLM-Sicherheitspaket zugreifen. Stattdessen sollte das Sicherheitspaket Negotiate verwendet werden. Durch aushandeln kann Ihre Anwendung erweiterte Sicherheitsprotokolle nutzen, wenn sie von den an der Authentifizierung beteiligten Systemen unterstützt werden. Derzeit wählt das Sicherheitspaket Aushandeln zwischen Kerberos und NTLM aus. Negotiate wählt Kerberos aus, es sei denn, es kann nicht von einem der an der Authentifizierung beteiligten Systeme verwendet werden.