¿Cómo ndpi detecta realmente el protocolo HTTP?

4

He estado cavando el ndpi y tratando de entender Cómo está detectando realmente el protocolo HTTP.

Lo que encontré hasta ahora es que son buscando el tipo de solicitud en la carga útil y si no se encuentran, realizan algunas comprobaciones para categorizarlo como una respuesta HTTP, pero ¿es esto suficiente para categorizar un paquete? Obviamente, alguien puede enredarse con los datos de la solicitud y omitir esas comprobaciones de cadenas.

Lo mismo que vi en el protocolo SSDP ( solo verificaciones de cadenas).

¿Cuál es la vista de alto nivel de categorizar el paquete como HTTP (o cualquier protocolo "x")?

    
pregunta hashcode55 14.03.2017 - 22:22
fuente

2 respuestas

6
  

¿Cuál es la vista de alto nivel de categorizar el paquete como HTTP (o cualquier protocolo "x")?

Los números de puerto estándar están tan cerca como se llega a una clasificación oficial de los protocolos de capa de aplicación. Pero en la práctica, los servicios a menudo no se adhieren a sus puertos predeterminados y simplemente no existe una forma universal de detectar qué protocolo de capa 7 se está utilizando. Por lo tanto, la inspección profunda de paquetes se basa en gran parte en heurísticas de expresiones regulares o simplemente en una comparación básica de cadenas (como en el código de referencia de nDPI).

En la mayoría de los casos, no hay una mejor forma de detectar un protocolo que buscando patrones típicos en los paquetes (preferiblemente los iniciales), como una línea de solicitud GET con encabezados posteriores para identificar una conexión HTTP. En consecuencia, tiene razón en que es fácil evadir estas comprobaciones ocultando el protocolo (a menudo realizado por las aplicaciones de BitTorrent). El proyecto de filtro Linux Layer 7 descontinuado tiene un Preguntas frecuentes que abordan estas inquietudes:

  

P: ¿No es este otro paso sin sentido en una carrera de armamentos en la que los protocolos se adaptarán continuamente para evadir la clasificación?

     

A: Puedes verlo así, pero esencialmente no. Los estándares de Internet como HTTP no harán esto. Sólo los programas P2P y similares lo harán. Esto significa que, en el peor de los casos, lo que tendrá que hacer es dar forma a la clasificación "desconocida", dejando el mayor ancho de banda para los protocolos conocidos como HTTP, SMTP, etc.

También eche un vistazo a la l7protocols wiki que documenta varios métodos de identificación de protocolos, la mayoría de ellos basados en expresiones regulares.

    
respondido por el Arminius 15.03.2017 - 01:09
fuente
3

Para agregar a la respuesta de Arminius :
Existen diferentes casos de uso para soluciones DPI:

  • Un caso de uso es simplemente clasificar rápidamente el tráfico para optimizar la latencia de la red para el tráfico importante, como preferir el tráfico de VoIP y frenar BitTorrent. En este caso de uso, es importante usar heurísticas rápidas que no necesitan ser tan estrictas porque en el peor de los casos, el tráfico incorrecto se acelera o disminuye.
  • Otro caso de uso es la seguridad. Aquí es importante detectar de manera confiable el protocolo porque uno necesita decidir si el tráfico se debe pasar sin más análisis, se debe bloquear o inspeccionar con más detalle. Aunque las heurísticas como en nDPI también se utilizan en estos casos, a menudo se pueden omitir. Una alternativa mejor, pero generalmente mucho más lenta, sería un análisis de protocolo más detallado y la aplicación del protocolo, como se hace, por ejemplo, dentro de los servidores proxy HTTP.
respondido por el Steffen Ullrich 15.03.2017 - 07:09
fuente

Lea otras preguntas en las etiquetas