From fe7e11615e79075dc2c9b12cc9d0ff9c00d3c648 Mon Sep 17 00:00:00 2001 From: SOC Analyst Date: Thu, 19 Mar 2026 12:11:08 +0100 Subject: [PATCH] fix: redirection /investigation/ip/:ip + 25 nouveaux tips dans tooltips.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ajoute route /investigation/ip/:ip → redirect vers /investigation/:ip (l'URL /investigation/ip/1.2.3.4 fonctionnait pas) - Ajoute IpInvestigationRedirect() composant - 25 nouvelles entrées TIPS : risk_score_inv, browser_score, spoofing_score, ja4_rotation, ua_rotation, persistence, credential_stuffing, enumeration, params_combos, confiance, botnet_global/regional/concentrated, hash_cluster, sec_fetch_dest/site, tendance, subnet_cidr, unique_ips_stat, ja4_distinct, baseline_ja4, correlation_node, total_detections_stat Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- frontend/src/App.tsx | 7 ++ frontend/src/components/ui/tooltips.ts | 116 +++++++++++++++++++++++++ 2 files changed, 123 insertions(+) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 379c752..32c4734 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -302,6 +302,12 @@ function InvestigateRoute() { return ; } +/** Redirige /investigation/ip/:ip → /investigation/:ip */ +function IpInvestigationRedirect() { + const { ip } = useParams<{ ip: string }>(); + return ; +} + function BulkClassificationRoute() { const navigate = useNavigate(); const [searchParams] = useSearchParams(); @@ -373,6 +379,7 @@ function MainContent({ counts: _counts }: { counts: AlertCounts | null }) { } /> } /> } /> + } /> } /> } /> } /> diff --git a/frontend/src/components/ui/tooltips.ts b/frontend/src/components/ui/tooltips.ts index 2af8216..afb6fb5 100644 --- a/frontend/src/components/ui/tooltips.ts +++ b/frontend/src/components/ui/tooltips.ts @@ -282,4 +282,120 @@ export const TIPS = { 'Niveau de menace composite :\n' + '· CRITICAL > 70 % · HIGH 45–70 %\n' + '· MEDIUM 25–45 % · LOW < 25 %', + + // ── Nouveau ────────────────────────────────────────────────────────────────── + + risk_score_inv: + 'Score de risque composite [0–100] calculé à partir de multiples sources :\n' + + 'détections ML, TCP spoofing, brute force, persistance,\n' + + 'réputation IP, géolocalisation, fingerprint JA4.', + + browser_score: + 'Score de légitimité navigateur [0–100].\n' + + 'Basé sur la cohérence TLS/JA4, User-Agent, Client Hints.\n' + + '100 = navigateur parfaitement légitime · 0 = outil scriptant.', + + spoofing_score: + 'Score de spoofing [0–100] : probabilité que le UA déclaré\n' + + 'ne corresponde pas au client réel.\n' + + 'Basé sur UA/CH mismatch, SNI mismatch, JA4 rareté, rotation.', + + ja4_rare_pct: + 'Pourcentage de requêtes utilisant un JA4 fingerprint rare.\n' + + 'Un JA4 rare (vu par < 0,1 % du trafic) peut indiquer\n' + + 'un outil custom, un bot ou un scanner.', + + ja4_rotation: + 'Rotation JA4 : le client change fréquemment de fingerprint TLS.\n' + + 'Signal fort de bot rotatif ou d\'évasion de détection.\n' + + '> 3 JA4 distincts par heure = rotation anormale.', + + ua_rotation: + 'Rotation de User-Agent : le client change fréquemment d\'identité navigateur.\n' + + 'Technique utilisée par les bots pour éviter la détection.\n' + + '> 3 UA distincts / heure = rotation suspecte.', + + persistence: + 'Persistance : l\'IP est réapparue sur plusieurs fenêtres temporelles.\n' + + 'Une IP persistante est plus susceptible d\'être un bot opérationnel\n' + + 'qu\'une attaque ponctuelle.', + + credential_stuffing: + 'Credential Stuffing : test automatisé de couples login/mot de passe\n' + + 'issus de bases de données volées.\n' + + 'Caractérisé par de nombreux paramètres distincts sur les mêmes endpoints.', + + enumeration: + 'Énumération : exploration automatique de ressources ou d\'identifiants\n' + + '(comptes, IDs, chemins). Diffère du brute force\n' + + 'car vise la découverte plutôt que l\'authentification.', + + params_combos: + 'Nombre de combinaisons de paramètres uniques envoyées.\n' + + 'Valeur haute → outil automatisé testant des payloads variés\n' + + '(fuzzing, credential stuffing, énumération).', + + confiance: + 'Niveau de confiance de la détection [0–100 %].\n' + + 'Basé sur le nombre de signaux concordants.\n' + + '> 80 % = très fiable · < 40 % = signal faible.', + + botnet_global: + 'Botnet Global : IPs réparties dans > 10 pays distincts.\n' + + 'Caractéristique d\'un réseau de machines compromises (botnet) distribué mondialement.', + + botnet_regional: + 'Botnet Régional : IPs concentrées dans 3–10 pays.\n' + + 'Peut indiquer un réseau de proxies régionaux ou une campagne ciblée.', + + botnet_concentrated: + 'Botnet Concentré : IPs majoritairement dans 1–2 pays.\n' + + 'Peut être un datacenter, un VPN ou un opérateur malveillant local.', + + hash_cluster: + 'Cluster d\'empreinte headers : groupe d\'IPs partageant\n' + + 'exactement le même profil de headers HTTP.\n' + + 'IPs dans le même cluster utilisent probablement le même outil/bot.', + + sec_fetch_dest: + 'Sec-Fetch-Dest : destination de la requête selon le navigateur.\n' + + 'Valeurs : document, image, script, font, xhr…\n' + + 'Absent = client non-navigateur (bot, curl, outil HTTP).', + + sec_fetch_site: + 'Sec-Fetch-Site : origine de la requête par rapport au contexte.\n' + + 'Valeurs : same-origin, cross-site, none.\n' + + 'Absent = client non-navigateur (bot, curl, outil HTTP).', + + tendance: + 'Tendance sur les dernières 24h par rapport à la période précédente.\n' + + '↑ +X% = augmentation du volume de détections.\n' + + '↓ -X% = diminution.', + + subnet_cidr: + 'Sous-réseau CIDR /24 : plage de 256 adresses IP contiguës.\n' + + 'Plusieurs IPs malveillantes dans le même /24 suggèrent\n' + + 'un datacenter, un opérateur ou un réseau compromis.', + + total_detections_stat: + 'Nombre total d\'événements de détection enregistrés\n' + + 'par le moteur ML dans la fenêtre d\'analyse.', + + unique_ips_stat: + 'Nombre d\'adresses IP distinctes ayant généré des détections\n' + + 'dans la fenêtre d\'analyse.', + + ja4_distinct: + 'Nombre de fingerprints JA4 distincts utilisés par cette IP.\n' + + '> 3 = rotation de fingerprint TLS (signal de bot évasif).', + + baseline_ja4: + 'JA4 légitimes (baseline) : fingerprints TLS observés chez\n' + + 'des navigateurs légitimes confirmés (Chrome, Firefox, Safari…).\n' + + 'Comparez le JA4 de l\'IP avec cette baseline pour évaluer le risque.', + + correlation_node: + 'Nœud de corrélation : entité reliée à l\'IP analysée.\n' + + 'Les connexions (arêtes) représentent des relations directes\n' + + '(même subnet, même ASN, même JA4, même host cible).', };