# ๐Ÿ—บ๏ธ 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 } 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= โ†’ Voir historique โ†’ /investigation/ โ†’ Analyser corrรฉlations โ†’ Classifier + Export ML 3. INVESTIGATION: Nouveau botnet โ†’ /detections?threat_level=CRITICAL โ†’ Trier par ASN โ†’ Identifier cluster โ†’ /investigation/ja4/ โ†’ Cartographier infrastructure 4. REVIEW: Classification SOC โ†’ /entities/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