Series · 5 partsTesting the Ransomware PlaybookPart 1 · You are here
  1. 1They Do Not Break In. They Log In.You are here
  2. 2Enumeration Cannot Be Prevented. Ask Whether It Was Seen.
  3. 3Affiliates Do Not Find Novel Paths. They Find Yours.
  4. 4The Blast Radius Is One Number. Almost Nobody Has Measured It.
  5. 5The Last Two Steps Are Not in Scope. What Makes Them Survivable Is.

Initial access in 60 seconds

Most writing about ransomware is written from one of two seats: the incident responder’s, after it happened, or the threat intelligence analyst’s, from public reporting. This series is written from the third seat — the one where you get to look at the same infrastructure first, with permission, and write down what you find.

Because the uncomfortable thing about the ransomware playbook is how little of it is exotic. Up to the moment of encryption, an affiliate is doing the work of an internal assessment. Badly, loudly, and with worse tooling — but the same work.

This part covers how they get in. The next four cover what they do once they are.

The premise nobody wants in a report

Affiliates do not, in the main, exploit their way in. They authenticate. Somebody’s credential is valid, some endpoint accepts it, and no second factor stands in the way.

Which means the finding that would have prevented the whole event usually already exists. It was written up as “multi-factor authentication is not enforced on the remote access portal”, categorised as medium because no exploitation was demonstrated, and scheduled behind the things that had CVEs attached.

That is the gap this part is about. Not finding the door — the door is rarely hidden. Making the finding survive triage.

MFA is an endpoint fact, not an organisation fact

“MFA is enforced” is almost always true and almost never complete. It is enforced on the thing that was in scope when MFA was rolled out. The estate then keeps growing.

ONE DIRECTORY CREDENTIAL valid before the engagement started VPN portal MFA ENFORCED BLOCKED Webmail MFA ENFORCED BLOCKED VDI gateway MFA ENFORCED BLOCKED Legacy API NO 2ND FACTOR SESSION GRANTED COVERAGE three enforced endpoints do not average out one that is not — the credential only has to work once
MFA coverage is not a percentage. An affiliate does not need the endpoint you protected; they need the one you did not, and enumerating which is which is a testable question with a definite answer.

The endpoints that turn up uncovered are consistently the ones that were never thought of as remote access: an API that authenticates against the same directory, a legacy protocol left enabled for one integration, a management interface that predates the identity project, a service account exempted “temporarily” because it could not do interactive auth.

None of these look like a front door. All of them accept the same credential.

Testing it properly

The productive external test is not a password spray. It is an inventory of which authentication surfaces exist and what each one enforces — and the second half is the part that gets skipped.

# 1. Enumerate the authentication surface, not just the web surface.
#    Every host that accepts a directory credential is in scope for this question.

# 2. For each endpoint, establish what a failed and a successful auth look like,
#    and whether a second factor is actually demanded after a correct password.
#    A 200 with an MFA prompt and a 200 with a session cookie are different findings.

# 3. Only then, and only within the lockout policy, test credential validity.
$ kerbrute passwordspray -d lab.local --dc dc01.lab.local users.txt 'Season2026!' \
    --safe --delay 3000

The --safe behaviour matters more than the spray does: stop on the first lockout rather than working through the list. A test that locks accounts converts a technical finding into an operational incident, and the report afterwards is about you rather than about the door.

The lockout policy is readable before you start, and there is no reason to guess at it:

Get-ADDefaultDomainPasswordPolicy |
  Select-Object LockoutThreshold, LockoutObservationWindow, LockoutDuration

Threshold minus one, spread across the observation window, is the whole calculation. Everything else is impatience.

The finding that survives triage

Three elements, and the third is the one usually missing:

The specific endpoint. Not “MFA is not enforced” but “this host, this path, this protocol, accepts a directory credential and completes authentication without a second factor.”

Proof it authenticates. A session, a token, a directory read — something that demonstrates the credential was accepted, not merely that a prompt appeared.

What it reaches. This is the multiplier. An uncovered endpoint that lands you on an isolated segment is a real finding. One that lands you somewhere you can enumerate the directory is the first move of every subsequent part in this series, and the report should say so explicitly.

Without the third element the finding gets read as a configuration gap. With it, it gets read as the entry point it actually is.

Evidence matrix

SignalWhat it provesNegative controlDefender verification
One externally reachable endpoint accepts the approved test credential without MFAMFA coverage has a route-specific gapUse the same identity on a protected endpoint and require the second factorMaintain an endpoint-by-endpoint authentication inventory, including legacy and vendor portals
Successful login lands on an internal or directory-aware segmentThe gap is an initial-access path, not an isolated login defectRepeat with an account scoped to a true isolated zone and compare reachabilityValidate post-authentication routing, DNS, directory, and management-plane access
Disabled or policy-blocked test identity is rejected everywhereRevocation and conditional access reach every front doorDisable the canary identity and probe all endpoints within the approved windowCorrelate identity-provider, VPN, appliance, and application-native authentication logs
The endpoint records enough context to identify the loginDetection can distinguish the event and support responseTest an expected failure and confirm both result and source context are loggedVerify alert routing for successful password-only access from a new source

The pattern I keep seeing

Identity projects are scoped to the things that look like remote access. The exceptions granted during rollout — for the integration that could not do modern auth, for the service account, for the interface nobody could migrate in time — are recorded as temporary, and the temporary ones outlive the project. Nobody revisits them because they are not broken; they work exactly as intended, for the one thing they were exempted for, and for anything else that finds them.

So the honest version of the finding is rarely “MFA is missing”. It is “MFA is enforced, and here is the list of places it is not, and here is which of them a valid credential reaches.”

What to hand the defenders

The inventory, not the incident. Every endpoint that accepts a directory credential, and what each enforces. That list is the deliverable; the one you got in through is an example from it.

Push the exceptions to expiry. Exemptions that cannot be removed today should carry a date and an owner. Most of the ones that turn up in testing have neither, which is why they are still there.

Then the reachability question. For each uncovered endpoint, what can the resulting session touch? That is what decides whether it is a finding to fix this quarter or this week — and it is the question that connects this part to the next one.


Next in this series: what an affiliate enumerates in the first hour, and why it is the same collection you already run.

Sources & freshness

How current is this note?

Sources checkedNovember 7, 2025

The latest source-review, content-update, or publication date is shown.

ReviewAuthor review complete

The author completed a technical review. This does not, by itself, claim lab reproduction.