How Verosint Detects Account Takeover Without Adding Friction for Real Users

Published on
5 mins read
Written by

The first two posts in this series covered why account takeover is hard to catch and the specific attack patterns it covers. This one is about the part I spent most of my time on as the technical point of contact for customers integrating Verosint: how the platform actually detects these patterns without turning every login into a CAPTCHA.

Getting the data in without months of setup

Detection is only as good as the data behind it, and identity signal is usually scattered across half a dozen systems that don't talk to each other: the identity provider, the application's own event logs, an MFA service, sometimes a SIEM already collecting some of this separately. Verosint's integration model connects to those existing systems and event logs through secure APIs, with out-of-the-box support for Auth0, Okta, ForgeRock, PingIdentity, Microsoft Entra ID, AWS Cognito, Stytch, Firebase, and a few others, plus log platforms like Splunk and Datadog for teams that already centralize events there.

The part customers cared about most during onboarding wasn't the integration list, it was how long the setup took to actually produce useful output. Verosint imports historical data on connection rather than starting from a blank slate and waiting for a model to learn what normal looks like over the following weeks. That's the basis for what the product calls Day 1 Value: connect the APIs, and the platform has enough history to start scoring risk immediately instead of needing a training period before it's useful.

Turning scattered events into one risk picture

Once the data is connected, the observability layer consolidates it into a single view of a given user's account activity instead of leaving an investigator to pull logs from five different consoles and correlate timestamps by hand. That consolidation step sounds unglamorous, but it's the difference between an investigation that takes minutes and one that takes days, and it's usually the first thing that visibly changes for a team once they're live.

On top of that unified view, the AI-driven risk layer runs behavioral analytics against real-time event streams, looking for the kind of anomalies described in the last post: impossible travel, session anomalies, credential stuffing patterns, unusual device fingerprints, and more, at a scale no analyst could realistically track by hand across millions of events. That detection runs on a mix of prebuilt security rules covering known attack patterns and custom rules teams can configure for their own risk tolerance and user base, since what counts as anomalous for a consumer app with millions of casual logins looks nothing like what counts as anomalous for an internal tool with forty known employees.

Verosint also layers in identity intelligence pulled from open-source threat data, checking whether the credentials, IPs, or infrastructure involved in a given login show up in known compromise or fraud databases. A login that's geographically plausible and device-consistent still gets flagged if the password being used shows up in a breach dump from six months ago.

Why the goal isn't to challenge every risky-looking login

None of this is meant to slow down the overwhelming majority of logins that are exactly what they look like. The stated design goal, and the one I spent a lot of onboarding calls explaining to customers nervous about false positives, is recognizing legitimate users and only introducing friction for behavior that's actually risky. A login from a known device, in a normal location, at a normal hour, doesn't need a second look. A login that breaks two or three of those patterns at once does. The platform requires no code installed on the application, website, or end-user device to do any of this. It works entirely from the identity signal already flowing through the systems a team has connected, which is also why integration time measures in minutes rather than a sprint of frontend work.

What onboarding actually looked like from the technical side

The docs I spent most of my time on were the OpenAPI reference and the integration guides that walked a customer's engineering team through connecting their first identity provider. Most of that work was less about explaining the AI detection model, which customers were usually happy to trust once they saw it working, and more about the mechanics of authentication and scoping: how to generate an API credential with read-only access to the right event streams, how to test the connection against a staging environment before touching production identity data, and how to interpret the first batch of risk scores that came back once historical data finished importing.

The recurring onboarding workshops existed because that gap between "the API is connected" and "the security team trusts what it's telling them" was almost always the longest part of getting a customer to full production adoption. A risk score with no context reads like a black box, so a good chunk of workshop time went into walking through real flagged events from that customer's own data: here's the login, here's every signal that contributed to its score, here's why a nearly identical login from last week scored low. Once teams could trace a score back to its inputs, the model stopped being something they had to take on faith.

The result of all that detection work

The result is a risk score and a set of flagged events, not yet an action. What happens after something gets flagged, the actual blocking, MFA enforcement, and automated response, including a fairly interesting agentic AI layer, is its own piece worth covering separately.