🔬 EdgeGuard Architecture

Threat Intelligence Graph Platform - Technical Presentation

📊 Data Sources (5 Active Sources)

🛸
AlienVault OTX
13,087 IOCs
🎯
CISA KEV
500 CVEs
📋
MITRE ATT&CK
500 TTPs
🔓
NVD
100 CVEs
🔄
MISP
6 Test Data

⚙️ Data Processing Pipeline (ETL)

1

API Collection

REST APIs fetch raw data from each source

→
2

Normalization

Standardize: IPs, URLs, CVEs, MITRE IDs

→
3

Enrichment

Confidence scoring, sector classification

→
4

Graph Import

Create nodes & relationships in Neo4j

🎯 Sector Classification: Keyword-Based Approach

How We Classify Threats by Zone/Sector

Approach: We use regex word-boundary matching to classify indicators into sectors (zones). This prevents false positives like "phishing" matching within "hospital".

Sector Primary Keywords Threat Context Keywords Current %
Healthcare hospital, medical, patient, pharma, clinic healthcare sector, medical device, covid ~61%
Energy scada, grid, power, industrial, ics energy sector, power grid, ot ~28%
Finance bank, payment, trading, wallet banking trojan, financial theft, crypto ~2%
Global (default) generic threats ~6%

False Positive Prevention: Word boundaries ensure "phishing" doesn't match in "hospital" or "his". We also map malware families (Emotet, TrickBot, QakBot) → Finance sector automatically.

🛢️ Neo4j Data Model: Node Properties

Node Type Properties Example
Indicator value, indicator_type, sector, source, confidence_score, tags[], last_updated 192.168.1.100, ipv4, healthcare, 0.85
Vulnerability cve_id, description, cvss_score, severity, cwe_id, last_updated CVE-2024-1234, 9.8, critical
Technique mitre_id, name, platforms[], description, tactics[] T1059, PowerShell, [Windows]
ThreatActor name, aliases[], description, country, confidence, last_updated APT29, [Cozy Bear], RU, 0.95
Malware name, family, types[], description, confidence, last_updated TrickBot, [banking], trojan, 0.85

🔗 Neo4j Data Model: Relationship Edge Properties

Relationship Direction Edge Properties Example
USES ThreatActor → Technique confidence, source, timestamp APT29 uses T1059 (0.95)
ATTRIBUTED_TO Malware → ThreatActor confidence, source, timestamp TrickBot → Wizard Spider
INDICATES Indicator → Vulnerability confidence, source, timestamp IP indicates CVE-2024-1234
SOURCED_FROM Any Node → Source raw_data, confidence, source, timestamp Raw data preserved on edge

Design Decision: Raw source data is stored on the SOURCED_FROM edge, not node properties. This keeps nodes clean while preserving all original data for verification and comparison.

📈 Current Knowledge Base Statistics

Neo4j Graph Database

14,793
Total Nodes
290
Relationships
5
Data Sources
4
Sectors

Node Distribution

🌐
Indicators
14,793
⚠️
Vulnerabilities
600
🎯
Techniques
300
👤
ThreatActors
100
🦠
Malware
100
📡
Sources
5

Relationships

USES (140)

ThreatActor → Technique

APT29 → T1059 PowerShell

ATTRIBUTED_TO (150)

Malware → ThreatActor

TrickBot → Wizard Spider

SOURCED_FROM

Any Node → Source

Raw data preserved

🔄 ResilMesh Integration

🚀 ResilMesh → EdgeGuard

📥 NATS Subscription

Subscribe to: resilmesh.alerts.zone.<zone_id>

Receive alerts with IPs, domains, hashes

🔍 Alert Enrichment

Query Neo4j for related threats, actors, techniques

Return contextualized threat intelligence

📤 Response via NATS

Publish enriched alerts back to ResilMesh

JSON with full threat context

🔐 mTLS Authentication

Secure certificate exchange

Using ResilMesh dAuth system

⚡ EdgeGuard Capabilities

1

Automated Alert Enrichment

Instantly enrich with malware families, threat actors, MITRE techniques, CVEs

2

GraphRAG Interface

Natural language queries: "What threats target our finance sector?"

3

Attack Chain Analysis

Multi-hop queries to trace full attack paths

4

Sector-Aware Intelligence

Filter by zone: Healthcare, Energy, Finance, Global

📡 NATS Message Flow

🛡️

ResilMesh

→
📥

NATS

→
🔬

EdgeGuard

→
◇◇◇

Neo4j

→
📤

Response

💡 Example: Alert Enrichment Flow

📥 Input: Raw Alert (from ResilMesh)

{
  "alert_id": "ALT-001",
  "type": "lateral_movement",
  "zone": "healthcare",
  "indicator": "192.168.1.100",
  "timestamp": "2026-03-03T10:30:00Z"
}

📤 Output: Enriched Alert (to ResilMesh)

{
  "alert_id": "ALT-001",
  "indicator": "192.168.1.100",
  "enrichment": {
    "malware": "TrickBot",
    "actor": "Wizard Spider",
    "techniques": [
      "T1021.002 (SMB)",
      "T1059 (PowerShell)"
    ],
    "cves": ["CVE-2023-1234"],
    "confidence": "HIGH",
    "sector": "healthcare"
  }
}