Système de détection d'intrusion mobile
Ce projet met en œuvre un système de détection d'intrusion mobile qui traite le trafic réseau capturé depuis des appareils mobiles, effectue de l'ingénierie de caractéristiques et utilise un modèle d'apprentissage profond basé sur un autoencodeur pour détecter les flux réseau anormaux. Des données de renseignement sur les menaces externes et de liste blanche sont utilisées pour réduire les faux positifs et améliorer la précision de détection.
Table des matières
Fonctionnalités
- Capture de flux réseau : Utilise MITMProxy pour capturer les flux HTTP depuis des appareils mobiles.
- Traitement et archivage des flux : Archive les captures de flux précédentes en renommant
flows.mitm en flows_1.mitm afin d'éviter l'écrasement, puis traite les nouvelles captures.
- Ingénierie de caractéristiques : Extrait, met à l'échelle et vectorise les caractéristiques (à l'aide de TF-IDF) à partir des flux capturés.
- Détection d'anomalies : Entraîne un modèle d'autoencodeur sur des données historiques pour apprendre le comportement normal et signaler les flux anormaux en fonction des erreurs de reconstruction.
- Filtrage par liste blanche : Applique un filtrage par liste blanche à l'aide de données provenant de sources telles que le Majestic Million et les Top 1M domains (Kaggle) pour filtrer les anomalies bénignes.
- Mode prédiction : Traite les nouvelles données capturées, applique le modèle entraîné et produit les anomalies ainsi que les métriques.
- Mode tableau de bord : Fournit un tableau de bord interactif (construit avec Streamlit et Plotly) pour la visualisation et l'analyse des résultats.
Aperçu de l'architecture
-
Capture et archivage des flux
- MITMProxy capture les flux réseau depuis des appareils mobiles.
- Le fichier de capture existant (
flows.mitm) est renommé en flows_1.mitm avant la nouvelle capture afin d'éviter l'écrasement.
- Les flux capturés sont ensuite convertis aux formats CSV et JSON.
-
Ingénierie de caractéristiques
- Les caractéristiques sont extraites des flux traités.
- Les données sont mises à l'échelle à l'aide d'un scaler et vectorisées à l'aide de TF-IDF.
- Les caractéristiques construites sont enregistrées dans un fichier CSV et utilisées pour l'entraînement et la prédiction du modèle.
-
Entraînement et prédiction du modèle
- Mode entraînement : Traite les données historiques pour entraîner le modèle d'autoencodeur. Les artefacts du modèle, tels que le modèle entraîné et le scaler, sont sauvegardés.
- Mode prédiction : Traite les nouvelles données capturées, exécute les prédictions avec le modèle entraîné et applique le filtrage par liste blanche pour réduire les faux positifs.
-
Visualisation et tableau de bord (facultatif)
- Un tableau de bord interactif affiche des métriques telles que les courbes de perte, les distributions des erreurs de reconstruction, le nombre d'anomalies, etc.
Installation et configuration de l'environnement
-
Cloner le dépôt
git clone https://github.com/yourusername/Mobile-Intrusion-Detection-System.git
cd Mobile-Intrusion-Detection-System
-
Créer et activer un environnement virtuel
python3 -m venv venv
source venv/bin/activate
-
Installer les paquets requis
pip install tensorflow pandas numpy scikit-learn matplotlib plotly streamlit
Utilisation
Mode entraînement
Exécutez le pipeline d'entraînement pour traiter les données historiques, effectuer l'ingénierie de caractéristiques et entraîner le modèle d'autoencodeur :
./run_project.sh train
Cette commande effectue les étapes suivantes :
- Traite les flux réseau capturés.
- Archive le fichier de capture précédent (c'est-à-dire que flows.mitm est renommé en flows_1.mitm).
- Génère et met à l'échelle les caractéristiques.
- Entraîne le modèle autoencodeur et l'évalue.
- Enregistre le modèle, le scaler et le résumé d'exécution dans le répertoire results/ (y compris run_log.json).
Mode Prédiction
Avant d'exécuter la prédiction, le fichier flows_1.mitm existant est archivé (avec un horodatage) afin de préserver les données de capture précédentes. Ensuite, de nouveaux flux sont capturés et traités :
./run_project.sh predict
Cette commande effectue les étapes suivantes :
- Archive le fichier flows_1.mitm actuel avec un horodatage.
- Traite les nouveaux flux capturés et les convertit aux formats CSV et JSON.
- Copie le nouveau fichier CSV à l'emplacement attendu et effectue l'ingénierie des caractéristiques.
- Charge le scaler et le modèle entraînés.
- Exécute les prédictions sur les nouvelles données et applique le filtrage par liste blanche.
- Affiche les résultats des prédictions et les enregistre dans le répertoire results/ avec un fichier run_log.json mis à jour.
Mode tableau de bord
Pour visualiser les résultats et les métriques de performance, exécutez le mode tableau de bord à l'aide de Streamlit :
./run_project.sh dashboard
Le tableau de bord affiche :
- Les courbes de perte d'entraînement et de validation.
- La distribution des erreurs de reconstruction avec le seuil défini.
- Le nombre d'anomalies sur plusieurs exécutions.
- La comparaison du nombre d'URL uniques avant et après le filtrage par liste blanche.
- Des graphiques interactifs supplémentaires et des tableaux récapitulatifs pour une analyse plus approfondie.
Sources de données et références externes
- Données de liste blanche :
Conclusion et travaux futurs
Le système de détection d'intrusion mobile démontre un traitement efficace des données de flux réseau provenant d'appareils mobiles et s'appuie sur une approche basée sur un autoencodeur pour la détection d'anomalies. L'intégration du filtrage par liste blanche réduit considérablement les faux positifs ; toutefois, l'étape de prédiction a révélé des difficultés, notamment pour distinguer les flux bénins liés aux recherches Google des activités réellement malveillantes. Cela indique qu'un affinement supplémentaire de la logique de détection d'anomalies, en particulier au sein de la phase de filtrage par liste blanche, est nécessaire. Les travaux futurs se concentreront sur l'amélioration des algorithmes de filtrage, l'intégration de sources de renseignement sur les menaces supplémentaires et l'extension des fonctionnalités du tableau de bord pour obtenir des informations plus approfondies.
Références
Licence
Ce projet est sous licence MIT. Consultez le fichier LICENSE pour plus de détails.