███████╗███████╗███╗ ██╗██╗████████╗██╗ ██╗
╚══███╔╝██╔════╝████╗ ██║██║╚══██╔══╝██║ ██║
███╔╝ █████╗ ██╔██╗ ██║██║ ██║ ███████║
███╔╝ ██╔══╝ ██║╚██╗██║██║ ██║ ██╔══██║
███████╗███████╗██║ ╚████║██║ ██║ ██║ ██║
╚══════╝╚══════╝╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝ ╚═╝
Identity Privilege Graph & Attack Path Intelligence
Kurukshetra 2.0 Hackathon | Domain 2: Cybersecurity & Blockchain (Expert Tier)
Problem Statement 17 (PS17): Attack Path & Identity Privilege Graph Analyzer
Team Repository:KH050-MetaWiz-ZENITH
- Executive Summary
- Problem Domain: The Challenge of Multi-Hop Identity Attack Paths
- Core Engineering Principles
- System Architecture & Data Pipeline
- Mathematical Formulation & Algorithmic Complexity
- Dynamic Cyber Risk Scoring Engine
- Active Directory Privilege Taxonomy & Planted Scenarios
- Decoupled AI Threat Intelligence Layer
- Repository Layout
- Quick Start Guide
- REST API Specification
- Automated Diagnostic Verification Suite
- User Interface Showcase
- License
ZENITH is an enterprise-grade identity privilege graph and attack path analyzer inspired by SpecterOps BloodHound. It models organizational identities (Users, Groups, Service Accounts, Machines) as a directed property graph in Neo4j and executes exact Cypher graph algorithms to mathematically discover, cost-weight, and remediate multi-hop privilege escalation routes.
Traditional access management and compliance scanners evaluate permissions in isolation, consistently failing to detect chained privilege abuse across disparate systems. ZENITH formulates attack path discovery as an exact directed graph problem, proving vulnerability mathematically through Dijkstra-weighted shortest paths and minimum-cut chokepoint severance rather than probabilistic LLM guesswork.
In modern enterprise Active Directory and hybrid Cloud IAM topologies, access permissions are rarely dangerous in isolation:
- A helpdesk user possesses legitimate Remote Desktop Protocol (RDP) access to an administrative workstation.
- That workstation retains an active logon session belonging to a privileged service account.
- The service account holds Discretionary Access Control List (DACL)
ForceChangePasswordauthority over Domain Admins.
Individually, each entitlement conforms to typical least-privilege compliance audits. When chained together, they construct an unintended, multi-hop lateral attack vector enabling complete domain compromise.
| Dimension | Legacy Identity Scanners | Probabilistic LLM Scanners | ZENITH Graph Platform |
|---|---|---|---|
| Analysis Scope | Isolated, per-asset ACL evaluation | Synthetic prompt completion | Transitive graph reachability across whole org |
| Accuracy | Misses multi-hop combinations | Prone to hallucinations and false paths | 100% mathematically proven graph traversal |
| Path Traversal | None (Static table lookups) | Inferred text patterns | Neo4j Cypher variable-length shortest paths |
| Cost Weighting | Flat severity scoring (CVSS) | Generic likelihood guesses | Empirical exploit resistance weights ( |
| Remediation | Revoke all permissions indiscriminately | Text summaries without graph feedback | Minimum-cut chokepoint simulation with reroute check |
| AI Role | None | Primary detection engine (unreliable) | Decoupled narration over verified mathematical paths |
- Deterministic Graph Mathematics First: Attack path computation, blast radius reachability, and chokepoint isolation are executed strictly in Neo4j via Cypher graph queries. Probabilistic AI models never determine path viability.
- Exploit Friction Cost Model: Edges represent operational attacker difficulty (e.g., passive group membership costs 1, interactive RDP costs 3, Kerberoasting costs 5, GPO injection costs 7).
- Interactive Minimum-Cut Remediation: Proves mathematically whether revoking a single candidate privilege severs an entire attack chain or merely reroutes the adversary through a higher-friction alternative.
- Decoupled AI Threat Narration: The AI layer (NVIDIA NIM Llama-3.3-70b-instruct) operates strictly post-calculation, transforming verified graph steps into CISO-ready executive summaries, MITRE ATT&CK mappings, and detection telemetry playbooks.
- Zero Friction Operation: Fully functional out of the box with built-in dataset intelligence, zero exposed API keys, and zero mandatory external configuration.
[ Active Directory / Cloud IAM Identities ]
│
▼
┌────────────────────────┐
│ Neo4j Graph Store │ ◄── 127 Nodes, 300+ Edges (Bolt TCP 7687)
└───────────┬────────────┘
│ Cypher Traversal Queries
▼
┌────────────────────────┐
│ Dijkstra Engine (Math) │ ◄── Variable-length walk MATCH p = (start)-[*1..6]->(end)
└───────────┬────────────┘
│
┌─────────┴─────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────────┐
│ Risk Calculator │ │ Decoupled AI Threat │ ◄── NVIDIA NIM Llama-3.3-70b-instruct
│ Dynamic Engine │ │ Intelligence Engine │ (Strict JSON Schema & MITRE ATT&CK)
└────────┬─────────┘ └──────────┬───────────┘
│ │
└─────────┬────────────┘
▼
┌────────────────────────┐
│ SOC Interactive UI │ ◄── React 18, 2D Force Graph Canvas,
│ (Port 5173) │ Real-Time Remediation Simulation
└────────────────────────┘
An enterprise identity topology is modeled as a directed property multigraph
-
$V = V_{\text{User}} \cup V_{\text{Group}} \cup V_{\text{Computer}} \cup V_{\text{ServiceAccount}}$ denotes the set of identity vertices. -
$E \subseteq V \times V$ represents directed privilege delegations or access rights. -
$W: E \to [1, 10]$ assigns an empirical exploit resistance weight to each relationship.
The optimal attack path
where
| Algorithm Phase | Brute-Force Path Search | Breadth-First Search (Unweighted) | ZENITH Dijkstra Cypher Traversal |
|---|---|---|---|
| Time Complexity | |||
| Space Complexity | |||
| Weight Sensitivity | None | Ignores exploit difficulty | Full Dijkstra edge cost prioritization |
| Execution Benchmark | Infeasible at scale | 8ms (Suboptimal paths) | 4ms to 6ms on Neo4j Bolt |
ZENITH computes a calibrated Threat Exposure Score
-
Baseline Criticality (
$B$ ):- Tier-0 Apex (Domain Controllers, Domain Admin Group, Root PKI):
$B = 100$ - Tier-1 Infrastructure (Production Servers, Database Clusters):
$B = 90$ - Tier-2 Workstations (Endpoints, Standard Domain Accounts):
$B = 85$
- Tier-0 Apex (Domain Controllers, Domain Admin Group, Root PKI):
-
Exploit Friction Deduction (
$-C \times 3.5$ ):-
$C = \sum_{e \in P} W(e)$ represents total path difficulty. Higher exploit friction significantly reduces attacker feasibility.
-
-
Pivot Depth Deduction (
$-H \times 2.5$ ):-
$H = |P|$ represents total lateral hops. Each hop increases exposure to network monitoring and host-based EDR sensors.
-
-
Privilege Attack Surface Factor (
$S$ ):- Active LSASS session memory dump or DACL ForceChangePassword:
$+10$ points - Cached Kerberos TGS or DCOM execution rights:
$+5$ points - Standard lateral vector:
$0$ points - Hardened perimeter (Windows Defender Credential Guard active):
$-10$ points
- Active LSASS session memory dump or DACL ForceChangePassword:
| Relationship | Weight | MITRE ID | Attack Vector Description |
|---|---|---|---|
MemberOf |
1 | T1078 | Passive group membership granting inherited privileges |
HasSession |
2 | T1003.001 | Active logon session vulnerable to LSASS memory credential harvesting |
CanRDP |
3 | T1021.001 | Interactive GUI remote desktop session access over TCP port 3389 |
AdminTo |
4 | T1078.002 | Local Administrator privileges on the target endpoint |
ExecuteDCOM |
5 | T1021.003 | Remote command execution via MMC20.Application or ShellWindows |
CanResetPasswordOf |
4 | T1098 | Active Directory DACL ForceChangePassword right enabling account takeover |
GenericAll |
6 | T1098.001 | Full control discretionary permissions allowing DACL and membership rewrites |
Kerberoastable |
5 | T1558.003 | Service account with SPN vulnerable to offline Kerberos TGS ticket cracking |
GPOAppliedTo |
7 | T1484.001 | Group Policy Object link applying configuration tasks across linked hosts |
The synthetic database incorporates 4 planted multi-hop attack routes to validate discovery:
-
Path 1: Helpdesk RDP to Domain Admin (3 Hops, Cost: 9, Risk: 58/100)
$$\text{user-3} \xrightarrow{\text{CanRDP}} \text{machine-5} \xrightarrow{\text{HasSession}} \text{svc-0} \xrightarrow{\text{CanResetPasswordOf}} \text{grp-domain-admins}$$ Primary Chokepoint: Revokingmachine-5 -[HasSession]-> svc-0isolates the Domain Admin group. -
Path 2: DCOM Host Trust Pivot (4 Hops, Cost: 16, Risk: 42/100)
$$\text{user-12} \xrightarrow{\text{AdminTo}} \text{machine-8} \xrightarrow{\text{ExecuteDCOM}} \text{machine-19} \xrightarrow{\text{HasSession}} \text{svc-4} \xrightarrow{\text{GenericAll}} \text{grp-domain-admins}$$ -
Path 3: Group Policy & ACL Abuse (3 Hops, Cost: 14, Risk: 51/100)
$$\text{user-25} \xrightarrow{\text{MemberOf}} \text{grp-4} \xrightarrow{\text{GPOAppliedTo}} \text{machine-2} \xrightarrow{\text{AdminTo}} \text{grp-domain-admins}$$ -
Path 4: Kerberoasting Service Pivot (3 Hops, Cost: 12, Risk: 54/100)
$$\text{user-7} \xrightarrow{\text{CanRDP}} \text{machine-11} \xrightarrow{\text{Kerberoastable}} \text{svc-7} \xrightarrow{\text{GenericAll}} \text{grp-domain-admins}$$
ZENITH integrates with NVIDIA NIM utilizing the meta/llama-3.3-70b-instruct model (with automatic fallback to deterministic dataset intelligence if external inference is unavailable).
The AI engine produces structured responses adhering strictly to the schema:
executiveSummary(string): High-level narrative for executive leadership.severity(LOW|MEDIUM|HIGH|CRITICAL): Calculated severity classification.attackNarrative(string): Detailed hop-by-hop technical narrative.stepAnalysis(array): Array of objects mapping each relationship to MITRE ATT&CK technique IDs.primaryChokepoint(object): Optimal privilege edge to sever and justification.detectionOpportunities(array): Telemetry signatures (Event IDs 4624, 7045, Sysmon 10).recommendations(array): Concrete defensive hardening playbooks.verifiedFacts(array): Cryptographically verified graph invariants.reasoning(string): Algorithmic path selection rationale.
This repository conforms strictly to the official Hackathon submission structure:
KH050-MetaWiz-ZENITH/
|
├── README.md # Master project documentation
├── LICENSE # MIT Open Source License
|
├── src/ # Project Source Code
│ ├── backend/ # Node.js + Express + Neo4j Bolt API
│ │ ├── config/ # Database connection & taxonomy definitions
│ │ ├── routes/ # /graph, /paths, /blast-radius, /simulate-remediation, /inject
│ │ ├── services/ # GraphService (Cypher) & LLMService (NIM)
│ │ ├── scripts/ # Diagnostics test suite & seed generator
│ │ └── server.js # Backend entrypoint (Port 4000)
│ ├── frontend/ # React 18 + Vite interactive graph console
│ │ ├── src/components/GraphView.jsx# Force-directed canvas, Risk Calc, Blast, AI panels
│ │ └── src/api.js # Axios client for backend services
│ └── landing-page/ # Cinematic product gateway
│ ├── index.html # Landing page structure
│ ├── styles.css # Custom styling & glassmorphism
│ └── main.js # Interactive animations & telemetry
|
├── docs/ # Comprehensive Documentation
│ ├── project-documentation.pdf # Official 2-page system whitepaper (PDF)
│ ├── project-documentation.md # Technical architecture & mathematical proof
│ ├── architecture.png # High-resolution system architecture diagram
│ └── other-diagrams/ # Supporting diagrams
│ └── attack-graph.png # Multi-hop attack path visualization diagram
|
├── screenshots/ # Application UI Screenshots
│ ├── screenshot-1.png # Primary Attack Path & Force Graph Console
│ └── screenshot-2.png # Interactive Cyber Risk Calculator & AI Threat Panel
|
├── data/ # Dataset & Seed Definitions
│ ├── README.md # Active Directory synthetic graph specification
│ └── taxonomy.json # Machine-readable relationship weights & MITRE codes
|
├── package.json # Root workspace script orchestrator
└── .gitignore # Clean gitignore for dependencies & build artifacts
- Node.js:
v18.xor higher (Tested on Nodev20andv26) - Neo4j Database:
v5.xrunning onbolt://localhost:7687(Default:neo4j/password123)
Install dependencies across both backend and frontend environments:
# Backend dependencies
cd src/backend && npm install
# Frontend dependencies
cd ../frontend && npm install
# Return to root directory
cd ../..Seed the synthetic enterprise Active Directory identity topology into Neo4j:
npm run seed
# or
node src/backend/scripts/seedData.jsYou can run services from the root or in separate terminal sessions:
# Option A: Start backend on http://localhost:4000
npm run dev:backend
# In a second terminal, start frontend on http://localhost:5173
npm run dev:frontend- Interactive SOC Graph Console:
http://localhost:5173 - Product Landing Page:
src/landing-page/index.html
| Method | Endpoint | Parameters / Body | Description |
|---|---|---|---|
GET |
/api/relationship-types |
None | Returns relationship taxonomy, exploit weights, and descriptions |
GET |
/api/graph |
None | Retrieves complete graph topology (nodes, links, metadata) |
GET |
/api/paths |
?from=<id>&to=<id> |
Computes Dijkstra-weighted shortest attack paths between identities |
GET |
/api/blast-radius/:id |
None | Computes transitive downstream reachability cascade for identity |
POST |
/api/simulate-remediation |
{ from, to, revokedEdgeId } |
Simulates revoking privilege edge; returns eliminated or rerouted path |
POST |
/api/explain-path |
{ source, target, path } |
Generates decoupled AI threat analysis adhering to strict schema |
POST |
/api/inject |
{ from, to, type } |
Injects new privilege relationship into Neo4j in real time |
Execute the 15-test diagnostic verification suite covering all graph traversal, blast radius calculations, chokepoint severance, and schema validations:
npm test
# or
node src/backend/scripts/testSuite.js====================================================
ZENITH SYSTEM DIAGNOSTIC TEST SUITE
====================================================
[TEST] GET /api/relationship-types (Taxonomy check) PASSED (11ms)
[TEST] GET /api/graph (Full topology payload) PASSED (10ms)
[TEST] GET /api/paths (Planted Path 1: RDP session hijack) PASSED (4ms)
[TEST] GET /api/paths (Planted Path 2: DCOM host trust) PASSED (2ms)
[TEST] GET /api/paths (Planted Path 3: GPO ACL abuse) PASSED (2ms)
[TEST] GET /api/paths (Planted Path 4: Kerberoasting) PASSED (2ms)
[TEST] GET /api/paths (Non-existent identity boundary check) PASSED (2ms)
[TEST] GET /api/blast-radius/:id (Reachable cascade check) PASSED (2ms)
[TEST] POST /api/simulate-remediation (Chokepoint elimination) PASSED (7ms)
[TEST] POST /api/simulate-remediation (Alternate route rerouting) PASSED (5ms)
[TEST] POST /api/explain-path (Strict JSON Schema Validation) PASSED (1ms)
[TEST] POST /api/explain-path (Dynamic Path Adaptation) PASSED (2ms)
[TEST] POST /api/explain-path (Direct Canonical Payload Input) PASSED (0ms)
[TEST] POST /api/explain-path (Resilient Fallback on Unavailable NIM) PASSED (294ms)
[TEST] POST /api/inject (Live relationship insertion into Neo4j) PASSED (17ms)
====================================================
TOTAL: 15 | PASSED: 15 | FAILED: 0
====================================================
This project is licensed under the MIT License — see the LICENSE file for details.


