Mail: noahkuperman@gmail.com
GitHub: https://github.com/6upernova
Repositorio con el codigo utilizado para el informe: https://github.com/6upernova/DOS_Detecter
Link al video Explicativo: https://youtu.be/1bYhu99hbxQ
-
Total de registros: 10,000
-
Distribución de clases: 50% Normal (5,000) | 50% DoS (5,000)
-
División de datos: 80% entrenamiento (8,000) | 20% prueba (2,000)
-
Columnas:
packet_rate→ Es la tasa de envío de paquetes, generalmente medida como paquetes por segundo (pps).
Indica cuántos paquetes de red se envían o reciben en promedio por unidad de tiempo.
Un valor alto puede reflejar una conexión muy activa o un ataque DoS.
Un valor bajo sugiere tráfico normal o inactivo.duration→ Es la duración total de la conexión o flujo, en segundos o milisegundos.
Si se trata de un flujo TCP/UDP, es el tiempo entre el primer y el último paquete.
Duraciones extremadamente cortas o largas pueden ser indicios de comportamiento inusual.bytes_sent→ Cantidad total de bytes enviados desde el host origen hacia el destino durante esa conexión.
En ataques o filtración de datos, este valor tiende a ser anormalmente alto.
En consultas o peticiones simples, suele ser bajo.bytes_received→ Total de bytes recibidos por el host origen desde el destino durante la sesión.
Diferencias grandes entre enviados y recibidos pueden indicar un tipo de tráfico específico.
Regresión Logística:
La regresión logística de scikit-learn toma tus datos, calcula una combinación lineal de las variables, aplica una función sigmoide para convertirla en probabilidad y ajusta los pesos para minimizar el error logarítmico.
Modela la probabilidad de que una observación pertenezca a la clase positiva (1) en función de las variables de entrada.
| packet_rate | duration | bytes_sent | bytes_received | |
|---|---|---|---|---|
| packet_rate | 1.000 | -0.550 | 0.623 | -0.602 |
| duration | -0.550 | 1.000 | -0.469 | 0.443 |
| bytes_sent | 0.623 | -0.469 | 1.000 | -0.513 |
| bytes_received | -0.602 | 0.443 | -0.513 | 1.000 |
Observaciones:
- Correlación positiva fuerte entre
packet_rateybytes_sent(0.623). - Correlación negativa fuerte entre
packet_rateybytes_received(-0.602). - La duración presenta correlación negativa con
packet_rate(-0.550).
| Feature | Coeficiente | Interpretación |
|---|---|---|
| packet_rate | +8.038 | Mayor peso: alta tasa indica DoS |
| bytes_sent | +2.467 | Incremento aumenta probabilidad de DoS |
| bytes_received | -2.859 | Decremento aumenta probabilidad de DoS |
| duration | -1.767 | Duración corta asociada a DoS |
| Métrica | Valor | Porcentaje |
|---|---|---|
| Accuracy | 0.9970 | 99.70% |
| Precision | 0.9960 | 99.60% |
| Recall | 0.9980 | 99.80% |
| F1-Score | 0.9970 | 99.70% |
| Predicción Normal | Predicción DoS | |
|---|---|---|
| Real Normal | 996 (TN) | 4 (FP) |
| Real DoS | 2 (FN) | 998 (TP) |
- False Positive Rate (FPR): 0.40% – tráfico normal marcado incorrectamente como DoS.
- False Negative Rate (FNR): 0.20% – ataques DoS no detectados.
| Clase | Precision | Recall | F1-Score | Support |
|---|---|---|---|---|
| Normal | 0.9980 | 0.9960 | 0.9970 | 1000 |
| DoS | 0.9960 | 0.9980 | 0.9970 | 1000 |
| Accuracy | 0.9970 | 2000 |
El modelo alcanzó métricas excepcionales (Accuracy: 99.70%, F1-Score: 99.70%), demostrando una capacidad casi perfecta para distinguir entre tráfico normal y ataques DoS.
La matriz de confusión revela solo 6 errores de clasificación en 2,000 muestras: 4 falsos positivos y 2 falsos negativos.
packet_rate (+8.038) es el predictor más importante, seguido por bytes_received (-2.859) y bytes_sent (+2.467).
Refleja el patrón característico de los ataques DoS: alta tasa de paquetes, muchos bytes enviados, pocos recibidos, y conexiones cortas.
Limitación del Dataset:
La precisión cercana al 100% sugiere una separación artificial entre clases.
En el dataset sintético, los rangos de packet_rate no se superponen significativamente (Normal: 20–80 pps vs DoS: 300–800 pps), lo que permite al modelo aprender umbrales simples.
Implicaciones Prácticas:
El rendimiento podría disminuir en escenarios reales con:
- Tráfico legítimo con picos (streaming, descargas).
- Ataques DoS de baja tasa (Slowloris).
- Variabilidad natural del tráfico empresarial.
A pesar de eso, el modelo demuestra la viabilidad de técnicas de Machine Learning para detección de DoS, con 99.8% de detección y 0.4% de falsas alarmas.