Blog

Armado de firmas Custom IPS

El armado de firmas custom de IPS suele verse como algo complejo y no apto para el público general. Sin embargo, es una herramienta muy flexible para resolver diferentes problemas que pueden presentarse en una organizacion, más allá de la detección de algún tipo de ataque.

Maximiliano Noce
SE SoLA East

En esta oportunidad, voy a ahondar en la construcción de firmas custom para cumplir con un objetivo particular.

Las siguientes firmas sirven para detectar y controlar sobre el tráfico DHCP, qué dispositivos pueden o no obtener una dirección IP.

Si bien el caso que se presenta, es muy particular y solo va a aplicar a cierto tipo de escenarios, el objetivo principal es llamar a la imaginación acerca de las posibilidades de la herramienta.

Topología

La topología sobre el cual esta firma funciona es la siguiente:

DHCP client —- DHCP relay —– Fortigate —— DHCP Server

Análisis

Antes de comenzar a escribir una firma custom, debemos contar con las siguientes herramientas:

  • Wireshar o similar
  • Alguna captura de muestra sobre el tráfico que queremos trabajar
  • Un editor de texto (si es avanzado como notepad++, mejor)
  • Un Fortigate

Luego, necesitamos establecer los objetivos concretos que cumplir, tratando de cubrir todos los escenarios. Para este caso puntual, se definió lo siguiente:

  1. Solo se debe entregar IP a dispositivos de los fabricantes aceptados.
  2. Se debe generar un registro (log) cada vez que se entrega una dirección IP, donde se debe identificar al fabricante en cuestión.
  3. Siempre que se detecte un dispositivo no soportado, NO se debe entregar dirección IP y se debe almacenar un registro con la captura del paquete correspondiente.

Desarrollo

Se escribieron varias versiones de la firma hasta obtener una funcional, como la siguiente:

Como se puede observar, para cumplir con el objetivo planteado, es necesario crear más de una firma, que están ligadas entre sí. Es más, crearemos una firma por cada fabricante que necesitemos sumar, cada una con un identificador distinto (asociado a la dirección MAC), pudiendo luego exportar un reporte que contabilice cuantas entregas hubo a los diferentes tipos de dispositivos.

Empezando desde el principio

Para el armado de una firma desde cero, debemos seguir una serie de premisas:

  • Estructura: Hay que respetar un formato fijo y una serie de opciones y propiedades:

“F-SBID( –<opcion1 valor>; –<opcion2 valor>;)”

  • Uso de CLI: Es recomendable utilizar la CLI para el armado y la edición de las firmas custom. Si bien la interface gráfica permite su creación, hace un poco más compleja la modificación de las mismas.
  • Definición de Características: Además de la firma en sí, debemos definir parámetros adecuados como severidad, estado, sistema operativo y locación.
  • Tamaño: El tamaño máximo de una firma custom es de 1024 bytes

Luego, debemos seleccionar las opciones/motores que nos ayudaran con la detección de los eventos que disparen la firma. Son muchas las posibilidades para utilizar, por lo que les recomiendo ver un video donde explican 3 ejemplos concretos:

https://video.fortinet.com/latest/create-custom-ips-signatures-to-block-attacks

También tenemos un documento donde se explican todos y cada uno de los métodos disponibles, aunque no aplica para una lectura rápida, sino para buscar detalles particulares y opciones concretas.

https://kb.fortinet.com/kb/documentLink.do?externalID=custom-ips-application-control-signature-syntaxpdf

Y múltiples ejemplos en la KB, aunque dispersos:

https://kb.fortinet.com/kb/documentLink.do?externalID=FD32845

https://kb.fortinet.com/kb/documentLink.do?externalID=FD32342

https://kb.fortinet.com/kb/documentLink.do?externalID=FD39882

https://kb.fortinet.com/kb/documentLink.do?externalID=13742

¿Cómo funciona?

Comenzamos detallando la función de la firma “Dispositivo.Valido.Fabricante1”. Esta tiene una función concreta y es detectar la dirección MAC del dispositivo que oficia como cliente DHCP. Una vez que detecta una dirección que concuerda con la establecida en la firma, “marca” la sesión con un TAG especifico.

 

Luego, contamos con una segunda firma “Dispositivo.No.Permitido” cuya función concreta es la de verificar si aparece alguna nueva sesión que no haya sido “marcada” con el TAG indicado en la firma anterior.

 

 

Lo único que resta es crear un sensor de IPS que las incluya y que respete las acciones definidas en mismas (no modifique el comportamiento en cuanto a logging, captura de paquetes y acciones).

 

Contenidos relacionados

2 comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *