fix: redirection /investigation/ip/:ip + 25 nouveaux tips dans tooltips.ts
- 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>
This commit is contained in:
@ -302,6 +302,12 @@ function InvestigateRoute() {
|
|||||||
return <Navigate to={`/detections/${type}/${encodeURIComponent(decodedValue)}`} replace />;
|
return <Navigate to={`/detections/${type}/${encodeURIComponent(decodedValue)}`} replace />;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Redirige /investigation/ip/:ip → /investigation/:ip */
|
||||||
|
function IpInvestigationRedirect() {
|
||||||
|
const { ip } = useParams<{ ip: string }>();
|
||||||
|
return <Navigate to={`/investigation/${encodeURIComponent(ip || '')}`} replace />;
|
||||||
|
}
|
||||||
|
|
||||||
function BulkClassificationRoute() {
|
function BulkClassificationRoute() {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const [searchParams] = useSearchParams();
|
const [searchParams] = useSearchParams();
|
||||||
@ -373,6 +379,7 @@ function MainContent({ counts: _counts }: { counts: AlertCounts | null }) {
|
|||||||
<Route path="/investigate" element={<DetectionsList />} />
|
<Route path="/investigate" element={<DetectionsList />} />
|
||||||
<Route path="/investigate/:type/:value" element={<InvestigateRoute />} />
|
<Route path="/investigate/:type/:value" element={<InvestigateRoute />} />
|
||||||
<Route path="/investigation/ja4/:ja4" element={<JA4InvestigationView />} />
|
<Route path="/investigation/ja4/:ja4" element={<JA4InvestigationView />} />
|
||||||
|
<Route path="/investigation/ip/:ip" element={<IpInvestigationRedirect />} />
|
||||||
<Route path="/investigation/:ip" element={<InvestigationView />} />
|
<Route path="/investigation/:ip" element={<InvestigationView />} />
|
||||||
<Route path="/entities/subnet/:subnet" element={<SubnetInvestigation />} />
|
<Route path="/entities/subnet/:subnet" element={<SubnetInvestigation />} />
|
||||||
<Route path="/entities/:type/:value" element={<EntityInvestigationView />} />
|
<Route path="/entities/:type/:value" element={<EntityInvestigationView />} />
|
||||||
|
|||||||
@ -282,4 +282,120 @@ export const TIPS = {
|
|||||||
'Niveau de menace composite :\n' +
|
'Niveau de menace composite :\n' +
|
||||||
'· CRITICAL > 70 % · HIGH 45–70 %\n' +
|
'· CRITICAL > 70 % · HIGH 45–70 %\n' +
|
||||||
'· MEDIUM 25–45 % · LOW < 25 %',
|
'· 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).',
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user