Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Mejoras en el lenguaje de firmas de IDP

Las construcciones del lenguaje de firmas de IDP permiten a IDP generar firmas más eficientes que ayudan a reducir los falsos positivos. Esto se puede lograr utilizando el lenguaje de firmas, que define patrones de ataque utilizando sintaxis basada en reglas, contextos y condiciones de coincidencia.

Descripción de las construcciones del lenguaje de firmas

Las construcciones del lenguaje de firmas IDP de Junos OS son las construcciones disponibles en el lenguaje de firmas de IDP. Las construcciones están diseñadas para mejorar las capacidades de detección y prevención de las medidas de seguridad de red. El lenguaje proporciona un conjunto de herramientas y capacidades para definir firmas que pueden detectar varios tipos de actividades maliciosas y patrones de tráfico anómalos. Los administradores de red pueden crear firmas de seguridad eficaces. Los constructos incluyen opciones para definir patrones de tráfico, especificar condiciones para alertas e incorporar información contextual para mejorar la precisión y relevancia de las detecciones.

El código del motor de IDP admite las siguientes construcciones:

  • Depth: especifica la profundidad de un paquete para buscar el patrón dado. El valor de profundidad no es relativo. Por ejemplo, puede especificar la profundidad como 100.
  • Offset: le permite especificar por dónde empezar a buscar un patrón dentro de un paquete. El valor de desplazamiento no es relativo. Por ejemplo, puede especificar un valor para el desvío como 100.
  • Within: garantiza que haya un máximo de N bytes entre las coincidencias de patrones. La coincidencia de patrón siempre es relativa a una coincidencia anterior. Por ejemplo, si el valor de N es 10. Según el ejemplo, después de la coincidencia de m01, la coincidencia de m02 se produce dentro de los 10 bytes para activar una notificación de ataque.
  • Distance: permite especificar dónde debe buscar el motor IDP el patrón especificado en relación con la coincidencia de patrón anterior. Esto siempre es relativo al partido anterior y el valor de la distancia puede ser negativo. Por ejemplo, si el valor de N es 10, una vez que m01 coincide, m02 debería aparecer 10 bytes después del final de la coincidencia m01:
  • Ipopts—Todos los ipopts enumerados tienen anomalías correspondientes definidas en el paquete de seguridad y se pueden detectar cuando se configuran en el dispositivo o en el motor IDP:

    • rr - Ruta de registro

    • eol - Fin de la lista

    • nop - Sin operación

    • ts - Marca de tiempo

    • sec - Seguridad IP

    • esec - Seguridad IP extendida

    • lsrr - Enrutamiento de origen suelto

    • ssrr - Enrutamiento de origen estricto

    • satid - Identificador de flujo

  • Byte extract—La palabra clave Byte extract ayuda a escribir firmas contra protocolos codificados en longitud, lee la carga del paquete en bytes y la guarda como una variable para su uso posterior. El extracto de bytes puede ser tanto relativo como no relativo. Puede haber cualquier número de extracciones de bytes utilizadas por ataque en cadena.Por ejemplo:

    En la tabla 1 se enumeran los campos del Byte extract constructo.

    Tabla 1: Campos de salida de extracción de bytes

    Campo

    Descripción del campo

    align

    Especifique la alineación de bytes.

    bitmask

    Especifique la máscara de bits (1-4 bytes) para la operación AND en formato hexadecimal.

    bytes

    Especifique el número de bytes que desea extraer del paquete (1-10).

    endianness

    Especifique la endianness con la que se deben procesar los bytes leídos por el motor IDP.

    multiplier

    Especifique el valor que se va a multiplicar por los bytes leídos.

    offset

    Especifique el número de bytes de desplazamiento de la carga desde donde el motor IDP debe comenzar a procesarse.

    relative

    Especifique si desea utilizar o no un desplazamiento relativo a la última coincidencia de patrón.

    string

    Especifique el tipo de datos en el que se deben analizar los datos de cadena.

    var-name

    Especifique el nombre de la variable a la que se va a hacer referencia en otras opciones de regla.

  • Byte test: la palabra claveByte test permite probar el campo byte con un valor operativo. La prueba de bytes puede ser tanto relativa como no relativa. > , < , =, &, ^ ,<=,>= son los operadores admitidos y el número máximo de bytes extraídos es 4.Por ejemplo:

    En la tabla 2 se enumeran los campos del Byte test constructo.

    Tabla 2: Campos de salida de prueba de bytes

    Campo

    Descripción del campo

    bitmask

    Especifique la máscara de bits (1-4 bytes) para la operación AND en formato hexadecimal.

    bytes

    Especifique el número de bytes que desea extraer del paquete (1-10).

    endianness

    Especifique la endianness con la que se deben procesar los bytes leídos por el motor IDP.

    negate

    Compruebe si el operador no es verdadero.

    offset

    Mencione el nombre de la variable de desplazamiento o el valor de desvío

    operator

    Especifique la operación que se va a realizar en un valor extraído.

    relative

    Especifique si desea utilizar o no un desplazamiento relativo a la última coincidencia de patrón.

    rvalue

    El valor convertido se prueba con rvalue. .

    string

    Especifique el tipo de datos en el que se deben analizar los datos de cadena.

  • Byte jump—La palabra clave Byte jump se utiliza para firmas escritas para protocolos codificados en longitud para omitir porciones específicas de la carga útil y realizar la detección en ubicaciones muy específicas. El valor de salto de bytes puede ser tanto relativo como no relativo.Por ejemplo:

    En la tabla 3 se enumeran los campos del Byte jump constructo.

    Tabla 3: Campos de salida de salto de bytes

    Campo

    Descripción del campo

    align

    Especifique la endianness con la que se deben procesar los bytes leídos por el motor IDP.

    bitmask

    Especifique la máscara de bits (1-4 bytes) para la operación AND en formato hexadecimal.

    bytes

    Especifique el número de bytes que desea extraer del paquete (1-10).

    endianness

    Especifique la endianness con la que se deben procesar los bytes leídos por el motor IDP.

    from-beginning

    Habilite el salto desde el principio de la carga.

    from-end

    Habilite el salto desde el final de la carga.

    multiplier

    Especifique el valor que se va a multiplicar por los bytes leídos.

    offset

    Mencione el nombre de la variable de desvío o el valor de desvío que se va a utilizar.

    post-offset

    Especifique el número de bytes que desea saltar hacia adelante o hacia atrás (-65535..65535).

    relative

    Especifique si desea utilizar o no un desplazamiento relativo a la última coincidencia de patrón.

    string

    Especifique el tipo de datos en el que se deben analizar los datos de cadena.

  • Byte math—La palabra clave matemática Byte permite realizar una operación matemática en un valor extraído, un valor especificado o una variable existente. El valor matemático del byte almacena el resultado en una nueva variable resultante. Las operaciones como 1) '+' | '-' | '*' | '/' | '<<' | '>>' son compatibles. Puede ser tanto relativo como no relativo.Por ejemplo:

    En la tabla 4 se enumeran los campos del Byte math constructo.

    Tabla 4: Campos de salida de matemáticas de bytes

    Campo

    Descripción del campo

    bitmask

    Especifique la máscara de bits (1-4 bytes) para la operación AND en formato hexadecimal.

    bytes

    Especifique el número de bytes que desea extraer del paquete (1-10).

    endianness

    Especifique la endianness con la que se deben procesar los bytes leídos.

    offset

    Especifique el número de bytes en la carga para iniciar el procesamiento (0..65535).

    operator

    Especifique la operación que se va a realizar en el valor extraído.

    relative

    Especifique si desea utilizar o no un desplazamiento relativo a la última coincidencia de patrón.

    result

    Especifique el nombre de la variable en la que se debe almacenar el resultado.

    rvalue

    Especifique el valor que se va a utilizar para la operación matemática específica.

    string

    Especifique el tipo de datos en el que se deben analizar los datos de cadena.

  • Is-data-at— La palabra clave is-data-at le permite verificar que la carga contiene los datos necesarios en una ubicación especificada. Por ejemplo:

    En la tabla 5 se enumeran los campos del Is-data-at constructo.

    Tabla 5: Campos de salida de Isdataat

    Campo

    Descripción del campo

    negate

    Niega los resultados de la prueba is-data-at .

    offset

    Mencione el nombre o el valor de la variable de desvío.

    relative

    Especificar si se debe utilizar o no un desplazamiento relativo a la última coincidencia de patrón

  • Detection Filter— El filtro de detección define la velocidad a la que el ataque debe coincidir. Se mantiene un recuento para el origen o el destino según el valor de opción especificado en la firma. El filtro de detección está fuera <SLE_Constructs> y se especifica por ataque y no por miembro del ataque. Si un ataque se detecta 5 veces en un intervalo de 10 segundos desde la misma IP de origen, se marcará como un ataque. Por ejemplo: