Suspicious MFA Enrollment Triage logo

Suspicious MFA Enrollment Triage

Organization
CDESpace
Suspicious MFA Enrollment Triage

Triage an alert where a new MFA method was registered on an account — an authenticator app, phone, or security key added or changed. Reads the audit trail and the session that registered it to tell a user setting up a new phone or completing onboarding apart from an attacker planting their own factor to hold an account after a takeover, and decides escalate or dismiss.

Overview

PublisherCDESpace
RepositoryDetection-Skills
Skill nameSuspicious MFA Enrollment Triage
Stars
57
Forks
5
Bundled files
Instructions only
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by CDESpace on GitHub. Read the source before you install it.

Installation

Install the Suspicious MFA Enrollment Triage AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/CDESpace/Detection-Skills/tree/main/skills/triage/Suspicious%20MFA%20Enrollment%20Triage
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.

Use it in TypingMind

Enable Suspicious MFA Enrollment Triage in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Suspicious MFA Enrollment Triage on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Suspicious MFA Enrollment Triage is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Triage Steps

This class fires when an authentication method is registered or changed on an account — a new Authenticator app, a new phone number, an added FIDO key, in Entra ID, Okta, or another identity provider. Enrolling a factor is a routine thing: people get new phones, complete onboarding, add a backup key, re-enroll after a lockout. It is also the single cleanest way an attacker keeps an account after stealing it — register their own factor, and they satisfy MFA from then on even after the user resets the password. The signal is not that a method was added — it is who added it, from where, and what state the account was in when they did.

Begin with the account's recent history: a method registered in the same window as a sign-in triage already flagged, or right after a password reset from an unfamiliar source, starts the call near escalate. A registration during a documented onboarding, or from the user's own known device, starts near dismiss. Then read the audit event and the registering session for the leads below. They stack; a single strong one — a factor added from a new country right after a suspicious login — can carry the call.

Leads that point to a real threat — what to look for in the data:

  • Registered in a takeover window. The method was added in the same session or hour as a sign-in from a new device/ASN, an MFA-fatigue success, or a token replay — the enroll-my-own-factor persistence step immediately after access. The registration and the suspicious sign-in sharing a source IP or client is the strong version.
  • From a place and device the user doesn't use. The registration event's source IP, country, ASN, or client is one the account has no history with — the real user almost always enrolls from a device and network they already sign in from.
  • Right after a reset from an unfamiliar source. A password reset or SSPR followed immediately by a new method, where the reset itself came from a source that doesn't match the user — the full account-recovery-hijack shape.
  • Replacing, not adding. An existing trusted method removed and a new one added in the same window, or a new method made primary and the user's own demoted — an attacker locking the real user out, not a user adding a backup.

Leads that rule it out — benign context you can actually see in the data; if the data doesn't show it, you don't have it:

  • Onboarding or a known refresh. The registration falls in the user's first-week onboarding, or matches a documented device refresh or a helpdesk-assisted re-enroll on record for this person.
  • From the user's own session. The method was added from a device, network, and session that positively match the account's baseline, with no takeover signal near it — a second factor added from the same laptop they always use.
  • Additive and expected. A new backup key or app added alongside the existing methods, none removed, on an account with no suspicious sign-in anywhere near the event.
  • A user-confirmed change. The person confirms they enrolled the new factor, or a scheduled bulk enrollment the org ran is on record.

To confirm a lead instead of guessing, pull the thread: after the enrollment, was the new factor immediately used to satisfy MFA on a fresh sign-in from the same suspicious source, and did the account's own methods get removed? A new factor plus its immediate use from attacker infrastructure is a confirmed persistence step, not a suspicion.

Output

Decision

  • escalate: a method registered in the same window as a flagged sign-in, from a source or device the account never uses, right after a reset from an unfamiliar source, or one that replaces the user's own factors. Any enrollment paired with a takeover signal on the same account escalates on its own.
  • dismiss: a registration during documented onboarding or a known device refresh, from a session that matches the account's baseline with no takeover signal near it, or an additive method with the user's own factors left intact and no suspicious activity around it. A dismiss is a positive call made with the registering session and the account's context in hand — not the mere fact that enrollments are common. When the source, the device, or the account's state can't be placed against baseline, escalate.

Evidence

The registration event (method type, action, source IP, country, ASN, client, timing), the account's sign-in baseline and takeover status around the change, whether a reset preceded it, whether existing methods were removed or demoted, and any sign-in that immediately used the new factor.

Reasoning

Name the leads that decided it and how they stacked — a new Authenticator added from a hosting-provider IP minutes after an MFA-fatigue success, with the user's own method removed, is escalate on its own; a backup key added from the user's usual laptop during their onboarding week is dismiss.

Frequently asked questions

What does the Suspicious MFA Enrollment Triage AI skill do?

Triage an alert where a new MFA method was registered on an account — an authenticator app, phone, or security key added or changed. Reads the audit trail and the session that registered it to tell a user setting up a new phone or completing onboarding apart from an attacker planting their own factor to hold an account after a takeover, and decides escalate or dismiss.

Why use Suspicious MFA Enrollment Triage on TypingMind?

Because you install it once and use it with any model. Suspicious MFA Enrollment Triage is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Suspicious MFA Enrollment Triage in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/CDESpace/Detection-Skills/tree/main/skills/triage/Suspicious%20MFA%20Enrollment%20Triage. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Suspicious MFA Enrollment Triage?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Suspicious MFA Enrollment Triage?

As many as you like. As long as a model supports skills, you can use Suspicious MFA Enrollment Triage with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Suspicious MFA Enrollment Triage AI skill free?

Yes. It is published on GitHub by CDESpace under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇