Que fait Analyse des journaux de serveurs Web pour détection d'intrusion ?
Quand l'utiliser
- Lors de l'investigation d'incidents de sécurité nécessitant l'analyse des journaux de serveurs Web pour détecter des intrusions
- Lors de la création de règles de détection ou de requêtes de Threat Hunting 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 la surveillance de sécurité pour les techniques d'attaque associées
Prérequis
- Connaissance des concepts et outils des opérations de sécurité
- Accès à un environnement de test ou de 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
- Installer les dépendances :
pip install geoip2 user-agents
- Collecter les journaux d'accès du serveur Web au format Combined Log (Apache) ou au format par défaut de Nginx.
- Analyser chaque entrée de journal en extrayant : IP, horodatage, méthode, URI, code de statut, taille de la réponse, user-agent, referer.
- Appliquer les règles de détection :
- Injection SQL :
UNION SELECT, OR 1=1, ' OR ', motifs d'encodage hexadécimal
- LFI / Traversée de répertoires :
../, /etc/passwd, /proc/self, php://filter
- XSS :
<script>, javascript:, onerror=, onload=
- Signatures de scanners : user-agents nikto, sqlmap, dirbuster, gobuster, wfuzz
- Force brute : > 50 requêtes POST vers des points de connexion depuis la même IP en 5 minutes
- Enrichir avec les données GeoIP et générer un rapport hiérarchisé des constatations.
python scripts/agent.py --log-file /var/log/nginx/access.log --geoip-db GeoLite2-City.mmdb --output web_intrusion_report.json
Exemples
Détection d'injection SQL dans l'URI
192.168.1.100 - - [15/Jan/2024:10:30:45 +0000] "GET /products?id=1' UNION SELECT username,password FROM users-- HTTP/1.1" 200 4532
Détection de User-Agent de scanner
Nikto/2.1.6, sqlmap/1.7, DirBuster-1.0-RC1, gobuster/3.1.0