Cuando retomé el desarrollo de Patriot (herramienta que nació en 2004 y hasta 2010 su última actualización era del 2005), decidí añadir el NG con idea de darle un buen lavado de cara y actualizarlo con mas funcionalidad.
Finalmente la versión 1.0 fue una actualización orientada a que funcionase en los nuevos sistemas windows y una criba de funcionalidades que ya no tenían mucho sentido (temas de dialers y cosas así). Definitivamente aplacé las grandes mejoras para una rama 2.x, momento que, finalmente ha llegado.
Lanzamos la versión 2.0 ! En esta versión lo primero que llama la atención es que se ha 'internacionalizado', pasando tanto la web como la interface al inglés, no obstante hay un manual en perfecto castellano para facilitar el uso a quien no esté demasiado ducho en Inglés.
A nivel técnico las dos grandes mejoras que trae la versión 2.0 es que, empieza a hacer cosas con la red, en concreto hemos añadido una parte 'ARPWatch' que permite monitorizar (y bloquear) nuevos equipos que se conecten a la red en la que te encuentras. ¿Utilidades? a bote pronto puede servir para identificar intrusos en redes Wifi que se hayan conectado sin autorización.
En segundo lugar, y tal vez la mejora mas interesante, es la inclusión de un módulo NIDS muy al estilo de Snort (salvando las distancias). La idea de meter un NIDS principalmente viene motivada para poder detectar amenazas de tipo 0day o aquellas para las que aun no existan parches. En concreto ya hay una firma para detectar y bloquear ataques vía metasploit del famoso exploit 'css import' así como otras mas.
El objetivo NO es tener un montón de firmas con ataques del 2008 u orientados a sistemas Unix, la idea es manejar un conjunto de reglas actualizadas (y actualizables) que sirvan como defensa ante ataques que estén en su momento mas álgido.
Gestión de reglas NIDS en Patriot-NG
Durante la instalación se crean dos ficheros de configuración del NIDS, por un lado badtraffic.ini y por otro ownrules.ini la idea es que badtraffic.ini sea un fichero que *no* se deba tocar y que se actualice vía la interface de Patriot NG.
Como se puede ver en el tray, hay una opción llamada 'Update NIDS rules' que descargará la última versión del servidor y la instalará. Por tanto, no es aconsejable tocar ese fichero a mano ya que en la próxima actualización será sobre-escrito.
El fichero orientado a que insertes tus propias reglas es ownrules.ini y ahora toca explicar como se crean esas reglas:
Como podéis ver el formato de cada regla es muy sencillo:
[Texto descriptivo]= [Patron]
Así pues a la hora de hacer una regla lo primero es pensar un nombre que la asocie y buscar un patrón en ese ataque que sirva para identificarlo. El 'patrón' para la firma puede estar escrito o en ascii o en hexadecimal, así pues algo como:
Cookie access = document.cookie
Es identico a:
Cookie access =646f63756d656e742e636f6f6b6965
Ya que 646f63756d656e742e636f6f6b6965 es la representación en hexadecimal de document.cookie.
Lo preferible es que siempre se intente escribir la regla en ascii y usar hex para representar únicamente valores binarios.
A la hora de buscar patrones se pueden añadir varias cadenas de búsqueda uniéndolas con el simbolo +
Por ejemplo, si pretendemos buscar por un lado "document.cookie" y por otro "http" podemos crear la siguiente regla:
Cookie access = document.cookie+http
Que hará match en un string como este:
http://www.dominio.com/script.php?document.cookie
Ya que en esa cadena se encuentra por un lado "http" y por otro document.cookie. El orden da igual ya que se evalúa uno a uno, es decir, aunque en la regla el primer patrón de búsqueda sea document.cookie y luego http, si en el paquete viene cambiado, seguirá haciendo match.
Configuración de alertas por intento de conexión
Adicionalmente a badtraffic.ini y ownrules.ini hay otro fichero de configuración llamado destports.ini, este fichero define que puertos consideramos 'sospechosos' y sobre los que queremos que se nos avise si hay un intento de conexión. El formato es muy sencillo
[139]
[445]
[80]
[21]
[1243]
[5800]
[5900]
[6776]
[31337]
Como es obvio la forma de añadir o quitar puertos es sencilla, simplemente añadir al final [1234] y ese puerto sería monitorizado. Por cada cambio en la configuración hay que hacer un stop / start desde el tray
Consideraciones sobre rendimiento
Este punto es algo peliagudo ya que como es lógico, el rendimiento / uso de CPU va a variar en función del uso de la red que se le esté dando, el proceso NIDS se ejecuta con una prioridad baja, lo que en parte puede mitigar una saturación, no obstante, está claro que si tienes un montón de conexiones abiertas, descargando ficheros grandes, y todo eso en una red ethernet, seguramente el proceso consuma una cantidad importante de recursos e incluso es posible / probable que haya una perdida de paquetes a la hora de procesar tanto tráfico.
Dos últimos apuntes, por un lado decir que si quieres colaborar haciendo / revisando reglas, ponte en contacto con nosotros y te añadiremos a la lista de contribuidores.
Finalmente, dar las gracias al equipo de gente que ha colaborado desinteresdamente con las traducciones y documentación del proyecto:
John Marie
Jorge Sanz
Igor
Leandro Murgo
Jesús Moreno
Iván Salomon