NTLM-Analyzer
— days until Windows blocks NTLMv1 SSO by itself

Your domain logs every NTLM logon. None of them say who.

NTLM-Analyzer reads those events on every machine and turns them into something you can act on: the program, the account, the target, the reason Kerberos was not used — and what to change so that it is.

Event 4624· Security log · WS-14 · Sunday 05:03:11
An account was successfully logged on.

  Logon Type:               3
  Account Name:             SVC_BACKUP
  Workstation Name:         WS-14
  Authentication Package:   NTLM
  Package Name (NTLM only): NTLM V1
  Key Length:               0
What ran veeam.exe on WS-14, 05:03 every Sunday
Reached for the file share fs01, as a service account
Why not Kerberos no SPN registered for that host, so the client fell back
Fix setspn -S cifs/fs01.corp.local FS01$
NTLMv1 · breaks in October NTLMv2 · your actual work list Kerberos · already fine
The questions you cannot answer today

Three answers, and none of them are in Event Viewer.

Windows records that NTLM happened. It does not record what you actually need to know, and it scatters the pieces across every machine in the domain.

"Which program is doing this?"

A process name, not a logon type

Every process still authenticating over NTLM, with a sparkline per row so you can see whether your fix worked — and mark it done when it did.

"Why didn't it use Kerberos?"

A cause, with the command that removes it

A missing SPN, a duplicate SPN, an IP address instead of a hostname, a cross-forest hop. Each cause names the specific change to make.

"Is it safe to switch off yet?"

A trend, and a list of what is left

The share over time, down to the hour. You switch NTLM off when the remainder is small and known — not when the calendar says so.

Eleven panels · one page · no external requests

What the dashboard shows you

These are screenshots of the real thing. The same build runs in the live demo on synthetic data from a lab domain — clickable, not a video.

Event 4624 · every machine

One number, and whether it is falling

The share of logons still using NTLM, split across the three protocols, with a countdown to the October deadline. Everything here is clickable down to the individual logon.

24 h to 30 days · click any bar to filter everything below
Overview panel: headline share, three-colour handover bar, deadline countdown and 30-day trend
Event 40xx · Windows 11 24H2 and Server 2025

The work list, in the order you will fix it

Process-level events name the program itself. Where the OS is older the panel says so, rather than showing an empty table while the rest of the dashboard keeps working.

Status per row · open, in progress, done
Program list with per-row sparklines, target servers, user chips and a status dropdown
Event 4769 · Kerberos ticket failures

The cause sits next to the remedy

Kerberos failures are matched against the NTLM fallback that followed them — which is how a cause can be named at all. Each row says what to change, not just what happened.

Every row filters the event list · no guessing
Cause analysis panel listing each reason for NTLM fallback with a concrete remedy
Read-only lookup · no extra rights

The missing SPN, found in AD

Most Kerberos fallbacks come down to a service name that is not registered, registered twice, or registered for the real server while clients use an alias. A domain controller agent looks each name up — the dashboard names the problem and the setspn command. It never changes anything itself.

Copy the fix · check again after it
SPN panel listing a missing SPN, two aliases and a duplicate, each with its setspn command
168 cells · one week by hour

The bright cell nobody can explain

A scheduled job at 05:00 on a Sunday, on a server whose owner left two years ago. This is the fastest way to find the things no inventory knows about.

Click a cell · see only those events
Week-by-hour heatmap of NTLM usage with one bright cell on Sunday at 05:00
Event 8004 · domain controller only

The machines that never got an agent

Read straight from the DC's own audit log: appliances, Linux hosts, the scanner in the print room. If it authenticates against your domain, it shows up here.

No agent required · domain-wide by definition
Domain-wide table of accounts, source machines and target servers from the DC audit log
Audit configuration · per machine

Whether you are measuring what you think

OS build, each audit setting, and October 2026 readiness per machine. A red badge here means a gap in your data — which matters more than any number on the other panels.

Badges turn green once the policy has landed
Machine list showing OS build, audit status badges and October 2026 readiness
Events 4624 · 4625 · 4776

Every account, every failed attempt

One row per account: how often it uses NTLM, which version, from how many machines to how many servers. Failed logons sit next to it with the reason in plain words, and one machine trying many accounts is flagged as possible password spraying.

Click an account · its machines, servers and programs
Accounts using NTLM with logons, NTLM version, machines, targets, failed attempts and Kerberos use
30 days quiet · auditing on

Where you can switch it off today

Per machine and direction: watched long enough, auditing on, no NTLM in thirty days. Those are ready for "Restrict NTLM: Deny". The others name what would break.

Outgoing and incoming · checked separately
Ready-to-switch-off panel listing machines with their outgoing and incoming NTLM verdicts
Print or PDF · German or English

A report for everyone else

For the people who will never open a dashboard: the share and its trend, what has been done, the risks rated act / watch / fine, and the next steps with names. One button, three pages.

7, 30 or 90 days · prints on white · open the sample report
The NTLM status report on screen: key figures, weekly trend and progress
Raw record · every field

Down to the single logon

Open any event and every raw field is there, with an explanation of what that event ID means. Filter state lives in the URL, so the exact view you are looking at is a link you can send.

CSV export · English and German
Event detail drawer showing all raw fields of a single logon with explanations
Three steps · in this order

Auditing first. Everything else follows.

The collector is one Python file with no dependencies. The agent is one EXE that installs itself as a service — or an MSI, if you roll out by policy.

Turn on auditing by GPO

Five settings under Security Options and Advanced Audit Policy. The README lists each one with its exact value.

Events are written from the moment auditing is on, never retroactively. Do this first, or you will measure an empty domain.

Install the collector on any Linux host

Creates a hardened systemd service, keeps secrets off the command line, and prints the finished agent command when it is done.

$ git clone https://github.com/Nobrac/NTLM-Analyzer.git
$ cd NTLM-Analyzer && sudo ./install.sh

Roll out the agent, then open the dashboard

Elevated, once per machine. The Machines panel shows each agent with a heartbeat as it arrives.

:: unattended, by policy
> msiexec /i ntlm-agent.msi /qn COLLECTORURL=https://collector:8443
Why it is built this way

A migration tool you can argue with

The useful part is not a confident number. It is knowing which events produced it — and where the data stops.

Nothing is estimated

Every figure traces back to an event that was actually logged. Where data is missing, the panel names the setting that is off, and on which machine.

Nothing leaves the network

The dashboard makes no external requests — no fonts, no CDN, no telemetry. Content-Security-Policy is default-src 'none'.

Nothing is changed

The tool reads the event log and nothing else. It never touches an authentication setting. It measures; you decide when to switch.

NTLM-Analyzer

See the whole NTLM picture in your own Active Directory before you switch it off. Self-hosted, no telemetry, GPL-3.0.

Screenshots and demo use synthetic data from a lab domain · Built with AI assistance, reviewed and tested against a real Active Directory · GPL-3.0