Initial commit: Bot Detector Dashboard for SOC Incident Response
🛡️ Dashboard complet pour l'analyse et la classification des menaces Fonctionnalités principales: - Visualisation des détections en temps réel (24h) - Investigation multi-entités (IP, JA4, ASN, Host, User-Agent) - Analyse de corrélation pour classification SOC - Clustering automatique par subnet/JA4/UA - Export des classifications pour ML Composants: - Backend: FastAPI (Python) + ClickHouse - Frontend: React + TypeScript + TailwindCSS - 6 routes API: metrics, detections, variability, attributes, analysis, entities - 7 types d'entités investigables Documentation ajoutée: - NAVIGATION_GRAPH.md: Graph complet de navigation - SOC_OPTIMIZATION_PROPOSAL.md: Proposition d'optimisation pour SOC • Réduction de 7 à 2 clics pour classification • Nouvelle vue /incidents clusterisée • Panel latéral d'investigation • Quick Search (Cmd+K) • Timeline interactive • Graph de corrélations Sécurité: - .gitignore configuré (exclut .env, secrets, node_modules) - Credentials dans .env (à ne pas committer) ⚠️ Audit sécurité réalisé - Voir recommandations dans SOC_OPTIMIZATION_PROPOSAL.md Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
658
NAVIGATION_GRAPH.md
Normal file
658
NAVIGATION_GRAPH.md
Normal file
@ -0,0 +1,658 @@
|
||||
# 🗺️ Graph de Navigation du Dashboard Bot Detector
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ BOT DETECTOR DASHBOARD │
|
||||
│ (Page d'accueil / Dashboard) │
|
||||
└─────────────────────────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
┌───────────────────────────────┼───────────────────────────────┐
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||||
│ 📊 Dashboard │ │ 📋 Détections │ │ ⚙️ API /docs │
|
||||
│ (Accueil) │───────────▶│ (Liste) │ │ (Swagger) │
|
||||
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
||||
│ │
|
||||
│ │
|
||||
│ ▼
|
||||
│ ┌─────────────────────────────────────────┐
|
||||
│ │ FILTRES & RECHERCHE │
|
||||
│ │ • Recherche: IP, JA4, Host │
|
||||
│ │ • Modèle: Complet / Applicatif │
|
||||
│ │ • Niveau menace: CRITICAL/HIGH/MEDIUM/ │
|
||||
│ │ • Pays, ASN │
|
||||
│ │ • Tri: Score, Date, IP, ASN, etc. │
|
||||
│ │ • Toggle: Grouper par IP / Individuel │
|
||||
│ └─────────────────────────────────────────┘
|
||||
│ │
|
||||
│ │ (Clic sur ligne)
|
||||
│ ▼
|
||||
│ ┌─────────────────────────────────────────┐
|
||||
│ │ 🔍 DETAILS VIEW │
|
||||
│ │ /detections/:type/:value │
|
||||
│ │ │
|
||||
│ │ Types supportés: │
|
||||
│ │ • ip │
|
||||
│ │ • ja4 │
|
||||
│ │ • country │
|
||||
│ │ • asn │
|
||||
│ │ • host │
|
||||
│ │ • user_agent │
|
||||
│ │ │
|
||||
│ │ Affiche: │
|
||||
│ │ • Stats (total, IPs uniques, dates) │
|
||||
│ │ • Insights (auto-générés) │
|
||||
│ │ • Variabilité des attributs │
|
||||
│ └─────────────────────────────────────────┘
|
||||
│ │
|
||||
│ ┌───────────────────┼───────────────────┐
|
||||
│ │ │ │
|
||||
│ ▼ ▼ ▼
|
||||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
||||
│ │ Investigation│ │ Investigation│ │ Entity │
|
||||
│ │ IP │ │ JA4 │ │ Investigation│
|
||||
│ │ │ │ │ │ │
|
||||
│ │ /investigati │ │ /investigati │ │ /entities/:t │
|
||||
│ │ on/:ip │ │ on/ja4/:ja4 │ │ ype/:value │
|
||||
│ └──────────────┘ └──────────────┘ └──────────────┘
|
||||
│
|
||||
│
|
||||
│ (Accès rapide depuis Dashboard)
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ ACCÈS RAPIDE (Dashboard) │
|
||||
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
|
||||
│ │ Voir détections │ │ Menaces │ │ Modèle Complet │ │
|
||||
│ │ → /detections │ │ Critiques │ │ → /detections? │ │
|
||||
│ │ │ │ → /detections? │ │ model_name= │ │
|
||||
│ │ │ │ threat_level= │ │ Complet │ │
|
||||
│ │ │ │ CRITICAL │ │ │ │
|
||||
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 ARBORESCENCE COMPLÈTE
|
||||
|
||||
### Niveau 1 - Pages Principales
|
||||
|
||||
```
|
||||
/ (Dashboard)
|
||||
├── /detections (Liste des détections)
|
||||
│ ├── Filtres: ?threat_level=CRITICAL
|
||||
│ ├── Filtres: ?model_name=Complet
|
||||
│ ├── Filtres: ?country_code=FR
|
||||
│ ├── Filtres: ?asn_number=16276
|
||||
│ ├── Recherche: ?search=192.168.1.1
|
||||
│ └── Tri: ?sort_by=anomaly_score&sort_order=desc
|
||||
│
|
||||
├── /docs (Swagger UI - API documentation)
|
||||
└── /health (Health check endpoint)
|
||||
```
|
||||
|
||||
### Niveau 2 - Vues de Détails
|
||||
|
||||
```
|
||||
/detections/:type/:value
|
||||
├── /detections/ip/192.168.1.100
|
||||
├── /detections/ja4/t13d190900_...
|
||||
├── /detections/country/FR
|
||||
├── /detections/asn/16276
|
||||
├── /detections/host/example.com
|
||||
└── /detections/user_agent/Mozilla/5.0...
|
||||
```
|
||||
|
||||
### Niveau 3 - Investigations
|
||||
|
||||
```
|
||||
/detections/ip/:ip
|
||||
└── → /investigation/:ip (Investigation complète)
|
||||
|
||||
/detections/ja4/:ja4
|
||||
└── → /investigation/ja4/:ja4 (Investigation JA4)
|
||||
|
||||
/detections/:type/:value
|
||||
└── → /entities/:type/:value (Investigation entité)
|
||||
├── /entities/ip/192.168.1.100
|
||||
├── /entities/ja4/t13d190900_...
|
||||
├── /entities/user_agent/Mozilla/5.0...
|
||||
├── /entities/client_header/Accept-Language
|
||||
├── /entities/host/example.com
|
||||
├── /entities/path/api/login
|
||||
└── /entities/query_param/token,userId
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 INVESTIGATION IP - SOUS-PANELS
|
||||
|
||||
```
|
||||
/investigation/:ip
|
||||
│
|
||||
├── Panel 1: SUBNET / ASN ANALYSIS
|
||||
│ ├── Calcul subnet /24
|
||||
│ ├── Liste IPs du subnet
|
||||
│ ├── ASN number & org
|
||||
│ └── Total IPs dans l'ASN
|
||||
│
|
||||
├── Panel 2: COUNTRY ANALYSIS
|
||||
│ ├── Pays de l'IP
|
||||
│ └── Répartition autres pays du même ASN
|
||||
│
|
||||
├── Panel 3: JA4 ANALYSIS
|
||||
│ ├── JA4 fingerprint de l'IP
|
||||
│ ├── IPs partageant le même JA4
|
||||
│ ├── Top subnets pour ce JA4
|
||||
│ └── Autres JA4 pour cette IP
|
||||
│
|
||||
├── Panel 4: USER-AGENT ANALYSIS
|
||||
│ ├── User-Agents de l'IP
|
||||
│ ├── Classification (normal/bot/script)
|
||||
│ └── Pourcentage bots
|
||||
│
|
||||
└── Panel 5: CORRELATION SUMMARY + CLASSIFICATION
|
||||
├── Indicateurs de corrélation
|
||||
│ ├── subnet_ips_count
|
||||
│ ├── asn_ips_count
|
||||
│ ├── ja4_shared_ips
|
||||
│ ├── bot_ua_percentage
|
||||
│ └── user_agents_count
|
||||
│
|
||||
├── Recommandation auto
|
||||
│ ├── label: legitimate/suspicious/malicious
|
||||
│ ├── confidence: 0-1
|
||||
│ ├── suggested_tags: []
|
||||
│ └── reason: string
|
||||
│
|
||||
└── Formulaire classification SOC
|
||||
├── Sélection label (3 boutons)
|
||||
├── Tags prédéfinis (20 tags)
|
||||
├── Commentaire libre
|
||||
├── Sauvegarder → classifications table
|
||||
└── Export ML → JSON
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 INVESTIGATION JA4 - SOUS-PANELS
|
||||
|
||||
```
|
||||
/investigation/ja4/:ja4
|
||||
│
|
||||
├── Stats principales
|
||||
│ ├── Total détections (24h)
|
||||
│ ├── IPs uniques
|
||||
│ ├── Première détection
|
||||
│ ├── Dernière détection
|
||||
│ └── Nombre User-Agents
|
||||
│
|
||||
├── Panel 1: TOP IPs
|
||||
│ └── Liste IPs utilisant ce JA4 (top 10)
|
||||
│
|
||||
├── Panel 2: TOP Pays
|
||||
│ └── Répartition géographique
|
||||
│
|
||||
├── Panel 3: TOP ASN
|
||||
│ └── ASNs utilisant ce JA4
|
||||
│
|
||||
├── Panel 4: TOP Hosts
|
||||
│ └── Hosts ciblés avec ce JA4
|
||||
│
|
||||
└── Panel 5: USER-AGENTS + CLASSIFICATION
|
||||
├── Liste User-Agents
|
||||
├── Classification (normal/bot/script)
|
||||
└── JA4CorrelationSummary
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 ENTITÉ INVESTIGATION - SOUS-PANELS
|
||||
|
||||
```
|
||||
/entities/:type/:value
|
||||
│
|
||||
├── Stats générales
|
||||
│ ├── Total requêtes
|
||||
│ ├── IPs uniques
|
||||
│ ├── Première détection
|
||||
│ └── Dernière détection
|
||||
│
|
||||
├── Panel 1: IPs Associées
|
||||
│ └── Top 20 IPs + navigation
|
||||
│
|
||||
├── Panel 2: JA4 Fingerprints
|
||||
│ └── Top 10 JA4 + investigation
|
||||
│
|
||||
├── Panel 3: User-Agents
|
||||
│ ├── Top 10 UAs
|
||||
│ ├── Count & percentage
|
||||
│ └── Tronqué (150 chars)
|
||||
│
|
||||
├── Panel 4: Client Headers
|
||||
│ ├── Top 10 headers
|
||||
│ ├── Count & percentage
|
||||
│ └── Format mono
|
||||
│
|
||||
├── Panel 5: Hosts Ciblés
|
||||
│ └── Top 15 hosts
|
||||
│
|
||||
├── Panel 6: Paths
|
||||
│ ├── Top 15 paths
|
||||
│ └── Count & percentage
|
||||
│
|
||||
├── Panel 7: Query Params
|
||||
│ ├── Top 15 query params
|
||||
│ └── Count & percentage
|
||||
│
|
||||
└── Panel 8: ASNs & Pays
|
||||
├── Top 10 ASNs
|
||||
└── Top 10 Pays (avec drapeaux)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 WORKFLOWS SOC TYPIQUES
|
||||
|
||||
### Workflow 1: Investigation d'une IP suspecte
|
||||
|
||||
```
|
||||
1. Dashboard
|
||||
└── Voir métriques (CRITICAL: 45, HIGH: 120)
|
||||
|
||||
2. Clic sur "Menaces Critiques"
|
||||
└── /detections?threat_level=CRITICAL
|
||||
|
||||
3. Repérer IP: 192.168.1.100 (Score: -0.95)
|
||||
└── Clic sur ligne IP
|
||||
|
||||
4. Details View: /detections/ip/192.168.1.100
|
||||
├── Stats: 250 détections, 1 UA, 1 JA4
|
||||
├── Insight: "1 User-Agent → Possible script"
|
||||
└── Bouton: "🔍 Investigation complète"
|
||||
|
||||
5. Investigation: /investigation/192.168.1.100
|
||||
├── Panel 1: 15 IPs du subnet /24 ⚠️
|
||||
├── Panel 2: Pays: CN (95%)
|
||||
├── Panel 3: JA4 unique, 50 IPs partagent
|
||||
├── Panel 4: 100% bot UA (python-requests)
|
||||
└── Panel 5: Classification
|
||||
├── Label: MALICIOUS (auto)
|
||||
├── Tags: scraping, bot-network, hosting-asn
|
||||
├── Comment: "Bot de scraping distribué"
|
||||
└── Action: 💾 Sauvegarder + 📤 Export ML
|
||||
```
|
||||
|
||||
### Workflow 2: Analyse d'un JA4 fingerprint
|
||||
|
||||
```
|
||||
1. Dashboard
|
||||
└── Voir série temporelle (pic à 14:00)
|
||||
|
||||
2. /detections
|
||||
└── Tri par JA4 (groupé)
|
||||
|
||||
3. Repérer JA4: t13d190900_9dc949149365_...
|
||||
└── Clic: /detections/ja4/:ja4
|
||||
|
||||
4. Details View JA4
|
||||
├── Stats: 1500 détections, 89 IPs
|
||||
├── Insight: "89 IPs différentes → Infrastructure distribuée"
|
||||
└── Bouton: "🔍 Investigation JA4"
|
||||
|
||||
5. Investigation JA4: /investigation/ja4/:ja4
|
||||
├── Panel 1: Top 10 IPs (CN: 45%, US: 30%)
|
||||
├── Panel 2: Top Pays (CN, US, DE, FR)
|
||||
├── Panel 3: Top ASN (OVH, Amazon, Google)
|
||||
├── Panel 4: Top Hosts (api.example.com)
|
||||
└── Panel 5: User-Agents
|
||||
├── 60% curl/7.68.0 (script)
|
||||
├── 30% python-requests (script)
|
||||
└── 10% Mozilla (normal)
|
||||
```
|
||||
|
||||
### Workflow 3: Investigation par ASN
|
||||
|
||||
```
|
||||
1. /detections?asn_number=16276 (OVH)
|
||||
└── 523 détections en 24h
|
||||
|
||||
2. Clic sur ASN dans tableau
|
||||
└── /detections/asn/16276
|
||||
|
||||
3. Details View ASN
|
||||
├── Stats: 523 détections, 89 IPs
|
||||
├── Variabilité:
|
||||
│ ├── 15 User-Agents différents
|
||||
│ ├── 8 JA4 fingerprints
|
||||
│ ├── 12 pays
|
||||
│ └── 45 hosts ciblés
|
||||
└── Insights:
|
||||
├── "ASN de type hosting/cloud"
|
||||
└── "12 pays → Distribution géographique large"
|
||||
|
||||
4. Navigation enchaînable
|
||||
└── Clic sur User-Agent "python-requests"
|
||||
└── /entities/user_agent/python-requests/2.28.0
|
||||
├── 250 IPs utilisent cet UA
|
||||
├── Top paths: /api/login, /api/users
|
||||
└── Query params: token, userId, action
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📡 API ENDPOINTS UTILISÉS
|
||||
|
||||
```
|
||||
GET /api/metrics
|
||||
└── Résumé + timeseries + distribution
|
||||
|
||||
GET /api/detections
|
||||
├── page, page_size
|
||||
├── threat_level, model_name
|
||||
├── country_code, asn_number
|
||||
├── search, sort_by, sort_order
|
||||
└── items[], total, page, total_pages
|
||||
|
||||
GET /api/detections/:id
|
||||
└── Détails complets d'une détection
|
||||
|
||||
GET /api/variability/:type/:value
|
||||
├── type: ip, ja4, country, asn, host
|
||||
├── Stats globales
|
||||
├── attributes:
|
||||
│ ├── user_agents[]
|
||||
│ ├── ja4[]
|
||||
│ ├── countries[]
|
||||
│ ├── asns[]
|
||||
│ └── hosts[]
|
||||
└── insights[]
|
||||
|
||||
GET /api/variability/:type/:value/ips
|
||||
└── Liste des IPs associées
|
||||
|
||||
GET /api/variability/:type/:value/attributes
|
||||
├── target_attr: user_agents, ja4, countries, asns, hosts
|
||||
└── items[] avec count, percentage
|
||||
|
||||
GET /api/variability/:type/:value/user_agents
|
||||
└── User-Agents avec classification
|
||||
|
||||
GET /api/attributes/:type
|
||||
└── Liste des valeurs uniques (top 100)
|
||||
|
||||
GET /api/entities/:type/:value
|
||||
├── type: ip, ja4, user_agent, client_header, host, path, query_param
|
||||
├── stats: EntityStats
|
||||
├── related: EntityRelatedAttributes
|
||||
├── user_agents[]
|
||||
├── client_headers[]
|
||||
├── paths[]
|
||||
└── query_params[]
|
||||
|
||||
GET /api/analysis/:ip/subnet
|
||||
└── Subnet /24 + ASN analysis
|
||||
|
||||
GET /api/analysis/:ip/country
|
||||
└── Pays + répartition ASN
|
||||
|
||||
GET /api/analysis/:ip/ja4
|
||||
└── JA4 fingerprint analysis
|
||||
|
||||
GET /api/analysis/:ip/user-agents
|
||||
└── User-Agents + classification
|
||||
|
||||
GET /api/analysis/:ip/recommendation
|
||||
├── Indicateurs de corrélation
|
||||
├── label, confidence
|
||||
├── suggested_tags[]
|
||||
└── reason
|
||||
|
||||
POST /api/analysis/classifications
|
||||
└── Sauvegarde classification SOC
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 COMPOSANTS UI
|
||||
|
||||
```
|
||||
App.tsx
|
||||
├── Navigation (Navbar)
|
||||
│ ├── Logo: "Bot Detector"
|
||||
│ ├── Link: Dashboard
|
||||
│ └── Link: Détections
|
||||
│
|
||||
├── Dashboard (Page d'accueil)
|
||||
│ ├── MetricCard[] (4 cartes)
|
||||
│ │ ├── Total Détections
|
||||
│ │ ├── Menaces (CRITICAL+HIGH)
|
||||
│ │ ├── Bots Connus
|
||||
│ │ └── IPs Uniques
|
||||
│ │
|
||||
│ ├── ThreatBar[] (4 barres)
|
||||
│ │ ├── CRITICAL
|
||||
│ │ ├── HIGH
|
||||
│ │ ├── MEDIUM
|
||||
│ │ └── LOW
|
||||
│ │
|
||||
│ ├── TimeSeriesChart
|
||||
│ └── Accès Rapide (3 liens)
|
||||
│
|
||||
├── DetectionsList
|
||||
│ ├── Header
|
||||
│ │ ├── Toggle: Grouper par IP
|
||||
│ │ ├── Sélecteur colonnes
|
||||
│ │ └── Recherche
|
||||
│ │
|
||||
│ ├── Filtres
|
||||
│ │ ├── Modèle (dropdown)
|
||||
│ │ └── Effacer filtres
|
||||
│ │
|
||||
│ └── Tableau
|
||||
│ ├── Colonnes:
|
||||
│ │ ├── IP / JA4
|
||||
│ │ ├── Host
|
||||
│ │ ├── Client Headers
|
||||
│ │ ├── Modèle
|
||||
│ │ ├── Score
|
||||
│ │ ├── Hits
|
||||
│ │ ├── Velocity
|
||||
│ │ ├── ASN
|
||||
│ │ ├── Pays
|
||||
│ │ └── Date
|
||||
│ │
|
||||
│ └── Pagination
|
||||
│
|
||||
├── DetailsView
|
||||
│ ├── Breadcrumb
|
||||
│ ├── Header (type + value)
|
||||
│ ├── Stats rapides (4 boxes)
|
||||
│ ├── Insights[]
|
||||
│ ├── VariabilityPanel
|
||||
│ └── Bouton retour
|
||||
│
|
||||
├── InvestigationView (IP)
|
||||
│ ├── SubnetAnalysis
|
||||
│ ├── CountryAnalysis
|
||||
│ ├── JA4Analysis
|
||||
│ ├── UserAgentAnalysis
|
||||
│ └── CorrelationSummary
|
||||
│
|
||||
├── JA4InvestigationView
|
||||
│ ├── Stats principales
|
||||
│ ├── Top IPs
|
||||
│ ├── Top Pays
|
||||
│ ├── Top ASN
|
||||
│ ├── Top Hosts
|
||||
│ ├── User-Agents
|
||||
│ └── JA4CorrelationSummary
|
||||
│
|
||||
└── EntityInvestigationView
|
||||
├── Stats générales
|
||||
├── Panel 1: IPs Associées
|
||||
├── Panel 2: JA4 Fingerprints
|
||||
├── Panel 3: User-Agents
|
||||
├── Panel 4: Client Headers
|
||||
├── Panel 5: Hosts
|
||||
├── Panel 6: Paths
|
||||
├── Panel 7: Query Params
|
||||
└── Panel 8: ASNs & Pays
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔣 ÉTATS & DONNÉES
|
||||
|
||||
### Hooks React
|
||||
|
||||
```
|
||||
useMetrics()
|
||||
├── data: MetricsResponse
|
||||
├── loading: boolean
|
||||
├── error: Error | null
|
||||
└── refresh: 30s auto
|
||||
|
||||
useDetections(params)
|
||||
├── params: {
|
||||
│ ├── page, page_size
|
||||
│ ├── threat_level
|
||||
│ ├── model_name
|
||||
│ ├── country_code
|
||||
│ ├── asn_number
|
||||
│ ├── search
|
||||
│ ├── sort_by, sort_order
|
||||
│ }
|
||||
├── data: DetectionsListResponse
|
||||
├── loading: boolean
|
||||
└── error: Error | null
|
||||
|
||||
useVariability(type, value)
|
||||
├── type: string
|
||||
├── value: string
|
||||
├── data: VariabilityResponse
|
||||
├── loading: boolean
|
||||
└── error: Error | null
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 MODÈLES DE DONNÉES
|
||||
|
||||
```typescript
|
||||
MetricsResponse {
|
||||
summary: MetricsSummary {
|
||||
total_detections: number
|
||||
critical_count: number
|
||||
high_count: number
|
||||
medium_count: number
|
||||
low_count: number
|
||||
known_bots_count: number
|
||||
anomalies_count: number
|
||||
unique_ips: number
|
||||
}
|
||||
timeseries: TimeSeriesPoint[]
|
||||
threat_distribution: Record<string, number>
|
||||
}
|
||||
|
||||
Detection {
|
||||
detected_at: datetime
|
||||
src_ip: string
|
||||
ja4: string
|
||||
host: string
|
||||
bot_name: string
|
||||
anomaly_score: float
|
||||
threat_level: string
|
||||
model_name: string
|
||||
recurrence: int
|
||||
asn_number: string
|
||||
asn_org: string
|
||||
country_code: string
|
||||
hits: int
|
||||
hit_velocity: float
|
||||
fuzzing_index: float
|
||||
post_ratio: float
|
||||
reason: string
|
||||
}
|
||||
|
||||
VariabilityResponse {
|
||||
type: string
|
||||
value: string
|
||||
total_detections: number
|
||||
unique_ips: number
|
||||
date_range: { first_seen, last_seen }
|
||||
attributes: VariabilityAttributes {
|
||||
user_agents: AttributeValue[]
|
||||
ja4: AttributeValue[]
|
||||
countries: AttributeValue[]
|
||||
asns: AttributeValue[]
|
||||
hosts: AttributeValue[]
|
||||
}
|
||||
insights: Insight[]
|
||||
}
|
||||
|
||||
ClassificationRecommendation {
|
||||
label: 'legitimate' | 'suspicious' | 'malicious'
|
||||
confidence: float (0-1)
|
||||
indicators: CorrelationIndicators {
|
||||
subnet_ips_count: int
|
||||
asn_ips_count: int
|
||||
ja4_shared_ips: int
|
||||
bot_ua_percentage: float
|
||||
user_agents_count: int
|
||||
}
|
||||
suggested_tags: string[]
|
||||
reason: string
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 POINTS D'ENTRÉE POUR SOC
|
||||
|
||||
### Scénarios de démarrage rapide
|
||||
|
||||
```
|
||||
1. URGENCE: Pic d'activité suspecte
|
||||
→ / (Dashboard)
|
||||
→ Voir pic dans TimeSeries
|
||||
→ Clic sur "Menaces Critiques"
|
||||
→ Identifier pattern
|
||||
→ Investigation
|
||||
|
||||
2. ALERT: IP blacklistée
|
||||
→ /detections?search=<IP>
|
||||
→ Voir historique
|
||||
→ /investigation/<IP>
|
||||
→ Analyser corrélations
|
||||
→ Classifier + Export ML
|
||||
|
||||
3. INVESTIGATION: Nouveau botnet
|
||||
→ /detections?threat_level=CRITICAL
|
||||
→ Trier par ASN
|
||||
→ Identifier cluster
|
||||
→ /investigation/ja4/<JA4>
|
||||
→ Cartographier infrastructure
|
||||
|
||||
4. REVIEW: Classification SOC
|
||||
→ /entities/ip/<IP>
|
||||
→ Vue complète activité
|
||||
→ Décider classification
|
||||
→ Sauvegarder
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 NOTES
|
||||
|
||||
- **Navigation principale:** Dashboard → Détections → Détails → Investigation
|
||||
- **Navigation secondaire:** Investigation → Entités → Investigation croisée
|
||||
- **Breadcrumb:** Présent sur toutes les pages de détails
|
||||
- **Retour:** Bouton "← Retour" sur chaque page d'investigation
|
||||
- **URL state:** Tous les filtres sont dans l'URL (partageable)
|
||||
- **Auto-refresh:** Dashboard rafraîchi toutes les 30s
|
||||
- **Grouping:** Option "Grouper par IP" pour vue consolidée
|
||||
Reference in New Issue
Block a user