Snort y las expresiones regulares. (I Parte)

Ya vimos en la serie dedicadda a Snort, en uno de los capítulos dedicado a la creación de reglas Sistemas de Detección de intrusos y Snort. (II). Creación de Reglas (II). Opciones de las reglas. ,la opcion content. Recordemos:

Content busca un determinado patrón en el contenido del paquete. Es sensible a mayúsculas/minúsculas. Puede ser texto, binario o una mezcla de ambos. el contenido binario se encierra entre || y se representa en hexadecimal. Podemos negar también un contenido.

Pero hay más. Content entiende también de expresiones regulares mediante PCRE.

Sintaxis

Ysamos las expresiones regulares en Snort de la siguiente forma:

pcre:/expresion regular/;

Algunos ejemplos simples.

Empezamos por algo sencillo. supongamos que queremos crear una regla para detectar una conexión de un usuario con un determinado servidor FTP. Sabemos que el usuario usa una combinación de numeros para su password. combinación del tipo 1234, 11234, 234, etc. Es decir usa como primer caracter numérico el 1, luego 234 pero puede usar el 1 varias veces repetidas o no usarlo. Pero no lo sabemos exactamente. Crear la regla con una expresión normal sería algo complicado:

alert tcp any any > any 21 (msg: «Usuario conectado»; content: «1234»;)

ya que las combinaciones son muchas. La solución pasa por usar las expresiones regulares, quedando la regla de la siguiente forma:

alert tcp any any > any 21 (msg: «Usuario conectado»; content: «USER»; pcre: «/1*234/«;)

Podría ser también que sepamos que el pasword consta de una letra y 4 números cualquiera:

alert tcp any any > any 21 (msg: «Usuario conectado»; content: «USER»; pcre: «/[A-Z]\d\d\d\d/«;)

Con lo cual valdría A1234, V0000, V5432, etc.

Un usuario con password conteniendo cualquier caracter alfanumérico:

alert tcp any any > any 21 (msg: «Usuario conectado»; content: «USER»; pcre: «/ [a-zA-Z0-9_ ]/«;)

Usuario Administrador conectado:

alert tcp any any > any 21 (msg: «Usuario Administrador conectado»; content: «USER»; pcre: «/administrador/i«;)

La opción i hace que resulten válidas tanto mayúsculas com minúsculas.

Podemos detectar el trasiego de ciertos ejecutables:

alert tcp any any > any any (msg: «Alerta movimiento de ejecutables «; pcre: «/(\.exe|\.bat|\.com)/i«;)

Un usuario FTP con password contenido una cadena alfanumérica de longitud 10 caracteres:

alert tcp any any > any 21 (msg: «Usuario conectado»; content: «USER»; pcre: «/\D{10}/«;)

En las reglas Snort, se usan mucho las expresiones regulares. Ejemplos: dtección de Inyección SQL, Malware, virus, etc.

Enlaces sobre Expresiones regulares en general:

Sobre las expresiones regulares en general.

Definiciones de Carácter. Metacaracteres.


En el próximo capitulo dedicado a las expresiones regulares nos dedicaremos a las expresiones avanzadas, detección de cadenas URL, etc.

Esta entrada fue publicada en Seguridad y redes, Snort y etiquetada , , , , . Guarda el enlace permanente.

Deja un comentario