Razorback (I)

Recientemente comentábamos entre los compañeros cómo han disminuido, en general, los ataques dirigidos a servidores, aumentando especialmente, por contra, los ataques al usuario. Dichos ataques están siendo cada vez más sofisticados ya que intentan explotar vulnerabilidades muy avanzadas a nivel de cliente, sobretodo a la hora de procesar ficheros “complejos”, como DOC o PDF.

Con ello, nos encontramos ante la dificultad de realizar una detección en tiempo real de ataques dirigidos a usuarios, ya que los sistemas inline deberían simular diversos escritorios para poder detectarlos, con diferentes navegadores y sistemas operativos; por ejemplo, añadiendo el hecho de que una inspección en profundidad de cada uno de los ficheros consume mucho tiempo de proceso.

Uno de mis compañeros, Josemi (archivo de autor, @J0SM1 ), nos habló de Razorback, un proyecto que aún está en fase de desarrollo pero que precisamente tiene por objetivo proporcionar un entorno de trabajo que se adecúe justo a lo que comentaba anteriormente: al panorama cambiante de amenazas en el que nos encontramos, y que nos permita gestionar de manera avanzada incidentes en tiempo real. Decidí profundizar más acerca de éste proyecto, y como me pareció interesante, en esta entrada entraré un poco en éste, en una posterior entrada comentaré acerca de la instalación y mostraré un ejemplo práctico de su funcionamiento.

Razorback es un proyecto de código abierto que está desarrollando el equipo VRT de Sourcefire y que pretende ofrecer un único framework de gestión avanzada de incidentes, escalable y extensible enfocado sobre todo a la detección de malware, especialmente de exploits 0-day.

Básicamente, está diseñado para ser un “marco de distribución” (dispatching framework), ya que distribuye los datos que va monitorizando hacia herramientas de análisis y detección de amenazas que realizan una inspección más en profundidad de esos datos, y todo esto manteniendo una gran base de datos forense en la que se almacena toda la información procesada. Al combinar diversas herramientas bajo un mismo marco de trabajo y punto de vista se acelera la creación de las contramedidas al respecto de esas amenazas, y disponer de toda esa información en una misma base de datos es muy útil de cara a detectar tendencias de ataques, y así prevenirlas, obtener informes sobre malware, o buscar por firmas de ataques en dicha base de datos.

Este framework está formado por una serie de elementos principales que trabajan por separado pero retroalimentándose de información los unos de los otros, como vemos en la siguiente imagen:

  • Dispatcher: elemento principal de nuestro framework, ya que se encarga de gestionar todas las comunicaciones entre el resto de elementos.
  • Base de datos que almacena información sobre cada evento, metadatos, información de la configuración, etc.
  • Nuggets: diversas herramientas que nos van a proporcionar diversas funcionalidades según el tipo que sean:
    • Collection Nugget: se encargan de capturar datos de la red y contactar con el Dispatcher para evaluar si esos datos ya han sido tratados:
      • Snort
    • Detection Nugget: analizan los datos que vienen desde los elementos de Collection Nugget. Contactan con el Dispatcher para indicarle si se genera cualquier tipo de alerta. Podemos encontrar:
      • PDF Dissector
      • JavaScript Analyzer
      • Shellcode Analyzer
      • Office Cat Nugget
      • SWF Nugget
      • ClamAV
    • Output Nugget: Reciben alertas desde el Dispatcher. Pueden enviar datos a otros sistemas, como por ejemplo a una interfaz de Maltego.
    • Intelligence Nugget: no generan alertas por sí mismos, sino que generan datos que podrían ser usados a posteriori para correlar eventos o analizar tendencias de ataques.
    • Correlation Nugget: interactúan directamente con la base de datos. Se encargan de proporcionar información sobre datos de tendencias, o hosts críticos, por ejemplo. Nos podrían ayudar a trazar, por ejemplo, un ataque a través de la red.
    • Defense update Nugget: ponen en marcha la actualización de diferentes dispositivos a petición del Dispatcher.
    • Workstation Nugget: interfaz donde se puede gestionar el resto de nuggets, consultar los eventos, alertas, etc.

El funcionamiento a grandes rasgos es el siguiente: Razorback monitoriza cierto tipo de tráfico (HTTP, Web o correo electrónico SMTP) y va enviando a diferentes nuggets datos replicados, con el fin de analizarlos en busca de vulnerabilidades 0-day o posibles códigos de explotación, registrándolo todo en la base de datos.

Básicamente estamos hablando de que al Dispatcher le llega un fichero, y escoge a qué nugget le tiene que enviar dicho fichero para que lo analice. Si por ejemplo un fichero embebe otro de diferente tipo, el fichero embebido se le devuelve al Dispatcher para que lo vuelva a redirigir al nugget apropiado. En la siguiente imagen se muestra un ejemplo del funcionamiento:

Los desarrolladores invitan a los usuarios a crear sus propios nuggets ya que en teoría es fácil integrarlos en el funcionamiento, y a probar la herramienta para hacer crecer este proyecto. Para la siguiente entrada os quiero hablar sobre la instalación de Razorbarck (que os adelanto que es un infierno) y mostraros un ejemplo práctico de su funcionamiento y cómo ver y manejar la información que nos ofrece.

Si os interesa el proyecto, no dudéis en visitar su página (http://sourceforge.net/apps/trac/razorbacktm/) y echarle un vistazo a esta presentación de Razorback en la Defcon del año pasado (y siguientes vídeos).