Skip to content

Daniel555AS/fraud-detection-model-attack

Repository files navigation

Model Stealing Attacks: Robo de Modelos de Machine Learning a través de APIs

Introducción

Este repositorio contiene una implementación completa de un sistema de detección de fraude en transacciones financieras basado en Machine Learning, junto con un escenario simulado de Model Stealing Attack (ataque de robo de modelo) para fines académicos y demostrativos.

El proyecto está diseñado como material de apoyo para una presentación, donde se explica el ciclo completo de un sistema de ML en producción, desde la generación de datos hasta la exposición del modelo mediante una API y su posterior explotación por un atacante.

Descripción General del Repositorio

  • Implementa un sistema de detección de fraude en transacciones financieras utilizando Machine Learning (Random Forest).

  • Genera un dataset sintético con reglas realistas de fraude y feature engineering.

  • Entrena un modelo de clasificación para identificar transacciones fraudulentas.

  • Expone el modelo mediante una API REST en Flask para realizar predicciones en tiempo real.

  • Simula un escenario de Model Stealing Attack, donde un atacante consulta la API para reconstruir un modelo equivalente.

  • Incluye scripts para:

    • Recolección de datos desde la API (ataque).
    • Entrenamiento de modelo robado.
    • Comparación entre modelo original y modelo robado.
  • Permite analizar métricas de rendimiento y similitud entre modelos.

  • Está orientado a fines educativos para demostrar riesgos de seguridad en sistemas de Machine Learning en producción.

Propósito del Proyecto

Este repositorio no solo implementa un modelo de ML, sino que también sirve como una demostración práctica de vulnerabilidades en sistemas de inteligencia artificial expuestos mediante APIs, alineado con conceptos de seguridad en ML.

Estructura del Proyecto

fraud-detection-model-attack/
│
├── api/
│   ├── app.py
│   │   # API principal en Flask que expone el endpoint /predict
│   ├── utils.py
│   │   # Carga el modelo entrenado y realiza predicciones sobre nuevos datos
│
├── attacker/
│   ├── collect_data.py
│   │   # Script que simula un atacante recolectando datos desde la API
│   ├── compare_models.py
│   │   # Compara el modelo original vs el modelo robado (accuracy, agreement, etc.)
│   ├── train_stolen_model.py
│   │   # Entrena un modelo usando los datos robados de la API
│   ├── stolen_dataset.csv
│   │   # Dataset generado por el atacante a partir de consultas a la API
│   │
│   ├── # Aquí se generará el archivo 'stolen_model.pkl' al ejecutar el archivo 'collect_data.py'
│
├── data/
│   └── raw/
│       └── # fraud_dataset.csv
│           # Dataset original de transacciones con etiquetas de fraude
│
├── model/
│   ├── generate_data.py
│   │   # Genera dataset sintético de fraude con reglas probabilísticas
│   ├── train_model.py
│   │   # Entrena el modelo de Machine Learning (Random Forest)
│   │
│   ├── # Aquí se generará el archivo 'model.pkl' al ejecutar el archivo 'generate_data.py'
│   │
│
├── .gitignore
│   # Archivos y carpetas ignoradas por Git
├── Model_Stealing_Attacks_Robo_de_Modelos_de_Machine_Learning_a_través_de_APIs.pdf
│   # Presentación (Diapositivas) relacionadas al trabajo realizado
├── README.md
│   # Documentación general del proyecto
├── requirements.txt
│   # Dependencias necesarias para ejecutar el proyecto

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages