Attack Path Analysis
Attack path analysis answers a question that no other feature in ThreatWeaver answers: given your current identity configuration, what is the shortest route an adversary could take from compromising a standard user account to owning your most critical systems?
This page covers how ThreatWeaver builds attack graphs from identity data, how to read and investigate attack paths in the UI, how to prioritize remediation across multiple paths, and how identity attack paths intersect with AppSec findings.
What Attack Paths Are and Why They Matterβ
An attack path is a chain of accounts, permissions, and trust relationships that an adversary can traverse sequentially to escalate privileges. No single step in the chain needs to be a critical vulnerability β the path becomes dangerous because each step is achievable given the previous one.
A Concrete Exampleβ
Consider this scenario:
- An attacker phishes
intern@company.comβ a low-privilege user with no special rights - That account is a member of the
HelpDesk-Tier1group HelpDesk-Tier1is nested insideHelpDesk-AllHelpDesk-AllhasGenericWritepermissions on a service account calledsvc-backupsvc-backuphas a Service Principal Name (SPN) registered- Any domain user can request a Kerberos service ticket for an account with an SPN
- The ticket is encrypted with
svc-backup's password hash and can be cracked offline (Kerberoasting) svc-backuphas membership inDomain Adminsfor legacy reasons
No single step here is a critical misconfiguration in isolation. The danger comes from the chain. Conventional vulnerability scanners would not catch this at all β there is no CVE involved. An identity tool that only looks at individual account attributes would flag svc-backup as a high-risk service account but would not show the full path from intern@company.com to Domain Admin.
ThreatWeaver's attack path engine traverses the full graph of identity relationships to find these chains.
How ThreatWeaver Constructs Attack Graphsβ
The attack graph construction runs as part of the identity sync process. After syncing all identities, groups, permissions, and relationships from the connected provider(s), ThreatWeaver runs the attack graph analysis against the data.
Graph Construction Processβ
Step 1: Node Population
Every identity, group, role, and resource in the synced data becomes a node in the graph:
- User accounts (both active and disabled β disabled accounts may have dormant permissions)
- Service accounts and managed identities
- Security groups and distribution groups
- Active Directory OUs and GPO objects
- Azure roles and role assignments
- Privileged identity management (PIM) eligible roles
- High-value target nodes: Domain Controllers, Domain Admin groups, Global Admin roles, Crown Jewel assets (when linked from exposure management)
Step 2: Edge Assignment
Every permission, membership, and trust relationship becomes a directed edge in the graph:
| Edge Type | What It Represents | Provider |
|---|---|---|
MemberOf | Account is a member of a group | AD, Azure AD, Okta, Google |
HasRole | Account has a direct role assignment | Azure AD, GCP, AWS |
GenericWrite | Account can modify target object's attributes | AD |
WriteDACL | Account can modify target object's permissions | AD |
WriteOwner | Account can take ownership of target object | AD |
AllExtendedRights | Account has all extended rights including replication | AD |
HasSPN | Account has an SPN registered (Kerberoasting target) | AD |
DONT_REQUIRE_PREAUTH | Account can be AS-REP roasted | AD |
AdminTo | Account has local admin rights on a computer | AD (via GPO or direct assignment) |
CanRDP | Account can initiate Remote Desktop to a computer | AD (via group membership) |
TrustedBy | Domain A trusts Domain B (for cross-domain traversal) | AD |
CanPSRemote | Account can initiate PowerShell remoting | AD |
Step 3: Path Enumeration
With the graph constructed, ThreatWeaver runs a modified Dijkstra-style shortest path algorithm from each low-privilege starting node toward high-value target nodes. "High-value targets" are defined as:
- Nodes that are Domain Admin, Enterprise Admin, or Schema Admin
- Azure Global Admin or Privileged Role Admin roles
- Crown Jewel assets linked from the exposure management module
- Any node explicitly marked as a high-value target in connector configuration
Paths longer than 8 steps are truncated β paths with more than 8 steps are theoretically possible but rarely practical for real attacks and generate excessive noise.
Step 4: Path Classification
Each path found is classified into one of the supported attack path types based on the edge types traversed:
- If the path traverses a
HasSPNedge and includes cracking β Kerberoasting - If the path reaches
AllExtendedRightsor replication permissions on a DC β DCSync - If the path reaches write access to the KRBTGT account β Golden Ticket
- If the path uses
AdminToedges to traverse machines β Pass-the-Hash - If the path traverses
DONT_REQUIRE_PREAUTHβ AS-REP Roasting - If the path includes shared credentials across multiple services β Shared Credentials Lateral Movement
- If the path reaches Domain Admin through nested group traversal β Nested Group Escalation
Step 5: Severity Rating
Each detected path receives a risk rating:
| Factor | Contribution to Rating |
|---|---|
| Target node is Domain Admin / Global Admin | Critical severity base |
| Target node is a Crown Jewel asset | Critical severity base |
| Number of steps to reach target (shorter = worse) | 1-2 steps β Critical, 3-4 β High, 5+ β Medium |
| Number of entry points (accounts that start this path) | More entry points = higher severity |
| Entry point account type (standard user, guest, external) | Standard user = worse than service account |
| Whether entry point accounts have MFA | No MFA = higher severity |
Reading an Attack Path in the UIβ
Navigate to Identity Security β Attack Paths (/identity/attack-paths) to see the full list of detected attack paths.
Attack Path List Viewβ
The list shows each detected path with:
- Path Name β A descriptive name generated from the path type and the accounts/groups involved
- Type β The attack category (Kerberoasting, DCSync, etc.)
- Risk Rating β Critical / High / Medium
- Affected Count β How many accounts can serve as entry points for this path
- Target β What the path leads to (e.g., "Domain Admin", "Crown Jewel: payments-db")
- Steps β Minimum number of steps from entry to target
Sort by Risk Rating (descending) to see the most dangerous paths first.
Path Detail Viewβ
Clicking any attack path opens the detail view with three panels:
Panel 1: Path Diagram
A step-by-step visual of the attack chain. Each node is color-coded:
- Blue β User account (entry point)
- Orange β Group or role (intermediate step)
- Yellow β Service account (credential extraction target)
- Red β High-value target (final destination)
Edges between nodes show the permission or relationship being exploited at that step (e.g., MemberOf HelpDesk-Tier1, GenericWrite on svc-backup, HasSPN β Kerberoast).
Panel 2: Step-by-Step Explanation
Below the diagram, each step is explained in plain English:
Step 1: Attacker compromises a user in the "Intern Accounts" OU
β 47 accounts are entry points for this path
Step 2: Intern accounts are members of HelpDesk-Tier1
β This group membership is automatic via OU policy
Step 3: HelpDesk-Tier1 is nested inside HelpDesk-All
β Nested membership grants all of HelpDesk-Tier1's rights
Step 4: HelpDesk-All has GenericWrite on svc-backup service account
β This was granted to allow helpdesk to reset the service account password
Step 5: svc-backup has an SPN registered (MSSQLSvc/db01.company.com:1433)
β Any domain user can request a Kerberos service ticket for this SPN
Step 6: Kerberoast β Request ticket, crack offline
β svc-backup's password is only 12 characters: 'Summer2023!1'
(detected via password policy age: last changed 2+ years ago)
Step 7: svc-backup is a member of Domain Admins
β Full domain compromise
Panel 3: Affected Identities
A table of all accounts that serve as valid entry points for this path. Each account shows its email, last login, MFA status, and risk score. Sort by MFA Status = Not Enrolled to find the easiest entry points first.
Prioritizing Remediationβ
With multiple attack paths detected, the most common analyst question is: "Where do I start?"
Triage Frameworkβ
Apply these four criteria in order to determine which paths to address first:
1. Target Criticality
Paths leading to Domain Admin, Global Admin, or Crown Jewel assets are always highest priority, regardless of path length. A 5-step path to Domain Admin is more important than a 2-step path to a Medium-criticality asset.
2. Entry Point Count
A path with 200 possible entry point accounts is more dangerous than an identical path with 2 entry points. An attacker has a much higher probability of finding a compromised or phishable account among 200 options.
3. Entry Point MFA Coverage
If all entry point accounts have MFA enrolled and Conditional Access enforces it, the path is significantly harder to exploit (credential theft alone is not enough β the attacker also needs to bypass MFA). Prioritize paths where entry point accounts have no MFA.
4. Path Length
Shorter paths require less attacker skill and less dwell time. A 2-step path (compromised account β direct Domain Admin membership) requires immediate action. A 6-step path through multiple intermediate groups is still serious but allows slightly more time to remediate.
Remediation Strategies by Path Typeβ
Kerberoasting paths
The root cause is a service account with an SPN that is both weak (crackable password) and over-privileged (has admin rights once cracked).
Fix options (in order of preference):
- Remove the service account from Domain Admins entirely. Add it to only the groups it genuinely requires.
- If the account must have elevated privileges, set a very long, random password (30+ characters) that makes offline cracking infeasible.
- Convert the service account to a Group Managed Service Account (gMSA) β Windows automatically rotates the password every 30 days with a 240-character random value.
- If the SPN is not needed, remove it.
DCSync paths
The root cause is an account with replication rights on the domain β rights that no user account should have.
Fix:
- Use
Get-ObjectAclin PowerShell withdsaclsto identify which accounts haveDS-Replication-Get-ChangesandDS-Replication-Get-Changes-Allon the domain object - Remove these ACEs from any non-DC accounts
- Only domain controllers and, in some environments, dedicated ADFS service accounts need these rights
Pass-the-Hash paths
The root cause is admin account credential reuse across multiple machines β the same admin account is a local administrator on many servers.
Fix:
- Implement Local Administrator Password Solution (LAPS) β unique random local admin passwords per machine
- Disable NTLM authentication in favor of Kerberos where possible (via GPO)
- Restrict which admin accounts are members of local Administrators groups via tiered administration (Tier 0/1/2 model)
- Enable Credential Guard on Windows 10/11 and Windows Server 2016+ to prevent pass-the-hash
Nested Group Escalation paths
The root cause is accumulated, unreviewed group memberships that create unintended privilege chains.
Fix:
- Conduct a group membership audit β use the path diagram to identify the specific nesting chain
- Remove unnecessary nested group memberships (in the example above: remove HelpDesk-Tier1 from HelpDesk-All, or remove HelpDesk-All's GenericWrite on the service account)
- Implement a quarterly access review process for high-privilege groups
- Use Azure AD Privileged Identity Management (PIM) for time-limited, just-in-time admin access instead of permanent group memberships
AS-REP Roasting paths
The root cause is accounts with the DONT_REQUIRE_PREAUTH flag set β often a legacy configuration from old Kerberos clients.
Fix:
- Identify all accounts with this flag:
Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} -Properties DoesNotRequirePreAuth - Remove the flag from all accounts that do not specifically require it
- Ensure flagged accounts (if any must keep the flag) have long, random passwords
Common Attack Patterns in Enterprise Environmentsβ
The following patterns appear repeatedly in real enterprise environments. They represent accumulated technical debt and configuration drift rather than active attacks β but they are the building blocks of most AD compromises.
"The Helpdesk Escalation Chain"β
Pattern: Helpdesk/support teams are granted write or reset permissions on service accounts so they can unlock accounts and reset passwords. Over time, those service accounts accumulate group memberships in IT admin groups. The helpdesk team (which has many members, high turnover, and often weaker credentials) becomes an inadvertent path to admin.
Indicators in ThreatWeaver: Attack paths where GenericWrite, ForceChangePassword, or ResetPassword edges connect large groups (20+ members) to privileged service accounts.
Fix: Apply the principle of least privilege to helpdesk permissions. Helpdesk should have write access only to specific non-admin attributes (e.g., unlock account, reset password for standard users). Never grant helpdesk write access to service accounts in admin groups.
"The Forgotten Service Account"β
Pattern: A service account was created years ago for a specific integration (e.g., monitoring tool, backup software, old SIEM). The integration was replaced or decommissioned, but the account was never deleted. It still has admin rights because "we weren't sure who used it." The password has never changed.
Indicators in ThreatWeaver: Service accounts with no login activity in 180+ days that are members of Domain Admins or other high-privilege groups. Kerberoasting paths involving accounts with very old password change dates.
Fix: Audit all service accounts. For each one: confirm who owns it, what it's used for, and what permissions it actually needs. Disable accounts with no confirmed owner. Delete accounts after a 30-day hold period with no objection.
"The Guest Who Became Admin"β
Pattern: An external contractor was added to an Azure AD group for a project. The project ended, but the contractor account was never deprovisioned. Over time, the group acquired additional permissions through role assignments or app grants.
Indicators in ThreatWeaver: External/guest accounts in groups with elevated Azure roles. Accounts with #EXT# in their UPN that have been inactive for 60+ days but remain enabled with group memberships.
Fix: Implement Azure AD Access Reviews for guest accounts. Set automatic guest account expiration. Use PIM for any elevated permissions granted to contractors.
"The Pass-the-Hash Trap"β
Pattern: A single domain admin account (e.g., domain\admin) is used to manage dozens of servers. The account is a member of local Administrators on every server. An attacker compromises one server, extracts the NTLM hash from memory (via Mimikatz or similar), and uses it to authenticate to every other server without knowing the password.
Indicators in ThreatWeaver: Pass-the-Hash paths where a single admin account has AdminTo edges to a large number of computer objects.
Fix: Implement LAPS. Each machine gets a unique local admin password that ThreatWeaver can detect via LAPS-related AD attributes. Implement tiered administration β Tier 0 accounts (DC management) cannot log into Tier 1 machines (server management), which cannot log into Tier 2 machines (workstations).
"The Nested Group Labyrinth"β
Pattern: Group memberships in Active Directory accumulate over years of organizational changes. A group that was originally for the "IT Operations" team now contains sub-groups from three merged departments, a distribution list repurposed as a security group, and a dozen accounts added directly. One of those sub-groups has admin rights on critical servers, but no one realized the chain reached that far.
Indicators in ThreatWeaver: Nested Group Escalation paths with 5+ steps where the attack surface (number of accounts in the path) is very large but the path is not intentional admin access.
Fix: Use Get-ADGroupMember -Recursive to fully enumerate group memberships. Remove sub-groups that are incorrectly nested. Flatten the group structure. Consider tools like BloodHound for a full AD privilege graph audit (ThreatWeaver's attack path analysis complements BloodHound; they use similar techniques but integrate into the broader exposure management context).
Integration with AppSec Findingsβ
Attack path analysis in ThreatWeaver operates alongside the AppSec Scanner. When both modules are active, they produce correlated findings that reveal higher-risk scenarios than either module can surface alone.
Correlated Scenario Typesβ
1. Compromised Application Account as Attack Path Entry Point
The AppSec scanner discovers an authentication bypass or session fixation vulnerability in app.company.com. The service account used by this application (svc-webapi@company.com) is also an entry point in a Kerberoasting path leading to Domain Admin.
Combined signal: An exploitable AppSec finding in an application whose identity is a high-risk attack path entry point. Patching the application without also hardening the service account leaves the path open to other exploitation methods (e.g., credential stuffing). Hardening the service account (removing from Domain Admins, rotating password) reduces the blast radius of the AppSec finding.
Where this surfaces: In the AppSec finding detail view, ThreatWeaver shows a linked "Identity Risk" badge when the application's service account is involved in a detected attack path.
2. SSRF Reaching Internal AD Infrastructure
The AppSec scanner discovers a Server-Side Request Forgery (SSRF) vulnerability that can reach internal endpoints. The exposed endpoint is the domain controller at 10.1.1.10:389.
Combined signal: An SSRF to port 389 (LDAP) on a domain controller is potentially exploitable for LDAP enumeration β an attacker could enumerate AD users, groups, and potentially extract data. The attack path analysis shows that this LDAP exposure is particularly dangerous because several Kerberoastable service accounts are already known.
3. Credential Exposure in Application Findings
The AppSec scanner flags a finding where API responses contain service account credentials in plain text (or in an easily decryptable format). The Identity Security module shows that this service account has Domain Admin rights.
Combined signal: Credential exposure in application + high-privilege service account = immediate Domain Admin access if exploited. This combination should be treated as a Critical finding even if each individual finding rates as High.
How to Review Correlated Findingsβ
In the AppSec Findings view, findings with identity correlation show an Identity Risk badge on the finding card. Click the badge to open the linked attack path detail directly. In the Attack Paths view, paths with linked AppSec findings show an AppSec badge next to the entry point accounts that have associated AppSec vulnerabilities.
This bi-directional linking is designed for the analyst doing a prioritization review. The goal: instead of working through AppSec findings sorted by CVSS score and identity risks sorted by identity score separately, you see the intersection β the places where both signals overlap β and those combined risks get highest priority.
Frequently Asked Questionsβ
"We use a dedicated PAM solution β does ThreatWeaver duplicate what it does?"β
No. PAM (Privileged Access Management) tools like CyberArk and BeyondTrust manage, vault, and rotate privileged credentials. They control access at the time of use. ThreatWeaver's identity module provides a read-only posture view β it shows you the state of identity configuration, where attack paths exist, and which accounts are risky. It does not manage credentials or enforce access control at runtime.
The two are complementary. A PAM tool controls privileged access. ThreatWeaver tells you where privileged access is misconfigured, over-granted, or exposed to attack path traversal β including service accounts that PAM may not cover.
"We already run BloodHound internally β do we need ThreatWeaver's attack path analysis?"β
BloodHound is an excellent and deep Active Directory attack path tool. ThreatWeaver's attack path analysis provides a similar capability but integrates it into the broader exposure management context β so that AD attack paths appear alongside CVE data, cloud misconfigurations, and AppSec findings.
If you run BloodHound, ThreatWeaver's value is not duplicating BloodHound but providing a unified risk picture. An analyst using ThreatWeaver can see that the Kerberoastable service account in the attack path also runs on a server with 3 Critical CVEs, and the server has an S3 bucket with a cloud misconfiguration β in one screen.
"How often do attack paths update after we make fixes?"β
Attack paths are recalculated after every identity sync cycle. If you fix a path (e.g., remove an account from Domain Admins), trigger a manual sync in the connector settings and the path will be reassessed within minutes. The path will transition to Resolved status if the fix removes all viable traversal routes to the target node.
"Can ThreatWeaver detect lateral movement that is actively happening?"β
No. ThreatWeaver analyzes identity configuration at a point in time β it does not process authentication logs in real-time or detect active compromise. It shows you where attack paths exist so you can remediate them before an attacker exploits them. For real-time lateral movement detection, you need a SIEM/UEBA tool (Splunk, Microsoft Sentinel, Exabeam) that can analyze authentication log streams.
"What is the difference between attack paths and exposure categories?"β
Exposure categories (stale accounts, no-MFA, over-privileged users) are individual account-level findings. Each finding is about one account.
Attack paths are multi-step chains that connect multiple accounts and groups through a sequence of permissions. An attack path may include accounts that appear in exposure categories, but the path shows how those individual problems chain together into a complete compromise scenario.
Both matter, but attack paths represent a higher level of analyzed risk β they show the operational impact of the individual exposures.
Related Pagesβ
- Identity Security Overview β Full module overview, connector setup, and risk scoring
- Cloud Security Overview β Cloud posture management
- AppSec Scanner Overview β AppSec findings that may correlate with identity risks
- WeaverScore β How identity risk influences the combined exposure score