Sistema de Detección de Intrusiones Móvil
Este proyecto implementa un Sistema de Detección de Intrusiones Móvil que procesa el tráfico de red capturado desde dispositivos móviles, realiza ingeniería de características y utiliza un modelo de aprendizaje profundo basado en autoencoder para detectar flujos de red anómalos. Se utilizan datos externos de inteligencia de amenazas y listas blancas para reducir los falsos positivos y mejorar la precisión de la detección.
Tabla de Contenidos
Características
- Captura de Flujos de Red: Utiliza MITMProxy para capturar flujos HTTP desde dispositivos móviles.
- Procesamiento y Archivado de Flujos: Archiva las capturas de flujos anteriores renombrando
flows.mitm a flows_1.mitm para evitar sobrescribirlas, y luego procesa las nuevas capturas.
- Ingeniería de Características: Extrae, escala y vectoriza características (usando TF-IDF) de los flujos capturados.
- Detección de Anomalías: Entrena un modelo de autoencoder con datos históricos para aprender el comportamiento normal y señalar flujos anómalos basándose en los errores de reconstrucción.
- Filtrado por Lista Blanca: Aplica filtrado por lista blanca utilizando datos de fuentes como Majestic Million y los dominios Top 1M (Kaggle) para filtrar anomalías benignas.
- Modo Predicción: Procesa los nuevos datos capturados, aplica el modelo entrenado y genera las anomalías junto con las métricas.
- Modo Panel de Control: Proporciona un panel de control interactivo (construido con Streamlit y Plotly) para la visualización y el análisis de los resultados.
Descripción General de la Arquitectura
-
Captura y Archivado de Flujos
- MITMProxy captura los flujos de red desde dispositivos móviles.
- El archivo de captura existente (
flows.mitm) se renombra a flows_1.mitm antes de la nueva captura para evitar sobrescribirlo.
- Los flujos capturados se convierten luego a formatos CSV y JSON.
-
Ingeniería de Características
- Se extraen características de los flujos procesados.
- Los datos se escalan usando un escalador y se vectorizan usando TF-IDF.
- Las características procesadas se guardan en un archivo CSV y se utilizan para el entrenamiento y la predicción del modelo.
-
Entrenamiento y Predicción del Modelo
- Modo Entrenamiento: Procesa datos históricos para entrenar el modelo de autoencoder. Se guardan los artefactos del modelo, como el modelo entrenado y el escalador.
- Modo Predicción: Procesa los nuevos datos capturados, ejecuta predicciones con el modelo entrenado y aplica el filtrado por lista blanca para reducir los falsos positivos.
-
Visualización y Panel de Control (Opcional)
- Un panel de control interactivo muestra métricas como curvas de pérdida, distribuciones de errores de reconstrucción, recuentos de anomalías y más.
Instalación y Configuración del Entorno
-
Clonar el Repositorio
git clone https://github.com/yourusername/Mobile-Intrusion-Detection-System.git
cd Mobile-Intrusion-Detection-System
-
Crear y Activar un Entorno Virtual
python3 -m venv venv
source venv/bin/activate
-
Instalar los Paquetes Requeridos
pip install tensorflow pandas numpy scikit-learn matplotlib plotly streamlit
Uso
Modo Entrenamiento
Ejecute el pipeline de entrenamiento para procesar datos históricos, realizar ingeniería de características y entrenar el modelo de autoencoder:
./run_project.sh train
Este comando realiza los siguientes pasos:
- Procesa los flujos de red capturados.
- Archiva el archivo de captura anterior (es decir, flows.mitm se renombra a flows_1.mitm).
- Diseña y escala las características.
- Entrena el modelo autoencoder y lo evalúa.
- Guarda el modelo, el escalador y el resumen de la ejecución en el directorio results/ (incluyendo run_log.json).
Modo de Predicción
Antes de ejecutar la predicción, el archivo existente flows_1.mitm se archiva (con una marca de tiempo) para preservar los datos de captura anteriores. Luego, se capturan y procesan nuevos flujos:
./run_project.sh predict
Este comando realiza los siguientes pasos:
- Archiva el archivo flows_1.mitm actual con una marca de tiempo.
- Procesa los nuevos flujos capturados y los convierte a formatos CSV y JSON.
- Copia el nuevo archivo CSV a la ubicación esperada y realiza la ingeniería de características.
- Carga el escalador y el modelo entrenados.
- Ejecuta predicciones sobre los nuevos datos y aplica el filtrado por lista blanca.
- Muestra los resultados de las predicciones y los guarda en el directorio results/ junto con un run_log.json actualizado.
Modo Dashboard
Para visualizar los resultados y las métricas de rendimiento, ejecute el modo dashboard usando Streamlit:
./run_project.sh dashboard
El panel de control muestra:
- Curvas de pérdida de entrenamiento y validación.
- Distribución de errores de reconstrucción con el umbral establecido.
- Recuentos de anomalías a lo largo de múltiples ejecuciones.
- Comparación de los recuentos de URL únicas antes y después del filtrado por lista blanca.
- Gráficos interactivos adicionales y tablas resumen para un análisis más detallado.
Fuentes de datos y referencias externas
Conclusión y trabajo futuro
El Sistema de Detección de Intrusiones Móvil demuestra un procesamiento eficaz de los datos de flujo de red provenientes de dispositivos móviles y aprovecha un enfoque basado en autoencoders para la detección de anomalías. La integración del filtrado por lista blanca reduce significativamente los falsos positivos; sin embargo, la etapa de predicción reveló desafíos, en particular a la hora de distinguir los flujos benignos relacionados con búsquedas de Google de las actividades verdaderamente maliciosas. Esto indica que se requiere un mayor refinamiento de la lógica de detección de anomalías, especialmente dentro de la fase de filtrado por lista blanca. El trabajo futuro se centrará en mejorar los algoritmos de filtrado, incorporar fuentes adicionales de inteligencia sobre amenazas y ampliar las funcionalidades del panel de control para obtener información más profunda.
Referencias
Licencia
Este proyecto está licenciado bajo la Licencia MIT. Consulte el archivo LICENSE para más detalles.