NTLM and Kerberos Explained with Diagrams — Why Authentication Falls Back to NTLM
· Updated: · Go Komura · NTLM, Kerberos, Windows, Active Directory, Security, Authentication, Information Systems
Revision history (first version, published Jul 26, 2026)
- First published
Cite this article(DOI (registered archive): 10.5281/zenodo.22170795)
The DOIs below refer to previously archived versions and may not match the current text. Use this page’s URL to reference the current text.
Go Komura (2026). NTLM and Kerberos Explained with Diagrams — Why Authentication Falls Back to NTLM. KomuraSoft LLC. https://comcomponent.com/en/blog/ntlm-kerberos-explained/
- DOI (registered archive)
- 10.5281/zenodo.22170795
- DOI (last registered version)
- 10.5281/zenodo.22170796
Even on a corporate network described as “a Kerberos environment”, collecting audit logs always turns up NTLM. And what turns up is usually an application that is supposed to support Kerberos.
“Falling back to NTLM” here does not mean that authentication stops with an error; it means switching to NTLM because Kerberos cannot be used. A business system can be running perfectly well and still not be using the authentication method you expect.
This article first compares, with diagrams, what NTLM and Kerberos use as their material and whose identity each one verifies. Once that difference is clear, the same mechanism explains both why authentication switches to NTLM depending on the destination name or the kind of account, and why relay attacks and Pass-the-Hash work.
The order of reading is how the mechanisms differ → the conditions that cause the switch → decisions about defense and migration. If your goal is troubleshooting, first separate “it is running on NTLM” from “authentication itself has stopped”, then use the guide by goal in Section 1 to move on to Section 6.
The procedure for inventorying your own estate (configuring audit policies, following the events, the order in which to fix things) is set out in the companion article “Will NTLM Deprecation Stop Your Business Apps?”.
1. The Bottom Line First
There are three things to grasp first: the material each protocol authenticates with, the conditions that switch authentication to NTLM, and the policy for security and migration.
Grasp How the Mechanisms Differ
NTLM builds a response from a hash; Kerberos uses a ticket that names the destination. NTLM credentials are a one-way hash of the domain name, user name, and password.1 In NTLMv2, a key derived from that hash is used to compute an HMAC over the server challenge, a timestamp, a client-side challenge, and target information (Section 2.2).2
Kerberos, by contrast, issues a service ticket based on the SPN, the service name of the destination, and so establishes “who, to which service”.3 Three differences follow from this: mutual authentication, the query to a DC during domain-account authentication, and delegation to other services (Section 5).4
Separate a Fallback From an Authentication Error
“It runs on NTLM” and “it stops with a Kerberos error” start from different places in an investigation. The main causes of switching to NTLM are hard-coded IP addresses, unregistered SPNs, workgroups, and routes that cannot reach a DC. Whether an SPN can be resolved from the destination name matters most of all (Section 6).56
Problems that arise after Kerberos has been selected, such as a clock skew, are a different matter: authentication itself stops. Do not assume that a failure is always retried with NTLM (Section 6.5).7
Grasp the Security and Migration Policy
Even with NTLMv2, relay attacks and Pass-the-Hash remain. Relaying comes from the authentication exchange not binding a destination; Pass-the-Hash comes from the hash itself being the material for authentication. Section 7 covers the conditions under which each of them works, including whether the destination requires SMB signing or channel binding.81
NTLMv1 has already been removed in Windows 11 version 24H2 and Windows Server 2025. NTLMv2 still works, but it is deprecated (Section 8).9 Applications should not name NTLM directly: they should use Negotiate, which prefers Kerberos, and then the names, SPNs, and network routes that let Kerberos work should be put in order.1
Read by Goal or Symptom
| What you want to know or are stuck on | Where to read first | What to grasp |
|---|---|---|
| You want to know how NTLM and Kerberos differ | Section 2: NTLM, Section 4: Kerberos, Section 5: the comparison table | Separate a hash-based response from a ticket that names its destination |
| A Kerberos-capable application is ending up on NTLM | Section 6: the conditions for falling back | Look at the destination name, the SPN, the account, and the route to the KDC |
| Authentication itself fails with an error | Section 6.5: how this differs from a failure | Do not confuse it with a switch to NTLM; investigate clock skew and similar causes |
| You want to investigate NTLM that does not appear in the DC logs | Section 2.3: local accounts | Authentication with a local account is completed by the server itself |
| You want to know whether NTLMv2 is still dangerous | Section 7: relay and Pass-the-Hash, Section 8: deprecation and removal | Separate the conditions under which the attacks work from how each version is treated |
| You want to know how to migrate applications and devices | Section 9: where this is heading and the practical companion article | Sort dependencies into those the new features may cover and those you must fix yourself |
This article explains the mechanisms and the decisions. For the procedures for configuring auditing and carrying out an inventory, go on to the practical companion article introduced at the top.
In the diagram a solid line marks a relation that always holds and a dashed line marks a conditional one (the conditions are given per relation on the detail page). The full list of relations (35 in total, with evidence and certainty) and the definitions of the main concepts are collected on the knowledge map detail page (in Japanese). Data: JSON-LD / Turtle
2. What NTLM Actually Does
This section starts by separating the party that builds the response from the party that verifies it. After looking at the three-party exchange for a domain account, we examine what NTLMv2 actually computes and how a local account differs.
NTLM (Windows Challenge/Response) is, as the name says, a challenge/response authentication protocol. Summarizing Microsoft’s description: the credentials consist of a one-way hash of the domain name, user name, and password obtained at interactive logon, and in order to authenticate without sending the password over the wire, the party requesting authentication performs a computation that proves it “can access the securely stored NTLM credentials”.1
The important point here is that the material for authentication is not the password itself but the hash of the password. That single fact is what makes Pass-the-Hash possible, as we will see later.
2.1. With a Domain Account, Three Parties Are Involved
Consider a user who is already logged on accessing a resource on a server with a domain account. This is non-interactive authentication, and the following three parties are involved.1
| Party | What it is responsible for |
|---|---|
| Client | Builds the response using the password hash |
| Resource server | Issues the challenge and asks the DC to verify the response it receives |
| Domain controller (DC) | Computes with the hash from the account database and compares it against the response |
The key point is that the resource server does not verify a domain user’s response by itself: it asks the DC to do the computation.
Figure 1 and the seven steps below it are the conceptual procedure shown on Microsoft’s overview page. The exact response computation of NTLMv2 is covered in Section 2.2. Read Figure 1 for “who asks whom to verify” and Figure 2 for “how it is computed”, and the two will not get mixed up.1
sequenceDiagram
autonumber
participant C as Client
participant S as Server
participant DC as Domain controller
Note over C: At logon, computes the hash of the<br/>password and discards the password itself
C->>S: User name (plaintext)
S->>C: 8-byte random number (challenge)
Note over C: Encrypts the challenge<br/>with the password hash
C->>S: Response
S->>DC: User name / challenge / response
Note over DC: Retrieves the hash from the SAM<br/>and performs the same computation
DC-->>S: Authentication succeeds if they match
S-->>C: Grants access
Figure 1: NTLM non-interactive authentication (with a domain account)
Followed as a procedure, Figure 1 becomes these seven steps. The response computation of NTLMv2 itself is restated in Section 2.2 below.
- (Interactive authentication only) The user enters a domain name, user name, and password. The client computes a cryptographic hash of the password and discards the actual password.
- The client sends the user name to the server in plaintext.
- The server generates an 8-byte random number (the challenge, a nonce) and sends it to the client.
- The client encrypts this challenge with the hash of the user’s password and returns the result (the response).
- The server sends three things to the domain controller: the user name, the challenge it sent to the client, and the response it received.
- The domain controller uses the user name to retrieve the password hash from the SAM database and encrypts the challenge with it.
- It compares the result it computed with the client’s response; if they are identical, authentication succeeds.
2.2. The Actual Computation — NTLMv2 Is Somewhat More Involved
The seven steps above are the basic form Microsoft describes on its overview page. NTLMv2, which is what today’s Windows actually uses, goes one step beyond “encrypt the challenge with the password hash”. The specification ([MS-NLMP]) defines it as follows.2
Derive a Response Key, Then Compute an HMAC Over the Challenge and More
- The response key is
NTOWFv2 = HMAC_MD5( MD4(UNICODE(password)), uppercased user name + domain name ) - The client builds
temp, a concatenation of the response version, a timestamp, an 8-byte challenge generated on the client side, and target information (AV pairs) - The core of the response is
NTProofStr = HMAC_MD5( response key, server challenge + temp )
Reduced to just the inputs and the flow of processing, it fits on a single page.
flowchart TD
PW["Password"] --> MD4["MD4(UNICODE(password))<br/>= NT hash"]
UD["Uppercased user name<br/>+ domain name"] --> H1["HMAC_MD5"]
MD4 -->|"used as the key"| H1
H1 --> KEY["Response key NTOWFv2"]
MAT["Response version / timestamp /<br/>8-byte client-side challenge /<br/>target information (AV pairs)"] --> TEMP["temp"]
SC["Server challenge"] --> H2["HMAC_MD5"]
TEMP --> H2
KEY -->|"used as the key"| H2
H2 --> PROOF["NTProofStr"]
PROOF --> RESP["NtChallengeResponse<br/>= NTProofStr + temp"]
TEMP --> RESP
Figure 2: How an NTLMv2 response is produced (password → NT hash → response key → HMAC)
So what is actually computed is an HMAC that mixes in not only the server challenge but also a client-side random number, a timestamp, and target information. The verifying side reproduces the same computation. If the account lives in Active Directory, the challenge/response pair is sent to a domain controller for verification; if the account is local to the server, the server computes the expected value from the OWF it stores itself.2
Two Things That Do Not Change, However Complex the Computation Gets
What matters for the argument of this article is that the following two things do not change with the added complexity.
- The material for the key is still the password hash. The starting point of
NTOWFv2isMD4(UNICODE(password)), which is the NT hash itself.2 That is why Pass-the-Hash works (Section 7.2). - The client does not verify that the server is genuine. Microsoft’s statement that NTLM has no mutual authentication holds for NTLMv2 as well.4
Everything that follows rests on these two points.
2.3. With a Local Account, Two Parties Are Enough
With a local account, the right-hand side of Figure 1 — the domain controller — disappears.
A resource server queries the authentication service on a domain controller in that domain when the account is a domain account, but it consults the local account database when the account is local.10
So on a workgroup machine, or when a share is accessed with a local account on a file server, no domain controller appears: it is a two-party exchange in which the server looks at its own SAM and decides for itself.
This difference feeds directly into the inventory of “Kerberos cannot be used because this is a local account” dependencies covered in Section 6.3. NTLM taking this route does not show up in a domain controller’s audit logs.
2.4. Three Consequences of This Design
Three properties that lead to later failures and attacks can be drawn out of the exchange so far.
| Property | What it leads to later |
|---|---|
| There is no step in which the server proves to the client that it is genuine | The difference in mutual authentication (Section 5), and the conditions under which a relay attack works (Section 7.1) |
| Verification requires the account’s hash | The DC for a domain account, or the server’s own account database for a local account, is consulted (Section 3) |
| A response is tied to that challenge but not to a destination | Simply replaying an old response and relaying a live exchange are two different things (Section 7.1) |
The query in the second row is needed every time the resource server requires a new access token. For a domain account it checks the authentication service on a DC; for a local account it checks the local account database.10
Also, because the challenge changes every time, the same response cannot simply be reused. But that alone does not prevent relaying the challenge and response of a live exchange to another server. Section 7 looks at this difference.
3. Why the Server Asks a Domain Controller
NTLM Asks Whoever Holds the Hash to Verify
The password hash of a domain user lives in the account database on the DC. The resource server does not know that user’s hash, so it cannot verify the response it received on its own.
Pass-through authentication is therefore handing the user name, the challenge, and the response to the DC and asking it to decide. This division of labor is why NTLM authentication with a domain account requires a query to a DC.101
For a local account, the hash is checked against the server’s own SAM. The statement “NTLM asks the DC” applies only to domain accounts.
Kerberos Replaces the Query With a Ticket
Kerberos replaces this pass-through authentication with renewable session tickets. Microsoft explains that with NTLM an application server had to connect to a DC every time it authenticated, whereas with Kerberos that query becomes unnecessary.4
There is an exception, though: when validation of the PAC (privilege attribute certificate) is required. It does not mean that with Kerberos there is no traffic at all from the server to a DC.
Migrating to Kerberos therefore has an operational benefit — reducing the dependency on a DC for every authentication — on top of the security improvement of being able to verify the peer. The next section looks at how a ticket fills that role.
4. What Kerberos Actually Does
Where NTLM has a response verified on every authentication, Kerberos proves identity up front, receives a ticket, and uses that ticket for the next authentication. Figure 3 shows the whole flow from the initial proof of identity through to connecting to a service.
The KDC (Key Distribution Center) runs on a domain controller and uses the Active Directory Domain Services database as its security account database.4
Before Reading the Diagram, Separate Names From Tickets
| Term | Its role in this section |
|---|---|
| KDC (Key Distribution Center) | Runs on a domain controller, proves identity, and issues tickets |
| SPN (service principal name) | The name that identifies the service the client wants to connect to |
| TGT (ticket-granting ticket) | The ticket presented to the KDC when requesting a service ticket |
| Service ticket | The ticket presented to the destination service, issued for that destination |
Figure 3 has three stages: prove identity and obtain a TGT → specify an SPN and obtain a service ticket → present it to the service. The key is not to read the TGT and the service ticket as the same thing.
sequenceDiagram
autonumber
participant C as Client
participant KDC as KDC (domain controller)
participant S as Service (identified by an SPN)
Note over C,KDC: AS exchange — proving identity and obtaining a TGT
C->>KDC: KRB_AS_REQ<br/>(user name + timestamp encrypted with the long-term key)
Note over KDC: Genuine if it decrypts with the long-term key
KDC-->>C: KRB_AS_REP<br/>TGT (encrypted with the krbtgt key) + session key
Note over C,KDC: TGS exchange — obtaining a service ticket
C->>KDC: KRB_TGS_REQ<br/>(TGT + destination SPN + authenticator)
Note over KDC: Looks up the service account from the SPN<br/>and encrypts the ticket with its long-term key
KDC-->>C: KRB_TGS_REP<br/>Service ticket + session key
Note over C,S: AP exchange — presenting to the service
C->>S: KRB_AP_REQ<br/>(service ticket + authenticator)
Note over S: Decryptable with its own long-term key<br/>= the ticket is addressed to it
S-->>C: KRB_AP_REP (when mutual authentication was requested)
Figure 3: The three Kerberos exchanges (AS / TGS / AP)
Legend — AS = Authentication Service, TGS = Ticket Granting Service, AP = Application. In the message names, _REQ is a request and _REP is a reply. For example, KRB_TGS_REQ means “a request to the Ticket Granting Service”.
4.1. The AS Exchange — Proving Identity Once
What Is Sent: A Timestamp Encrypted With the Long-Term Key
The client sends the KDC its user name and domain name together with a timestamp encrypted with its own long-term key, the key derived from the password. This is pre-authentication. If the KDC can decrypt it with that long-term key and the timestamp is valid, it concludes that this is the genuine user.3
What Is Received: A TGT and a Session Key
The KDC returns two things with different roles. Both are “things the client receives”, but they differ in whether the client can read what is inside.3
| What is received | Which key encrypts it | How the client treats it |
|---|---|---|
| TGT (ticket-granting ticket) | The KDC’s own long-term key (the key of the krbtgt account) | The contents cannot be read. It is presented to the KDC in the next TGS exchange |
| The session key used between the client and the KDC | The client’s long-term key | It is decrypted and used for the exchange with the KDC |
Holding a TGT and being able to read what is inside it are two different things. That distinction leads to the next step, “make the request accompanied by the TGT and an authenticator”.
If Clocks Drift, Kerberos Itself Fails
The point to grasp here is that the timestamp is part of the authentication. That is why Kerberos is strict about clock synchronization: the tolerated time difference is five minutes by default.7 Outside that window pre-authentication does not pass, and Kerberos authentication itself fails with an error (time synchronization on Windows is covered in “Windows Time Synchronization (w32time) Guide”). This “Kerberos fails” and “falls back to NTLM” are two different things. Section 6.5 covers the distinction.
4.2. The TGS Exchange — Declaring Which Service You Are Connecting To
Once the client has a TGT, it requests a ticket for the destination service. Only at this point does the name that says which service you are connecting to, the SPN, take center stage.3
The client sends the KDC the destination SPN, the TGT, and an authenticator. The KDC finds the service account that corresponds to the SPN, encrypts a service ticket with that account’s long-term key, and returns it.3
Read this flow backwards and the problems covered in Section 6 come into view.
- If the SPN cannot be resolved, no ticket can be issued. If no SPN is registered on the service account, the KDC cannot determine whose key to use. Connecting by IP address is likewise a condition under which Kerberos is not attempted by default (Section 6.1).
- A ticket is made for its destination. Because it is encrypted with that service’s long-term key, a service holding a different long-term key cannot decrypt it. That is why a ticket cannot be reused against a different destination.
4.3. The AP Exchange — Presenting to the Service, and Mutual Authentication
The last exchange is with the destination service rather than the KDC. Here too, read the service-side check and the client-side check separately.
On the Service Side: Opening a Ticket Addressed to It
The client presents the service ticket and an authenticator. The service decrypts the ticket with its own long-term key and extracts the session key and the authorization data. Being able to decrypt it with its own key is what confirms that the ticket is addressed to it.3
On the Client Side: Verifying the Peer When Mutual Authentication Was Requested
If the client requested mutual authentication, the service encrypts the timestamp it received with the session key and returns it. The client verifies that reply and confirms that the peer is the genuine service.3
Not only does the service verify the client, the client can also verify the service. This is the mutual authentication that NTLM lacks.
5. The Decisive Differences
This section compares the mechanisms of Sections 2 to 4 from the angles that matter in operations and design. The query to a DC differs between domain and local accounts, and Kerberos has an exception of its own in PAC validation. Read the conditions along with the rows.
| Aspect | NTLM | Kerberos |
|---|---|---|
| Verifying the peer | A client cannot verify a server, and one server cannot verify another server. The design assumes servers are genuine4 | Either end of a connection can verify that the peer is who it claims to be4 |
| A DC query on every authentication | Required for a domain account. The resource server queries a DC each time it needs a new access token (for a local account it consults its own account database)10 | Not required, except when PAC validation is needed. Renewable session tickets take its place4 |
| Binding to a destination | None. A response does not prove who it was made for | Present. A service ticket is encrypted with the destination service’s long-term key3 |
| Delegation | Provides only the authorization data needed to impersonate the client locally4 | Supports delegation, in which a service connects to another service on the client’s behalf4 |
| Clock synchronization | Not dependent on it | Dependent on it (five minutes of tolerance by default)7 |
| Name resolution | Indifferent to the peer’s name (works with an IP address) | Requires that an SPN can be resolved3 |
| Use outside a domain | Still required for workgroup configurations and local logon10 | Requires Active Directory4 |
A Design That Uses Delegation Has a Further Choice of Flavor
Delegation is the mechanism by which, for example, a front-end web application connects to a back-end SQL Server on the user’s behalf. Impersonating the user inside one server and carrying the user’s identity onward to another service are two separate things.4
Kerberos delegation comes in unconstrained delegation, constrained delegation, and resource-based constrained delegation (RBCD). Deciding to “use Kerberos” is not the end of it; which flavor of delegation to use is a design question in its own right.
This article does not go into the configuration of each flavor. Keep these three names as your next search terms when investigating a configuration that needs delegation.
The Name and Domain Conditions Lead Into the Next Investigation
The bottom two rows of this table are exactly the reasons authentication falls back to NTLM. The strengths of Kerberos — binding to a destination and verifying the peer — rest on names resolving correctly.
6. Why Authentication “Falls Back” to NTLM
This section investigates why “the business system is running, but authentication is on NTLM”. Check the destination name, the SPN registration, the account, and the route to the KDC, in that order. If authentication itself fails with an error, check Section 6.5 first to see whether a different line of investigation is needed.
NTLM gets used even when the application does not name NTLM directly, because that is how Negotiate behaves. Microsoft describes Negotiate as selecting either Kerberos or NTLM, and selecting Kerberos unless one of the systems involved in the authentication cannot use it.1
So even when Negotiate is in use, NTLM is chosen if the conditions for Kerberos are not all met. An application supporting Kerberos and Kerberos actually being used on a given connection are two different things.
The diagram and table below show the typical branches in a configuration where NTLM is available. They do not mean that authentication always succeeds where NTLM itself is restricted. Investigate the reason for the switch first, then check restrictions on authentication methods together with Sections 8 and 9.
flowchart TD
START["Authentication starts with Negotiate"]
Q1{"A domain<br/>account?"}
Q2{"Can an SPN be built from<br/>the destination name?"}
Q3{"Is that SPN<br/>registered?"}
Q4{"Is the KDC<br/>reachable?"}
KRB["Authenticate with Kerberos"]
NTLM["Fall back to NTLM"]
START --> Q1
Q1 -->|"No<br/>(workgroup / local account)"| NTLM
Q1 -->|Yes| Q2
Q2 -->|"No<br/>(hard-coded IP address)"| NTLM
Q2 -->|Yes| Q3
Q3 -->|"No<br/>(SPN not registered / accessed by an alias)"| NTLM
Q3 -->|Yes| Q4
Q4 -->|"No<br/>(branch site / VPN / firewall)"| NTLM
Q4 -->|Yes| KRB
Figure 4: The branches by which Negotiate falls back to NTLM
The four main factors are set out first in three columns: the condition, why it causes a fallback, and how to fix it. The details follow from Section 6.1 onward.
| Condition that causes a fallback | Why it falls back | How to fix it |
|---|---|---|
| The destination is specified by IP address (Section 6.1) | By default, Windows does not attempt Kerberos authentication when the host name is an IP address11 | Change the destination setting to an FQDN. Only for the peers where that is truly impossible, set TryIPSPN to 1 on the client and manually register an SPN for the IP address (a last resort)11 |
| No SPN is registered, or access uses a DNS alias (Section 6.2) | The KDC cannot look up the service account from the SPN, so it cannot encrypt a ticket with that account’s long-term key3 | Register an SPN for the requested service class under the name actually used for access. If a CNAME is used, an SPN for that name is needed as well5 |
| Access from a workgroup machine or with a local account (Section 6.3) | This is outside Active Directory, so there is no KDC in the first place10 | Join the domain, or switch to access with a domain account. The local KDC in phase 2 fills this gap only between Windows versions that support it6 |
| The domain controller cannot be reached (Section 6.4) | The client cannot talk to the KDC, so it cannot obtain a ticket6 | Review the routing and the firewalls so that the traffic Kerberos needs reaches the KDC |
6.1. The Connection Uses an IP Address
The Default Behavior: Kerberos Is Not Attempted for an IP Address
This is the most common cause. Microsoft states explicitly that by default, when the host name is an IP address, Windows does not attempt Kerberos authentication against that host and falls back to another valid authentication protocol such as NTLM.11 The audit guidance says the same from its side: Kerberos is not used if the “Target Server” in event 8001 is in neither NetBIOS nor FQDN form.5
The reason this happens is listed as well: applications that use an IP address rather than a DNS name because of a misconfiguration or vendor documentation.5 In practice it is extremely common to find a setting that someone rewrote to an IP address years ago “because name resolution was unreliable” and that has stayed that way ever since.
The Exception: Set TryIPSPN and the SPN That Is Actually Requested
Not attempting Kerberos for an IP address is the default behavior, not an absolute constraint. From Windows 10 version 1507 and Windows Server 2016 onward, there is a mechanism that allows an IP address as the host name in an SPN.11
Both of the following are required.
- Set the registry value
TryIPSPNto 1 on the client. - Manually register an SPN that uses the IP address, in the form
Setspn -s <service class>/<IP address> <account>.
The SPN you register must match the service class the client actually requests. Even for the same destination IP address, the name required differs from service to service.
| Example target | Example SPN and points to watch |
|---|---|
Services that map to HOST, such as file shares |
host/192.168.1.1 is enough |
| Web | HTTP/192.168.1.1 |
| SQL Server | Include the port, as in MSSQLSvc/192.168.1.1:1433 |
Registering only host/ will not make Kerberos work if it does not match the SPN that is requested. Microsoft positions this feature as a way to reduce the compatibility impact of disabling NTLM.11
Fix It to an FQDN First, and Keep the Exception as a Last Resort
That said, this is not the first choice. Microsoft itself says that IP addresses are transient and can cause conflicts and authentication failures as leases expire and renew, so they are not normally used in place of host names, and that IP-address-based SPN registration is manual work that should be used only when switching to a DNS-based host name is impossible.11 For every hard-coded IP address an audit turns up, think first about changing it to an FQDN. TryIPSPN is a last resort for the peers where that really cannot be done.
6.2. No SPN Is Registered
The next thing to look at is whether the name actually used for access is registered as an SPN. Microsoft lists applications whose SPN is not configured correctly as one category of application that uses NTLM despite supporting Kerberos.5
In the TGS exchange in Figure 3, the KDC looks up the service account from the SPN and encrypts the ticket with its long-term key. Without an SPN, “that service’s key” cannot be identified.
The same thing happens when the connection uses a DNS alias (CNAME) or a custom host name and no SPN is registered for that name. Being able to reach the server by a name and being able to obtain a Kerberos ticket for that name are two different things.
What to check is the name written in the application’s connection setting, and the SPN for the service class requested against that name. The application can be working perfectly while only the name it uses is missing from the register.
6.3. You Are Outside Active Directory to Begin With
Find the Routes That Genuinely Need NTLM Today
Machines in a workgroup configuration, and share access with a local account, are not on Kerberos’ playing field at all. Microsoft says that NTLM is used, and must be used, for Windows authentication on systems configured as members of a workgroup and for local logon authentication on machines other than domain controllers.10
Separate What the Local KDC Will Cover From What It Will Not
This is why NTLM cannot simply be banned. The local KDC planned for phase 2 is precisely the feature meant to fill this gap.6
Assume, though, that it fills the gap only between Windows versions that support it. Local-account authentication against older Windows, or against third-party devices such as NAS boxes and multifunction printers, will not automatically become Kerberos when the local KDC arrives. Sections 5 and 6 of the practical companion article cover this sorting.
6.4. The KDC Cannot Be Reached
A branch site or VPN from which the DC cannot be reached, or a firewall that blocks the traffic Kerberos needs, is also a cause of switching to NTLM.6 That is because where the required ticket cannot be obtained from the KDC, the groundwork for using Kerberos cannot be laid.
Here, break “can the DC be reached” down by who originates the traffic.
| Authentication method | The route needed here | Why the route matters |
|---|---|---|
| Kerberos | Client → KDC | To obtain a TGT and service tickets |
| NTLM with a domain account | Resource server → DC | To ask for verification of the response received |
“The client cannot reach the KDC” and “NTLM does not need a DC” are not the same statement. As Section 3 showed, NTLM with a domain account requires a query from the server to a DC.10 Even when NTLM is chosen, authentication cannot complete if that verification route has been lost as well.
6.5. Do Not Confuse a Kerberos Failure With a Fallback to NTLM
Kerberos Never Starting Versus Kerberos Failing After It Was Chosen
Finally, let us separate out something easy to confuse but genuinely different. Sections 6.1 to 6.4 are all cases where Kerberos could not be started. Because it cannot be started, Negotiate chooses NTLM.
Problems where Kerberos fails after being chosen are investigated separately. The classic example is the clock skew mentioned in Section 4.1.
If the SPN resolves and the KDC is reachable, Negotiate chooses Kerberos first. But if the time difference exceeds the tolerance, five minutes by default, pre-authentication does not pass and it fails as a Kerberos error.7
“Choosing NTLM because Kerberos is unavailable” and “retrying with NTLM because the chosen Kerberos failed” are not the same. Negotiate does not necessarily go as far as the latter, and a case where the application explicitly retries with another method has to be considered separately.
Separate the Symptoms Before Choosing Logs and Commands
The practical implication is simple. You will not find a clock-skew failure by hunting for event 8001. The symptoms differ too.
| Symptom | What to suspect | Where to look |
|---|---|---|
| It works, but authentication is on NTLM | Sections 6.1 to 6.4 (Kerberos never started) | Event 8001 in NTLM/Operational |
| Authentication itself fails with an error | Clock skew, a duplicate SPN registration, an encryption type mismatch, and the like | The Kerberos events in the System log, klist, w32tm /query /status |
Separate “has it fallen back to NTLM” from “is Kerberos broken” before you investigate. The “it works, but on NTLM” symptom described here assumes a configuration in which NTLM is available. Restrictions on NTLM and blocking of NTLM are checked separately, in Section 8 and Section 9.
7. The Difference Seen From the Attack Side — Relay and Pass-the-Hash
Relay and Pass-the-Hash are both discussed as NTLM problems, but what each one uses is different.
| Attack | What the attacker uses | The underlying problem |
|---|---|---|
| Relay | A challenge/response exchange that is in progress right now | The destination of a response cannot be verified, so conditions that allow relaying remain |
| Pass-the-Hash | A password hash stolen from a machine or elsewhere | It can be used as the material for authentication without cracking the plaintext password |
Section 7.1 looks first at the conditions under which relaying gets through, then Section 7.2 at the problem that arises when a hash is stolen.
Microsoft states explicitly in its policy setting documentation that NTLM and NTLMv2 authentication is vulnerable to a variety of malicious attacks, including SMB relay, man-in-the-middle attacks, and brute force attacks.8 Figure 1 explains why.
7.1. Relay Attacks — The Consequence of Not Binding a Destination
sequenceDiagram
autonumber
participant V as Victim's PC
participant A as Attacker's server
participant T as Real server
Note over V,A: The victim is lured to the attacker's server
V->>A: Starts authentication (user name)
A->>T: Starts authentication as the same user
T-->>A: Challenge
A-->>V: Forwards that challenge unchanged
Note over V: Cannot tell whether it came<br/>from the real server
V->>A: Response (computed with a key derived from the hash)
A->>T: Forwards that response unchanged
Note over T: When neither signing nor channel<br/>binding is required
T-->>A: Authentication succeeds → connection established as the victim
Figure 5: How an NTLM relay works (against a peer with neither signing nor channel binding)
A Relay Works Without Stealing a Password or a Hash
The attacker needs to know neither the password nor the hash. All they do is pass the challenge and the response from one side to the other. This works because the client has no way to check whether its response is really going to the peer it intended.
Whether It Works Depends on the Destination’s Defenses
Relaying does not get through to just any peer, though. Whether a relayed exchange turns into a usable session depends on the destination’s defenses.
- It does not get through to a peer that requires SMB signing. Microsoft states that the signature attached to every SMB message contains a hash of the whole message and confirms the identities of the sender and the receiver, which prevents relay attacks.12 Note that domain controllers require SMB signing by default from anything that connects to them.12
- Nor does it get through to a service that enforces Extended Protection for Authentication (channel binding). Because that binds the authentication to the TLS channel underneath, authentication relayed onto a different channel no longer passes.
Figure 5 assumes a peer that accepts NTLM and requires neither signing nor channel binding. Do not read it as meaning that this relay gets through unconditionally on every connection that uses NTLM.
What to check here is not just whether the defensive features are “supported” but whether they are actually required and enforced. Alongside the NTLM inventory, it is worth checking whether the configuration requires SMB signing.
Consider Migration to Kerberos Together With the SMB-Side Defenses
With Kerberos, a relay of the same shape is not possible in the first place. A service ticket is encrypted with the destination service’s long-term key, so carrying it to another service leaves it undecryptable.3 On top of that, mutual authentication lets the client check whether the peer is genuine.4
This is exactly why Microsoft provided NTLM blocking on the SMB client. Its stated purpose is to prevent techniques that get NTLM requests sent to a malicious server.13
Among its recommendations around SMB signing, Microsoft also lists using Kerberos rather than NTLMv2 so that the session key starts out strong, and not connecting to shares by IP address or CNAME record, because doing so means NTLM is used instead of Kerberos.12 This is the same point as Sections 6.1 and 6.2.
7.2. Pass-the-Hash — The Hash Is Equivalent to the Password
flowchart LR
P["Password"] -->|"one-way hash"| H["Password hash"]
H -->|"derive the response key<br/>and compute an HMAC"| R["Response"]
R --> AUTH["Authentication succeeds"]
STEAL["Hash stolen<br/>from a machine"] --> H
NOTE["The plaintext password<br/>is not needed"] -.-> STEAL
Figure 6: What authentication needs is the hash, not the plaintext password
The Problem Is That a Response Can Be Built From the Hash
The material of NTLM credentials is a one-way hash of the password.1 In NTLMv2 as well, the response key is derived using MD4(UNICODE(password)) as the key, and the response is built by computing an HMAC with that key.2
So the starting point does not change however complex the computation becomes. An attacker who obtains the hash can perform the computation needed to authenticate as that user without cracking the plaintext password.
Password Complexity Alone Does Not Close This Route
Making passwords long and complex is a different matter from stopping a stolen hash from being used. Complex passwords still leave open the route of stealing the hash and using it. Microsoft lists Pass-the-Hash, alongside brute force and cracking, among the attacks that NTLM blocking on SMB counters.13
Kerberos has long-term keys too. What is exchanged in day-to-day authentication, though, is tickets and session keys that expire.3 The comparison has to extend to how far what was stolen actually gets the attacker.
8. NTLMv1, NTLMv2, and “Removal”
NTLM is not a single protocol but a family of authentication protocols that includes LAN Manager versions 1 and 2 and NTLM versions 1 and 2.10
The distinction to draw here is between deprecation and removal. Deprecated means outside active feature development; removed means unusable in the versions concerned.
The table below places the June 2024 deprecation announcement alongside the subsequent removal of NTLMv1. Do not read the “still works” wording in the first row as meaning that NTLMv1 is usable on the operating systems in the second row. For NTLMv1, the later removal applies.9
| Version | Status | What it means |
|---|---|---|
| LANMAN / NTLMv1 / NTLMv2 | All deprecated (June 2024)9 | Outside active feature development, but still working in the next release of Windows Server and the next annual release of Windows |
| NTLMv1 | Removed (Windows 11 24H2 / Windows Server 2025)9 | Unusable on these versions |
Find the Peers That Can Only Do NTLMv1 First
So “we’re on NTLMv2, so we can leave it for now” does not hold. The priority order is clear, though: devices and hosts that can only speak NTLMv1 come first. A host recorded as NTLM V1 in an audit will stop authenticating once it is moved to a newer Windows as it stands. How to tell the versions apart, by looking at “Package Name (NTLM only)” in the Security log, is covered in Section 4.4 of the practical companion article.5
The Restriction Policies Apply to Both v1 and v2
Note that the audit and block policies that restrict NTLM have the same effect on both NTLMv1 and NTLMv2.5 Behavior does not change by version when you apply a restriction.
9. Where This Is Heading
The direction of the migration is easiest to grasp in this order: change what applications call → reduce the situations that need NTLM → change the default for network authentication.
The delivery timing of IAKerb and the local KDC below, and the change of default, are described as plans in the Microsoft roadmap cited here. They are not to be treated as shipped features, or as features that will automatically work on every device.6
First: Use Negotiate on the Application Side
Replacing calls to NTLM with calls to Negotiate is an instruction contained in the deprecation announcement itself.9 It is also stated explicitly that applications should not access the NTLM security package directly.1
Second: Reduce the Situations That Need NTLM at All
IAKerb and the local KDC planned for phase 2 (the second half of 2026) fall under this.6 They are an attempt to fill, at the protocol level, the two gaps seen in Section 6.3: “Kerberos cannot be used because this is a local account” and “Kerberos cannot be used because the domain controller cannot be reached”.
What they fill is limited, though. What IAKerb solves is reachability of the domain controller, not whether the peer supports the protocol. The local KDC, too, works only between Windows versions that support it.
When the peer is a third-party NAS or multifunction printer, waiting for phase 2 changes nothing, so you have to choose for yourself between replacing the device, joining it to the domain, switching to a different protocol, and managing it as an exception.
Third: Change the Default for Network NTLM Authentication
In phase 3, network NTLM authentication is planned to be disabled by default in the next major release.6 It is also stated that it can be re-enabled by policy.
What to Do Now: Sort Dependencies Into Those the New Features May Cover and Those You Must Fix Yourself
The plan follows the order “remove the reasons to use NTLM, then change the default”. Sorting your own dependencies the same way keeps what to wait for separate from what to fix first.
| Remaining dependency | Which way to decide |
|---|---|
| Local-account authentication between supporting Windows versions, and DC reachability from clients | Within the scope the local KDC and IAKerb may be expected to cover. Check whether the peer supports them, though |
| Hard-coded IP addresses, unregistered SPNs | Standardize destinations on FQDNs and get the SPNs in place. Do not put these on hold for the new features |
| Local-account authentication with older Windows or third-party NAS boxes and multifunction printers | Choose between replacing the device, joining the domain, switching to a different protocol, and managing it as an exception |
The important thing is not to sweep authentication with older Windows and third-party devices into a single “waiting for phase 2” bucket. It will not turn into Kerberos on its own, and left alone it will surface as a failure when the default is switched off.
The concrete procedure for inventorying and sorting is set out in the practical companion article.
10. Summary
Finally, here is a recap in the order of the decisions.
Mechanism: A Hash-Based Response, or a Ticket for a Destination
NTLM builds a response to a challenge from the password hash. What verifies it is a DC for a domain account, or the server’s own SAM for a local account.110
Kerberos uses a ticket encrypted with the destination service’s long-term key.3 Grasping the differences in mutual authentication, the DC query on every authentication, and delegation reveals the premises for choosing between the two methods.4
Triage: Is It Running on NTLM, or Has Authentication Stopped?
If authentication has switched to NTLM, check the four conditions: hard-coded IP addresses, unregistered SPNs, being outside Active Directory, and reachability of the KDC.5611
Problems that produce an authentication error after Kerberos was chosen, such as a clock skew, are a separate matter. Rather than chasing only event 8001 in NTLM/Operational, examine the Kerberos events and clock synchronization.7 The starting point of the investigation is not to conclude “it works, so it must be Kerberos” or “it stopped, so it must have fallen back to NTLM”.
Response: Check the Defenses, Then Move On to Negotiate and Names
Relay, which forwards an NTLM exchange, and Pass-the-Hash, which uses a stolen hash, differ both in why they work and in what they need.8113 Check the defensive conditions at each destination while reducing the NTLM dependency itself.
NTLMv1 has been removed in Windows 11 24H2 and Windows Server 2025, and all versions including NTLMv2 are deprecated.9 In applications, use Negotiate, standardize destinations on FQDNs, and register SPNs.15 Then carry the migration forward with the dependencies the new features may cover kept separate from the dependencies you have to fix yourself.
Related Articles
- Will NTLM Deprecation Stop Your Business Apps? — How to Collect Audit Logs, and the Order in Which to Kill Dependencies
- Pitfalls of Network Drives and UNC Paths — Working With File Servers (Shared Folders) From a Business Application
- Windows Time Synchronization (w32time) Guide
- Investigating Event Logs in Practice with Get-WinEvent — Filtering Speed Decides How Long the Investigation Takes
- Handling Credentials Safely in PowerShell — Banishing Plaintext Passwords from Your Scripts
- What Is the TPM in Windows? — An Illustrated Guide to the “Safe That Never Lets Keys Out” and Measured Boot
- Information Security 10 Major Threats 2026 — How to Read the Ranking, and What SMEs Should Actually Guard Against
Related Consulting Areas
KomuraSoft LLC handles modification of Windows business applications arising from a review of authentication methods, and root-cause investigation of authentication problems around Kerberos and NTLM.
- Windows Application Development
- Bug Investigation & Root-Cause Analysis
- Legacy Asset Reuse & Migration Support
- Contact Us
References
-
Microsoft Learn, Microsoft NTLM. On NTLM being an authentication protocol called Windows Challenge/Response, and a security package that provides authentication, integrity, and confidentiality to applications; on NTLM credentials consisting of a one-way hash of the domain name, user name, and password obtained at interactive logon; on authenticating without sending the password over the wire by means of an encrypted challenge/response, with the party requesting authentication performing a computation proving it can access the securely stored NTLM credentials; on non-interactive authentication involving three parties — client, server, and domain controller; on the concrete steps (the client computes the password hash and discards the plaintext password, sends the user name in plaintext, the server generates and sends an 8-byte random number as the challenge, the client encrypts the challenge with the hash and returns the response, the server sends the user name, challenge, and response to a domain controller, and the domain controller performs the same computation with the hash from the SAM database and compares); and on applications not accessing the NTLM security package directly but using the Negotiate security package, which selects between Kerberos and NTLM and selects Kerberos unless one of the systems involved in the authentication cannot use it. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13
-
Microsoft Learn, [MS-NLMP]: NTLM v2 Authentication. On the NTLM authentication version not being negotiated by the protocol but having to be configured on both client and server before authentication; on the NTLM v2 response key being defined as
NTOWFv2(Passwd, User, UserDom) = HMAC_MD5( MD4(UNICODE(Passwd)), UNICODE(uppercased User + UserDom) ); on the client generating an 8-byte challenge; ontempbeing a concatenation of the response version, an 8-byte GMT timestamp, the client challenge, and ServerName (the AvPairs structure contained in the NTLMv2_CLIENT_CHALLENGE of the AUTHENTICATE_MESSAGE); onNTProofStr = HMAC_MD5( ResponseKeyNT, server challenge + temp )andNtChallengeResponsebeing the concatenation ofNTProofStrandtemp; onSessionBaseKey = HMAC_MD5(ResponseKeyNT, NTProofStr); and on the verification side — where an account hosted in Active Directory has the challenge/response pair sent to a domain controller for verification, with the DC computing the expected value using NTOWF v2 / LMOWF v2 and comparing, and where the server returns STATUS_NOT_SUPPORTED if the DC returns STATUS_NTLM_BLOCKED, while an account hosted locally on the server has the server compute the expected value from the OWF it stores locally and compare. ↩ ↩2 ↩3 ↩4 ↩5 -
Microsoft Learn, How the Kerberos Version 5 Authentication Protocol Works. On the AS exchange, in which the client sends the KDC its user principal name, the account’s domain name, and pre-authentication data (including a timestamp) encrypted with the user’s long-term key (derived from the password), and the KDC decrypts and verifies with that long-term key before returning a TGT encrypted with the KDC’s own long-term key (the krbtgt account’s key) plus a session key encrypted with the user’s long-term key, with the TGT containing the session key, authorization data (user SID and group SIDs), and lifetime and flags. On the TGS exchange, in which the client sends the KDC the target server name (SPN), the TGT, and an authenticator (containing a timestamp and checksum) encrypted with the session key, and the KDC decrypts the TGT with its own long-term key to extract the session key, verifies that the authenticator’s timestamp falls within the policy-defined range, and returns a service ticket encrypted with the target service’s long-term key plus a new session key encrypted with the TGS session key. On the client/server (AP) exchange, in which the client presents the service ticket and an authenticator to the service, and the service decrypts the ticket with its own long-term key to extract the session key and authorization data, returning the client’s timestamp encrypted with the session key to prove its own identity when mutual authentication is requested. And on the difference between long-term keys and session keys (long-term keys are derived from passwords or service accounts and persist across sessions, while session keys are short-lived and destroyed with the ticket’s expiry). ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13
-
Microsoft Learn, Kerberos authentication overview in Windows Server. On Windows Server implementing the Kerberos version 5 authentication protocol along with extensions for public key authentication, transport of authorization data, and delegation; on the Kerberos client being implemented as an SSP (security support provider) accessed through SSPI; on the KDC being integrated with the other security services on a domain controller and using the Active Directory Domain Services database as its security account database; on Kerberos supporting delegation by services (a front-end service connecting to back-end services on other computers using the client’s identity) while what NTLM and Kerberos provide is the authorization information a service needs to impersonate a client locally; on pre-Kerberos NTLM authentication requiring an application server to connect to a domain controller each time it authenticated a client or service, whereas with Kerberos renewable session tickets replace pass-through authentication and the server does not need to go to a domain controller except when PAC validation is required; and, on mutual authentication, on Kerberos allowing either end of a network connection to verify that the other is who it claims to be, whereas NTLM allows neither a client to verify a server’s identity nor one server to verify another’s, having been designed for network environments where servers can be assumed genuine — an assumption Kerberos does not make. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13
-
Microsoft Learn, Viewing events for assessing NTLM usage. On being able to determine whether the NTLM audit information in the event log relates to NTLM v1 or v2, by searching the Security log’s logon events for “Authentication Package” and looking at “Package Name (NTLM only)” under “Detailed Authentication Information”; on the audit and block policies for restricting NTLM having the same effect on both versions of NTLM; on the four categories of application that use NTLM even though they theoretically support Kerberos (applications that let you choose among various security configurations and providers, applications whose SPN is not correctly configured, applications that use IP addresses rather than DNS names because of misconfiguration or vendor documentation, and applications with NTLM-only parts in a legacy codebase); on the investigation procedure tracing from event 8004 on the domain controller to event 8003 on the member server and event 8001 on the client, and the fields of each event; on Kerberos not being used if the “Target Server” in event 8001 is in neither NetBIOS nor FQDN form; and on the PID always being 4 (SYSTEM) for traffic via SMB, so that Process Monitor is needed to identify the calling process. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9
-
Microsoft Japan Windows Technology Support Blog, Preparing for the Retirement of NTLM (in Japanese). On NTLM retirement proceeding in three phases (phase 1 = making usage visible and auditing it; phase 2 = features for NTLM-dependent scenarios, planned for the second half of 2026; phase 3 = disabling network NTLM authentication by default in the next major release); on phase 2 being due to deliver IAKERB (a protocol supporting proxy functionality) and the local KDC (a feature supporting local authentication); on applications needing to use Negotiate; and on the representative causes of NTLM usage being server access specified by IP address, firewall restrictions on the ports Kerberos needs, unregistered SPNs, authentication to trusted partners, and authentication in workgroup environments. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9
-
Microsoft Learn, Registry entries about Kerberos protocol and Key Distribution Center (KDC) configuration. On the settings under
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters. In particular, onSkewTimedefaulting to five minutes as the maximum time difference tolerated between a client computer and the servers or KDC accepting Kerberos authentication, and this value also being used to decide whether a ticket can be reused; and on the SPN cache expiry (SpnCacheTimeout, 15 minutes by default) being used on clients and member servers to clean up negative cache entries for “SPN not found”, with the SPN cache disabled on domain controllers. ↩ ↩2 ↩3 ↩4 ↩5 -
Microsoft Learn, Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers. On the four values Allow all, Audit all, Deny all, and Not Defined; on the recommended procedure of selecting “Audit all” first, reviewing the operational log, and only then building an exception list; on audit and block events being recorded under “Applications and Services Logs\Microsoft\Windows\NTLM”; and on NTLM and NTLMv2 authentication being vulnerable to a variety of malicious attacks including SMB relay, man-in-the-middle, and brute force, so that reducing and eliminating NTLM authentication from the environment causes Windows to use more secure protocols such as Kerberos version 5 or other authentication mechanisms such as smart cards — with these attacks only being possible where servers or domain controllers process NTLM requests. ↩ ↩2 ↩3
-
Microsoft Learn, Deprecated features in the Windows client. On all versions of NTLM, including LANMAN, NTLMv1, and NTLMv2, being outside active feature development and deprecated (announced June 2024); on using NTLM continuing to work in the next release of Windows Server and the next annual release of Windows; on calls to NTLM needing to be replaced by calls to Negotiate, which attempts to authenticate with Kerberos and falls back to NTLM only when necessary; and on the November 2024 update stating that NTLMv1 has been removed from Windows 11 version 24H2 and Windows Server 2025. Also on the distinction between deprecated and removed — features on this list are not being actively developed and may be removed in a future update. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
Microsoft Learn, NTLM overview in Windows Server. On NTLM authentication being a family of authentication protocols contained in Msv1_0.dll, including LAN Manager versions 1 and 2 and NTLM versions 1 and 2; on it being a method of proving to a server or domain controller, via a challenge/response mechanism, that you know an account’s password; on a resource server needing, each time it requires a new access token, to query the authentication service on a domain controller in that account’s domain for a domain account, or to consult its local account database for a local account; on NTLM still being used and needing to be used for Windows authentication on systems configured as members of a workgroup and for local logon authentication on non-domain controllers; on Kerberos version 5 being the preferred authentication method in Active Directory environments, while Microsoft and non-Microsoft applications may still use NTLM; and on reducing NTLM usage requiring both an understanding of deployed applications’ requirements and configuration to use other protocols. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10
-
Microsoft Learn, Configuring Kerberos for IP Address. On being able, from Windows 10 version 1507 and Windows Server 2016 onwards, to make the Kerberos client support IPv4/IPv6 host names in SPNs; on Windows by default not attempting Kerberos authentication against a host whose host name is an IP address, falling back to another valid authentication protocol such as NTLM; on applications hard-coding IP addresses therefore falling back to NTLM and potentially causing compatibility problems in environments that are disabling NTLM; on the feature to use IP addresses as SPN host names having been introduced to reduce that impact, enabled by setting the client-side registry value
TryIPSPN(REG_DWORD, not present by default) underHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parametersto 1, with the setting required on each client that needs to access Kerberos-protected resources by IP address; on the SPN format beingservice/hostname[:port]; and on IP addresses being transient and liable to cause conflicts and authentication failures as leases expire and renew, so they should not normally be used in place of host names, with IP-address-based SPN registration being manual work to be used only when switching to a DNS-based host name is impossible, registered withSetspn -s <service>/<ip.address> <domain-user-account>— and since an SPN can only be registered on one account at a time in Active Directory, static reservation of the IP address is recommended when DHCP is in use. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 -
Microsoft Learn, Overview of Server Message Block signing in Windows. On SMB signing attaching to every SMB message a signature generated with the session key and AES, with the signature containing, in addition to a hash of the whole message, the identities of the original sender and the intended receiver; on any tampering in transit failing to match the signature, thereby protecting against relay and impersonation attacks; on the security of SMB 2/3 signing and encryption depending on the session key, and the signature confirming the identities of sender and receiver so as to prevent relay attacks; on the session key being derived from the password, so long, complex, non-dictionary passwords are preferable; on Kerberos being recommended over NTLMv2 so that the session key starts out strong; on avoiding connecting to shares by IP address or CNAME record, since that causes NTLM to be used instead of Kerberos; on domain controllers requiring SMB signing by default from clients connecting to SYSVOL and NETLOGON, with client-side UNC Hardening further requiring Kerberos for those two shares; on signing also being used as part of pre-authentication integrity to prevent downgrade attacks; on the policy locations and the registry value (
RequireSecuritySignature); and on the auditing available from Windows 11 version 24H2 onwards to detect peers that do not support signing or encryption (Set-SmbClientConfiguration -AuditServerDoesNotSupportSigningand similar, SMBClient/Audit 31998 and 31999, SMBServer/Audit 3021 and 3022). ↩ ↩2 ↩3 -
Microsoft Learn, Block NTLM connections on SMB in Windows Server 2025. On the SMB client being able to block NTLM authentication on outbound remote connections; on this preventing techniques that get NTLM requests sent to malicious servers and countering brute force, cracking, and Pass-the-Hash attacks; on Kerberos being more secure than NTLM because its ticket-based approach allows a server’s identity to be verified, and NTLM blocking being necessary for switching an organization’s authentication protocol to Kerberos, while it is also possible to enable just this layer of protection without disabling NTLM entirely; on the prerequisites being an SMB client on Windows Server 2025 or later or Windows 11 version 24H2 or later, and an SMB server that can use Kerberos; and on this being a feature of the SMB client. ↩ ↩2 ↩3
Related Articles
Recent articles sharing the same tags. Deepen your understanding with closely related topics.
SMB Signing and LDAP Channel Binding — Closing the "Other Half" of NTLM Defense in Practice
SMB signing and LDAP signing/channel binding limit relay damage while you retire NTLM. We cover OS defaults, audit events, enforcement, a...
Will NTLM Deprecation Stop Your Business Apps? — How to Collect Audit Logs, and the Order in Which to Kill Dependencies
This article covers how to find where Windows and business apps depend on NTLM: audit policies, NTLM/Operational events 8001-8004, causes...
A Practical Guide to Windows LAPS — Retiring the Shared Local Administrator Password Across All PCs
A shared local admin password lets one compromised PC spread to all via Pass-the-Hash. This guide covers Windows LAPS rotation, AD/Entra ...
Why a Windows File Share Works Sometimes and Fails at Other Times — Troubleshooting Kerberos, NTLM, and Credentials
Diagnose intermittent Windows file-share access using symptoms and logs. Check names versus IP addresses, app-only failures, blank passwo...
Choosing a Windows Service Account — LocalSystem, Virtual Accounts, and gMSA
Still running Windows services as LocalSystem? Compare LocalService, NetworkService, virtual accounts, domain users, and gMSA by privileg...
Related Topics
These topic pages place the article in a broader service and decision context.
Windows Technical Topics
Topic hub for KomuraSoft LLC's Windows development, investigation, and legacy-asset articles.
Where This Topic Connects
This article connects naturally to the following service pages.
Windows App Development
We support Windows desktop applications that involve resident processing, device integration, operational logging, and maintainable structure.
Frequently Asked Questions
Common questions about the topic of this article.
- What's the actual difference between NTLM and Kerberos?
- The biggest difference is whether you can verify who you're talking to. Microsoft states explicitly that with NTLM a client cannot verify a server's identity, nor can one server verify another server's identity. NTLM was designed for environments where servers can be assumed genuine; Kerberos makes no such assumption. The second difference is whether the server has to query a domain controller. With NTLM, when authenticating a domain account, the application server connects to a domain controller every time it authenticates a client (for an account local to the server, the server consults its own account database and decides for itself, and no domain controller appears at all). With Kerberos, renewable session tickets replace this pass-through authentication, so the server does not go to a domain controller except when PAC validation is required. The third is that Kerberos supports delegation by services — a mechanism for connecting to another service on the client's behalf.
- Why do we end up on NTLM when the application supposedly supports Kerberos?
- Kerberos issues tickets keyed on "the name of the destination", so it cannot work if the name cannot be resolved. The client presents the destination's SPN (service principal name) to the KDC to request a service ticket, but by default Windows does not attempt Kerberos authentication when the host name is an IP address, and if no SPN is registered on the service account the KDC cannot issue a ticket. Microsoft's audit guidance likewise says that Kerberos is not used if the "Target Server" in event 8001 is in neither NetBIOS nor FQDN form. (For IP addresses, you can make Kerberos work as an exception by setting TryIPSPN on the client and manually registering an SPN for the IP address, but this is described as a last resort for cases where a DNS name is impossible.) Other conditions under which Kerberos cannot work are authentication on workgroup machines or with local accounts (outside Active Directory altogether), sites that cannot reach a domain controller, and authentication to a peer with no trust relationship. Negotiate chooses NTLM when Kerberos is unavailable, which is what "falling back" means in these cases.
- What is an NTLM relay attack, and why does it work?
- The attacker lures a victim to a server of their own and relays the NTLM authentication exchange that arrives there straight through to the real server, impersonating the victim. It works because NTLM's challenge/response has no mechanism binding "who you are authenticating to". The client simply computes a response from the challenge the server issued and returns it, with no way to check whether that response is destined for the real server or is being relayed by an attacker. Microsoft itself states in its policy setting documentation that NTLM and NTLMv2 authentication is vulnerable to a variety of malicious attacks, including SMB relay, man-in-the-middle attacks, and brute force attacks. That said, relaying does not get through to just anyone. If the destination requires SMB signing, the signature confirms the identity of the sender and receiver, so the relay fails; the same is true of services that enforce Extended Protection for Authentication (channel binding). Conversely, the targets are peers that accept NTLM with neither signing nor channel binding in place. With Kerberos, a service ticket is encrypted with that service's long-term key, so a ticket destined for one service cannot be decrypted by another.
- Does Pass-the-Hash mean you can impersonate someone without cracking their password?
- Exactly. NTLM credentials consist of a one-way hash of the domain name, user name, and password. In NTLMv2, which is what today's Windows uses, the response key is derived as an HMAC keyed on the MD4 hash of the password (the NT hash), and that key is then used to compute an HMAC over a bundle of the server challenge, a timestamp, a client-side challenge, and target information. It is not simply encrypting the challenge, but the starting point is still the password hash. In other words, what authentication needs is the hash, not the plaintext password. So an attacker who can extract the hash from, say, a machine's memory can authenticate as that user without cracking the password. Making passwords longer and more complex does not close this route. One of Microsoft's stated reasons for providing NTLM blocking on the SMB client is countering Pass-the-Hash attacks.
- If we're using NTLMv2, aren't we safe for the time being?
- NTLMv2 is stronger than NTLMv1, but it is not excluded from deprecation. Microsoft's list of deprecated features says that all versions of NTLM, including LANMAN, NTLMv1, and NTLMv2, are outside active feature development and deprecated. The restriction policies behave the same way: the audit and block policies are described as having the same effect on both versions. NTLMv1 is treated differently, however: it has moved past deprecation into removal, and has been removed from Windows 11 version 24H2 and Windows Server 2025. So the framing is not "we're on NTLMv2, so we can leave it" but "NTLMv1 is a deadline right now; NTLMv2 needs an inventory in preparation for being disabled by default".