Snort: la URI en la alerta ante una respuesta

En artículos anteriores de nuestro compañero José Vila, éste nos explicaba el funcionamiento y configuración de una nueva funcionalidad de Snort, los “Extra Data”. Tras un tiempo utilizándolo descubrí una característica de la que no me había dado cuenta hasta el momento y que quiero compartir con vosotros ya que se le puede sacar bastante partido.

Esta característica es realmente impresionante ya que te permite ver información que antes no era posible —o al menos no de forma tan directa—, facilitando la identificación de ataques. Al activar la opción log_uri, el preprocesador almacenará la URI para la sesión completa y, si la alerta está configurada con las opciones “flow:from_server, established”, cuando salte esta alerta proveniente de la respuesta de un servidor, aparecerá la petición del cliente que la ha provocado.

Es decir, podremos ver la petición, por poner un ejemplo, que ha originado un error 500 en un servidor Tomcat. Con un ejemplo se verá más claro:

Gracias al campo Full URI podemos ver cómo la respuesta 500 del servidor se debió a una petición un tanto ‘extraña’. Si vemos la URI, se trata de una conocida webshell que han subido al servidor a la que se le pueden enviar comandos a través de la variable comment. En este caso, pretendían descargar el fichero 9.txt desde un servidor a través del comando wget. Afortunadamente, al no poder ejecutar el comando, el servidor devuelve un error 500, lo que ha hecho saltar la alerta.

Gracias a poder ver la URI que ha provocado el error se ha podido detectar este incidente que de otra forma no habría sido posible, ya que sólo se trataría de un error 500 que podríamos achacar a un error puntual del servidor.

Esta es sólo una muestra de la información que podemos sacar de ese campo en determinadas situaciones, lo que facilita la gestión de incidentes de seguridad, al menos en su fase de identificación.

Actualización 16/07/2012.

A petición de un lector, adjuntamos un pequeño parche que realizamos para mostrar las cabeceras extra en la vista detallada de BASE, como podéis ver en la imagen que acompaña este post. El parche se aplica en directorio de base con la siguiente orden (es necesario quitarle la extensión .txt antes):

patch -p1 -i base_1.4.5.1.patch

El parche únicamente permite visualizar las cabeceras extra en la vista detallada de una alerta. No se puede buscar por estas cabeceras, ni se visualiza nada en los listados de alertas. El parche se entrega tal cual está, no nos hacemos responsables del impacto que pueda suponer su uso en vuestros sistemas. A pesar de ello, nos gustaría que comentarais vuestras impresiones sobre el mismo, si os decidís a probarlo.

Comments

  1. Muy bueno , pa la saca del ids

  2. Any way you could share the BASE patch for extra_data support?

  3. Cyber Tao Flow,

    The patch has been added. Please let us know any comments or questions you have.

    Thanks.

  4. Hi Cyber Tao Flow,

    The patch adds the ability to show extra headers only in the detailed view of a single alert. No other view nor the search function has been changed. It’s quite simple but still useful.

    As Manuel said, let us know any comments or questions you have.