Analyse des journaux d'accès de la passerelle API
Quand l'utiliser
- Lors d'enquêtes sur des incidents de sécurité nécessitant l'analyse des journaux d'accès de la passerelle API
- Lors de l'écriture de règles de détection ou de requêtes de chasse aux menaces pour ce domaine
- Lorsque les analystes SOC ont besoin de procédures structurées pour ce type d'analyse
- Lors de la validation de la couverture de surveillance pour les techniques d'attaque associées
Prérequis
- Connaissance des concepts et outils d'opérations de sécurité
- Accès à un environnement de test ou laboratoire pour une exécution sécurisée
- Python 3.8+ avec les dépendances requises installées
- Autorisation appropriée pour toute activité de test
Instructions
Analysez les journaux d'accès de la passerelle API pour identifier les motifs d'attaque, y compris l'autorisation au niveau objet cassée (BOLA), l'exposition excessive de données et les tentatives d'injection.
import pandas as pd
df = pd.read_json("api_gateway_logs.json", lines=True)
# Détection de BOLA : même utilisateur accédant à de nombreux ID de ressources différents
bola = df.groupby(["user_id", "endpoint"]).agg(
unique_ids=("resource_id", "nunique")).reset_index()
suspicious = bola[bola["unique_ids"] > 50]
Principaux patrons de détection :
- BOLA/IDOR : énumération séquentielle des ID de ressources
- Contournement de limite de débit via manipulation d'en-têtes
- Scannage de credentials (pics de 401 provenant d'une même source)
- Injection SQL/NoSQL dans les paramètres de requête
- Méthodes HTTP inhabituelles (DELETE, PATCH) sur des points de terminaison en lecture seule
Exemples
# Détection des pics de 401 indiquant un scannage de credentials
echecs_auth = df[df["status_code"] == 401]
ips_scanneurs = echecs_auth.groupby("source_ip").size()
scanneurs = ips_scanneurs[ips_scanneurs > 100]