Proyecto Fin de Carrera - IIT Comillas · 2007-09-11 · (profundizando en el escaneo de puertos) y...

379
SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI) Javier Santos Ferreras 1 ÍNDICE ÍNDICE ......................................................................................................................................... 1 1. OBJETIVOS DEL PROYECTO ...................................................................................... 5 2. ALCANCE DEL PROYECTO ......................................................................................... 7 3. ESTADO DEL ARTE ...................................................................................................... 10 3.1. SISTEMAS DE DETECCIÓN DE INTRUSOS ....................................................... 11 3.1.1. SEGURIDAD PERIMETRAL .............................................................................. 13 3.1.2. CLASIFICACIÓN DE IDS ................................................................................... 18 3.1.3. IMPLANTACIÓN DE IDS ................................................................................... 20 3.2. ATAQUES INFORMÁTICOS E INTRUSIÓN EN REDES .................................... 26 3.2.1. FASES DE UN ATAQUE ..................................................................................... 26 3.2.2. ATAQUES CONOCIDOS .................................................................................... 35 3.3. MODELOS DISTRIBUIDOS .................................................................................. 49 3.3.1. MODELO CLIENTE-SERVIDOR........................................................................ 49 MODELO PEER-TO-PEER (P2P) .................................................................................... 52 3.3.2. MODELO DE AGENTES INTELIGENTES......................................................... 55 3.3.3. MIDDLEWARE ................................................................................................... 58 3.4. TECNOLOGÍA JAVA JADE ................................................................................... 59 3.4.1. MODELO DE ARQUITECTURA ........................................................................ 61 3.4.2. MODELO FUNCIONAL ..................................................................................... 63 3.5. SNORT ..................................................................................................................... 72 3.5.1. MODOS DE FUNCIONAMIENTO ..................................................................... 73 3.5.2. COMPONENTES DE SNORT ............................................................................. 74 4. DESCRIPCIÓN FUNCIONAL....................................................................................... 85 4.1. DOMINIO DEL SISTEMA ...................................................................................... 87 4.1.1. DIAGRAMA DE DOMINIO................................................................................. 87 4.1.2. DEFINICIÓN DE CONCEPTOS......................................................................... 88 4.2. AGENTES DEL SISTEMA ................................................................................... 106 4.2.1. Agente RELOJ ................................................................................................... 107 4.2.2. Agente SENSOR................................................................................................. 109 4.2.3. Agente INTÉRPRETE ........................................................................................ 113

Transcript of Proyecto Fin de Carrera - IIT Comillas · 2007-09-11 · (profundizando en el escaneo de puertos) y...

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

1

ÍNDICE

ÍNDICE......................................................................................................................................... 1

1. OBJETIVOS DEL PROYECTO...................................................................................... 5

2. ALCANCE DEL PROYECTO ......................................................................................... 7

3. ESTADO DEL ARTE...................................................................................................... 10

3.1. SISTEMAS DE DETECCIÓN DE INTRUSOS....................................................... 11

3.1.1. SEGURIDAD PERIMETRAL .............................................................................. 13

3.1.2. CLASIFICACIÓN DE IDS................................................................................... 18

3.1.3. IMPLANTACIÓN DE IDS ................................................................................... 20

3.2. ATAQUES INFORMÁTICOS E INTRUSIÓN EN REDES.................................... 26

3.2.1. FASES DE UN ATAQUE..................................................................................... 26

3.2.2. ATAQUES CONOCIDOS .................................................................................... 35

3.3. MODELOS DISTRIBUIDOS .................................................................................. 49

3.3.1. MODELO CLIENTE-SERVIDOR........................................................................ 49

MODELO PEER-TO-PEER (P2P) .................................................................................... 52

3.3.2. MODELO DE AGENTES INTELIGENTES......................................................... 55

3.3.3. MIDDLEWARE ................................................................................................... 58

3.4. TECNOLOGÍA JAVA JADE................................................................................... 59

3.4.1. MODELO DE ARQUITECTURA ........................................................................ 61

3.4.2. MODELO FUNCIONAL ..................................................................................... 63

3.5. SNORT..................................................................................................................... 72

3.5.1. MODOS DE FUNCIONAMIENTO ..................................................................... 73

3.5.2. COMPONENTES DE SNORT ............................................................................. 74

4. DESCRIPCIÓN FUNCIONAL....................................................................................... 85

4.1. DOMINIO DEL SISTEMA...................................................................................... 87

4.1.1. DIAGRAMA DE DOMINIO................................................................................. 87

4.1.2. DEFINICIÓN DE CONCEPTOS......................................................................... 88

4.2. AGENTES DEL SISTEMA ................................................................................... 106

4.2.1. Agente RELOJ ................................................................................................... 107

4.2.2. Agente SENSOR................................................................................................. 109

4.2.3. Agente INTÉRPRETE ........................................................................................ 113

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

2

4.2.4. Agente INTÉRPRETE ATTEMPTED-ADMIN................................................... 115

4.2.5. Agente INTÉRPRETE ATTEMPTED-DOS........................................................ 117

4.2.6. Agente INTÉRPRETE ATTEMPTED-RECON .................................................. 119

4.2.7. Agente INTÉRPRETE BAD-UNKNOWN .......................................................... 121

4.2.8. Agente INTÉRPRETE OTROS........................................................................... 123

4.2.9. Agente INTÉRPRETE UNKNOWN-CLASS....................................................... 125

4.2.10. Agente ANALISTA ............................................................................................ 127

4.2.11. Agente ANALISTA ATTEMPTED-ADMIN....................................................... 130

4.2.12. Agente ANALISTA ATTEMPTED-DOS............................................................ 132

4.2.13. Agente ANALISTA ATTEMPTED-RECON ...................................................... 134

4.2.14. Agente ANALISTA BAD-UNKNOWN............................................................... 136

4.2.15. Agente ANALISTA OTROS............................................................................... 138

4.2.16. Agente ANALISTA UNKNOWN-CLASS ........................................................... 140

4.2.17. Agente SUPERVISOR....................................................................................... 142

4.3. COMPORTAMIENTOS ........................................................................................ 146

4.3.1. PERIÓDICO...................................................................................................... 147

4.3.2. CÍCLICO ........................................................................................................... 148

4.3.3. RECIBIR NOTIFICACIONES ........................................................................... 149

4.3.4. SINCRONIZAR .................................................................................................. 152

4.3.5. LIMPIAR BD ..................................................................................................... 154

4.3.6. OBTENER ANOMALÍAS ................................................................................... 156

4.3.7. ANALIZAR ANOMALÍAS .................................................................................. 160

4.3.8. ANALIZAR ANOMALÍAS ATTEMPTED-ADMIN ............................................. 169

4.3.9. ANALIZAR ANOMALÍAS ATTEMPTED-DOS.................................................. 172

4.3.10. ANALIZAR ANOMALÍAS ATTEMPTED-RECON ........................................... 175

4.3.11. ANALIZAR ANOMALÍAS BAD-UNKNOWN.................................................... 178

4.3.12. ANALIZAR ANOMALÍAS OTROS.................................................................... 181

4.3.13. ANALIZAR ANOMALÍAS UNKNOWN-CLASS ................................................ 184

4.3.14. DIAGNOSTICAR RESÚMENES ...................................................................... 187

4.4. CLASES DE LA INTERFAZ GRÁFICA............................................................... 215

4.4.1. MODELO DE TABLA........................................................................................ 215

4.4.2. VENTANA RELOJ ............................................................................................. 217

4.4.3. VENTANA AGENTE.......................................................................................... 220

4.4.4. VENTANA AGENTE AVANZADO..................................................................... 223

4.4.5. VENTANA AGENTE ANALISTA ....................................................................... 226

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

3

4.4.6. VENTANA DETALLES ...................................................................................... 231

4.4.7. VENTANA AGENTE SUPERVISOR.................................................................. 234

4.4.8. LEYENDA.......................................................................................................... 239

4.4.9. LIENZO SUPERVISOR ..................................................................................... 240

4.4.10. VENTANA DETALLES CON GRÁFICO Y TABLA.......................................... 244

4.4.11. VENTANA DETALLES CON TABLA ............................................................... 248

4.4.12. LIENZO DETALLES ........................................................................................ 252

4.5. CLASES DE LA CAPA DE PERSISTENCIA ....................................................... 256

4.5.1. EVENTO DAO................................................................................................... 256

4.5.2. ANOMALÍA DAO .............................................................................................. 259

4.6. CLASES DE FUNCIONES DE CÁLCULO .......................................................... 263

4.6.1. FUZZY ............................................................................................................... 263

4.6.2. CONTROL BORROSO ...................................................................................... 264

5. ARQUITECTURA DEL SISTEMA IDSAI................................................................. 277

5.1. ARQUITECTURA JAVA JADE MULTIAGENTE .............................................. 277

5.2. ARQUITECTURA DEL SISTEMA IDSAI ........................................................... 279

5.2.1. MODELO DE ARQUITECTURA EN CAPAS .................................................. 281

5.2.2. MODELO DE ARQUITECTURA IDSAI ........................................................... 283

5.2.3. MODELO DE COMPORTAMIENTOS ............................................................. 290

6. DISTRIBUCIÓN DEL PROYECTO IDSAI ............................................................... 293

6.1. CARPETA DE PROYECTO IDSAI....................................................................... 293

6.2. CARPETA DE INSTALABLES INSTALACION IDSAI ..................................... 298

7. MANUAL DE INSTALACIÓN DEL SISTEMA IDSAI............................................ 302

7.1. INSTALACIÓN DE LA MÁQUINA VIRTUAL JAVA........................................ 303

7.2. INSTALACIÓN DEL IDS SNORT........................................................................ 304

7.3. INSTALACIÓN DEL SGBD MYSQL ................................................................... 311

7.4. INSTALACIÓN DE LA PLATAFORMA IDSAI .................................................. 317

8. MANUAL DE USO DEL SISTEMA IDSAI................................................................ 318

8.1. CONFIGURACIÓN DE LOS SENSORES............................................................ 319

8.2. ARRANQUE DE LOS AGENTES......................................................................... 320

8.3. EXPLOTACIÓN DEL SISTEMA.......................................................................... 326

8.3.1. INTERFAZ DEL AGENTE SUPERVISOR ........................................................ 327

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

4

8.3.2. INTERFAZ DEL AGENTE ANALISTA.............................................................. 342

8.3.3. INTERFAZ DEL AGENTE INTÉRPRETE......................................................... 349

8.3.4. INTERFAZ DEL AGENTE RELOJ.................................................................... 352

9. PLANIFICACIÓN Y PRESUPUESTO DEL PROYECTO....................................... 355

9.1. ORGANIZACIÓN DEL PROYECTO ................................................................... 355

9.2. METODOLOGÍA Y RECURSOS.......................................................................... 358

9.3. PLANIFICACIÓN DE TAREAS ........................................................................... 361

9.4. PRESUPUESTO .................................................................................................... 368

10. CONCLUSIONES.......................................................................................................... 370

11. BIBLIOGRAFÍA............................................................................................................ 374

12. SIGLAS Y ACRÓNIMOS............................................................................................. 376

13. ANEXOS......................................................................................................................... 379

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

5

1. OBJETIVOS DEL PROYECTO

El proyecto IDSAI (IDS, Sistema de Detección de Intrusos, basado en Agentes

Inteligentes) aborda el tema de la detección de intrusiones en redes de ordenadores, y en

particular, los Sistemas de Detección de Intrusos como solución a esta problemática.

Hoy en día, la protección de las redes de computadores es tan importante como la de los

equipos que se conectan a ellas, y en este aspecto los Sistemas de Detección de Intrusos

cobran una importancia capital.

Este proyecto trata de aportar soluciones acerca de estas cuestiones y para ello se

fijan los siguientes objetivos:

- Desarrollar una arquitectura distribuida sobre un Sistema de Detección de

Intrusos que permita la introducción de nuevos métodos heurísticos de

detección y conocimiento de diagnóstico de una forma sencilla y sin cambiar

la estructura de la distribución.

- Diseñar una interfaz gráfica de usuario sencilla y funcional que facilite al

usuario el manejo del sistema.

- Optimizar los resultados del Sistema de Detección de Intrusos, reduciendo

los falsos positivos y falsos negativos.

- Implantar el sistema desarrollado en una red de computadores real.

- Economizar los recursos dedicados a la seguridad informática en redes con la

utilización de un producto barato y eficaz.

- Aportar nuevas técnicas y conocimientos que contribuyan a mejorar el

desarrollo tecnológico de la sociedad.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

6

- Incrementar la confianza de los administradores de redes en los Sistemas de

Detección de Intrusos, como herramienta útil en la seguridad informática.

- Concienciar a la sociedad informática de los problemas que pueden

plantearse si no se utilizan sistemas adecuados de seguridad.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

7

2. ALCANCE DEL PROYECTO

La consecución de los objetivos planteados en el proyecto IDSAI, se llevará a

cabo a través de distintos procedimientos:

- Se parte de un Sistema de Detección de Intrusos ya existente. En este

proyecto se ha elegido el IDS Snort, por gozar de una gran confianza entre

los usuarios, se adapta a las características del proyecto y es de libre

distribución.

- Se toma como modelo de arquitectura distribuida el paradigma de agentes

inteligentes. Para ello se toma el middleware JADE como base de su

desarrollo por ser una tecnología estable, bien documentada y de libre

distribución.

- Para el diseño de la interfaz gráfica del sistema se opta por un esquema de

ventanas interactivas, asociadas a cada uno de los agentes, que muestren los

resultados del IDS de forma visual y permitan interactuar con cada uno de

ellos.

- Para optimizar los resultados del IDS se facilita la información necesaria

para la adecuada distribución de sensores en la red y su configuración

individual.

- La primera distribución del sistema incluirá los parámetros heurísticos y

clases necesarias para la evaluación de la criticidad del sistema en base a

ataques de tipo escalada de privilegios, negación de servicio, reconocimiento

(profundizando en el escaneo de puertos) y situaciones anormales en general.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

8

- Se aportan heurísticas en forma de árbol de decisión y controladores

borrosos para la reducción de falsos positivos y falsos negativos disparados

por el Sistema de Detección de Intrusos.

- Se utiliza un entorno de pruebas para la verificación del correcto

funcionamiento del sistema en cada una de las versiones del aplicativo.

- La implantación y uso del sistema se facilita mediante manuales que se

proporcionan con la distribución del proyecto.

- Tanto el software base del proyecto (IDS, Gestor de bases de datos,

middleware...) como las herramientas de desarrollo utilizadas (lenguaje y

entorno de programación, herramientas de diagramación, herramientas de

documentación...) son gratuitos y de libre distribución.

- La investigación realizada sobre los temas de seguridad informática,

Sistemas de Detección de Intrusos y arquitecturas software distribuidas

aporta nuevos conocimientos cuya aplicación mejora el rendimiento de los

elementos de partida.

- Los Sistemas de Detección de Intrusos, que en un principio tuvieron una

gran aceptación, no gozan actualmente de una gran confianza por parte de

sus usuarios. El presente proyecto intenta que los IDS recuperen la

credibilidad perdida, proponiendo una solución eficaz.

- Los administradores de red deben concienciarse de la utilidad de los

Sistemas de Detección de Intrusos para la seguridad informática. Su mayor

eficacia se alcanza combinándolos adecuadamente con otros componentes de

seguridad, como los Firewall.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

9

- Los métodos de seguridad serán eficaces siempre y cuando los usuarios

conozcan los peligros a los que están expuestos los sistemas informáticos a

acciones malintencionadas llevadas a cabo por agentes externos a la red o

debido al uso inadecuado de los recursos. En el proyecto se describen los

ataques y errores más frecuentes que pueden llegar a comprometer la

seguridad de una red de computadores.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

10

3. ESTADO DEL ARTE

Hoy en día son conocidos los constantes ataques que sufren los servidores y

redes de computadores de las compañías más importantes del mundo. El robo y/o

manipulación de la información almacenada en un servidor corporativo puede provocar

graves pérdidas a una empresa y grandes beneficios a quien se lucre de ello. ¿Qué

ventaja de negocio supondría para una organización ver los equipos informáticos de sus

competidoras completamente colapsados e inservibles durante horas? ¿Qué precio tiene

la confidencialidad de las comunicaciones de una importante compañía? Lo que

comúnmente conocemos como ataques informáticos supone una gran preocupación para

los administradores de red de cualquier organización que disponga de nuevas

tecnologías de la información.

Actualmente la comunicación entre computadores ha cobrado una importancia

vital en el mundo de la informática y el volumen de redes conectadas entre sí a lo largo

del mundo supera cualquier expectativa inicial. El valor de los datos corporativos que

una empresa mueve a lo largo de sus canales de información es incalculable y por ello

las compañías invierten gran cantidad de recursos económicos y humanos en preservar

su seguridad.

En los siguientes apartados se hará referencia a diversos temas de seguridad

informática: Sistemas de Detección de Intrusos y seguridad perimetral, vulnerabilidades

de los sistemas informáticos y tipos de ataques que una entidad maliciosa puede

perpetrar contra ellos. Más adelante se hará una introducción a los modelos distribuidos

que hoy en día se implantan en las aplicaciones multiplataforma y en particular el

modelo JADE multiagente inteligente. Para terminar se hablará del IDS concreto

utilizado como base del proyecto IDSAI: Snort.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

11

3.1. SISTEMAS DE DETECCIÓN DE INTRUSOS

Un Sistema de Detección de Intrusos o IDS (Intrusion Detection System) es

un hardware, software o combinación de ambos que monitoriza la red de un sistema

informático en busca de actividad maliciosa [KOZI03]. Un IDS dispara alarmas a

tener en cuenta por el administrador de la red advirtiendo la presencia de actividad

intrusa, inusual, no autorizada o potencialmente dañina en el momento en que se

está produciendo, lo que permite percatarse de una situación en la que la seguridad

aparente de la red no es tal. Hay que destacar que un IDS se limita a notificar de

situaciones anómalas y/o peligrosas en la red, y por tanto no interviene activamente

en su prevención (lo que deberá llevar a cabo el supervisor de la red aplicando las

medidas correspondientes).

Existen gran cantidad de productos IDS, ajustables a las necesidades

específicas de cualquier infraestructura, ya sea a nivel de rendimiento (más rápido,

con capacidades de gestión centralizada, etc.) o a nivel de configuración y

mantenimiento (más o menos configurable, más o menos simple de usar, etc.).

Entre el software de libre distribución podemos encontrar múltiples

herramientas de este tipo, herramientas que presumen de ser fiables y

frecuentemente actualizables dada la masiva colaboración de la comunidad de

usuarios que libremente aportan su conocimiento a la causa. Constantemente hay

gente programando nuevos plugins y funcionalidades a estas aplicaciones que son

supervisadas por un organismo dedicado para garantizar su calidad.

Algunos de los IDS de libre distribución más conocidos son [DIAZ05]:

o Snort: Este es el IDS más famoso y potente de cuantos hay en el

mercado. Está basado en análisis de patrones, aunque poco a poco

empieza a implementar otras funcionalidades como el análisis

estadístico (SPADE). Puede ser implantado tanto como NIDS como

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

12

NNIDS. Requiere conocimientos avanzados de seguridad y sobre

ataques e intrusión en redes, ya que su configuración en detalle es

muy compleja. Este IDS se tratará en detalle más adelante, ya que es

el sistema de detección de intrusos en el que se basa el proyecto

IDSAI.

o Shadow: Menos extendido que el anterior, representa otra filosofía de

IDS. Está basado en análisis de tráfico, ya que combina tcpdump para

recolectar todos los paquetes, ssh para enviar esos paquetes a un

servidor Web Apache, donde son procesados por varios filtros

tcpdump y scripts Perl que generan una página html donde se puede

ver el resultado de forma simple y resumida. Permite comparar

capturas para buscar diferencias significativas. Este tipo de IDS

requiere más trabajo que los basados en patrones, pero permite

localizar nuevos ataques desconocidos e identificar la firma.

o Dragon: IDS dedicado a entornos Linux/Unix. Tiene 3 componentes:

NIDS, HIDS y un monitor que permite recopilar la información de

ambos en una misma interfaz. Tiene un alto grado de automatización

y es sencillo de configurar.

Existen numerosos desarrollos comerciales de IDS. La imagen de confianza

que aporta una marca conocida en aplicaciones de seguridad informática hace que

muchos usuarios se decanten por estos productos. En el proyecto IDSAI no se han

investigado herramientas IDS comerciales y el autor del presente documento se

abstiene de citar ejemplos.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

13

3.1.1. SEGURIDAD PERIMETRAL

La teoría de la seguridad perimetral trata de solucionar el problema de la

seguridad de las redes corporativas. Esta teoría propone la disposición

estratégica de los equipos en subredes debidamente protegidas de accesos

externos no autorizados mediante Firewalls. Un Firewall es un dispositivo que

filtra las comunicaciones que entran y salen de una subred, cerrando todos los

puertos innecesarios y bloqueando por tanto los servicios no autorizados. Sin

duda es una herramienta fundamental para el control del tráfico en una red de

computadores, pero no es suficiente para garantizar la seguridad del sistema. Un

Firewall representa una puerta que prohíbe el paso a todas aquellas

comunicaciones no permitidas, pero que deja pasar aquellas necesarias para el

usuario al otro lado del dispositivo. Aunque sólo se permitan los servicios

básicos y teóricamente seguros, existen debilidades y agujeros de seguridad ante

los que un Firewall no puede hacer nada, ya que es incapaz de evitar que un

atacante utilice un servicio autorizado para perpetrar una acción maliciosa. Si la

seguridad que proporciona un Firewall se ve comprometida es necesario

disponer de algún sistema que permita al administrador de red ser capaz de

detectar esta situación [DIAZ05].

El IDS y el Firewall son por tanto herramientas complementarias. Sin un

sistema que advierta de la presencia de una actividad sospechosa y no autorizada

que se haya saltado el filtro del Firewall, un administrador podría creer que su

red está bien protegida cuando realmente no es así. Las alarmas del IDS

permiten configurar el Firewall que complementa de una manera más eficiente y

tomar acciones reactivas eficaces en una situación en que se haya producido un

daño en la red. Otra situación que alarmantemente es de las más frecuentes en

temas de seguridad informática es el ataque desde dentro de la red, por parte de

los propios usuarios autorizados, que bien por ignorancia o por malicia, ponen

en peligro los recursos de la empresa (según los estudios alrededor de un 80%

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

14

del total de ataques proceden del interior). Frente a estas circunstancias, un

Firewall que controle el tráfico hacia fuera de la red es inútil, por lo que el único

recurso en el que confiar es el IDS que alerte de esta situación de modo que un

supervisor pueda tomar medidas internas en la compañía.

Un IDS no impide la consecución de un ataque, pero permite alertar de

su presencia. Las capacidades de un IDS permiten realizar múltiples actividades

relacionadas con la seguridad informática como son las siguientes [DIAZ05]:

o Monitorización y análisis de las actividades de los usuarios. Como se

ha descrito anteriormente, una gran proporción de los ataques

informáticos son perpetrados por parte de los propios usuarios

autorizados de la red. Un control de sus actividades (respetando la

intimidad de las personas) permite saber los servicios que utilizan y

el uso que hacen de ellos.

o Auditoria de configuraciones y vulnerabilidades de sistemas. La

detección de tráfico permite descubrir sistemas con servicios

habilitados innecesarios o no autorizados, que de otra manera

pasarían inadvertidos. El descubrimiento de una vulnerabilidad del

sistema permite tomar medidas al respecto, eliminándola o si no es

posible, poniendo especial atención en ella.

o Asegurar la integridad de los sistemas críticos. El análisis de tráfico

permite saber si un determinado sistema ha sido atacado (o esta

intentando ser atacado). De esta forma podemos estar seguros (en la

medida de las posibilidades del IDS) de que los sistemas están libres

de ataques, ya que nunca se puede garantizar al 100% la eficacia del

Firewall.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

15

o Análisis estadístico de ataques. Dado que la comparación de ataques

contra una base de datos es algo limitado, existen herramientas

heurísticas de búsqueda de patrones de ataques (como hacen los

sistemas Antivirus con el código malicioso). Sistemas basados en

redes neuronales y demás métodos de inteligencia artificial se aplican

cada vez con más frecuencia para este tipo de fines.

o Análisis de tráfico anormal. El tráfico autorizado que podemos

considerar normal en nuestras funciones de negocio, puede dejar de

serlo en determinadas circunstancias (conexiones fuera de las horas

de trabajo, tráfico en segmentos de backup en estado de normalidad,

accesos frecuentes a equipos de uso excepcional...). Un análisis

detallado del tráfico puede revelar una máquina comprometida o la

situación de un usuario con su password al descubierto.

o Auditorias del entorno. Un IDS tras un Firewall es una excelente

herramienta para determinar qué tipos de ataques pasan a través del

Firewall (y así comprobar su funcionamiento) y cuales de ellos tienen

éxito (y así comprobar la eficacia de los elementos menores de

seguridad: Firewalls de host y Antivirus).

Las ventajas del uso de IDS junto a Firewalls adecuadamente

configurados son claras, y se ha hecho hincapié en ellas. Pero los IDS tienen

también grandes desventajas, que se deben tener en cuenta para no confiar

excesivamente en ellos [DIAZ05]:

o Un IDS no puede hacer nada frente a ataques nuevos y que por tanto

es incapaz de reconocer como tales. La actualización de la base de

reglas de reconocimiento de patrones de un IDS es una importante

actividad rutinaria de su mantenimiento.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

16

o Un IDS no puede detectar ataques en comunicaciones cifradas

extremo-extremo, ya que es incapaz de reconocer patrones en un

contenido ilegible.

o Un IDS no puede compensar mecanismos de autenticación débiles. Si

es sencillo obtener usuarios y passwords legales y acceder con ellos

al sistema, el IDS será incapaz de alertar del acceso no autorizado.

o Un IDS no puede automatizar la investigación de los incidentes. Es

necesaria la intervención humana (de un analista cualificado) para

descubrir la naturaleza real del ataque, limpiar sus efectos, descubrir

al atacante y protegerse para el futuro.

o Un IDS mal configurado puede dar lugar a errores y confusiones

típicas de este tipo de sistemas [KOZI03]:

� Falsos positivos: Alertas disparadas en condiciones normales.

Este tipo de situación es indeseable, debido a que hace que el

administrador de red se alarme innecesariamente y termine

por ignorar alertas reales pensando que se trata de este tipo de

errores. Esta situación se da en IDS configurados con

excesivo nivel de detalle y propensos a alertar de la más

mínima variación respecto a la normalidad.

� Falsos negativos: Ausencia de alertas en condiciones de

ataque y tráfico no autorizado. Este tipo de error es peor que

el anterior, ya que el IDS no realiza su función de avisar de la

situación, lo que implica que el ataque pase desapercibido y

por tanto, no se tomen medidas adecuadas y eficaces a tiempo

de evitar males mayores. Esta situación se da en IDS no

actualizados o configurados con bajo nivel de detalle y

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

17

propensos a alertar solamente situaciones muy claras, que los

hackers más experimentados suelen saber prevenir.

o El párrafo anterior deja constancia de lo importante que es la

adecuada configuración de un IDS, cosa que no es trivial y requiere

de un gran conocimiento al respecto y experiencia en el campo de la

seguridad informática. Puesto que no está al alcance de cualquiera, se

recomienda no confiar en un sistema de este tipo si no se puede

garantizar su correcto funcionamiento.

o El software de un IDS es muy pesado. Hacer pasar todo el tráfico de

red por un juego de reglas de inferencia para disparar una alerta por

cada captura sospechosa requiere de una gran capacidad de

procesamiento por parte del hardware de soporte para que no se

pierda ningún paquete. Instalar un sistema IDS en un punto de paso

del tráfico de red (por ejemplo en un router o en un Firewall) es la

mejor manera para garantizar que no se deja de analizar ningún

paquete de red. En la práctica se desaconseja colocar un IDS en un

lugar propenso a convertirse en cuello de botella debido a que

analizar en detalle cada uno de los paquetes antes de dejarlos pasar

introduce un retardo indeseable en cualquier red de computadores. En

futuros capítulos se abordará la cuestión de cómo y dónde colocar

sistemas IDS en redes de diferentes tipos.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

18

3.1.2. CLASIFICACIÓN DE IDS

Existen tres tipos básicos de IDS según el fin para el cual están diseñados

[KOZI03]:

o Network Intrusion Detection System (NIDS): Son instalados en un

segmento de red en concreto, del cual pueden absorber todo el tráfico

(escuchan en modo promiscuo) y analizarlo en tiempo real para

disparar las alertas correspondientes. Cuanto más transparente sea su

funcionamiento y menos interfiera en el tráfico de red, mejor.

o Network Node Intrusion Detection System (NNIDS): Son instalados

en un host en concreto, analizando todo el tráfico destinado a dicho

equipo. Se suelen utilizar sobre equipos críticos de la compañía

propensos a ser objetivo de ataques o en un HoneyPot (host

débilmente protegido que sirve de trampa para hackers desviando su

atención de los equipos más importantes).

o Host Intrusion Detection System (HIDS): Son instalados en un host

en concreto y permiten tomar una instantánea del sistema, para

comprobar mas adelante la integridad de la máquina. La diferencia

con los NNIDS es que no tienen en cuenta las comunicaciones, sino

que buscan rastros de un ataque en el propio equipo. Permiten saber

si un ataque ha tenido éxito y cuales han sido las consecuencias a

posteriori.

El sistema IDSAI se basa en NIDS, por lo que en adelante será el modelo

de IDS al que se hará referencia.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

19

Los IDS también se pueden clasificar en las siguientes categorías según

su forma de detectar las intrusiones [KOZI03]:

o Búsqueda de patrones (Signature detection): Los IDS de este tipo

disponen de una base de datos que contiene patrones o firmas de

ataques conocidos, y cada paquete que se analiza se contrasta con esa

base de conocimiento. Cuanto mayor sea la lista de firmas conocidas,

más tipos de ataques se podrán detectar, pero más costoso

computacionalmente será para cada paquete, pudiéndose perder

alguno si el ritmo de análisis no soporta el del flujo de información.

o Análisis de tráfico (Anomaly detection): Los IDS de este tipo están

configurados para conocer la situación "normal" de la red. Recolectan

todo el tráfico y crean estadísticas en tiempo real del estado de la red.

Si en un momento determinado, la estadística se sale de la

normalidad, se genera la alerta para que el analista lo investigue.

o Verificación de integridad: Es el sistema que utilizan los HIDS. Se

comprueban determinados aspectos de un equipo (checksum de

ficheros críticos, registro del sistema, logs...). Permite saber a

posteriori, que tipos de ataques se han perpetrado en un sistema y los

daños que han producido.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

20

3.1.3. IMPLANTACIÓN DE IDS

Hasta aquí se ha pretendido dar una visión general de los IDS: sus

funcionalidades, utilidad, ventajas e inconvenientes. Un IDS es un dispositivo

que complementa las medidas de seguridad de la red, muy útil para tomar

medidas concretas frente a una situación de crisis, e incluso para poder preverla.

Este punto hace hincapié en la dificultad que conlleva el uso de este tipo

de dispositivos, desde la necesidad de conocimientos avanzados de seguridad

para configurarlos correctamente y saber interpretar sus alertas hasta la

experiencia necesaria en seguridad perimetral para saber ubicarlos en la red de

forma que den un resultado eficaz.

La implantación de un IDS requiere una serie de pasos a seguir para

hacerlo de forma eficiente [KOZI03]:

1. Identificación de necesidades: Se debe determinar la importancia de

la información. Cuantificar en términos económicos y subjetivos

(confianza pública en la compañía, respeto por parte de otras

empresas...) las pérdidas en que se incurriría si los datos se perdieran

y/o fueran robados. Esta cuantificación permitirá valorar si resulta

rentable implantar el sistema o no y determinar la probabilidad de

sufrir un ataque por parte de un hacker interesado en obtener

beneficio. Si la red ya ha estado bajo ataque anteriormente, se

conocen sus vulnerabilidades y ha mostrado signos de debilidad es

probable que pueda volver a sufrir un ataque. Determinar el nivel de

seguridad a implantar en la red es necesario para establecer un plan

de seguridad concreto.

2. Obtener conocimientos sobre la detección de intrusos: Es necesario

tener unas nociones básicas de lo que puede hacer un IDS y para qué

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

21

sirve, o de lo contrario se tendría una falsa ilusión de seguridad. El

conocimiento sobre ataques informáticos y sobre el estado del arte en

temas de seguridad es fundamental para poder interpretar

adecuadamente los resultados del IDS.

3. Obtener conocimientos sobre la infraestructura de red: Una red

debidamente estructurada en diferentes segmentos protegidos con

Firewalls es más segura que una mal administrada. La distribución de

sensores en las diferentes subredes dará lugar a una variedad más rica

y precisa de análisis.

4. Escoger el IDS más adecuado: Se debe elegir el sistema IDS que

mejor se ajuste a las necesidades de protección de la red,

condicionado su complejidad al nivel de conocimiento por parte del

administrador/analista. Evaluar varios IDS simulando baterías de

ataques en un entorno de pruebas similar a la red sobre la que

implantar definitivamente el producto requiere trabajo y una gran

pericia, pero es el mejor método para decantarse por un IDS en

particular.

5. Especificar una política de seguridad: Es fundamental contar con un

protocolo de actuación concreto frente a una situación de alerta por

parte del IDS, ya que de nada sirve ser capaz de detectar ataques si

luego no se sabe que hacer en respuesta. Debe contarse con una

documentación completa sobre lo que hacer en cada situación, de

forma que no surjan dudas sobre el plan de acción. Esta

documentación es específica de cada organización y no es trivial

realizarla, por lo que debe ser creada por expertos en seguridad y

planes de emergencia. El administrador de red encargado de seguir

esta política también deberá tener conocimientos avanzados de este

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

22

tipo para poder intervenir rápida y eficazmente sin dudar en ninguna

situación.

La implantación física del IDS en la red es muy importante. De ella

dependerán las características que deberá tener y el rendimiento que se puede

esperar. En la figura 1 se muestra un ejemplo tipo de red bien estructurada

destacando los lugares estratégicos más comunes donde disponer de sistemas

IDS [DIAZ05]:

Fig. 1: Ejemplo configuración de red.

Aunque dependiendo del entorno se pueden encontrar otras ubicaciones

posibles, los puntos más típicos donde colocar un IDS (puntos rojos en la

imagen) son:

Red corporativa

Subred servidores

Subred usuarios

Internet

Red corporativa externa

DMZ

4

5

3 2 1

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

23

1. Entre la Extranet e Internet: Para controlar el tráfico que sale/entra de

la red externa de la compañía es imprescindible contar con un sensor

IDS en el enlace VPN por el que se accede a través de Internet a la

red corporativa.

2. En la DMZ: La zona desmilitarizada es el segmento de red entre el

firewall de la red corporativa e Internet. En él se suelen ubicar los

servidores de acceso público que no albergan información importante

y no requieren unas medidas de protección y seguridad exhaustivas

(servidores web, por ejemplo). Por esta razón suelen ser objetivo de

una primera aproximación a la red por parte de hackers y por tanto su

vigilancia debería considerarse en todo momento.

3. Tras el Firewall: Esta suele ser la ubicación característica de un IDS,

puesto que permite analizar todo el tráfico que entra en la red (ya

filtrado por el Firewall). De la misma forma, permite comprobar que

el Firewall funciona incorrectamente, si este ha dejado pasar tráfico

no autorizado. Para comprobar el buen funcionamiento del Firewall

es muy interesante comparar los resultados de este IDS con los que

aporta el sensor ubicado en la DMZ.

4. En el acceso a servidores: La información estratégica del negocio se

encuentra almacenada en los servidores de la empresa. La vigilancia

en este punto es algo fundamental.

5. En el acceso a usuarios: Este sensor sirve para detectar ataques a

máquinas de usuario, que pueden almacenar información de negocio

y suelen tener acceso privilegiado a los servidores de la compañía.

Los ataques que se inicien en el interior de la organización también se

detectarán más rápidamente si consideramos la instalación de este

IDS.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

24

Como se puede ver, disponer de varios sensores IDS en distintos lugares

estratégicos de la red es fundamental para completar el sistema de capas de

seguridad que componen las subredes y Firewalls de la empresa. Tomar

decisiones en respuesta a alertas generadas por IDS concretos será más rápido y

eficaz que hacerlo si sólo contamos con un sensor para toda la red. Además cada

IDS se puede configurar en detalle según el tipo de tráfico de su segmento de red

en particular, para así reducir el tamaño de su base de reglas y evitar la búsqueda

de patrones superfluos.

En entornos con múltiples IDS es muy útil tener centralizada la gestión.

De esta forma se pueden recoger los registros y las alarmas en un único lugar.

Esto facilitará el trabajo del personal de seguridad que según hemos explicado es

indispensable que esté tras la máquina interpretando los resultados e

interviniendo en caso de ataque. Los logs deben ser revisados diariamente y la

actualización del IDS debe ser constante, añadiendo las nuevas firmas

conocidas. Además, el personal de seguridad es responsable de mantener los

sistemas de recuperación ante emergencias.

Por todo lo que se ha comentado hasta el momento, parece obvio que un

IDS, más que cualquier otro producto de seguridad, necesita ser optimizado. Su

uso de ancho de banda es intensivo y las operaciones que tiene que realizar son

muy complejas, consumiendo gran cantidad de recursos computacionales. El

resultado predecible de un IDS no optimizado es una perdida potencial de

paquetes y por tanto una perdida potencial de ataques o incluso un elevado

número de falsos positivos (si al perder paquetes, el IDS detecta

discontinuidades en las secuencias TCP). En una situación de congestión de red

debido a una inundación masiva de paquetes, el IDS empezará a fallar, por eso

es importante que la carga de CPU en un IDS sea generalmente baja, para poder

estar disponible en situaciones de emergencia. Las acciones que un

administrador de red puede llevar a cabo para ajustar un IDS son [DIAZ05]:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

25

o Optimizar la base de datos de firmas: En general, la configuración

por defecto de los IDS busca todos los ataques conocidos posibles.

Debido a las características de la red, muchos de ellos aunque se

produjesen no tendrían efecto. Es importante conocer bien la red que

se pretende administrar para no perder tiempo de CPU chequeando

firmas de ataques que nunca tendrían éxito en nuestra configuración.

Ejemplos: Ataques de tipo RPC en entornos totalmente Microsoft o

análisis de exploits de sistemas FTP en redes sin este tipo de servicio.

o Filtrar tráfico no deseado: Por defecto, el IDS analiza todo el tráfico

que es capaz de capturar en su segmento de red. Como se ha

explicado anteriormente, un IDS es incapaz de identificar firmas en

tráfico cifrado, por lo que el sensor se puede configurar para que

ignore el tráfico de este tipo, por ejemplo el SSH.

o Balanceo de carga: Al ser un IDS un dispositivo computacionalmente

pesado, si el volumen de tráfico a analizar es muy importante (porque

esté situado en una zona crítica como detrás del Firewall), es

recomendable la instalación de varios sensores balanceados por tipo

de tráfico. Reduciendo el número de reglas que se comparan en cada

sensor se obtiene un mejor rendimiento por cada uno, pero hay que

cuidarse de no dejar reglas relevantes sin supervisar.

o Optimización de la configuración: Además del juego de reglas, cada

IDS tiene varias opciones de configuración que influyen en su

rendimiento. Es muy importante adaptar cada sensor a la situación

más adecuada.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

26

3.2. ATAQUES INFORMÁTICOS E INTRUSIÓN EN REDES

En los siguientes puntos se presentan unas breves reseñas sobre ataques

informáticos e intrusión en redes que ayudarán a comprender mejor a qué se

enfrentan los administradores de red y los motivos de la instalación de Sistemas de

Detección de Intrusos.

3.2.1. FASES DE UN ATAQUE

La intrusión de redes y los ataques a recursos críticos de una compañía

por parte de hackers y usuarios con malas intenciones es algo que los

administradores de red tienen muy presente y tratan de prevenir dentro de sus

posibilidades. Los Sistemas de Detección de Intrusos y los procedimientos de

registro de incidencias han evolucionado de forma paralela a la pericia de los

hackers.

La estrategia de un hacker que pretende realizar un ataque preciso a una

red de computadores es impredecible. Si un atacante siguiera un protocolo de

acción concreto, sería muy sencillo prever sus ataques. No obstante la

intervención de un hacker suele diferenciarse en 4 fases, que deben conocerse en

detalle [KOZI03]:

3.2.1.1. PLANTEAMIENTO

Los buenos hackers generalmente se detienen a planear en detalle

sus ataques antes de realizar ninguna acción sospechosa. Un hacker

inteligente tratará de buscar por medios indirectos (los medios directos los

aplicará en la fase de reconocimiento) información sobre la estructura de la

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

27

red que pretende atacar y sobre sus vulnerabilidades (agujeros en

aplicaciones de negocio, equipos desprotegidos...). Esta información se

puede obtener de múltiples maneras: por medio de los propios empleados de

la empresa, accediendo a documentación que descuidadamente publican los

administradores del sistema, etc.

En esta fase, si el hacker no tiene un objetivo concreto, lo

determinará. La motivación y la información de la que parta el atacante le

hará decantarse por uno o más ataques de entre los siguientes tipos:

� Negación de servicio (DoS, Denial of Service): Este tipo de

ataque consiste en inutilizar un recurso del sistema, de forma

que no pueda realizar su trabajo. La negación de servicio de

una aplicación ubicada en un servidor consiste generalmente

en el envío masivo de peticiones remotas con el objetivo de

colapsar la aplicación de forma que no pueda atender a las

peticiones ordinarias de los usuarios. Cualquier procedimiento

que implique una reducción de los recursos computacionales

del servidor de forma que no pueda atender adecuadamente

las peticiones también puede considerarse una negación de

servicio (por ejemplo un troyano pesado que agote la

memoria de la máquina).

Una negación de servicio puede extenderse a varios equipos

si se consigue inundar de tráfico anormal un segmento de red

entero. Un ataque de este tipo bien planeado, puede inutilizar

una red entera forzando a resetear cada una de las máquinas

si se realiza con éxito.

� Escalada de privilegios: Este tipo de ataque consiste en

obtener los permisos legítimos necesarios para acceder a un

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

28

determinado recurso del sistema. De esta manera, un hacker

puede acceder a cualquier recurso del sistema como si de un

usuario autorizado se tratara.

En la práctica, la escalada de privilegios consiste en obtener

un usuario y contraseña válidos para el acceso al recurso

deseado. Esto es relativamente sencillo en métodos de

autenticación débiles (transmisión de contraseñas sin cifrar,

passwords de diccionario...) si se consigue capturar el tráfico

de un segmento de red.

Instalar un troyano de tipo keylogger (registro de teclas)

puede ser un sencillo método para obtener passwords de

usuario si no se dispone de un antivirus que lo detecte. De

hecho, cualquier troyano tiene como objetivo la escalada de

privilegios, ya que al ser instalado en una sesión de usuario

autorizado permite el acceso con esos permisos al atacante

remoto.

Un administrador de red descuidado que publique cuentas de

usuario raíz y no realice una gestión adecuada de contraseñas,

actualizándolas frecuentemente, puede encontrarse con serios

problemas de escalada de privilegios por parte de usuarios no

autorizados.

El acceso a un recurso utilizando una autenticación válida

aunque el usuario no haya sido autorizado a ello es un hecho

ante el que un IDS es inútil al no poderlo identificar como un

ataque.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

29

� Acceso no autorizado: Este tipo de ataque consiste en el

acceso a un determinado recurso del sistema aprovechando

las vulnerabilidades del hardware de soporte y del software

que lo gestiona y en particular de sus agujeros de seguridad y

errores de programación. Los métodos que explotan estas

vulnerabilidades son comúnmente llamados exploits y son

bien conocidos en general por comunidades de hackers y

publicados abiertamente en páginas web y foros.

Primeramente se debe saber de qué versión del software se

trata, pero esto no es trivial y el atacante debe llevar a cabo

una labor de investigación si no lo conoce de antemano. Más

adelante, en la fase de reconocimiento, podrá poner en

práctica métodos directos de obtención de esta información,

aunque sean típicamente detectables por sistemas IDS.

Un sistema operativo desactualizado al que no se le han

instalado los parches de seguridad recomendados es una

fuente enorme de vulnerabilidades conocidas por la mayoría

de hackers (y publicadas en Internet) y lo mismo ocurre con

software de servicio remoto de uso común (servicios FTP, de

páginas web, etc.).

Según el tipo de ataque que se realice se atentará contra la propiedad

de seguridad que se desee violar del recurso. Un ataque de tipo negación de

servicio atenta exclusivamente contra la disponibilidad del recurso. Un

ataque de los otros dos tipos permite el acceso a la información al hacker y

por tanto viola la integridad de esos datos, ya que tras la intrusión no se

puede garantizar la validez ni la fiabilidad ni la confidencialidad de la

información manipulada.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

30

3.2.1.2. RECONOCIMIENTO

En esta fase, el atacante lleva a cabo acciones directas para la

obtención de información sobre la red y soporte hardware y software de los

datos a los que desea acceder para llevar a cabo un ataque de tipo acceso no

autorizado. Este tipo de acciones son en general identificables por IDS,

debido a que al no tratarse de accesos ordinarios al servicio, contienen

particularidades que determinan patrones bien conocidos.

Después de que un atacante haya recopilado información pública

sobre la organización objetivo, tratará de descubrir vulnerabilidades

concretas a explotar. Existen una gran variedad de técnicas de

reconocimiento para obtener información detallada de este tipo.

La primera acción que tendrá que llevar a cabo el atacante es

comprobar si la víctima del ataque está arrancada en el instante actual, lo

que llevará a cabo haciendo ping a la dirección víctima en concreto. Si el

administrador de la red es cuidadoso habrá configurado los hosts del sistema

para que no respondan a las peticiones de eco ICMP. En ese caso, una

conexión TCP o un intento de comunicación UDP serán suficientes para

comprobar si la dirección IP víctima está activa.

En el momento en que se está seguro de que la máquina objetivo está

viva el atacante debe buscar puertos abiertos con la intención de saber qué

aplicaciones se están corriendo en el equipo y sus versiones, de forma que

pueda explotar sus vulnerabilidades. Esto se lleva a cabo a través de un

escaneo de puertos, tipo de ataque de reconocimiento que se torna inevitable

si se pretende saber para qué se utiliza realmente una máquina y que es

fácilmente detectable por un IDS.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

31

Hosts seguros suelen estar configurados para no responder a intentos

de conexión sospechosa y sus servicios corren en puertos no standard. Esto

supondrá un esfuerzo extra al atacante a la hora de averiguar qué servicio

está corriendo en un puerto en particular con lo que tendrá que arriesgarse a

comunicarse con la aplicación (mediante Telnet, por ejemplo) para

averiguar su verdadera naturaleza, mostrando abiertamente sus intenciones,

lo que no pasará desapercibido al administrador de red.

Muchos exploits remotos están dedicados a determinados sistemas

operativos. El reconocimiento del sistema operativo que corre en una

máquina se realiza mediante la respuesta que este da a un determinado

estímulo (en general, paquetes de red no válidos a los que cada versión de

sistema operativo reacciona de forma diferente, lo que se conoce como

fingerprint).

Se verán más detalles y ejemplos de ataques de estos tipos en el

apartado 3.2.2: Ataques conocidos.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

32

3.2.1.3. ATAQUE

Tras la planificación del ataque y el reconocimiento de la víctima, el

siguiente paso es hacer uso de la información obtenida para atacar el sistema

objetivo. Según la naturaleza del ataque que se desea realizar y las

vulnerabilidades del sistema escogido como víctima se llevarán a cabo las

acciones que el hacker considere más apropiadas y menos llamativas en pos

de impedir ser detectado por un IDS.

Esta fase es muy delicada por esta razón, y es muy frecuente en

hackers experimentados el servirse de triquiñuelas que impidan al encargado

de seguridad la localización del origen del ataque.

El primer paso en estas operaciones suele ser la negación de servicio

del sistema IDS que pueda dar la alarma del ataque, bien tratando de ocultar

el ataque entre otros más descarados a otras máquinas en paralelo o

inundando el segmento de red del IDS con tráfico anómalo para generar una

respuesta confusa por su parte. Es deseable a su vez para el atacante, el

realizar el ataque desde varios hosts zombies (es decir, controlados de forma

remota de forma transparente a su usuario autorizado) a la vez, lo que

generalmente se consigue mediante la instalación de virus troyanos en las

máquinas controladas. Un ataque distribuido bien coordinado, es más eficaz

que uno perpetrado desde una sola máquina y permite a la vez que la pista

del atacante se pierda entre equipos irrelacionables con su persona.

En la presentación de los tipos de ataques a realizar en la fase de

planificación ya se hizo una breve introducción a ejemplos de ataque que no

se repetirán en este punto, pero que se desarrollarán en detalle en el apartado

3.2.2: Ataques conocidos.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

33

3.2.1.4. POST-ATAQUE

Después de que el atacante haya penetrado satisfactoriamente en un

host de una red, las acciones que lleve a cabo pueden ser de lo más

variopinto. En esta fase el atacante demostrará su verdadera motivación y

pericia, llevando a cabo una o mas de las siguientes acciones:

� Borrar huellas: Es una buena práctica de hackers

experimentados el borrar todos los indicios de su presencia en

la red objetivo. Eliminar ficheros de log o registros del

sistema en los que haya quedado constancia de la presencia y

acción de una entidad no autorizada, confirmará al

administrador de red o al sistema HIDS la situación del

ataque, pero no podrán investigarlo. Existen scripts que

automatizan este procedimiento para ocultar la actividad

maliciosa tanto procedente del exterior (por la vía de las

comunicaciones) como del interior (virus y troyanos). Estas

aplicaciones que se denominan rootkits son una herramienta

fundamental para los hackers.

� Profundizar en la infraestructura de red: La información

importante para una compañía raramente es accesible desde

hosts con acceso al exterior. Los servidores de negocio suelen

ubicarse en subredes internas protegidas por Firewalls

configurados al efecto por lo que es muy complicado ejecutar

un ataque directo desde el exterior hasta ese nivel de

seguridad pasando por varios filtros de Firewall. El control

remoto de varias máquinas en la capa menos segura de la red,

suele ser la única manera de ejecutar ataques distribuidos de

forma remota sobre equipos más protegidos de la red. Una

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

34

escalada de privilegios en varias fases es tediosa y supone el

riesgo de ser detectado en una de las etapas, pero es la forma

más segura de tener éxito en el ataque.

� Robar, manipular o destruir datos: El acceso a la información

de la empresa es el móvil básico de un hacker, que le sacará el

máximo beneficio a la misma. Un cracker no se conformará

sólo con la lectura y modificación de la información a su

parecer, sino que además la destruirá haciendo perder a la

empresa víctima tiempo y dinero.

� Notificar al administrador y abandonar: No todos los hackers

pretenden lucrarse con sus actividades. Muchos de ellos

practican lo que se denomina hacking ético, afición que

consiste en perpetrar ataques a una red, con el único fin de

demostrar sus habilidades sin la intención de causar ningún

daño. Los hackers éticos suelen ponerse en contacto con el

administrador de la red atacada disculpándose por su acción y

detallándole las vulnerabilidades de su sistema por lo que

aunque la acción realizada es ilegal, no suelen ser

denunciados.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

35

3.2.2. ATAQUES CONOCIDOS

En este apartado se presentará un breve compendio de ataques conocidos,

muchos de ellos con nombre propio, que son interesantes de conocer para

percatarse mejor del alcance y limitaciones de la intrusión en redes.

3.2.2.1. ATAQUES DE RECONOCIMIENTO

Estos ataques se aplican en la fase de reconocimiento de un ataque

(ver apartado 3.2.1.2: Reconocimiento) y su objetivo es la detección de

equipos vivos en la red y de los servicios que se corren en ellos en cada uno

de sus puertos [KOZI03].

Como anteriormente se ha dicho, el primer movimiento que hace un

atacante para averiguar si un host está activo o no es ejecutar un comando

ICMP Ping (ECHO Request) contra la dirección IP objetivo. La máquina

contestará al origen con un mensaje ICMP ECHO Reply si está encendida y

no lo hará en caso contrario.

Fig. 2: ICMP Ping

También se ha comentado anteriormente otra manera de detectar un

host vivo: establecer una conexión TCP con él. Según el protocolo TCP, un

host activo contesta a un paquete TCP connect con un paquete ACK.

ECHO Request

ECHO Reply

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

36

Fig. 3: Conexión TCP

El escaneo de puertos es la forma directa de reconocimiento de las

aplicaciones que corren en una máquina. Si en un equipo remoto el puerto

estándar de una determinada aplicación está abierto significa que hay un

servicio escuchando por él y que se corresponde con una determinada

aplicación. Si el escaneo del puerto estándar de una aplicación conocida

resulta satisfactorio en una máquina se puede asegurar que en dicho servidor

está corriendo ese programa. Un escaneo TCP se realiza mediante una

conexión TCP al equipo objetivo por el puerto deseado. Dependiendo del

tipo de mensaje de contestación se puede determinar si el puerto está abierto

o cerrado y por tanto si su aplicación asociada está corriendo en el sistema y

se puede establecer comunicación con ella o no.

Fig. 4: Escaneo de puerto TCP

SYN

SYN/ACK

Puerto TCP abierto

SYN

RST/ACK

Puerto TCP cerrado

TCP

ACK

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

37

De una manera parecida, se puede realizar un escaneo UDP. La

comprobación de que una aplicación está a la escucha de un puerto UDP se

realiza mediante el envío de un paquete UDP. Al ser el protocolo UDP un

protocolo de red sin conexión, no se tiene por qué esperar una respuesta al

mismo, de hecho, si no se recibe respuesta, es debido a que el puerto al que

se ha enviado el mensaje está abierto, mientras que si se recibe un paquete

ICMP Port Unreachable no será así.

Fig. 5: Escaneo de puerto UDP

Si se desean explotar las vulnerabilidades del sistema operativo, se

recomienda conocer la versión del mismo, para saber con qué parches

cuenta y cuándo fue la última actualización de seguridad. Como se describió

en el apartado 3.2.1.2: Reconocimiento, la forma de identificar la versión

del sistema operativo de una máquina objetivo es analizando su fingerprint.

El ejemplo típico de ataque de reconocimiento de sistema operativo es el

ataque FIN. El envío de un paquete de cierre de una conexión TCP no

<UDP>

Puerto UDP abierto

<UDP>

ICMP Port Unreachable

Puerto UDP cerrado

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

38

abierta es una situación anómala frente a la cual, cada versión de sistema

operativo suele dar una respuesta diferente. Conociendo las posibles

respuestas se puede deducir con relativa exactitud el sistema operativo de la

victima y su versión.

Fig. 6: Ataque FIN

El escaneo de muchos puertos consecutivos con la intención de dar

con alguno por el que comunicarse con una máquina objetivo (horizontal

scan) consiste en iterar los escaneos anteriormente descritos para encontrar

un puerto abierto en la víctima. El proceso contrario, el escaneo de un

puerto concreto en varias víctimas (vertical scan) consiste en ir probando la

existencia del puerto objetivo en múltiples máquinas en busca de una

potencial víctima de un exploit conocido. Existen herramientas y scripts que

automatizan estos procesos, pero no dejan de generar un tráfico anormal y

tremendamente sospechoso que no se le suele escapar a ningún IDS. A

medida que los Sistemas de Detección de Intrusos han incorporado más

tipos de patrones de escaneos de puertos, los hackers han ido a su vez

descubriendo nuevos métodos para evitar ser detectados.

Un ejemplo es el ataque Xmas scan. Un paquete TCP enviado a una

víctima con todos los flags TCP/IP activados no se corresponde con ninguna

configuración válida de este protocolo y por tanto la máquina destinataria

devuelve una respuesta característica, es decir un fingerprint. Cuando se

descubrió este agujero del protocolo TCP/IP, este escaneo pasó

FIN

fingerprint

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

39

desapercibido para todos los IDS hasta que tiempo más tarde se les añadió

su firma.

Un IDS detecta un escaneo de puertos cuando en un breve espacio de

tiempo registra múltiples intentos de conexión a puertos o hosts

consecutivos desde una misma IP. Una forma de solucionar esto es ser

paciente y realizar el escaneo lentamente, durante horas o días para no

sobrepasar el umbral de tiempo que marca el IDS por defecto. Otra manera

de evitar que el atacante sea identificado como el origen de un escaneo es

realizarlo de forma distribuida, desde múltiples orígenes, cosa que no es

difícil si el hacker se ha hecho con el control de varias máquinas de la red.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

40

3.2.2.2. ATAQUES DE NEGACIÓN DE SERVICIO (DOS)

Se denomina ataque de negación de servicio (Denial of Service,

DoS) a cualquier ataque que afecte al funcionamiento de un sistema de

forma que no puede dar servicio normal a sus usuarios legítimos. Los

ataques de negación de servicio pueden darse sobre la mayoría del

equipamiento de red, incluidos routers, servidores, firewalls, máquinas de

acceso remoto e incluso el propio medio. Un ataque de negación de servicio

puede tener como objetivo una aplicación específica (como la negación de

un servicio FTP) o una máquina entera (colapsando sus comunicaciones o

consumiéndole todos sus recursos).

Los ataques de negación de servicio tienen diversas naturalezas, pero

en general se pueden separar en dos categorías: Ataques de paquetes

maliciosos (malicious packet attacks) o Ataques de agotamiento de recursos

(resource depletion) [NORT01].

� Ataques de paquetes maliciosos: Consisten en el envío de

tráfico anormal de forma masiva hacia un host para provocar

un fallo en el propio equipo o en un servicio concreto

ejecutándose en el mismo. Este tipo de ataques se aprovechan

de que tanto el software de aplicación como el de los sistemas

operativos no está diseñado para esperar situaciones

extraordinarias, por lo que el sistema se no sabe como

reaccionar y colapsa. Para llevar a cabo con éxito un ataque

de este tipo, el atacante debe tener un conocimiento

exhaustivo sobre el servicio que pretende atacar, casi a nivel

de programador.

Un ejemplo de ataque de este tipo fue el Microsoft FTP

DoS. En las primeras versiones del servidor FTP de

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

41

Microsoft, se incluía la búsqueda de ficheros con caracteres

comodín (* y ?). Esta funcionalidad daba buenos resultados

en búsquedas con uno o dos símbolos de este tipo, pero el

sistema fallaba (por una cuestión de reserva insuficiente de

memoria) cuando el comando de búsqueda incluía múltiples

caracteres comodín intercalados (por ejemplo, *a*?*??*). La

aplicación FTP se quedaba colgada y se producía la negación

del servicio.

La negación de servicio del sistema IDS instalado en la red es

una de las acciones que los hackers suelen llevar a cabo para

evitar que éste dispare las alarmas que generan sus ataques.

En la versión 1.8.3 de Snort, la evaluación del tamaño de

paquetes ICMP tenía un error, y era que cuando éste tenía

valor 1, el sistema quedaba bloqueado en ese punto. La

inyección de paquetes ICMP manipulados con esta

característica, negaba el servicio del IDS, y el ataque

posterior podía llevarse a cabo sin vigilante que alertara la

situación.

� Ataques de agotamiento de recursos: Consisten en la

inundación de las capacidades de un servicio o máquina con

gran cantidad de tráfico autorizado, de forma que no puede

cumplir su función con respecto a los usuarios legítimos con

normalidad. El objetivo del atacante es ocupar todo el ancho

de banda de la conexión al servidor, o consumir sus recursos

computacionales básicos: CPU y memoria.

Un ejemplo de consumo del ancho de banda de la conexión a

la red de un host objetivo es el Ataque Smurf DoS. Este

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

42

ataque está basado en la técnica de suplantación de IP (IP

Spoofing), que consiste en enviar paquetes de red

manipulando las cabeceras IP de manera que la dirección de

origen no sea la propia. El envío de paquetes de red con una

dirección ajena significa que las respuestas a dichos paquetes

por parte de la estación destino se realizarán hacia esa

dirección. El ataque Smurf consiste en el envío de paquetes

ICMP ECHO Request a la dirección de broadcast, es decir, a

todos los equipos de la red objetivo a la vez, poniendo como

origen de los paquetes la dirección IP del host víctima. Cada

una de las máquinas de la red contestarán a la víctima con los

correspondientes paquetes ICMP ECHO Reply, consumiendo

una fracción del ancho de banda de su enlace de red, y el

conjunto de todos colapsará las comunicaciones de la víctima

durante unos segundos.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

43

Fig. 7: Ataque Smurf DoS

Los ataques de negación de servicio generalmente utilizan la

técnica de suplantación de IP, ya que el ataque no requiere

una contestación por parte de la víctima para tener éxito y

además mediante el cambio de la dirección IP de origen, hará

más complicada la identificación del origen del ataque por

parte del administrador de red.

ATACANTE

VÍCTIMA

ECHO Request

ECHO Reply

ECHO Reply

ECHO Reply

ECHO Reply

ECHO Reply

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

44

3.2.2.3. EXPLOITS REMOTOS

Los exploits o vulnerabilidades remotas son el método más común

para obtener acceso no autorizado a un sistema. Estas técnicas están

diseñadas para tomar ventaja de código software mal diseñado para

comprometer y tomar control de un host vulnerable. Estas vulnerabilidades

suelen ser ampliamente conocidas y los desarrolladores del software habrán

publicado parches para resolverlas, por lo que es responsabilidad de los

administradores de red tener actualizadas sus aplicaciones. Si no es así,

significa que el hacker tiene un conocimiento profundo del aplicativo cuya

vulnerabilidad ha descubierto y pretende explotar, por lo que el ataque será

difícilmente predecible y sólo se podrán tomar medidas reactivas una vez se

lleve a cabo.

Los ataques de exploit remoto se asemejan a los ataques DoS de

paquetes maliciosos en que se aprovechan de la debilidad del software que

en situaciones inesperadas no es capaz de evaluar la entrada de datos,

haciendo que el sistema no sepa cómo reaccionar y colapse [NORT01].

Una vulnerabilidad típica ante la que todo software es propenso a

fallar es la del desbordamiento de búfer (buffer overflow). Los

desbordamientos de búfer se producen cuando un atacante introduce más

datos de los que un búfer o array puede manejar y esta condición no está

adecuadamente evaluada en el código del programa. Al salirse de la zona

reservada, los datos introducidos se sitúan por tanto en posiciones contiguas

de memoria y esto no sólo provoca que el programa aborte sino que si se ha

realizado de forma adecuada, se puede forzar al sistema a ejecutar la

información fuera de rango sin restricciones de permisos. El Apache

chunked encoding exploit es un ejemplo de desbordamiento remoto de

búfer. Apache fallaba al calcular los tamaños dinámicos de búfer debido a la

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

45

malinterpretación de un entero sin signo definido en su código de programa.

Peticiones codificadas de determinada manera permitían incluir comandos

del sistema en las posiciones que quedaban fuera del búfer, lo que permitía a

los hackers arrancar consolas remotas con permisos de administrador o crear

cuentas de usuario raíz en la máquina comprometida.

Los hackers más expertos pueden encontrar la forma de que una

aplicación ejecute comandos o código binario en un sistema sin necesidad

de provocar un desbordamiento de búfer, evitando así que la aplicación

aborte para llevar a cabo un ataque más silencioso. Estos ataques requieren

también de amplios conocimientos sobre el código fuente del software a

explotar. Un ejemplo es el Unicode exploit for Microsoft's IIS, que

permitía la navegación libre por la estructura de directorios de las máquinas

que incorporaban las primeras versiones de este servidor Web. La

vulnerabilidad consistía en que el módulo intérprete de las direcciones que

se solicitan desde el navegador, traducía la representación Unicode del

símbolo delimitador de directorio ( / ), permitiendo al hacker acceder a

cualquier fichero en el sistema.

La lógica de las aplicaciones Web dinámicas es muy propensa a fallo

frente a usuarios malintencionados. La comprobación de la entrada de datos

por parte de un programa para evitar la explotación de vulnerabilidades es

fundamental, y un ejemplo de esto es el popular ataque de inyección de

SQL. Este método consiste en la inserción de sentencias SQL en los campos

de entrada de un formulario Web. Las queries debidamente introducidas

pueden modificar la lógica del acceso a datos del programa, por ejemplo,

permitiendo al atacante saltarse la fase de registro o lanzar comandos al

sistema.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

46

3.2.2.4. ACCESOS AUTORIZADOS

En la mayoría de los casos, la intención de un ataque es el control de

la máquina objetivo, el acceso a la información almacenada en ella, la

explotación de sus recursos computacionales, etc. El uso de permisos

legítimos de usuario es la forma más cómoda y fiable de llevar a cabo

ataques con éxito, pero con las debidas medidas de control, la identificación

de un usuario que realice alguna acción maliciosa de esta manera es

inmediata. Los propios empleados de una empresa, son en muchas

ocasiones la persona que está detrás del ataque a un recurso de la misma, ya

que disponen de una posición más ventajosa que la de un hacker externo de

cara a que de alguna manera "ya están dentro". Por otra parte, los empleados

que disfrutan de un acceso privilegiado a determinados recursos son en

ocasiones los culpables de la publicación de contraseñas o de la

desprotección de los sistemas bajo su responsabilidad, lo que suele ser

aprovechado por terceros malintencionados para perpetrar ataques pudiendo

inculpar al encargado.

La adquisición de los permisos de un usuario autorizado para

acceder a un recurso clave de la organización puede ser tan sencillo como

obtener su contraseña de autenticación en el sistema. Una acción llevada a

cabo utilizando los credenciales de la víctima exime al que se hace pasar por

ella de cualquier acusación. El robo de contraseñas y certificados

digitales se da con mucha frecuencia en entornos de confianza y exceso de

ingenuidad por parte de los hombres que están detrás de las máquinas. Los

sistemas de autenticación débiles son una fuente de problemas de este tipo;

si es sencillo obtener permiso de acceso a un recurso por parte de una

persona autorizada, también lo será para una que no lo es, por lo que una

buena gestión de contraseñas es fundamental. Se recomienda a los

administradores de red establecer contraseñas de usuario alfanuméricas, no

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

47

estándar y no de diccionario que cambien periódicamente en todos los

sistemas de una organización. El espionaje de las comunicaciones en una

red mediante herramientas sniffers es una sencilla manera de hacerse con

contraseñas de usuario aprovechando procesos no cifrados de autenticación

remota. El control de las aplicaciones que los empleados tienen instaladas

en sus terminales y la adecuada configuración de red que impide estas

actividades es fundamental para evitar una situación comprometida.

Las aplicaciones Web dinámicas generalmente usan cookies para

mantener el estado de una comunicación entre el cliente y el servidor. Las

cookies son ficheros ligeros que se instalan en la máquina del cliente, con su

permiso, y que almacenan, entre otras cosas, información de autenticación

de usuario. Aprovechando esto, existe una forma de escalada de privilegios

que los hackers llevan a cabo mediante una sencilla técnica de engaño

denominada cross-site scripting (XSS) [NORT01]. Consiste en presentar al

usuario una ventana que le anime a hacer clic en un enlace malicioso

haciéndole creer que se trata de una navegación normal y corriente. El

objetivo de que el usuario haga esto es el de obtener su "permiso" para

transferir sus cookies al atacante, que una vez las tenga en su poder podrá

utilizar para acceder a otros sistemas y servicios con los mismos

credenciales de la víctima. Debido a la inmadurez de muchos usuarios de

Internet y a la navegación por sitios poco fiables, estos ataques tienen una

alarmante tasa de éxito y se presentan con mucha frecuencia.

La ingenuidad y el exceso de confianza por parte de los usuarios es

lo que permite, según la misma filosofía de los ataques XSS, la proliferación

de virus y troyanos y su entrada en el sistema con facilidad. Un usuario que

permite la instalación de un programa malicioso en su máquina (tanto

porque haya sido engañado como de forma inconsciente) está dando

automáticamente a éste todos sus permisos. La actividad de un virus o un

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

48

troyano suele ser detectada por un NIDS si genera tráfico anormal de red o

por un NNIDS si se ejecuta en local. Los programas de este tipo que son

más interesantes a la hora de acceder a los recursos de una máquina son los

troyanos de control remoto, que instalados en un host objetivo, mantienen

abierto un puerto de comunicaciones directo con el hacker. Estos troyanos

pueden ser usados para llevar a cabo innumerables tipos de ataques, desde

escaneos de puertos y negaciones de servicio hasta el envío de información

local al exterior. Un ejemplo popular es el troyano Back Orifice, que

encripta la comunicación con el atacante remoto y por ello en un principio

fue indetectable por los IDS del momento. Otro ejemplo clásico de troyano

es el Loki Trojan [KOZI03], que basa su interactuación con el host remoto

del hacker en comunicaciones sobre el protocolo ICMP, que generalmente

no se considera sospechoso y los administradores de red suelen permitir que

pase a través del Firewall. Este es un típico caso de acceso autorizado, tanto

por parte del usuario, que acepta la instalación del troyano (generalmente de

forma inconsciente), como por parte del administrador, que está autorizando

el tráfico ICMP sin considerar esta situación.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

49

3.3. MODELOS DISTRIBUIDOS

A continuación, se dedicarán unos cuantos apartados a la introducción a los

modelos de sistemas distribuidos para terminar por explicar el modelo de agentes

inteligentes que es en el que se basa el sistema IDSAI.

3.3.1. MODELO CLIENTE-SERVIDOR

El modelo Cliente-Servidor es hoy en día el modelo de referencia y más

difundido de comunicación entre aplicaciones software distribuidas. Este modelo

está basado en una distinción rígida de roles entre nodos cliente (solicitantes de

recursos) y nodos servidor (proveedores de recursos). Los nodos servidor

proveen los servicios, es decir, las capacidades del sistema distribuido, pero no

son capaces de tomar ninguna iniciativa (son de carácter reactivo). Los nodos

cliente, por el contrario, representan la iniciativa del sistema: acceden y usan los

servicios según las necesidades del cliente aunque no proporcionan ninguna

funcionalidad compleja.

Los clientes pueden aparecer y desaparecer en cualquier momento,

disponiendo de direcciones dinámicas mientras que los servidores al tener que

garantizar un mínimo de estabilidad, suelen utilizar una dirección estática bien

conocida.

Los clientes se comunican con los servidores, pero no pueden ni

necesitan comunicarse con otros clientes. Del otro lado, un servidor no puede

comunicarse con sus clientes hasta que ellos tomen la iniciativa y decidan

establecer una sesión de comunicación con el servidor.

Internet es el típico ejemplo de aplicación basada en el modelo cliente-

servidor. Los servidores son los sitios o portales que proporcionan la lógica de

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

50

aplicación y recursos de información. Los clientes son los navegadores

(browsers), simples herramientas que proporcionan una interfaz con el usuario y

cuya única tarea es la de realizar las peticiones y presentar la información

solicitada.

Las aplicaciones distribuidas existentes no siempre se adaptan a este

modelo. Por ejemplo, una simple aplicación de "chat", un sistema distribuido de

compartición de archivos o un juego multijugador, requiere que los nodos

activos en los terminales de usuario sean capaces de comunicarse unos con otros.

Aunque estos ejemplos puedan implementarse en una arquitectura cliente-

servidor pura (cosa que en muchas ocasiones se hace así), se perdería la

flexibilidad y escalabilidad que aportan los nodos cliente autónomos. En el

momento en que los nodos cliente se comunican directamente entre sí,

responden a peticiones de recursos e incorporan lógica de negocio, un servidor

físico deja de ser necesario ya que su funcionalidad se ha repartido entre los

demás elementos de la arquitectura.

Las redes de ordenadores con funciones cliente-servidor se disponen en

una topología en estrella de servicios centralizados como se puede observar en la

figura 8 [DIAZ05]:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

51

Fig. 8: Arquitectura Cliente-Servidor.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

52

MODELO PEER-TO-PEER (P2P)

El modelo peer-to-peer se caracteriza por no hacer distinción de roles

entre cada nodo del sistema. Cada uno de los elementos que componen el

modelo puede iniciar una comunicación, siendo origen o destinatario de una

petición y pesentando o devolviendo la información solicitada. La lógica de la

aplicación no está concentrada en un sólo sitio sino que se encuentra distribuida

entre los diferentes nodos de la red; cada nodo es capaz de descubrir a los demás

(no tienen por qué disponer de direcciones bien conocidas) y pueden ingresar o

abandonar la red en cualquier momento.

La diferencia fundamental entre el modelo cliente-servidor y el peer-to-

peer está en la forma en que los nodos se conocen entre sí. En un sistema cliente-

servidor, los clientes deben limitarse a conocer las direcciones estáticas de los

servidores, ya que no necesitan comunicarse con los otros clientes ni tener

conocimiento de su estado. En un sistema P2P, se debe contar con servicios que

permitan a los diferentes participantes entrar o salir de la red en cualquier

momento así como incluir procedimientos de búsqueda de recursos y

descubrimiento de nodos. Estos mecanismos son generalmente conocidos como

servicios de páginas blancas (descubrimiento de participantes) y páginas

amarillas (búsqueda de recursos y servicios provistos por un participante

desconocido).

Una red P2P pura está absolutamente descentralizada y los participantes

son completamente autónomos. La ausencia de un nodo de referencia hace muy

difícil mantener la coherencia del sistema y el descubrimiento de participantes.

Los beneficios de la escalabilidad y la flexibilidad de la red tienen como coste

un mayor ancho de banda requerido y una complejidad de arquitectura de

comunicaciones que crece exponencialmente con el número de nodos

conectados. Del mismo modo, la autonomía de cada nodo a la hora de conectarse

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

53

y desconectarse de la red implica un sistema de seguridad y autenticación no

centralizado y por tanto potencialmente inseguro.

Las redes de ordenadores con funciones peer-to-peer puras se disponen

en una topología punto a punto entre todos los nodos como se puede observar en

la figura 9 [DIAZ05]:

Fig. 9: Arquitectura P2P pura.

Los inconvenientes que implica una red P2P pura hacen plantearse la

idea de implantar el sistema P2P en un entorno híbrido. Las arquitecturas P2P

híbridas están basadas en un nodo especial que proporciona los servicios de

búsqueda de recursos y descubrimiento de participantes de forma centralizada.

Este participante está exclusivamente dedicado al control del estado de la red,

manteniendo un índice actualizado en todo momento de nodos activos (páginas

blancas) y servicios disponibles (páginas amarillas) que puede ser consultado

centralizadamente por los demás participantes. Este tipo de redes generan menos

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

54

tráfico y son más seguras, ya que la entrada a formar parte de la red por parte de

un nodo requiere su registro y autenticación en el nodo central. Por otra parte el

funcionamiento correcto del sistema requiere la disponibilidad del nodo central,

convirtiéndose éste en un punto crítico de fallo y ataques.

Las redes de ordenadores con funciones peer-to-peer híbridas se disponen

en una topología punto a punto entre todos los nodos y en estrella respecto al

nodo central, como se puede observar en la figura 10 [DIAZ09]:

Fig. 10: Arquitectura P2P híbrida.

El modelo peer-to-peer es el más adecuado para implantar un sistema de

agentes inteligentes .

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

55

3.3.2. MODELO DE AGENTES INTELIGENTES

El paradigma de los agentes inteligentes engloba conceptos de

inteligencia artificial y sistemas distribuidos. Esta idea se basa en la abstracción

de la entidad agente: componente software autónomo, proactivo y social

[GARA04]:

o autónomo: un agente tiene control de sus propias acciones; desde el

punto de vista del sistema local en que se ejecutan tienen su propio

hilo de ejecución y dentro de su nivel de conocimiento es capaz de

tomar decisiones inteligentes según su estado.

o proactivo: un agente no sólo responde a eventos externos (acciones

de usuario o llamadas remotas); un agente posee un comportamiento

propio orientado a un objetivo, siendo capaz de tomar iniciativas.

o social: un agente necesita y es capaz de interactuar con otros agentes

para llevar a cabo su tarea y alcanzar el objetivo para el cual está

diseñado.

Un sistema distribuido basado en agentes inteligentes es intrínsecamente

peer-to-peer: cada agente es un participante que necesita comunicarse con otros

agentes al tiempo que es capaz de proveer de información y servicios al resto de

participantes. El modelo de comunicación es muy importante en un sistema

basado en agentes y está basado en las siguientes premisas [BELL03]:

o los agentes son entidades activas y desacopladas: la comunicación

entre agentes es de tipo asíncrono, es decir, el agente que envía el

mensaje y el destinatario del mismo no tienen porqué estar

disponibles al mismo tiempo. Una vez un participante envía un

mensaje a otro, el primero no se queda a la espera de la respuesta del

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

56

segundo, sino que sigue funcionando para evaluar la contestación en

el momento en que llegue. Esto permite al receptor seleccionar los

mensajes a servir según sus propias prioridades y evita que el emisor

se quede bloqueado a la espera del procesado de la petición y

respuesta por parte del otro participante. De esta manera se evita la

dependencia funcional entre el emisor y el receptor, propensa a dar

problemas cuando uno de los dos extremos falla en mitad de una

comunicación.

o los agentes realizan acciones: la comunicación con otros agentes es

una más de las acciones que realizan los agentes inteligentes y por

tanto es tratada al mismo nivel. De esta manera las acciones lógicas y

las acciones de comunicación no interfieren entre sí y pueden ser

planificables sobre el mismo hilo de ejecución.

o la comunicación tiene significado semántico: un agente debe ser

capaz de comprender el mensaje de una comunicación y el

significado de aquello que el emisor solicita. En un sistema de

agentes inteligentes las comunicaciones no se limitan a llamadas

remotas a servicios del destinatario, sino que un mensaje puede

indicar a aquel que lo recibe desde un cambio de estado hasta la

petición de una operación compleja en la que se puedan ver

involucrados otros agentes. Todo esto significa la necesidad de

implantar un protocolo semántico de comunicación estandarizado.

En 1996, TILAB (Telecom Italian LABoratories) propuso la creación de

la FIPA (Foundation for Intelligent Physical Agents), organización de empresas

y grupos sin ánimo de lucro cuyo objetivo era el desarrollo de especificaciones

estándar para la tecnología de agentes. TILAB y en particular el equipo JADE,

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

57

lideraron esta iniciativa editando las primeras especificaciones del que más tarde

sería el estándar FIPA (2002). Este estándar se centra en la interoperabilidad del

sistema de agentes inteligentes definiendo bien el comportamiento externo de los

componentes del sistema y dejando abiertos los detalles de la implementación

interna de la lógica de negocio. El estándar FIPA es fiel al paradigma de agentes

inteligentes y define el modelo de referencia de la plataforma básica de agentes y

los servicios básicos que debe garantizar. El conjunto de servicios básicos y sus

interfaces estándar son todo lo que una sociedad de agentes necesita para existir,

colaborar y ser administrada. Los servicios que el estándar FIPA determina

como necesarios son [GARA04]:

o Control del ciclo de vida: Un agente inteligente debe mantener un

control permanente sobre su propio ciclo de vida, ya que determina

su interoperabilidad con el resto de la plataforma.

o Servicio de páginas blancas: Se debe disponer de un procedimiento

común para todos los agentes de la plataforma que permita

referenciar un agente remoto inequívocamente.

o Servicio de páginas amarillas: Se debe disponer de un procedimiento

común para todos los agentes de la plataforma que permita

referenciar un servicio remoto inequívocamente sea cual sea el agente

que lo proporcione.

o Sistema de mensajería: La comunicación asíncrona entre agentes

debe realizarse mediante un sistema de mensajería estándar, flexible

y adaptable a cualquier lógica de negocio.

Debido al interés en el aspecto social de los agentes y sus necesidades de

comunicación con otros agentes, el capítulo Agent Comunication Language

(ACL) es uno de los más importantes del estándar FIPA.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

58

3.3.3. MIDDLEWARE

Se denomina middleware al conjunto de librerías de medio-alto nivel que

proveen de servicios genéricos para los diferentes tipos de aplicaciones

distribuidas que las implementan haciendo su desarrollo más sencillo, y el

producto software resultante más eficiente, escalable y mantenible. Aunque no

se trata propiamente de un modelo de arquitectura distribuida, forma parte de

cualquier diseño de una aplicación de este tipo de arquitecturas.

Servicios como comunicación, acceso a datos, cifrado o control de

recursos son ejemplos típicos que aporta un Sistema Operativo local.

Independizando estos servicios del entorno local e integrándolos en un paquete

reutilizable, se confecciona una capa horizontal que permite dar soporte a las

aplicaciones distribuidas que necesiten estos servicios comunes.

Fig. 11: Capas horizontales y verticales en sistema local.

middleware

SO local + HW

Aplicaciones

locales

Aplicaciones

distribuidas

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

59

3.4. TECNOLOGÍA JAVA JADE

Llegados a ese punto, se profundizará en el modelo de agentes inteligentes

JADE, presentando las particularidades de esta tecnología, que ha sido preciso

aprender a manejar para el desarrollo del aplicativo IDSAI.

JADE (Java Agent DEvelopment Framework) es el middleware diseñado

por TILAB que proporciona tanto un entorno de desarrollo como un entorno de

ejecución para la realización y mantenimiento de de aplicaciones distribuidas

multiagente basadas en la arquitectura de comunicación peer-to-peer. La

inteligencia, la iniciativa, la información, los recursos y el control pueden

distribuirse completamente entre los terminales móviles o los equipos informáticos

que conformen la red. El entorno evoluciona dinámicamente con los participantes o

agentes, que aparecen y desaparecen del sistema de acuerdo con las necesidades y

requisitos de la aplicación. La comunicación entre los participantes, ya sea en una

red cableada o inalámbrica es completamente simétrica asumiendo cada par de

implicados el rol de origen y destinatario según sea la situación [BELL03].

JADE está completamente desarrollado en tecnología Java y proporciona

una serie de herramientas que permiten al desarrollador controlar y depurar a los

agentes en tiempo real. Está basado en los siguientes principios [BELL03]:

o Interoperabilidad: JADE cumple con las especificaciones FIPA. Esto

garantiza que los agentes JADE pueden interactuar con otros agentes

que asuman el mismo estándar aunque no estén desarrollados

necesariamente con JADE.

o Uniformidad y portabilidad: JADE provee un juego de APIs

independientes de la infraestructura de red y de la versión de la máquina

virtual Java sobre la que se ejecuten.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

60

o Intuitivo: La complejidad del middleware se encuentra encapsulada tras

un simple e intuitivo interfaz de APIs.

En los siguientes apartados se detallan más aspectos de la tecnología JADE,

dentro de los modelos de arquitectura y funcional.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

61

3.4.1. MODELO DE ARQUITECTURA

JADE incluye tanto las librerías necesarias para desarrollar aplicaciones

multiagente como el entorno de ejecución que provee los servicios básicos sobre

el que arrancar los agentes. Cada instancia del entorno de ejecución JADE se

denomina contenedor y se alberga en un host de la red concreto. El conjunto de

todos los contenedores activos en un sistema multiagente se denomina

plataforma y proporciona una capa homogénea que oculta a los agentes y al

desarrollador la complejidad de las capas inferiores (Hardware,

Comunicaciones, Sistema Operativo y versión de la JVM).

En cada plataforma debe existir un contenedor particular denominado

contenedor principal. Este contenedor alberga dos agentes especiales, además de

los que se quieran arrancar en él [ARAN06]:

o AMS (Agent Management System): Proporciona el servicio de

páginas blancas. Gracias a ello permite la búsqueda y reconocimiento

entre agentes. En él se registra y se da de baja cada agente que se

incorpora o que abandona la plataforma. El agente AMS garantiza

que cada agente activo disponga de un nombre único dentro de la

plataforma y proporciona la interfaz para arrancar y matar agentes en

contenedores remotos. Representa la autoridad de la plataforma.

o DF (Directory Facilitator): Proporciona el servicio de páginas

amarillas. Gracias a ello permite la búsqueda de agentes que provean

de determinados servicios para lograr sus objetivos. No es necesario

que los agentes de la plataforma registren sus funcionalidades en este

agente, pero en ese caso el servicio de páginas amarillas no

funcionará adecuadamente.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

62

El contenedor principal se arranca, como cualquier otro contenedor, en

un host en particular. Por las funcionalidades avanzadas que incorporan los

agentes especiales antes descritos, el host que alberga el contenedor principal

resulta ser un nodo clave de la plataforma, al que los demás nodos acuden para

buscar otros nodos o servicios. Es por esta razón por la que podemos hablar de

una arquitectura peer-to-peer híbrida cuando describimos la arquitectura de red

de un sistema multiagente JADE.

Fig. 12: Esquema de distribución de agentes en contenedores de una plataforma JADE.

RED

Plataforma 1

Contenedor Principal Contenedor1 Contenedor2

A1 AMS DF A2 A3 A4

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

63

3.4.2. MODELO FUNCIONAL

Desde el punto de vista funcional, JADE proporciona los servicios

básicos necesarios para dar soporte a aplicaciones distribuidas peer-to-peer tanto

en entornos fijos como en móviles.

JADE permite a cada agente el descubrimiento dinámico de otros

agentes y de sus funcionalidades, gracias a los servicios de páginas blancas y

páginas amarillas incorporados en los agentes dedicados a tal efecto (AMS y

DF) [GARA04].

La comunicación entre agentes se realiza exclusivamente a través de

mensajes asíncronos por ser el sistema más adecuado para los sistemas

distribuidos con bajo acoplamiento. La estructura de los mensajes cumple con el

lenguaje estándar ACL definido por la FIPA [GARA04]:

o sender: Identificador del agente remitente del mensaje.

o receivers: Lista de identificadores de agentes destinatarios del

mensaje.

o performative: Intención de la comunicación. El estándar ACL fija

hasta 22 tipos de performative predefinidos: INFORM (comunicar un

suceso), REQUEST (solicitar un recurso o acción), QUERY-IF

(preguntar por una condición), PROPOSE (establecer una

comunicación compleja o negociación)...

o content: Contenido del mensaje.

o language: Tipo de sintaxis utilizada en el content.

o ontology: Diccionario de símbolos utilizados en el content.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

64

o diversos campos de control para conversaciones concurrentes,

timeouts...

JADE abstrae la capa de comunicaciones del sistema con una interfaz de

funciones sencillas para el envío y recepción de mensajes.

Cada agente es responsable del control de su ciclo de vida estandarizado

por la FIPA [BELL05]:

Fig. 13: Ciclo de vida de agente definido por la FIPA.

Initiated

Active

Transit Waiting

Suspended

Create

Destroy Invoke

Move

Execute

Suspend

Wait

Resume

Wake Up

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

65

Los diferentes estados del ciclo de vida de un agente JADE son los

siguientes:

o INITIATED: El agente se ha creado pero aún no se ha registrado en el

agente AMS. No dispone de nombre propio y no puede comunicarse

con otros agentes.

o ACTIVE: El agente está registrado en el agente AMS, tiene un

nombre unívoco y puede acceder a toda la funcionalidad que

proporciona la infraestructura JADE.

o SUSPENDED: El agente está detenido. Su hilo de ejecución está

suspendido y no ejecuta ningún comportamiento.

o WAITING: El agente está bloqueado esperando algún evento

concreto. Su hilo de ejecución está dormido y despertará en cuanto se

de el evento.

o TRANSIT: El agente móvil está migrando a una nueva ubicación (a

otro contenedor en el mismo u otro host). Los mensajes que lleguen a

su dirección se redireccionarán a su nueva localización.

Los cambios de estado se deben a la invocación de las funciones del

agente que llevan a cabo explícitamente los cambios de estado o a condiciones

extraordinarias y excepciones que pueden implicar un cambio de estado

inesperado.

La orientación de los agentes JADE a la consecución de objetivos

concretos se implementa a través de los denominados comportamientos. Varios

comportamientos arrancados por un agente se ejecutan de forma concurrente

aunque lo hacen sobre el mismo hilo de ejecución. Esto evita problemas de

sincronización entre comportamientos que acceden a recursos comunes. Un

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

66

comportamiento puede interrumpirse en cualquier momento y reanudar su

ejecución en el punto en que se dejó. Esto favorece la movilidad de agentes entre

contenedores remotos.

Algunos de los comportamientos básicos propuestos por la distribución

básica de JADE son los siguientes [BELL05]:

o OneShotBehaviour: Comportamiento cuyo algoritmo se ejecuta una

sola vez.

o CyclicBehaviour: Comportamiento cuyo algoritmo se ejecuta de

forma cíclica; una vez que termina, vuelve a comenzar.

o CompositeBehaviour: Comportamiento que se compone de diferentes

sub-comportamientos que se pueden ejecutar siguiendo diferentes

políticas de planificación: de forma secuencial

(SequentialBehaviour), en paralelo (ParallelBehaviour), etc.

o WakerBehaviour: Comportamiento cuyo algoritmo se ejecuta una

sola vez, pasado un tiempo especificado desde su arranque.

o TickerBehaviour: Comportamiento cuyo algoritmo se ejecuta

periódicamente según un tiempo especificado desde su arranque.

Como se detalló en el apartado 3.3.2: Modelo peer-to-peer, la propiedad

de los participantes de una red de este tipo de poder ingresar y abandonar el

sistema de forma autónoma y sin un control centralizado, es potencialmente

peligrosa. En JADE, la existencia de un nodo central (agente AMS) que

mantiene un registro de los agentes vivos en el sistema y garantiza el carácter

unívoco de sus identificadores permite la incorporación de funciones de

seguridad de gran interés. JADE proporciona mecanismos de autenticación y

verificación de permisos asignados a participantes que entren a formar parte de

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

67

una arquitectura multiagente. El sistema de intercambio de mensajes entre

agentes JADE implementa sistemas de verificación y autenticación del remitente

si se estima necesario en el lado del destinatario.

Un agente JADE puede implementar tantos comportamientos como sean

necesarios para llevar a cabo las tareas para las cuales ha sido diseñado. Esto es

muy cómodo a la hora de ampliar la funcionalidad de un participante

permitiéndole añadir tareas en paralelo sin incrementar excesivamente su

consumo de recursos. La sencillez del proceso de incorporación de nuevos

agentes a la plataforma en contenedores remotos hace de cualquier proyecto

desarrollado sobre JADE un sistema escalable y fiable, ya que se simplifica

considerablemente el arranque inmediato de agentes de backup o incluso

contenedores enteros en caso de fallo de los principales [BELL03].

En entornos móviles, JADE asegura su eficacia con sus servicios de

migración y movilidad. Un agente JADE puede suspender su ejecución en

cualquier momento, migrar a un contenedor ubicado en un host diferente sin

necesidad de instalar el código del agente en el sitio remoto y recuperar su

ejecución en el punto en el que fue interrumpida. Esta funcionalidad permite

realizar un balanceo de carga entre los equipos que soportan el sistema

multiagente en tiempo de ejecución sin significar el más mínimo impacto en la

aplicación [BELL03].

Por último, JADE proporciona un juego de herramientas gráficas de

soporte de gran interés que permiten la monitorización en tiempo de ejecución

del estado de la plataforma en todo momento. Con estas herramientas, es posible

el control remoto de los agentes, la emulación de conversaciones, la

visualización de las comunicaciones entre agentes en vivo y la comprobación del

estado de los agentes y su ciclo de vida. La herramienta más interesante en este

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

68

aspecto es el agente RMA (Remote Management Agent), cuya interfaz gráfica se

muestra a continuación [ARAN06]:

Fig. 14: Interfaz gráfica del agente RMA.

Sólo puede existir un agente RMA por contenedor aunque puede haber

varios por plataforma. La interfaz gráfica del agente RMA permite las siguientes

acciones de monitorización y control de los agentes del sistema:

o Visualizar estado de la plataforma JADE, contenedores asociados y

estado de los agentes arrancados en cada uno de ellos en una

estructura de árbol.

o Terminar la ejecución de un agente (incluido él mismo).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

69

o Terminar la ejecución de todos los agentes de un contenedor.

o Terminar la ejecución de la plataforma en la que se encuentra.

o Arrancar un nuevo agente.

o Detener la ejecución de un agente (suspenderlo).

o Recuperar la ejecución de agentes suspendidos, devolviéndolos al

estado activo.

o Enviar un mensaje ACL a los agentes seleccionados. Una interfaz

gráfica detallada permite rellenar los correspondientes campos de un

mensaje.

o Migrar un agente de un contenedor a otro.

o Clonar un agente, replicando la funcionalidad, estado y

comportamientos del agente seleccionado a un nuevo agente vivo en

el contenedor que se desee.

Otra de las herramientas que proporciona JADE es el agente Dummy.

Este modelo de agente permite fácilmente interactuar con otros agentes y

proporciona un interfaz gráfico que permite construir mensajes ACL, enviarlos,

almacenarlos y verlos en detalle. Este agente puede arrancarse desde el interfaz

RMA.

La visualización en tiempo real de las comunicaciones que se dan entre

agentes de la plataforma es posible gracias a otro de los agentes de

monitorización que proporciona JADE. El agente Sniffer proporciona una

interfaz gráfica intuitiva que permite ver el estado de las comunicaciones de los

agentes deseados [ARAN06]:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

70

Fig. 15: Interfaz gráfica del agente Sniffer.

Los mensajes esquematizados en la interfaz se pueden consultar haciendo

clic sobre ellos para ver su contenido en detalle:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

71

Fig. 16: Detalles de la captura de un mensaje ACL.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

72

3.5. SNORT

El proyecto IDSAI se construye alrededor de Snort, el Sistema de Detección

de Intrusos más extendido en la actualidad. Este NIDS, de libre distribución ha ido

ganando adeptos con el paso del tiempo gracias a su capacidad de crecimiento y

optimización, que lo convierten en uno de los IDS's más rápidos de la actualidad.

Fue creado en 1998 por el norteamericano Martin Roesch, que partiendo de la

simple idea de un sniffer basado en tcpdump construyó el esqueleto de la

herramienta de detección de intrusos que es en la actualidad [KOZI03].

Snort utiliza una interfaz de captura basada en libpcap, librería estándar de

libre distribución disponible para multitud de plataformas, y mantiene su condición

de software libre gracias a la colaboración de la comunidad de usuarios que día a

día incorporan nuevas funcionalidades y juegos de reglas que ponen a disposición

del público sin afán de lucro. La extensa documentación sobre este producto y la

sencillez del diseño y distribución de reglas hacen que la comunidad de usuarios de

Snort pueda tener su IDS actualizado en todo momento, teniendo a su disposición la

mayor colección de patrones de ataques conocidos de todos los IDS.

Snort presume de un diseño óptimo, tanto en tamaño, ya que apenas ocupa

unos pocos megabytes de espacio en disco, como en consumo de recursos, lo que le

permite instalarse en máquinas viejas sin problema. Snort es capaz de monitorizar

la información almacenada en todos los paquetes de una conexión saturada de hasta

100 Mbps con una configuración estándar y empieza a perder eficacia a partir de

los 200 Mbps hasta niveles de tráfico superiores a 500 Mbps, que no los soporta.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

73

3.5.1. MODOS DE FUNCIONAMIENTO

Snort puede funcionar de tres formas distintas, todas basadas en la

captura del tráfico de red mediante una interfaz promíscua [DIAZ05]:

o Modo Sniffer: Es el modo original y más básico de funcionamiento.

Basado en tcpdump, lee los paquetes de red y los muestra por

pantalla o los vuelca en un fichero.

o Modo Logging: Más interesante que el modo Sniffer a la hora de

analizar los resultados, guarda la información de los paquetes

recibidos de red en una estructura de directorios basada en las

direcciones origen o destino de los paquetes.

o Modo NIDS: La función más importante de Snort es el modo de

funcionamiento como Sistema de Detección de Intrusos. El comando

de arranque de este modo incluye una referencia al fichero de

configuración de Snort, pieza clave de la optimización del IDS donde

se definen, entre otras cosas, las listas de reglas a incorporar en el

proceso de inferencia de los ataques. La construcción de un conjunto

de reglas apropiado, que no pierda el tiempo analizando patrones de

ataques que no se puedan dar en el sistema, y la instalación de

sensores en zonas estratégicas de la red es fundamental a la hora de

obtener el máximo rendimiento en esta modalidad, que es en la que

se basa el proyecto IDSAI para la capa de sensores.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

74

3.5.2. COMPONENTES DE SNORT

La configuración de Snort para maximizar su rendimiento en una

instalación requiere de amplios conocimientos sobre su estructura interna y

componentes básicos. El siguiente esquema muestra el flujo de información por

cada una de las partes del programa, desde la captura de datos hasta la

presentación de las alertas [KOZI03]:

Fig. 17: Flujo de datos entre los módulos de Snort

En los siguientes apartados se comentará cada uno de los módulos

representados en la imagen.

Tráfico de red

Decodificador de paquetes

(Packet Decoder)

libpcap

Preprocesadores

(Preprocessors)

Motor de inferencias

(Detection Engine)

Módulos externos

(Output Plugins)

alertas

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

75

3.5.2.1. DESCODIFICADOR DE PAQUETES

Tan pronto como los paquetes son capturados por la librería libpcap,

Snort descodifica los paquetes según cada uno de los principales niveles de

comunicación: enlace, red y transporte. A medida que Snort va

almacenando en estructuras internas la información así recogida, se la va

cediendo a los Preprocesadores correspondientes.

El descodificador de paquetes de Snort dispara alertas ante

condiciones anormales de paquetes de red, como cabeceras incompletas,

campos de opciones de tamaño inusual u obsoletos. Esto puede generar una

gran cantidad de falsos positivos dependiendo de la infraestructura de red y

aplicaciones que se usen en la organización, por lo que se pueden

deshabilitar estas funciones en el propio fichero de configuración de Snort.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

76

3.5.2.2. PREPROCESADORES

Los preprocesadores de Snort son una parte fundamental de la

arquitectura del programa y proporcionan diversas funciones dependiendo

de cada uno de ellos. Pueden habilitarse o no, dependiendo de las

necesidades de análisis y son independientes entre sí por lo que son un

exponente fundamental en la flexibilidad y escalabilidad de la herramienta.

La primera de sus funciones es la de examinar la información recogida de

los paquetes de red en busca de detalles sospechosos y por tanto para

detectar los ataques que no tienen un patrón claro o aquellos preparados

para saltarse las reglas conocidas de Snort. La otra de sus funciones es la de

normalizar los datos y prepararlos para pasarlos por el juego de reglas de

Snort y facilitar la detección de patrones.

Muchos ataques requieren del trabajo de más de un preprocesador

para ser detectados, por lo que la información de un paquete de red pasa por

todos ellos aunque ya se haya disparado una alerta relacionada con un tipo

de anomalía.

Los preprocesadores de Snort habilitados en el proyecto IDSAI, sin

entrar en detalle en las opciones activadas en cada uno de ellos son

[KOZI03]:

� flow: El módulo de seguimiento de flujo (flow tracking

module) es el encargado de almacenar el estado de las

diferentes comunicaciones cuyos paquetes se han

interceptado. Las anomalías en la secuencia de paquetes y

demás irregularidades en el orden e interpretación de los

mensajes intercambiados por los equipos de la red son

detectadas por este preprocesador que disparará las alertas

correspondientes.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

77

� frag2: El módulo de fragmentación es el arma de Snort frente

a los ataques basados en fragmentación. La fragmentación es

una característica propia de las redes IP, que consiste en que

si un mensaje es demasiado voluminoso para enviarlo en un

único paquete por el ancho de banda de una red, se puede

dividir y transmitir por ella, en una secuencia numerada de

paquetes más pequeños. Esta acción propia de la capa de red

y llevada a cabo por routers y hosts intermedios, es la que

permite la comunicación entre diferentes tipos de redes y

protocolos, cada uno con su propia unidad máxima de

transmisión (MTU, Maximum Transmission Unit). Los

paquetes fragmentados deben ser reensamblados en el destino

en el orden adecuado (que no tiene por qué ser el orden en

que se han recibido), y en el caso de no contar con todas las

partes, se disparará una petición de reenvío. La

fragmentación, que es una actividad automática y predecible

ha sido utilizada típicamente por los hackers en sus ataques

para que ganen en eficacia. Un paquete fragmentado es

irreconocible para un Firewall o un IDS mal configurado ya

que si cada una de las partes no resulta sospechosa, llegarán a

su destino sin problemas y causarán el daño tras el

reensamblado (comandos RPC, negaciones de servicio si el

sistema se queda bloqueado con una entrada inesperada, etc.).

Multitud de ataques que tratan de penetrar en una red

evitando los IDS y el filtro de los Firewall incorporan esta

técnica por lo que siempre se recomienda que este

preprocesador esté habilitado, ya que de lo contrario, Snort no

llevaría un control de los fragmentos de red, y no alertaría de

muchas intrusiones.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

78

� stream4: El módulo de control de flujo TCP es con lo que

Snort controla el estado de la capa de transporte de las

conexiones TCP. Es imprescindible para detectar los escaneos

de puertos y otros métodos de reconocimiento basados en

explotar las vulnerabilidades del protocolo TCP. Stream4

almacena el flujo de información de todas las comunicaciones

TCP establecidas en la red, y los evalúa en su conjunto para

alertar de la realización de ataques repartidos entre varios

paquetes, en los que individualmente es imposible reconocer

un patrón.

� stream4_reassemble: Este módulo está íntimamente

relacionado con stream4, siendo el encargado de realizar el

reensamblado de todas las comunicaciones TCP para evitar

situaciones similares a las de la fragmentación en ataques

repartidos entre varios ataques con mayor precisión que

stream4.

� http_inspect: El módulo de inspección de tráfico HTTP es el

responsable de detectar irregularidades en el tráfico HTTP, y

de normalizarlo para que el motor de inferencias pueda

interpretarlo adecuadamente. La normalización consiste en

traducir el contenido extraño de los paquetes (como caracteres

Unicode o en hexadecimal) en un juego de caracteres que

encaje con las reglas a contrastar por el motor de inferencias y

así poder detectar patrones de contenido malicioso.

Http_inspect analiza con detalle las cadenas URI de las

peticiones HTTP y alerta del tráfico de este tipo que requiere

descodificación. La codificación u ofuscación de tráfico

HTTP es un método que utilizan los hackers para evitar ser

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

79

descubiertos por un IDS en ataques a servidores Web

aprovechando alguno de sus exploits, que no se citan aquí por

ser muy específicos para cada versión de servidor.

� rpc_decode: Este módulo tiene una funcionalidad similar al

http_decode pero sobre el protocolo RPC. Las llamadas a

procedimientos remotos son utilizadas por los hackers tanto

para ataques de reconocimiento como para exploits en

sistemas que admiten este protocolo. El análisis exhaustivo de

toda instrucción RPC es fundamental para encontrar patrones

maliciosos en un protocolo tan delicado.

� BO: El preprocesador BO es el encargado de detectar la

actividad del troyano Back Orifice. Este troyano tan popular

descrito en el apartado 3.2.2.4: Accesos autorizados, tiene un

módulo propio en este IDS ya que su idea original ha sido

adoptada por muchos otros troyanos más avanzados. BO

detecta el tráfico encriptado que intercambian las

instalaciones de este troyano

� telnet_decode, ftp_telnet, smtp...: Son otros módulos de

detección de contenidos maliciosos en los paquetes de tráfico

de estos protocolos. Normalizan el contenido de los paquetes

para evitar la ofuscación del código y alertan de las

irregularidades detectadas.

� sfportscan: Este módulo es el encargado de reconocer los

ataques de tipo escaneo de puertos analizando la frecuencia

con que se envían paquetes a diferentes puertos de los hosts

de la red. Es muy importante ajustar los parámetros de este

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

80

preprocesador para evitar el disparo de falsos positivos por

parte del IDS.

� arpspoof: Este módulo está diseñado para detectar tráfico

malicioso ARP. El protocolo ARP presente en las redes IP

para asociar la dirección MAC del interfaz de red con la

dirección IP del mismo y así compaginar el enrutamiento en

nivel de red con el enrutamiento a nivel enlace. El protocolo

ARP tiene la vulnerabilidad de que no proporciona

autenticación, por lo que si un atacante malicioso publica a

los demás hosts de su red una correspondencia MAC-IP falsa,

los demás lo tomarán como válido y se producirá una

suplantación de dirección MAC que provocará conflictos en

el direccionamiento de paquetes a nivel enlace. Este ataque es

conocido como ARP spoofing y se utiliza para interceptar

comunicaciones en entornos switcheados donde un sniffer no

puede intervenir el tráfico. La suplantación de ARP sirve para

realizar ataques del tipo Man-in-the-middle (interceptar las

comunicaciones hacia o desde un host particular) y

negaciones de servicio del tipo Smurf, como la explicada en

el apartado 3.2.2.2: Ataques de negación de servicio, pero en

vez de a nivel de red, a nivel enlace.

� SPADE: Statistical Packet Anomaly Detection Engine. Este

módulo permite la detección de patrones de tráfico anómalos.

Básicamente implementa un tipo de inspección, basado en

análisis estadístico en vez de en comparación de patrones.

Para ello será necesario el entrenamiento del módulo en

condiciones "normales" de red para que en la práctica sea

capaz de detectar las diferencias. Este módulo no se ha

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

81

estudiado a fondo por salirse del alcance del proyecto y por

tanto no se ha implementado en la versión final de IDSAI.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

82

3.5.2.3. MOTOR DE INFERENCIAS

El motor de inferencias de Snort es el componente encargado de

hacer pasar la información recogida de los paquetes capturados de la red tras

su normalización en los diferentes preprocesadores por cada una de las

reglas que conforman la base de conocimiento de patrones de ataques.

Las reglas se agrupan en ficheros editables, y son incorporadas al

motor de inferencias incluyéndolas en el fichero de configuración de Snort.

Hay que ser muy selectivos a la hora de añadir reglas al motor de

inferencias, porque cuantas más patrones haya que comparar para cada

paquete, más retardo acumularán en el motor y si no se es capaz de atender

a todos los paquetes entrantes, se perderá información y podrán colarse

ataques.

Las reglas de Snort tienen dos partes: cabecera y opciones. En la

cabecera se especifican la acción, el protocolo, el origen y el destino

(IP/Máscara) y los puertos. En la parte de opciones, entre paréntesis, se

especifica qué campos del paquete deben ser inspeccionadas y los mensajes

de alerta a disparar en el caso de que coincidan todos los valores indicados

en la regla. Las siguientes líneas corresponden a un ejemplo de regla que

dispararía una alerta si se observa un paquete tcp, de cualquier host externo

por el puerto 21 a cualquier host de la red por cualquier puerto, cuyas

opciones se corresponden con las especificadas entre paréntesis:

alert tcp $EXTERNAL_NET 21 -> $HOME_NET any

(msg:"EXPLOIT NextFTP client overflow"; flow:to_client,established;

content:"|B4| |B4|!|8B CC 83 E9 04 8B 19|3|C9|f|B9 10|";

reference:bugtraq,572; reference:cve,1999-0671; classtype:attempted-

user; sid:308; rev:8;)

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

83

3.5.2.4. MÓDULOS EXTERNOS

El código abierto de Snort proporciona una excelente base para

añadirle multitud de interfaces de salida por las que presentar los resultados

de su trabajo. Estos módulos se habilitan en el fichero de configuración de

Snort en su arranque. Entre los módulos de salida de Snort se encuentran los

siguientes [DIAZ05]:

� Alert syslog: Este módulo manda las alarmas al registro del

sistema. Este módulo permite que el usuario especifique la

prioridad de las alarmas y su categoría dentro de las opciones

que proporciona el servicio.

� Alert fast/full: Imprime las alarmas en un fichero especificado

con mayor o menor detalle.

� Alert smb/unixsock: Envía alarmas a través de NETBIOS o

sockets UNIX hacia un servidor externo que sirve como

monitor del sistema y así libera de carga los sensores Snort.

� XML/tcpdump/CVS: Imprime las alarmas en ficheros con el

formato de cada tipo que se desee. XML es un lenguaje

estándar que permite la integración de Snort con otras

aplicaciones de forma universal. Tcpdump es la forma de

exportar información que optimiza la velocidad de Snort y se

puede combinar con los anteriores modos de alerta. CVS es

una forma de fichero fácilmente importable a cualquier base

de datos donde se pueden escoger los campos a registrar.

� Unified: Es el modo estándar de almacenamiento de Snort.

Separa los eventos en archivos de alerta, que almacenan los

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

84

datos de alto nivel y archivos de log, que almacenan el

paquete asociado a cada evento.

� SNMP: Este módulo permite a Snort interoperar con agentes

SNMP mediante el envío de traps. De este modo se integra

este servicio de gestión de redes con el IDS.

� Base de Datos: Este módulo permite exportar los datos de

Snort a una base de datos MySQL, PostgreSQL, Oracle o

UnixODBC. Es el módulo habilitado en el sistema IDSAI,

que vuelca su información en la base de datos estándar

MySQL snortdb. Ver diagrama del diseño de la base de datos

en el anexo 5: Esquema snortdb.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

85

4. DESCRIPCIÓN FUNCIONAL

En este capítulo se aborda la descripción funcional del proyecto IDSAI, con la

enumeración y detalle de cada una de las clases que componen la aplicación, sus

dependencias y la forma en que interactúan entre sí.

La representación de las clases se ha realizado según el estándar UML 2.0,

obviándose los siguientes conceptos, en pos de la simplificación de la representación

(debido a su redundancia y funcionamiento autoexplicativo):

- Métodos constructores: Métodos propios de la clase cuya misión es la

instanciación de objetos de la clase. Su lógica de programación se basa en

inicializar los atributos básicos de la clase según los parámetros de llamada

del método. No hay un número fijo de constructores y difieren entre sí en la

forma de inicializar los atributos y en los parámetros con que se invocan.

- Métodos "getters": Métodos públicos de la clase (y por tanto invocables

desde otras clases) que permiten leer el valor de sus atributos privados. Cada

método "getter" está asociado a un único atributo". No tienen parámetros y

devuelven una variable del mismo tipo que el atributo asociado.

- Métodos "setters": Métodos públicos de la clase (y por tanto invocables

desde otras clases) que permiten escribir el valor de sus atributos privados.

Cada método "setter" está asociado a un único atributo. Tienen como único

parámetro una variable del mismo tipo que el atributo asociado.

En los siguientes apartados se describirán por este orden, las clases que forman

parte de cada uno de los paquetes en que se estructura el proyecto: dominio, agentes,

comportamientos, interfaz de usuario y clases de acceso a datos y de cálculo. Para una

visión global del diseño del sistema desde el punto de vista de la programación, ver el

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

86

anexo 2: Diagrama de clases, donde en gran formato se representan cada una de las

clases que se van a comentar.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

87

4.1. DOMINIO DEL SISTEMA

Se considera parte del dominio del sistema a todo concepto real que se

modeliza en el sistema para manejarlo como una unidad de información.

4.1.1. DIAGRAMA DE DOMINIO

El siguiente diagrama muestra la relación cardinal entre los conceptos de

seguridad que maneja el sistema y que se detallarán en el siguiente apartado:

Fig. 18: Diagrama de dominio.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

88

4.1.2. DEFINICIÓN DE CONCEPTOS

4.1.2.1. EVENTO (ALERTA)

Unidad de resultado básica del IDS. Es el resultado de pasar un

paquete sospechoso de red por los preprocesadores y motor de inferencias

del Snort aplicándole la base de reglas del mismo.

La alerta básica de Snort aporta la siguiente información:

� CID (Component ID): Identificador unívoco de la instancia

de Snort que detectó la alerta.

� SID (Signature ID): Identificador unívoco de la firma

característica de la alerta detectada.

� RID (Revision ID): Revisión del juego de reglas que han

inferido la firma.

� Breve descripción de la firma característica de la alerta.

� Clase de la firma.

� Prioridad de la alerta asignada por el sistema.

� Fecha y hora de la captura.

� @MAC origen y @MAC destino del paquete sospechoso.

� @IP origen y @IP destino del paquete sospechoso.

� Puertos origen y destino del paquete sospechoso.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

89

� Demás datos del paquete: número de secuencia, flags, tamaño

de cabeceras TCP/IP/UDP...

� URL de referencia para consulta vía Web de detalles del tipo

de firma

Ejemplo de alerta de Snort:

[**] [1:1228:7] SCAN nmap XMAS [**]

[Classification: Attempted Information Leak] [Priority: 2]

04/29-20:18:41.593191 0:16:76:47:1B:AD -> 0:16:76:47:1B:6E type:0x800

192.168.20.103:51889 -> 192.168.20.199:10005 TCP TTL:52 TOS:0x0

ID:28064 IpLen:20 DgmLen:40 **U*P**F Seq: 0x30710427 Ack: 0x0 Win:

0x400 TcpLen: 20 UrgPtr: 0x0

[Xref => http://www.whitehats.com/info/IDS30]

El análisis de las numerosas alertas que Snort genera en cortos

periodos de tiempo sobre redes comprometidas no requiere de toda la

información indicada anteriormente ya que en la mayoría de los casos es

redundante y/o superflua. En su lugar se ha reducido el alcance de este

concepto a la clase Evento (por ser el nombre de la tabla de la base de datos

de Snort que registra la información básica de las alertas), representada en el

sistema como sigue:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

90

Donde:

� sid: Identificador unívoco de la instancia de Snort que detectó

la alerta.

� cid: Identificador unívoco de la alerta.

� signature: Identificador de la firma en la instancia actual de

Snort.

� timestamp: Fecha y hora de la captura.

� iporig: @IP origen del paquete sospechoso

� ipdest: @IP destino del paquete sospechoso

� sport: Puerto origen del paquete sospechoso

� ipdest: Puerto destino del paquete sospechoso

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

91

4.1.2.2. SIGNATURE (FIRMA)

Tipo de comportamiento malicioso y conocido que se asocia a una

alerta. Cada firma se corresponde con un patrón de ataque reconocible por

la base de conocimientos de Snort. Un solo paquete de red sospechoso

puede disparar una alerta con su firma correspondiente por sí mismo, pero

en general una firma, o lo que es lo mismo, un patrón, se contrasta con un

conjunto de paquetes de red semejantes delimitado por el tamaño del búfer

que Snort es capaz de almacenar para este fin.

Las signatures se clasifican en clases en base a la intención que el

evento que genera la alerta puede tener en el sistema. En función de este

detalle, las firmas se ordenan asimismo por un valor de prioridad.

El sistema IDSAI maneja este concepto con la clase Signature, que

queda representada de la siguiente manera:

Donde:

� sig_id: Identificador de la firma en la instancia actual de

Snort.

� signature: Descripción breve de la firma

� prioridad: Valor de prioridad de la firma asignado por Snort.

Valorada de 1 (mín) a 3 (máx).

� clase: Tipo de firma según la intención del ataque.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

92

4.1.2.3. ATAQUE

El concepto de ataque es un concepto a veces ambiguo. En el

proyecto IDSAI se define como sigue: Secuencia de eventos (alertas) con la

misma signature y relativamente continuos en el tiempo (mínima separación

temporal entre eventos menor de 3 segundos). De esta forma se pretenden

agrupar los eventos que, compartiendo una misma intención (clase de

signature), corresponden a una acción común del atacante.

Clasificando de esta manera los eventos, se puede introducir el

concepto de compactación eventual, valor porcentual de gran interés que

indica la proporción de eventos con cid consecutivo del ataque respecto al

número total de eventos que lo componen. Este parámetro permite medir

fácilmente la exhaustividad del ataque. Si el valor es muy alto significaría

que Snort solamente detecta este tipo de actividad y por tanto está

experimentando una presencia clave en la red. Si por el contrario la

compactación es muy baja significa que Snort está detectando diferentes

tipos de signatures y está registrando los eventos intercalando los de una y

otra. De alguna manera, una compactación alta, destaca la agresividad del

ataque y por tanto una mayor exposición de las vulnerabilidades del sistema.

El sistema IDSAI almacena la información relativa a ataques en la

siguiente estructura:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

93

Donde:

� n_eventos: Número de eventos que conforman el ataque.

� evento1: Primer evento (Evento) del ataque.

� eventon: Último evento (Evento) del ataque.

NOTA: Debe recordarse que un ataque termina de registrarse cuando

se procesa la última alarma de la firma correspondiente o bien cuando se

detecta una diferencia de más de 3 segundos entre dos eventos con la misma

firma.

� intervalo_temporal: Segundos transcurridos entre el primer

evento del ataque y el último.

� compactacion_eventual: Valor porcentual que indica el ratio

de eventos consecutivos del ataque respecto al total.

� iporigmaxratio: Par de valores que indican la dirección IP de

origen más frecuente en el ataque y el valor porcentual de la

cantidad de veces que se repite respecto al total de eventos.

En futuros procesos será considerado el atacante en este

ataque.

� ipdestmaxratio: Par de valores que indican la dirección IP de

destino más frecuente en el ataque y el valor porcentual de la

cantidad de veces que se repite respecto al total de eventos.

En futuros procesos será considerada la víctima en este

ataque.

� portorigmaxratio: Par de valores que indican el puerto de

origen más frecuente en el ataque y el valor porcentual de la

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

94

cantidad de veces que se repite respecto al total de eventos.

Pretende dar una pista sobre la aplicación utilizada para la

realización del ataque por parte del atacante.

� portdestmaxratio: Par de valores que indican el puerto de

destino más frecuente en el ataque y el valor porcentual de la

cantidad de veces que se repite respecto al total de eventos.

Pretende dar una pista sobre la vulnerabilidad del sistema

explotada para la realización del ataque por parte del atacante.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

95

4.1.2.4. ANOMALíA

En este proyecto, el término de anomalía cobra una importancia

clave, al ser la estructura de información básica que integra los conceptos

descritos hasta el momento. Una anomalía es, por tanto, el conjunto de

ataques y eventos (agrupados en ataques) con firma común registrados en un

intervalo de tiempo concreto, al que llamaremos ventana.

El sistema IDSAI generará periódicamente, según el tamaño de

ventana fijado, tantas anomalías como tipos de firma haya entre las alertas

disparadas por Snort. El tiempo de ventana es una variable muy importante

a fijar de cara a maximizar el rendimiento de la aplicación, ya que con

valores muy pequeños (pocos segundos) apenas se detectan cambios entre

ventanas y la gran cantidad de información devuelta es redundante y tiende

a ser ignorada. Por contra, si el tiempo de ventana se fija a valores altos, la

gran cantidad de datos que Snort puede registrar en un intervalo de tiempo

suele ser tan grande que se hace inviable el procesamiento rápido de toda la

información. La distribución inicial de la aplicación recomienda fijar este

valor en el arranque del agente Reloj (ver apartado 4.2.1: Agente Reloj) a 20

segundos, ya que se considera el intervalo más adecuado para la realización

de pruebas de carga y rendimiento del sistema.

El sistema maneja las anomalías utilizando la clase Anomalia, que se

describe como sigue:

Donde:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

96

� ventana: Identificador de la ventana en la que se registra la

anomalía.

� tiempo: Fecha y hora de registro de la anomalía.

� signature: Firma (Signature) común de los eventos que

conforman la anomalía.

� eventos: Lista de eventos (Evento) que conforman la

anomalía.

� ataques: Lista de ataques (Ataque) en que se agrupan los

eventos de la anomalía.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

97

4.1.2.5. ANÁLISIS

Los agentes del sistema IDSAI con una visión más general del

estado de la red no pueden trabajar a nivel de anomalías, ya que tendrían

que trabajar con una cantidad de información inmanejable. Resulta por tanto

necesario simplificar las listas contenidas en la estructura Anomalia a datos

estadísticos que permitan tener una visión más general de la situación.

Un análisis está asociado a una única anomalía y se representa en el

sistema mediante la clase Analisis:

Donde:

� ventana: Identificador de la ventana en la que se realiza el

análisis.

� tiempo: Fecha y hora de registro de la anomalía analizada.

� signature: Firma (Signature) de la anomalía analizada.

� prioridad: Prioridad de la anomalía analizada. Se obtiene en

función de la prioridad de la firma de la anomalía y el número

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

98

de eventos que la forman según un juego de reglas fijas

adaptadas a cada tipo de analista. Valorada de 1 (máx) a 6

(mín).

� compactacion: Compactación de la anomalía analizada. Se

obtiene en función del número y compactación eventual de

los ataques que forman la anomalía y de la diferencia entre la

desviación de tiempos en ataques y la media de éstos, según

un juego de reglas fijas adaptadas a cada tipo de analista.

Valorada de 1 (máx) a 12 (mín).

� media_eventosataques: Media estadística del número de

eventos en los ataques que forman la anomalía.

� stdev_eventosataques: Desviación típica del número de

eventos en los ataques que forman la anomalía.

� media_tiempoataques: Media estadística del tiempo de los

ataques que forman la anomalía.

� stdev_tiempoataques: Desviación típica del tiempo de los

ataques que forman la anomalía.

� iporigmaxratio: Par de valores que indican la dirección IP de

origen más frecuente en los ataques de la anomalía y el valor

porcentual de la cantidad de veces que se da en el conjunto.

Esta dirección IP será considerada en adelante como el

atacante de la anomalía.

� ipdestmaxratio: Par de valores que indican el puerto de

destino más frecuente en los ataques de la anomalía y el valor

porcentual de la cantidad de veces que se da en el conjunto.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

99

Esta dirección IP será considerada en adelante como la

víctima de la anomalía.

� portorigmaxratio: Par de valores que indican el puerto de

origen más frecuente en los ataques de la anomalía y el valor

porcentual de la cantidad de veces que se da en el conjunto.

Este puerto dará en adelante pistas sobre la posible aplicación

utilizada para la realización de los ataques por parte del

atacante.

� portdestmaxratio: Par de valores que indican el puerto de

destino más frecuente en los ataques de la anomalía y el valor

porcentual de la cantidad de veces que se da en el conjunto.

Este puerto dará en adelante pistas sobre la vulnerabilidad

explotada del sistema de la víctima para la realización del

ataque.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

100

4.1.2.6. ACUSACIÓN

Este concepto es necesario a la hora de relacionar todas las

anomalías con misma clase de firma detectadas en una ventana. Representa

simplemente la lista de firmas de las anomalías detectadas en la ventana

actual con clase, y dirección IP de origen y destino comunes.

Este concepto se modeliza en el proyecto IDSAI mediante la clase

Acusación como sigue:

Donde:

� prioridad: Prioridad de la anomalía correspondiente.

Equivalente a la del análisis.

� compactacion: Compactación de la anomalía analizada.

� signatures: Lista de estructuras (ParSig) que almacenan cada

una de las firmas (Signature) de la acusación y el par de

puertos origen y destino.

Como se puede observar, la información almacenada en la estructura

Acusación se encuentra incompleta al no indicarse dentro de ella las

direcciones IP origen y destino de cada anomalía. Por ello, Acusación es

una clase auxiliar fundamental en la clase Resumen, en la que sí que caben

conceptualmente los detalles no plasmados en esta clase.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

101

4.1.2.7. RESUMEN

El carácter distribuido del sistema IDSAI requiere de una clase que

contenga la información suficiente y necesaria para que a partir de ella se

pueda tener una visión completa del estado de la red en un equipo remoto.

Por este motivo, se ha confeccionado la clase Resumen, que pretende

representar un resumen del estado de la red en la ventana actual desde el

punto de vista de una sola clase de firma, sin almacenar toda la lista de

eventos o anomalías relacionadas con ella. El resumen no solo se basa en los

análisis de la ventana actual para reflejar el estado de la red, sino que utiliza

para ello un histórico de los análisis de las últimas 4 ventanas y la actual. De

esta manera, las variaciones entre la situación de ventanas consecutivas no

varían bruscamente, evitándose situaciones confusas al tiempo que se

destaca la presencia de alertas críticas, que suelen darse aisladamente y de

esta forma se pueden comparar con la situación de la red en momentos

cercanos.

La clase Resumen queda representada por tanto de la siguiente

manera:

Donde:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

102

� ventana: Identificador de la ventana en la que se realiza el

análisis.

� tiempo: Fecha y hora de registro de la anomalía analizada.

� fiabilidad: Fiabilidad o confianza en el agente que ha

registrado el conjunto de anomalías analizadas (valorada de 1

(mín) a 10 (máx)) determinada en el arranque de éste.

� analisisactuales: Lista de análisis (Analisis) de las anomalías

registradas en la ventana actual.

� clase: Tipo de firma según la intención del ataque, común a

todas las anomalías analizadas.

� prioridad: Borrosificación del valor medio de la prioridad de

los análisis resumidos según un controlador borroso fijo.

� compactación: Borrosificación del valor medio de la

compactación de los análisis resumidos según un controlador

borroso fijo.

� atacantes: Lista de direcciones IP de los atacantes de las

anomalías analizadas.

� victimas: Lista de direcciones IP de las víctimas de las

anomalías analizadas.

� acusaciones: Matriz de acusaciones (Acusacion) cuyos

índices se corresponden con los elementos de las listas

"atacantes" y "victimas". Representa por tanto, para cada

pareja atacante-víctima la lista de firmas (del mismo tipo de

clase) de las anomalías detectadas entre dichos hosts

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

103

especificando los puertos origen y destino correspondientes

para cada caso.

Un conjunto de resúmenes que engloben todas las clases de firma

que el sistema sea capaz de procesar, debería dar una visión completa del

estado de seguridad de la red a un agente de alto nivel.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

104

4.1.2.8. DIAGNÓSTICO

Concepto típico de sistema experto que trata de englobar la

información recibida, y determinar la causa de los problemas detectados. En

el sistema IDSAI representa una descripción del estado de la red en la

ventana actual y una valoración de su situación en base al parámetro

criticidad.

La codificación de este concepto se hace mediante la clase

Diagnostico. Por cuestiones de coherencia y dado que es la estructura de

más alto nivel manejada por el sistema, además de los datos anteriores

también necesita almacenar información relevante sobre los resúmenes

(Resumen) que sirven de base para su elaboración:

Donde:

� ventana: Identificador de la ventana en la que se realizaron los

resúmenes que sirven de base para la elaboración del

diagnóstico (no se corresponde con el tiempo en que se

realiza el diagnóstico)

� tiempo: Fecha y hora de realización del diagnóstico.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

105

� atacantes: Unión sin repetición de las listas de direcciones IP

de los atacantes de todos los resúmenes.

� victimas: Unión sin repetición de las listas de direcciones IP

de las victimas de todos los resúmenes.

� acusaciones: Unión acumulativa de las matrices de

acusaciones de todos los resúmenes.

� estado: Valor numérico que codifica la situación de la red

según el número de atacantes y víctimas en la ventana actual.

� atacanteprincipal: Dirección IP del atacante con más

presencia en la red en la ventana actual. En caso de ser un

estado con múltiples atacantes, esta variable almacenará aquel

que protagonice el mayor número de firmas entre las

acusaciones correspondientes a la ventana actual.

� victimaprincipal: Dirección IP de la víctima con más

presencia en la red en la ventana actual. En caso de ser un

estado con múltiples víctimas, esta variable almacenará

aquella que protagonice el mayor número de firmas entre las

acusaciones correspondientes a la ventana actual.

� criticidad: Valor continuo que representa el nivel de riesgo de

seguridad en la red en la ventana actual. Se obtiene a partir de

los valores borrosos de la prioridad y la compactación de cada

resumen generado en la ventana actual según un conjunto de

reglas de inferencia borrosas fijas. Las inferencias borrosas

devueltas se desborrosifican por el método del centro de

gravedad. Valorada de 1 (máx) a 10 (mín).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

106

4.2. AGENTES DEL SISTEMA

A continuación se detallan las funcionalidades y responsabilidades de cada

uno de los agentes que integran el sistema IDSAI, elementos del dominio sobre los

que trabajan y comportamientos que implementan.

Todos los agentes del sistema son agentes JADE, de modo que por omisión

en sus apartados correspondientes, heredan de la clase Agent cuyo esquema es el

siguiente:

Donde:

o setup(): Método que se dispara al arrancar el agente.

o takedown(): Método que se dispara al matar el agente.

Estos métodos son generalmente sobrescritos por los agentes hijos para

introducir su propia funcionalidad a los mismos (en la implementación de la clase

Agent, no hacen nada).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

107

4.2.1. Agente RELOJ

4.2.1.1. DESCRIPCIÓN

El agente Reloj es el encargado de llevar la cuenta de ventanas de

análisis del sistema IDSAI. Del mismo modo es responsable de saber en

todo momento que agentes se encuentran vivos en cada instante y de

sincronizarlos, para mantener la coherencia temporal de los procesos del

sistema. Solamente debe arrancarse un agente Reloj (de nombre "reloj") en

una instalación del sistema IDSAI.

El agente Reloj se representa en el sistema con la clase AgenteReloj

que tiene la estructura siguiente:

El agente Reloj debe arrancarse con el siguiente parámetro:

� parámetro 1: número entero que indica el periodo de

sincronización de los agentes del sistema y por tanto el

tamaño de la ventana temporal en segundos.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

108

4.2.1.2. ATRIBUTOS

Los atributos mantenidos por la clase AgenteReloj son los

siguientes:

� frame: Referencia a la interfaz gráfica del agente. Ver

apartado 4.4.2: Ventana Reloj.

� agentes: Lista de identificadores de los agentes vivos en el

sistema en el momento actual.

� ventana: Contador que almacena el valor de la ventana actual.

4.2.1.3. MÉTODOS

El método implementado en la clase AgenteReloj es el siguiente:

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.2: Ventana Reloj.

2. Arrancar el comportamiento Recibir Notificaciones.

Ver apartado 4.3.3: Recibir Notificaciones.

3. Arrancar el comportamiento Sincronizar con un

periodo inicializado al valor del parámetro 1. Ver

apartado 4.3.4: Sincronizar.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

109

4.2.2. Agente SENSOR

4.2.2.1. DESCRIPCIÓN

El agente Sensor es el encargado de arrancar la instancia de Snort

adecuadamente configurada para la red a analizar por el sistema IDSAI. Del

mismo modo es responsable de mantener la base de datos "snortdb"

actualizada en todo momento, eliminando los registros antiguos

periódicamente. La repercusión en el rendimiento del sistema que implica

esta funcionalidad, ha supuesto que no se implante este proceso en la

versión final del sistema. En una instalación del sistema IDSAI, el número

de agentes Sensores que se pueden arrancar (de nombre libre) es ilimitado.

De hecho, es deseable arrancar más de una instancia de Snort en diferentes

lugares de la red, para poder recolectar información desde diferentes fuentes

y así explotar las ventajas del sistema multiagente. Hay que destacar que en

el host en que se arranque un agente Sensor es necesario arrancar una serie

de agentes Intérpretes especializados en cada uno de los tipos de Signature

que se desee analizar.

El agente Sensor se representa en el sistema con la clase

AgenteSensor que tiene la estructura siguiente:

El agente Sensor debe arrancarse con los siguientes parámetros:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

110

� parámetro 1: número que indica la interfaz de red del host que

aloja el agente de donde Snort recibirá la información de la

red. Si se desea que Snort trabaje sobre un fichero de captura

de red .pcap, el valor de este parámetro debe ser 0.

� parámetro 2: Sólo es necesario introducirlo si el valor del

primer parámetro es 0. Indica la ruta del fichero de captura de

red .pcap sobre el que trabajará Snort.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.2.2. ATRIBUTOS

Los atributos mantenidos por la clase AgenteSensor son los

siguientes:

� cmd: Llamada al proceso snort.exe, ubicado en la ruta

C:\Snort\bin del equipo en el que se arranque el agente,

utilizando el fichero de configuración de Snort

C:\Snort\etc\IDSAI.conf previamente adaptado a la red en

cuestión.

� proceso: Referencia al proceso snort.exe arrancado por el

agente.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

111

4.2.2.3. MÉTODOS

Los métodos implementados en la clase AgenteSensor son los

siguientes:

� setup(): Sobrescribe el método de la clase padre. El siguiente

diagrama, representa su algoritmo básico:

Fig. 19: Método setup() del agente Sensor.

INICIO

FIN

parámetro1 = 0 NO SI

Actualizar cmd con ruta de

fichero .pcap

Actualizar cmd con interfaz

de red

Arrancar proceso con

llamada cmd

Arrancar comportamiento

Limpiar BD

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

112

- Actualizar cmd con ruta del fichero .pcap: Actualizar

atributo cmd con la ruta del fichero .pcap pasada como

parámetro 2 en el arranque del agente.

- Actualizar cmd con interfaz de red: Actualizar atributo

cmd con la interfaz de red pasada como parámetro 1 en el

arranque del agente.

- Arrancar proceso con llamada cmd: Arrancar el proceso

snort.exe mediante una llamada en tiempo real al sistema

según lo establecido en el atributo cmd.

- Arrancar comportamiento Limpiar BD (no implantado por

cuestión de rendimiento): Arrancar el comportamiento

Limpiar BD. Ver apartado 4.3.5: Limpiar BD.

� takedown(): Sobrescribe el método de la clase padre. Su

algoritmo es completamente lineal y consiste en los siguientes

pasos:

1. Matar el proceso snort.exe referenciado por el atributo

proceso.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

113

4.2.3. Agente INTÉRPRETE

4.2.3.1. DESCRIPCIÓN

El agente Intérprete es el encargado de acceder periódicamente a la

base de datos en busca de Anomalías (Ver apartado 4.1.2.4: Anomalía) de

la clase de signature sobre la cual está especializado. Esta especialización se

consigue en el sistema a través de herencia, ya que todas las especialidades

de Intérprete tienen conceptos en común y conceptos que los diferencian. En

una instalación del sistema IDSAI, el número de agentes Intérpretes que se

pueden arrancar (de nombre libre) por cada Sensor es ilimitado. No

obstante, dos agentes Intérpretes del mismo tipo accediendo a los datos

recogidos por el mismo Sensor, son redundantes.

El agente Intérprete se representa en el sistema con la clase

AgenteInterprete que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.3.2. ATRIBUTOS

Los atributos mantenidos por la clase AgenteInterprete son los

siguientes:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

114

� frame: Referencia a la interfaz gráfica del agente. Ver

apartado 4.4.3: Ventana Agente.

� ventana: Contador que almacena el valor de la ventana actual.

4.2.3.3. MÉTODOS

Los métodos implementados en la clase AgenteInterprete son los

siguientes:

� takedown(): Sobrescribe el método de la clase padre. Su

algoritmo es completamente lineal y consiste en los siguientes

pasos:

1. Deshabilitar la interfaz gráfica del agente.

2. Dar de baja el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "BAJA"

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

115

4.2.4. Agente INTÉRPRETE ATTEMPTED-ADMIN

4.2.4.1. DESCRIPCIÓN

El agente Intérprete Attempted-Admin es el Intérprete especializado

en la busca de anomalías (Ver apartado 4.1.2.4: Anomalía) de la clase de

signature attempted-admin.

El agente Intérprete Attempted-Admin es un agente Inteprete (hereda

de AgenteInterprete) que se representa en el sistema con la clase

AgenteInterpreteAttemptedAdmin que tiene la estructura siguiente:

El agente Intérprete Attempted-Admin debe arrancarse con el

siguiente parámetro:

� parámetro 1: número que indica la fiabilidad de la

información recogida en el host que aloja el agente de donde

Snort recibirá la información de la red.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.4.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

116

4.2.4.3. MÉTODOS

El método implementado en la clase

AgenteInterpreteAttemptedAdmin es el siguiente:

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.3: Ventana Agente.

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Obtener Anomalías con

la especialidad "attempted-admin" y la fiabilidad

según el parámetro 1. Ver apartado 4.3.6: Obtener

Anomalías.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

117

4.2.5. Agente INTÉRPRETE ATTEMPTED-DOS

4.2.5.1. DESCRIPCIÓN

El agente Intérprete Attempted-Dos es el Intérprete especializado en

la busca de anomalías (Ver apartado 4.1.2.4: Anomalía) de la clase de

signature attempted-dos.

El agente Intérprete Attempted-Dos es un agente Intérprete (hereda

de AgenteInterprete) que se representa en el sistema con la clase

AgenteInterpreteAttemptedDos que tiene la estructura siguiente:

El agente Intérprete Attempted-Dos debe arrancarse con el siguiente

parámetro:

� parámetro 1: número que indica la fiabilidad de la

información recogida en el host que aloja el agente de donde

Snort recibirá la información de la red.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.5.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

118

4.2.5.3. MÉTODOS

El método implementado en la clase AgenteInterpreteAttemptedDos

es el siguiente:

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.3: Ventana Agente.

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Obtener Anomalías con

la especialidad "attempted-dos" y la fiabilidad según

el parámetro 1. Ver apartado 4.3.6: Obtener

Anomalías.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

119

4.2.6. Agente INTÉRPRETE ATTEMPTED-RECON

4.2.6.1. DESCRIPCIÓN

El agente Intérprete Attempted-Recon es el Intérprete especializado

en la busca de anomalías (Ver apartado 4.1.2.4: Anomalía) de la clase de

signature attempted-recon.

El agente Intérprete Attempted-Recon es un agente Intérprete

(hereda de AgenteInterprete) que se representa en el sistema con la clase

AgenteInterpreteAttemptedRecon que tiene la estructura siguiente:

El agente Intérprete Attempted-Recon debe arrancarse con el

siguiente parámetro:

� parámetro 1: número que indica la fiabilidad de la

información recogida en el host que aloja el agente de donde

Snort recibirá la información de la red.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.6.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

120

4.2.6.3. MÉTODOS

El método implementado en la clase

AgenteInterpreteAttemptedRecon es el siguiente:

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.3: Ventana Agente.

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Obtener Anomalías con

la especialidad "attempted-recon" y la fiabilidad según

el parámetro 1. Ver apartado 4.3.6: Obtener

Anomalías.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

121

4.2.7. Agente INTÉRPRETE BAD-UNKNOWN

4.2.7.1. DESCRIPCIÓN

El agente Intérprete Bad-Unknown es el Intérprete especializado en

la busca de anomalías (Ver apartado 4.1.2.4: Anomalía) de la clase de

signature bad-unknown.

El agente Intérprete Bad-Unknown es un agente Intérprete (hereda

de AgenteInterprete) que se representa en el sistema con la clase

AgenteInterpreteBadUnknown que tiene la estructura siguiente:

El agente Intérprete Bad-Unknown debe arrancarse con el siguiente

parámetro:

� parámetro 1: número que indica la fiabilidad de la

información recogida en el host que aloja el agente de donde

Snort recibirá la información de la red.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.7.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

122

4.2.7.3. MÉTODOS

El método implementado en la clase AgenteInterpreteBadUnknown

es el siguiente:

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.3: Ventana Agente.

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Obtener Anomalías con

la especialidad "bad-unknown" y la fiabilidad según el

parámetro 1. Ver apartado 4.3.6: Obtener Anomalías.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

123

4.2.8. Agente INTÉRPRETE OTROS

4.2.8.1. DESCRIPCIÓN

El agente Intérprete Otros es el Intérprete especializado en la busca

de anomalías (Ver apartado 4.1.2.4: Anomalía) de la clase de signatures en

las que no está especializado en particular ningún otro Intérprete en el

sistema IDSAI.

El agente Intérprete Otros es un agente Intérprete (hereda de

AgenteInterprete) que se representa en el sistema con la clase

AgenteInterpreteOtros que tiene la estructura siguiente:

El agente Intérprete Otros debe arrancarse con el siguiente

parámetro:

� parámetro 1: número que indica la fiabilidad de la

información recogida en el host que aloja el agente de donde

Snort recibirá la información de la red.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.8.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

124

4.2.8.3. MÉTODOS

El método implementado en la clase AgenteInterpreteOtros es el

siguiente:

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.3: Ventana Agente.

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Obtener Anomalías con

la especialidad "otros" y la fiabilidad según el

parámetro 1. Ver apartado 4.3.6: Obtener Anomalías.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

125

4.2.9. Agente INTÉRPRETE UNKNOWN-CLASS

4.2.9.1. DESCRIPCIÓN

El agente Intérprete Unknown-Class es el Intérprete especializado en

la busca de anomalías (Ver apartado 4.1.2.4: Anomalía) de la clase de

signature Unknown-Class.

El agente Intérprete Unknown-Class es un agente Intérprete (hereda

de AgenteInterprete) que se representa en el sistema con la clase

AgenteInterpreteUnknownClass que tiene la estructura siguiente:

El agente Intérprete Unknown-Class debe arrancarse con el siguiente

parámetro:

� parámetro 1: número que indica la fiabilidad de la

información recogida en el host que aloja el agente de donde

Snort recibirá la información de la red.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.9.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

126

4.2.9.3. MÉTODOS

El método implementado en la clase AgenteInterpreteUnknownClass

es el siguiente:

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.3: Ventana Agente.

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Obtener Anomalías con

la especialidad "unknown-class" y la fiabilidad según

el parámetro 1. Ver apartado 4.3.6: Obtener

Anomalías.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

127

4.2.10. Agente ANALISTA

4.2.10.1. DESCRIPCIÓN

El agente Analista es el encargado de extraer valores estadísticos del

conjunto de Anomalías recibidas del correspondiente agente Intérprete.

Estos datos permiten tener una visión más general acerca de la situación de

la red desde el punto de vista de la clase de signature sobre la cual está

especializado el agente. Esta especialización se representa en el sistema a

través de herencia tal y como se describirá en las siguientes subsecciones, ya

que todas las especialidades de Analista tienen conceptos en común y

conceptos que los diferencian. Se debe arrancar un agente Analista por cada

clase de Signature que se desee analizar en la instalación del sistema IDSAI

(de nombre "analista"+tipo).

El agente Analista se representa en el sistema con la clase

AgenteAnalista que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

128

4.2.10.2. ATRIBUTOS

Los atributos mantenidos por la clase AgenteAnalista son los

siguientes:

� frame: Referencia a la interfaz gráfica del agente. Ver

apartado 4.4.5: Ventana Agente Analista.

� analisis: Lista de Análisis realizados. Ver apartado 4.1.2.5:

Análisis.

� anomalias: Lista de Anomalías recibidas. Ver apartado

4.1.2.4: Anomalía.

� ventana: Contador que almacena el valor de la ventana actual.

4.2.10.3. MÉTODOS

Los métodos implementados en la clase AgenteAnalista son los

siguientes:

� takedown(): Sobrescribe el método de la clase padre. Su

algoritmo es completamente lineal y consiste en los siguientes

pasos:

1. Deshabilitar la interfaz gráfica del agente.

2. Dar de baja el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

129

- Content = "BAJA"

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

130

4.2.11. Agente ANALISTA ATTEMPTED-ADMIN

4.2.11.1. DESCRIPCIÓN

El agente Analista Attempted-Admin es el Analista especializado en

la realización de Análisis (Ver apartado 4.1.2.5: Análisis) de las Anomalías

de clase attempted-admin.

El agente Analista Attempted-Admin es un agente Analista (hereda

de AgenteAnalista) que se representa en el sistema con la clase

AgenteAnalistaAttemptedAdmin que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.11.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.2.11.3. MÉTODOS

El método implementado en la clase

AgenteAnalistaAttemptedAdmin es el siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

131

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.5: Ventana Agente Analista.

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Analizar Anomalías

Attempted-Admin. Ver apartado 4.3.8: Analizar

Anomalías Attempted-Admin.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

132

4.2.12. Agente ANALISTA ATTEMPTED-DOS

4.2.12.1. DESCRIPCIÓN

El agente Analista Attempted-Dos es el Analista especializado en la

realización de Análisis (Ver apartado 4.1.2.5: Análisis) de las Anomalías de

clase attempted-dos.

El agente Analista Attempted-Dos es un agente Analista (hereda de

AgenteAnalista) que se representa en el sistema con la clase

AgenteAnalistaAttemptedDos que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.12.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.2.12.3. MÉTODOS

El método implementado en la clase AgenteAnalistaAttemptedDos

es el siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

133

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.5: Ventana Agente Analista.

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Analizar Anomalías

Attempted-Dos. Ver apartado 4.3.9: Analizar

Anomalías Attempted-Dos.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

134

4.2.13. Agente ANALISTA ATTEMPTED-RECON

4.2.13.1. DESCRIPCIÓN

El agente Analista Attempted-Recon es el Analista especializado en

la realización de Análisis (Ver apartado 4.1.2.5: Análisis) de las Anomalías

de clase attempted-recon.

El agente Analista Attempted-Recon es un agente Analista (hereda

de AgenteAnalista) que se representa en el sistema con la clase

AgenteAnalistaAttemptedRecon que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.13.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.2.13.3. MÉTODOS

El método implementado en la clase

AgenteAnalistaAttemptedRecon es el siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

135

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.5: Ventana Agente Analista.

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Analizar Anomalías

Attempted-Recon. Ver apartado 4.3.10: Analizar

Anomalías Attempted-Recon.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

136

4.2.14. Agente ANALISTA BAD-UNKNOWN

4.2.14.1. DESCRIPCIÓN

El agente Analista Bad-Unknown es el Analista especializado en la

realización de Análisis (Ver apartado 4.1.2.5: Análisis) de las Anomalías de

clase bad-unknown.

El agente Analista Bad-Unknown es un agente Analista (hereda de

AgenteAnalista) que se representa en el sistema con la clase

AgenteAnalistaBadUnknown que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.14.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.2.14.3. MÉTODOS

El método implementado en la clase AgenteAnalistaBadUnknown es

el siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

137

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.5: Ventana Agente Analista

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Analizar Anomalías Bad-

Unknown. Ver apartado 4.3.11: Analizar Anomalías

Bad-Unknown.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

138

4.2.15. Agente ANALISTA OTROS

4.2.15.1. DESCRIPCIÓN

El agente Analista Otros es el Analista especializado en la

realización de Análisis (Ver apartado 4.1.2.5: Análisis) de las Anomalías de

la clase de signatures en las que no está especializado en particular ningún

otro Analista en el sistema IDSAI.

El agente Analista Otros es un agente Analista (hereda de

AgenteAnalista) que se representa en el sistema con la clase

AgenteAnalistaOtros que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.15.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.2.15.3. MÉTODOS

El método implementado en la clase AgenteAnalistaOtros es el

siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

139

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.5: Ventana Agente Analista

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Analizar Anomalías

Otros. Ver apartado 4.3.12: Analizar Anomalías

Otros.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

140

4.2.16. Agente ANALISTA UNKNOWN-CLASS

4.2.16.1. DESCRIPCIÓN

El agente Analista Unknown-Class es el Analista especializado en la

realización de Análisis (Ver apartado 4.1.2.5: Análisis) de las Anomalías de

clase unknown-class.

El agente Analista Unknown-Class es un agente Analista (hereda de

AgenteAnalista) que se representa en el sistema con la clase

AgenteAnalistaUnknownClass que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.16.2. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.2.16.3. MÉTODOS

El método implementado en la clase AgenteAnalistaUnknownClass

es el siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

141

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.5: Ventana Agente Analista

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Analizar Anomalías

Unknown-Class. Ver apartado 4.3.13: Analizar

Anomalías Unknown-Class.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

142

4.2.17. Agente SUPERVISOR

4.2.17.1. DESCRIPCIÓN

El agente Supervisor representa la capa superior de la arquitectura

del sistema IDSAI. Es el encargado de presentar al usuario las incidencias

ocurridas en el sistema a grandes rasgos y de forma gráfica, encapsulando el

nivel de detalle con el que trabajan los agentes Analistas e Intérpretes, por

debajo de él en la arquitectura multiagente. Partiendo del conjunto de

Resúmenes recibidos de los agentes Analistas del sistema, devuelve un

Diagnóstico, único para cada ventana temporal, que refleja la situación

actual del sistema. Asimismo, a la hora de presentar los resultados al usuario

compara el Diagnóstico de la ventana actual con el de la anterior para dar

una explicación textual de los cambios acontecidos. La interfaz gráfica que

incorpora este agente, junto con las de los agentes que le sirven de fuente,

permite la navegación hacia atrás de forma que el usuario que desee

profundizar en el detalle de la situación mostrada por el Diagnóstico, puede

hacerlo siguiendo la traza del mismo. Solamente debe arrancarse un agente

Supervisor (de nombre "supervisor") en una instalación del sistema IDSAI.

El agente Supervisor se representa en el sistema con la clase

AgenteSupervisor que tiene la estructura siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

143

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.2.17.2. ATRIBUTOS

Los atributos mantenidos por la clase AgenteSupervisor son los

siguientes:

� frame: Referencia a la interfaz gráfica del agente. Ver

apartado 4.4.7: Ventana Agente Supervisor.

� ultimodiagnostico: Almacena el último Diagnóstico realizado

por el agente en el tiempo, es decir, el correspondiente a la

ventana actual del sistema. Ver apartado 4.1.2.8:

Diagnóstico.

� diagnosticos: Lista de Diagnósticos realizados. Ver apartado

4.1.2.8: Diagnóstico.

� resumenes: Lista de Resúmenes recibidos. Ver apartado

4.1.2.7: Resumen.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

144

� ventana: Contador que almacena el valor de la ventana actual.

� topatacantes: Lista de los 5 atacantes principales en la red.

� topvictimas: Lista de las 5 víctimas principales en la red.

4.2.17.3. MÉTODOS

Los métodos implementados en la clase AgenteAnalista son los

siguientes:

� setup(): Sobrescribe el método de la clase padre. Su algoritmo

es completamente lineal y consiste en los siguientes pasos:

1. Arrancar la interfaz gráfica del agente. Ver apartado

4.4.7: Ventana Agente Supervisor

2. Dar de alta el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "ALTA"

3. Arrancar el comportamiento Diagnosticar Resúmenes.

Ver apartado 4.3.14: Diagnosticar Resúmenes.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

145

� takedown(): Sobrescribe el método de la clase padre. Su

algoritmo es completamente lineal y consiste en los siguientes

pasos:

1. Deshabilitar la interfaz gráfica del agente.

2. Dar de baja el agente en el sistema, enviando un

mensaje ACL al agente Reloj del sistema con la

siguiente forma:

- Receiver = "reloj"

- Content = "BAJA"

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

146

4.3. COMPORTAMIENTOS

A continuación se detallan las funcionalidades y responsabilidades de cada

uno de los comportamientos que implementan los agentes que integran el sistema

IDSAI.

Todos los comportamientos del sistema son instancias de clases que heredan

de comportamientos JADE, más concretamente de los comportamientos Periódico y

Cíclico que se pasan a detallar a continuación junto con los demás comportamientos

desarrollados en el sistema.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

147

4.3.1. PERIÓDICO

Comportamiento JADE que ejecuta periódicamente su método principal

según el periodo introducido como parámetro de su constructor.

El comportamiento Periódico se representa en el sistema con la clase

TickerBehaviour, que tiene la estructura resumida siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.1.1. ATRIBUTOS

Ninguno relevante en el proyecto IDSAI.

4.3.1.2. MÉTODOS

El método más relevante implementado en la clase TickerBehaviour

es el siguiente:

� onTick(): Método principal que se ejecuta periódicamente

según el periodo especificado en el constructor de la clase.

Este método es sobrescrito por los agentes hijos para introducir su

propia funcionalidad (en la implementación de la clase TickerBehaviour, no

hace nada).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

148

4.3.2. CÍCLICO

Comportamiento JADE que ejecuta cíclicamente su método principal.

El comportamiento Cíclico se representa en el sistema con la clase

CyclicBehaviour, que tiene la estructura resumida siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.2.1. ATRIBUTOS

Ninguno relevante en el proyecto IDSAI.

4.3.2.2. MÉTODOS

El método más relevante implementado en la clase TickerBehaviour

es el siguiente:

� action(): Método principal que se ejecuta de forma continua,

desde el arranque del comportamiento.

Este método es sobrescrito por los agentes hijos para introducir su

propia funcionalidad (en la implementación de la clase CyclicBehaviour, no

hace nada).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

149

4.3.3. RECIBIR NOTIFICACIONES

Comportamiento dedicado a mantener actualizada la lista de

identificadores de agentes vivos que es atributo del agente que lo implementa

(agente Reloj).

El comportamiento Recibir Notificaciones es un comportamiento Cíclico

(hereda de CyclicBehaviour) que se representa en el sistema con la clase

BehaviourRecibirNotificaciones que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.3.1. ATRIBUTOS

El atributo mantenido por la clase BehaviourRecibirNotificaciones

es el siguiente:

� agente: Referencia al agente que implementa el

comportamiento. Ver apartado 4.2.1: Agente Reloj.

4.3.3.2. MÉTODOS

El método implementado en la clase BehaviourRecibirNotificaciones

es el siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

150

� action(): Sobrescribe el método de la clase padre. El siguiente

diagrama, representa su algoritmo básico:

Fig. 20: Método action() del comportamiento Recibir Notificaciones.

- Eliminar remitente de la lista de agentes vivos: Buscar

remitente del mensaje en el ArrayList "agentes" que es

atributo del agente que implementa el comportamiento

(agente Reloj) y eliminar dicha posición. La búsqueda es

lineal, de principio a fin del array hasta que se encuentre el

elemento. El elemento siempre debería encontrarse salvo

caso de error extraordinario, en cuyo caso no se hace nada,

INICIO

FIN

nuevo ciclo

¿mensaje

recibido?

NO

SI

¿contenido =

"ALTA"?

SI

Eliminar remitente de la

lista de agentes vivos

Añadir remitente a la lista

de agentes vivos

NO

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

151

porque el elemento a borrar ya no estaría en la lista.

Finalmente, se actualiza la interfaz gráfica del agente

Reloj invocando la función actualizarTabla() de la clase

FrameReloj. Ver apartado 4.4.2: Ventana Reloj.

- Añadir remitente a la lista de agentes vivos: Añadir

remitente del mensaje al final del ArrayList "agentes" que

es atributo del agente que implementa el comportamiento

(agente Reloj). Finalmente, se actualiza la interfaz gráfica

del agente Reloj invocando la función actualizarTabla() de

la clase FrameReloj. Ver apartado 4.4.2: Ventana Reloj.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

152

4.3.4. SINCRONIZAR

Comportamiento dedicado a mantener el control de la ventana temporal

de todos los agentes del sistema.

El comportamiento Sincronizar es un comportamiento Periódico (hereda

de TickerBehaviour) que se representa en el sistema con la clase

BehaviourSincronizar que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.4.1. ATRIBUTOS

Los atributos mantenidos por la clase BehaviourSincronizar son los

siguientes:

� agente: Referencia al agente que implementa el

comportamiento. Ver apartado 4.2.1: Agente Reloj.

� contadorventana: Entero que mantiene el valor de la ventana

actual del sistema.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

153

4.3.4.2. MÉTODOS

El método implementado en la clase BehaviourSincronizar es el

siguiente:

� onTick(): Sobrescribe el método de la clase padre. Su

algoritmo es completamente lineal y consiste en los siguientes

pasos:

1. Incrementar el valor del atributo contadorventana.

2. Actualizar la interfaz gráfica del agente Reloj

invocando la función actualizarContador() de la clase

FrameReloj. Ver apartado 4.4.2: Ventana Reloj.

3. Sincronizar cada uno de los agentes vivos enviando un

mensaje ACL a cada uno de ellos (recorriendo la lista

de agentes actuales que es atributo del agente que

implementa el comportamiento. Ver apartado 4.3.3:

Recibir Notificaciones.) con la siguiente forma:

- Performative = valor del atributo contadorventana

- Language = "sync"

- Content = tamaño de la ventana con la que se ha

arrancado el comportamiento (parámetro periodo).

Dado el carácter periódico de este método, se garantiza que

todo agente vivo en el sistema recibe a intervalos constantes

un mensaje como el anteriormente indicado con el valor de

Performative actualizado.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

154

4.3.5. LIMPIAR BD

Comportamiento dedicado a mantener la base de datos "snortdb" con un

volumen de datos aceptable, eliminando los registros antiguos periódicamente.

Esta funcionalidad es muy costosa para el sistema gestor de bases de datos e

influye considerablemente en el acceso a la información de los agentes

arrancados en paralelo. Por esta razón se ha optado por no implantar este

proceso en la versión final del sistema, aunque queda pendiente para futuras

revisiones.

El comportamiento Limpiar BD es un comportamiento Periódico (hereda

de TickerBehaviour) que se representa en el sistema con la clase

BehaviourLimpiarBD que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.5.1. ATRIBUTOS

Los atributos mantenidos por la clase BehaviourLimpiarBD son los

siguientes:

� ret: Código de retorno de las llamadas al sistema gestor de

bases de datos a través de las llamadas a las funciones de la

capa de persistencia.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

155

� segundos: Entero largo que indica el margen desde el

momento actual en que se mantienen los registros antiguos de

la base de datos (los anteriores se eliminan).

4.3.5.2. MÉTODOS

El método implementado en la clase BehaviourLimpiarBD es el

siguiente:

� onTick(): Sobrescribe el método de la clase padre. Su

algoritmo es completamente lineal y consiste en los siguientes

pasos:

1. Llama a la función de la capa de persistencia

eliminarEventosAnterioresA() con el número de

segundos que es atributo de esta clase. Ver apartado

4.6.1: Evento DAO.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

156

4.3.6. OBTENER ANOMALÍAS

Comportamiento dedicado a buscar periódicamente anomalías (Ver

apartado 4.1.2.4: Anomalía) del tipo especificado en el arranque, en la base de

datos snortdb alojada en el host donde Snort vuelca la información obtenida de

la red.

El comportamiento Obtener Anomalías es un comportamiento Cíclico

(hereda de CyclicBehaviour) que se representa en el sistema con la clase

BehaviourObtenerAnomalías que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.6.1. ATRIBUTOS

Los atributos mantenidos por la clase BehaviourObtenerAnomalias

son los siguientes:

� agente: Referencia al agente que implementa el

comportamiento. (Ver apartado 4.2.3: Agente Intérprete).

� tipo: Especialidad del agente Intérprete que implementa el

comportamiento.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

157

� fiabilidad: valoración numérica de la fiabilidad de la

información recogida por este comportamiento que es

indicada en la construcción del agente Intérprete que lo

implementa.

4.3.6.2. MÉTODOS

El método implementado en la clase BehaviourObtenerAnomalias es

el siguiente:

� action(): Sobrescribe el método de la clase padre. El siguiente

diagrama, representa su algoritmo básico:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

158

Fig. 21: Método action() del comportamiento Obtener Anomalías.

- Actualizar ventana del agente Intérprete: Actualizar el

valor del atributo ventana del agente Intérprete que

implementa el comportamiento. Ver apartado 4.2.3:

Agente Intérprete.

- Obtener Anomalías: Obtener la lista de anomalías de la

clase de la que es especialista el agente Intérprete que

INICIO

FIN

¿mensaje

recibido?

NO

SI

Obtener Anomalías

Actualizar ventana del

agente Intérprete

¿anomalías

recibidas?

NO

Enviar Anomalías

SI

nuevo

ciclo

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

159

implementa el comportamiento. Para ello se invoca la

función de la capa de persistencia obtenerAnomalias() con

el tipo de clase especificada por el atributo tipo de este

comportamiento. Ver apartado 4.5.2: Anomalía DAO.

- Enviar Anomalías: Enviar un mensaje ACL al agente

Analista, especializado en la clase de signature en que está

especializado el agente Intérprete que implementa este

comportamiento, con la siguiente forma:

- Receiver = "analista"+tipo

- Content = Lista de anomalias de la misma clase

obtenidas anteriormente

- Language = "data"

- Performative = fiabilidad

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

160

4.3.7. ANALIZAR ANOMALÍAS

Comportamiento dedicado a extraer valores estadísticos del conjunto de

Anomalías recibidas por el agente que lo implementa (Ver apartado 4.2.10:

Agente Analista). De esta forma, este comportamiento introduce en el sistema el

concepto Análisis (Ver apartado 4.1.2.5: Análisis). El manejo de un Análisis por

cada Anomalía recibida se considera inviable en niveles superiores de la

arquitectura, por lo que es este proceso el que construye la estructura Resumen

(Ver apartado 4.1.2.7: Resumen) que es el producto final del agente Analista.

Finalmente, este comportamiento permite a su vez la sincronización del agente

Analista que lo implementa.

El comportamiento Analizar Anomalías es un comportamiento Cíclico

(hereda de CyclicBehaviour) que se representa en el sistema con la clase

BehaviourAnalizarAnomalías que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.7.1. ATRIBUTOS

Los atributos mantenidos por la clase BehaviourObtenerAnomalias

son los siguientes:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

161

� agente: Referencia al agente que implementa el

comportamiento. (Ver apartado 4.2.10: Agente Analista).

� tipo: Especialidad del agente Analista que implementa el

comportamiento.

4.3.7.2. MÉTODOS

Los métodos implementados en la clase

BehaviourAnalizarAnomalias son los siguientes:

� action(): Sobrescribe el método de la clase padre. El siguiente

diagrama, representa su algoritmo básico:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

162

Fig. 22: Método action() del comportamiento Analizar Anomalías.

INICIO

FIN

¿mensaje

recibido?

NO

SI

Actualizar ventana del

agente Analista

¿mensaje de

sincronización?

SI NO

(lista de Anomalías)

Limpiar anomalías del

agente Analista

Limpiar análisis del agente

Analista

for Anomalía

Actualizar anomalías del

agente Analista

Realizar Análisis de la

Anomalía actual

Realizar Resumen de los

Análisis actuales

Enviar Resumen

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

163

- Actualizar ventana del agente Analista: Actualizar el valor

del atributo ventana del agente Analista que implementa el

comportamiento. Ver apartado 4.2.10: Agente Analista.

- Limpiar anomalías del agente Analista: Eliminar de la lista

de anomalías recibidas del agente Analista, representada

en el sistema por el atributo anomalias, aquellas que lleven

almacenadas más de 20 ventanas. Externalizar al fichero

de log anomalias.txt la información eliminada y actualizar

la interfaz gráfica.

- Limpiar análisis del agente Analista: Eliminar de la lista

de análisis realizados por el agente Analista, representada

en el sistema por el atributo analisis, aquellos que lleven

almacenados más de 20 ventanas. Externalizar al fichero

de log analisis.txt la información eliminada y actualizar la

interfaz gráfica.

- Actualizar anomalías del agente Analista: Introducir la

Anomalía considerada en el bucle actual en la lista de

anomalías recibidas del agente Analista, representada en el

sistema por el atributo anomalias. Actualizar la interfaz

gráfica.

- Realizar Análisis de la Anomalía actual: Invocar el

método local realizarAnalisis() sobre la anomalía

considerada en el bucle actual. Introducir el Análisis

obtenido en la lista de análisis realizados por el agente

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

164

Analista, representada en el sistema por el atributo

analisis. Actualizar la interfaz gráfica.

- Realizar Resumen de los Análisis actuales: Invocar el

método local resumir() sobre la lista de análisis realizados

en el bucle anterior y pasándole la fiabilidad del agente

Intérprete de quien se recibieron las correspondientes

Anomalías.

- Enviar Resumen: Enviar un mensaje ACL al agente

Supervisor, con la siguiente forma:

- Receiver = "supervisor"

- Content = Resumen obtenido anteriormente

- Language = "data"

� resumir(): Elabora y retorna el Resumen asociado al conjunto

de Análisis pasados como parámetro. El siguiente diagrama,

representa su algoritmo básico:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

165

Fig. 23: Método resumir() del comportamiento Analizar Anomalías.

INICIO

FIN

(devolver Resumen)

for Análisis

Obtener lista de atacantes

Obtener lista de víctimas

Obtener prioridad media

Obtener compactación media

Borrosificar prioridad media

Borrosificar compactación media

Obtener matriz de Acusaciones

Construir Resumen

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

166

- Obtener lista de atacantes: Obtener lista de los atacantes

que han participado en los Análisis a resumir.

- Obtener lista de víctimas: Obtener lista de las víctimas que

han participado en los Análisis a resumir.

- Obtener prioridad media: Obtener prioridad media de los

Análisis a resumir.

- Obtener compactación media: Obtener compactación

media de los Análisis a resumir.

- Borrosificar prioridad media: Obtener el valor borroso de

la prioridad media de los Análisis a resumir, invocando la

función de control borroso borrosificarprioridad(). Ver

apartado 4.6.2: Control Borroso.

- Borrosificar compactación media: Obtener el valor

borroso de la compactación media de los Análisis a

resumir, invocando la función de control borroso

borrosificarcompactación(). Ver apartado 4.6.2: Control

Borroso.

- Obtener matriz de Acusaciones: Recorrer las listas de

atacantes y víctimas junto con la lista de Análisis para

obtener la matriz de Acusaciones característica del

Resumen para el conjunto de Anomalías analizadas. Ver

apartado 4.1.2.6: Acusación.

- Construir Resumen: Construir estructura Resumen

integrando la información anteriormente obtenida: listas

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

167

de atacantes y víctimas, prioridad y compactación

borrosas y matriz de acusaciones.

� realizarAnalisis(): Extrae valores estadísticos de la Anomalía

que se le pasa como parámetro introduciendo la estructura

Análisis en el sistema. Ver apartado 4.1.2.5: Análisis. Su

algoritmo es completamente lineal y consiste en los siguientes

pasos:

1. Obtener media del número de eventos por Ataque.

2. Obtener desviación típica del número de eventos por

Ataque.

3. Obtener media de la duración de los Ataques de la

Anomalía.

4. Obtener desviación típica de la duración de los

Ataques de la Anomalía.

5. Obtener el ratio de tiempo en que se dan Ataques

compactos respecto al total del tiempo de la Anomalía.

6. Realizar el cálculo heurístico de la prioridad y

compactación del Análisis en base a la Anomalía

analizada y el ratio obtenido anteriormente. Para ello

se invoca el método local realizarAnalisisParticular().

7. Obtener la dirección IP de origen predominante entre

los eventos de la Anomalía.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

168

8. Obtener la dirección IP de destino predominante entre

los eventos de la Anomalía.

9. Obtener el puerto origen predominante entre los

eventos de la Anomalía.

10. Obtener el puerto destino predominante entre los

eventos de la Anomalía.

11. Construir estructura Análisis integrando toda la

información anteriormente obtenida. Ver apartado

4.1.2.5: Análisis.

� realizarAnalisisParticular(): Método abstracto que debe ser

sobrescrito por los comportamientos que hereden de

BehaviourAnalizarAnomalias. Deberá incorporar las reglas de

cálculo de la prioridad y compactación del Análisis de forma

especializada para cada tipo de agente Analista que

implemente el comportamiento hijo.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

169

4.3.8. ANALIZAR ANOMALÍAS ATTEMPTED-ADMIN

Comportamiento dedicado a extraer valores estadísticos del conjunto de

Anomalías recibidas por el agente que lo implementa (Ver apartado 4.2.11:

Analista Attempted-Admin).

El comportamiento Analizar Anomalías Attempted-Admin es un

comportamiento de Analizar Anomalías (hereda de

BehaviourAnalizarAnomalias) que se representa en el sistema con la clase

BehaviourAnalizarAnomaliasAttemptedAdmin que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.8.1. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.3.8.2. MÉTODOS

Los métodos implementados en la clase

BehaviourAnalizarAnomaliasAttemptedAdmin son los siguientes:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

170

� realizarAnalisisParticular(): Sobrescribe el método de la clase

padre. Su algoritmo es completamente lineal y consiste en los

siguientes pasos:

1. Realizar el cálculo especializado de la compactación

eventual de la Anomalía y según el ratio de tiempo de

ataques pasados como parámetros. Para ello se invoca

el método local reglasCompactacion().

2. Realizar el cálculo especializado de la prioridad de la

Anomalía pasada como parámetro. Para ello se invoca

el método local reglasPrioridad().

3. Devolver el Análisis pasado como parámetro

actualizados sus atributos con los nuevos valores de

compactación y prioridad.

� reglasCompactacion(): Juego de reglas específico para el tipo

de signature en la que es experto el agente Analista que

devuelve el valor numérico entero de la compactación de la

Anomalía pasada como parámetro. Ver árbol de decisión

Compactación del capítulo attempted-admin del anexo 6:

Signatures IDSAI (Snort).

� reglasPrioridad(): Juego de reglas específico para el tipo de

signature en la que es experto el agente Analista que devuelve

el valor numérico entero de la prioridad de la Anomalía

pasada como parámetro. Ver árbol de decisión Prioridad del

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

171

capítulo attempted-admin del anexo 6: Signatures IDSAI

(Snort).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

172

4.3.9. ANALIZAR ANOMALÍAS ATTEMPTED-DOS

Comportamiento dedicado a extraer valores estadísticos del conjunto de

Anomalías recibidas por el agente que lo implementa (Ver apartado 4.2.12:

Analista Attempted-Dos).

El comportamiento Analizar Anomalías Attempted-Dos es un

comportamiento de Analizar Anomalías (hereda de

BehaviourAnalizarAnomalias) que se representa en el sistema con la clase

BehaviourAnalizarAnomaliasAttemptedDos que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.9.1. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.3.9.2. MÉTODOS

Los métodos implementados en la clase

BehaviourAnalizarAnomaliasAttemptedDos son los siguientes:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

173

� realizarAnalisisParticular(): Sobrescribe el método de la clase

padre. Su algoritmo es completamente lineal y consiste en los

siguientes pasos:

1. Realizar el cálculo especializado de la compactación

eventual de la Anomalía y según el ratio de tiempo de

ataques pasados como parámetros. Para ello se invoca

el método local reglasCompactacion().

2. Realizar el cálculo especializado de la prioridad de la

Anomalía pasada como parámetro. Para ello se invoca

el método local reglasPrioridad().

3. Devolver el Análisis pasado como parámetro

actualizados sus atributos con los nuevos valores de

compactación y prioridad.

� reglasCompactacion(): Juego de reglas específico para el tipo

de signature en la que es experto el agente Analista que

devuelve el valor numérico entero de la compactación de la

Anomalía pasada como parámetro. Ver árbol de decisión

Compactación del capítulo attempted-dos del anexo 6:

Signatures IDSAI (Snort).

� reglasPrioridad(): Juego de reglas específico para el tipo de

signature en la que es experto el agente Analista que devuelve

el valor numérico entero de la prioridad de la Anomalía

pasada como parámetro. Ver árbol de decisión Prioridad del

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

174

capítulo attempted-dos del anexo 6: Signatures IDSAI

(Snort).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

175

4.3.10. ANALIZAR ANOMALÍAS ATTEMPTED-RECON

Comportamiento dedicado a extraer valores estadísticos del conjunto de

Anomalías recibidas por el agente que lo implementa (Ver apartado 4.2.13:

Analista Attempted-Recon).

El comportamiento Analizar Anomalías Attempted-Recon es un

comportamiento de Analizar Anomalías (hereda de

BehaviourAnalizarAnomalias) que se representa en el sistema con la clase

BehaviourAnalizarAnomaliasAttemptedRecon que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.10.1. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.3.10.2. MÉTODOS

Los métodos implementados en la clase

BehaviourAnalizarAnomaliasAttemptedRecon son los siguientes:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

176

� realizarAnalisisParticular(): Sobrescribe el método de la clase

padre. Su algoritmo es completamente lineal y consiste en los

siguientes pasos:

1. Realizar el cálculo especializado de la compactación

eventual de la Anomalía y según el ratio de tiempo de

ataques pasados como parámetros. Para ello se invoca

el método local reglasCompactacion().

2. Realizar el cálculo especializado de la prioridad de la

Anomalía pasada como parámetro. Para ello se invoca

el método local reglasPrioridad().

3. Devolver el Análisis pasado como parámetro

actualizados sus atributos con los nuevos valores de

compactación y prioridad.

� reglasCompactacion(): Juego de reglas específico para el tipo

de signature en la que es experto el agente Analista que

devuelve el valor numérico entero de la compactación de la

Anomalía pasada como parámetro. Ver árbol de decisión

Compactación del capítulo attempted-recon del anexo 6:

Signatures IDSAI (Snort).

� reglasPrioridad(): Juego de reglas específico para el tipo de

signature en la que es experto el agente Analista que devuelve

el valor numérico entero de la prioridad de la Anomalía

pasada como parámetro. Ver árbol de decisión Prioridad del

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

177

capítulo attempted-recon del anexo 6: Signatures IDSAI

(Snort).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

178

4.3.11. ANALIZAR ANOMALÍAS BAD-UNKNOWN

Comportamiento dedicado a extraer valores estadísticos del conjunto de

Anomalías recibidas por el agente que lo implementa (Ver apartado 4.2.13:

Analista Bad-Unknown).

El comportamiento Analizar Anomalías Bad-Unknown es un

comportamiento de Analizar Anomalías (hereda de

BehaviourAnalizarAnomalias) que se representa en el sistema con la clase

BehaviourAnalizarAnomaliasBadUnknown que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.11.1. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.3.11.2. MÉTODOS

Los métodos implementados en la clase

BehaviourAnalizarAnomaliasBadUnknown son los siguientes:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

179

� realizarAnalisisParticular(): Sobrescribe el método de la clase

padre. Su algoritmo es completamente lineal y consiste en los

siguientes pasos:

1. Realizar el cálculo especializado de la compactación

eventual de la Anomalía y según el ratio de tiempo de

ataques pasados como parámetros. Para ello se invoca

el método local reglasCompactacion().

2. Realizar el cálculo especializado de la prioridad de la

Anomalía pasada como parámetro. Para ello se invoca

el método local reglasPrioridad().

3. Devolver el Análisis pasado como parámetro

actualizados sus atributos con los nuevos valores de

compactación y prioridad.

� reglasCompactacion(): Juego de reglas específico para el tipo

de signature en la que es experto el agente Analista que

devuelve el valor numérico entero de la compactación de la

Anomalía pasada como parámetro. Ver árbol de decisión

Compactación del capítulo bad-unknown del anexo 6:

Signatures IDSAI (Snort).

� reglasPrioridad(): Juego de reglas específico para el tipo de

signature en la que es experto el agente Analista que devuelve

el valor numérico entero de la prioridad de la Anomalía

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

180

pasada como parámetro. Ver árbol de decisión Prioridad del

capítulo bad-unknown del anexo 6: Signatures IDSAI (Snort).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

181

4.3.12. ANALIZAR ANOMALÍAS OTROS

Comportamiento dedicado a extraer valores estadísticos del conjunto de

Anomalías recibidas por el agente que lo implementa (Ver apartado 4.2.15:

Analista Otros).

El comportamiento Analizar Anomalías Otros es un comportamiento de

Analizar Anomalías (hereda de BehaviourAnalizarAnomalias) que se representa

en el sistema con la clase BehaviourAnalizarAnomaliasOtros que tiene la

estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.12.1. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.3.12.2. MÉTODOS

Los métodos implementados en la clase

BehaviourAnalizarAnomaliasOtros son los siguientes:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

182

� realizarAnalisisParticular(): Sobrescribe el método de la clase

padre. Su algoritmo es completamente lineal y consiste en los

siguientes pasos:

1. Realizar el cálculo especializado de la compactación

eventual de la Anomalía y según el ratio de tiempo de

ataques pasados como parámetros. Para ello se invoca

el método local reglasCompactacion().

2. Realizar el cálculo especializado de la prioridad de la

Anomalía pasada como parámetro. Para ello se invoca

el método local reglasPrioridad().

3. Devolver el Análisis pasado como parámetro

actualizados sus atributos con los nuevos valores de

compactación y prioridad.

� reglasCompactacion(): Juego de reglas específico para el tipo

de signature en la que es experto el agente Analista que

devuelve el valor numérico entero de la compactación de la

Anomalía pasada como parámetro. Ver árbol de decisión

Compactación del capítulo otros del anexo 6: Signatures

IDSAI (Snort).

� reglasPrioridad(): Juego de reglas específico para el tipo de

signature en la que es experto el agente Analista que devuelve

el valor numérico entero de la prioridad de la Anomalía

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

183

pasada como parámetro. Ver árbol de decisión Prioridad del

capítulo otros del anexo 6: Signatures IDSAI (Snort).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

184

4.3.13. ANALIZAR ANOMALÍAS UNKNOWN-CLASS

Comportamiento dedicado a extraer valores estadísticos del conjunto de

Anomalías recibidas por el agente que lo implementa (Ver apartado 4.2.14:

Analista Unknown-Class).

El comportamiento Analizar Anomalías Unknown-Class es un

comportamiento de Analizar Anomalías (hereda de

BehaviourAnalizarAnomalias) que se representa en el sistema con la clase

BehaviourAnalizarAnomaliasUnknownClass que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.13.1. ATRIBUTOS

Ninguno relevante aparte de los heredados.

4.3.13.2. MÉTODOS

Los métodos implementados en la clase

BehaviourAnalizarAnomaliasUnknownClass son los siguientes:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

185

� realizarAnalisisParticular(): Sobrescribe el método de la clase

padre. Su algoritmo es completamente lineal y consiste en los

siguientes pasos:

1. Realizar el cálculo especializado de la compactación

eventual de la Anomalía y según el ratio de tiempo de

ataques pasados como parámetros. Para ello se invoca

el método local reglasCompactacion().

2. Realizar el cálculo especializado de la prioridad de la

Anomalía pasada como parámetro. Para ello se invoca

el método local reglasPrioridad().

3. Devolver el Análisis pasado como parámetro

actualizados sus atributos con los nuevos valores de

compactación y prioridad.

� reglasCompactacion(): Juego de reglas específico para el tipo

de signature en la que es experto el agente Analista que

devuelve el valor numérico entero de la compactación de la

Anomalía pasada como parámetro. Ver árbol de decisión

Compactación del capítulo unknown-class del anexo 6:

Signatures IDSAI (Snort).

� reglasPrioridad(): Juego de reglas específico para el tipo de

signature en la que es experto el agente Analista que devuelve

el valor numérico entero de la prioridad de la Anomalía

pasada como parámetro. Ver árbol de decisión Prioridad del

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

186

capítulo unknown-class del anexo 6: Signatures IDSAI

(Snort).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

187

4.3.14. DIAGNOSTICAR RESÚMENES

Comportamiento dedicado a realizar el Diagnóstico (ver apartado

4.1.2.8: Diagnóstico) correspondiente a la ventana temporal actual en base a los

Resúmenes (ver apartado 4.1.2.7: Resumen) recibidos por el agente que lo

implementa (Ver apartado 4.2.17: Agente Supervisor). De esta forma, este

comportamiento introduce en el sistema el concepto Diagnóstico (Ver apartado

4.1.2.8: Diagnóstico). Debido a la gran importancia de la interfaz gráfica del

agente Supervisor, este comportamiento interviene directamente en la

actualización de los elementos visuales de la Ventana Agente Supervisor (ver

apartado 4.4.7: Ventana Agente Supervisor) a medida que se alteran los

atributos del agente. Finalmente, este comportamiento permite a su vez la

sincronización del agente Supervisor.

El comportamiento Diagnosticar Resúmenes es un comportamiento

Cíclico (hereda de CyclicBehaviour) que se representa en el sistema con la clase

BehaviourDiagnosticarResumenes que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.3.14.1. ATRIBUTOS

El atributo mantenido por la clase BehaviourDiagnosticarResumenes

es el siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

188

� agente: Referencia al agente que implementa el

comportamiento. (Ver apartado 4.2.17: Agente Supervisor).

4.3.14.2. MÉTODOS

El método implementado en la clase

BehaviourDiagnosticarResumenes es el siguiente:

� action(): Sobrescribe el método de la clase padre. El siguiente

diagrama, representa su algoritmo básico:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

189

INICIO

FIN

¿mensaje recibido?

NO

SI

Seleccionar Resúmenes actuales

¿mensaje de sincronización?

SI NO

(Resumen)

Insertar Resumen en lista de resúmenes del agente

Supervisor

Actualizar tabla de Resúmenes

Realizar listas de atacantes y víctimas

Realizar Diagnóstico cuantitativo

Realizar Diagnóstico cualitativo

Realizar Diagnóstico comparativo

Crear Diagnóstico

Actualizar tops

Limpiar Resúmenes

Limpiar Diagnósticos

Pintar último Diagnóstico

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

190

Fig. 24: Método action() del comportamiento Diagnosticar Resúmenes.

- Insertar Resumen en lista de resúmenes del agente

Supervisor: Insertar el Resumen de la ventana actual en la

lista de resúmenes recibidos que es el atributo resumenes

del agente Supervisor. En el caso de que en la ventana

actual ya se haya registrado un Resumen de la misma

clase de Signature que el recibido, se quedará en la lista

aquel cuyo valor del atributo fiabilidad sea mayor, siendo

rechazado el de fiabilidad menor.

- Actualizar tabla de Resúmenes: Actualizar la interfaz

gráfica del agente Supervisor invocando el método

actualizarTabla2() de la Ventana Agente Supervisor. Ver

apartado 4.4.7: Ventana Agente Supervisor.

- Seleccionar Resúmenes actuales: Elaborar una lista de

Resúmenes de la ventana anterior seleccionando los

correspondientes elementos de la lista resumenes del

agente Supervisor. En base a estos Resúmenes se realizará

el Diagnóstico de la ventana anterior.

- Realizar listas de atacantes y víctimas: Realizar listas de

atacantes y víctimas recorriendo los Resúmenes actuales.

Confeccionar la matriz de acusaciones de los Resúmenes

actuales.

- Realizar Diagnóstico cuantitativo: Obtener el valor

numérico de la criticidad del sistema en base a los valores

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

191

borrosos de prioridad y criticidad de los Resúmenes

actuales. Para ello primeramente se obtienen las

inferencias borrosas que son los diferentes conjuntos

borrosos de criticidad que se obtienen al invocar el

método inferenciaBorrosa() de la clase ControlBorroso

pasándole como parámetros los valores borrosos de

prioridad y criticidad de cada uno de los Resúmenes

actuales. El valor continuo de la criticidad de la red se

obtiene finalmente pasando el conjunto de inferencias a la

función desborrosificarInferencias().

- Realizar Diagnóstico cualitativo: Determinar el atacante y

víctima predominantes en el conjunto de los resúmenes

diagnosticados. Las diferentes situaciones que se

presentan en este caso determinan el estado del sistema.

Tanto la descripción textual del estado como los valores

del atacante y víctima principales se muestran al usuario

en el panel de texto de la interfaz gráfica del agente

Supervisor. El color en el que se plasman en el panel se

determina mediante el valor borroso de la criticidad

anteriormente calculada, invocando el método

borrosificarCriticidad() de la clase ControlBorroso. Los

colores se asocian al valor borroso de la criticidad según

las siguientes correspondencias:

• Criticidad ALTA → Color ROJO

• Criticidad MEDIA → Color NARANJA

• Criticidad BAJA → Color VERDE

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

192

Los diferentes valores para el estado del sistema se indican

en la siguiente tabla:

Tabla 1: Estados del sistema.

- Realizar Diagnóstico comparativo: Obtener el Diagnóstico

anterior a la ventana que se está diagnosticando. Comparar

la situación de la ventana analizada y la de la anterior en

base a los valores de los hosts atacante y víctima

principales y estado de la red en los dos momentos. Esta

comparación se realiza pasando estos valores por la

siguiente base de reglas:

ESTADO Nº AT. Nº VIC. DETALLES

0 0 0 no hay ataques

1 1 1 -

2 1 varias víctima destacada

3 1 varias repartido

4 varios 1 atacante destacado

5 varios 1 repartido

6 varios varias pareja destacada

7 varios varias repartido

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

193

SI estadoanterior = estadoactual

ENTONCES "Mismo estado"

SI estadoanterior <> estadoactual

ENTONCES "Cambio de estado"

• • • • • • • • • • • • • • • • • • • •

SI atacanteanterior = atacanteactual

ENTONCES "Mismo atacante"

SI atacanteanterior <> atacanteactual

ENTONCES "Cambio de atacante"

• • • • • • • • • • • • • • • • • • • •

SI victimaanterior = victimaactual

ENTONCES "Misma víctima"

SI victimaanterior <> victimaactual

ENTONCES "Cambio de víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 0

Y estadoactual > 0

ENTONCES "Aparecen nuevos ataques"

SI estadoanterior > 0

Y estadoactual = 0

ENTONCES "Desaparecen ataques"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 1

Y estadoactual = 2

ENTONCES 1a2

SI 1a2

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

194

Y atacanteanterior = atacanteactual

ENTONCES "Atacante amplía su ataque a otras

víctimas"

SI 1a2

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 1a2

Y victimaanterior = victimaactual

ENTONCES "Se mantiene el ataque a la misma víctima

principal"

SI 1a2

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 1

Y estadoactual = 3

ENTONCES 1a3

SI 1a3

Y atacanteanterior = atacanteactual

ENTONCES "Atacante amplía su ataque a otras

víctimas"

SI 1a3

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

195

SI 1a3

ENTONCES "Dispersión de víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 1

Y estadoactual = 4

ENTONCES 1a4

SI 1a4

Y atacanteanterior = atacanteactual

ENTONCES "Aparecen más atacantes"

SI 1a4

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante principal"

SI 1a4

Y victimaanterior = victimaactual

ENTONCES "Aumenta la presión sobre la víctima"

SI 1a4

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 1

Y estadoactual = 5

ENTONCES 1a5

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

196

SI 1a5

ENTONCES "Dispersión de atacante"

SI 1a5

Y victimaanterior = victimaactual

ENTONCES "Aumenta la presión sobre la víctima"

SI 1a5

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 1

Y estadoactual = 6

ENTONCES 1a6

SI 1a6

Y atacanteanterior = atacanteactual

ENTONCES "Aparecen más atacantes"

SI 1a6

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante principal"

SI 1a6

Y victimaanterior = victimaactual

ENTONCES "Se mantiene el ataque a la misma víctima

principal"

SI 1a6

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

197

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 1

Y estadoactual = 7

ENTONCES "Dispersión de atacante y víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 2

Y estadoactual = 1

ENTONCES 2a1

SI 2a1

Y atacanteanterior = atacanteactual

ENTONCES "Atacante concreta su ataque sobre la

víctima principal"

SI 2a1

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 2a1

Y victimaanterior = victimaactual

ENTONCES "Se mantiene el ataque a la misma víctima

principal"

SI 2a1

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

198

SI estadoanterior = 2

Y estadoactual = 3

ENTONCES 2a3

SI 2a3

Y atacanteanterior = atacanteactual

ENTONCES "Atacante amplía su ataque a otras

víctimas"

SI 2a3

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 2a3

ENTONCES "Dispersión de víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 2

Y estadoactual = 4

ENTONCES 2a4

SI 2a4

Y atacanteanterior = atacanteactual

ENTONCES "Aparecen más atacantes"

SI 2a4

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante principal"

SI 2a4

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

199

Y victimaanterior = victimaactual

ENTONCES "Se concentra el ataque sobre la misma

víctima"

SI 2a4

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 2

Y estadoactual = 5

ENTONCES 2a5

SI 2a5

ENTONCES "Dispersión de atacante"

SI 2a5

Y victimaanterior = victimaactual

ENTONCES "Se concentra el ataque sobre la misma

víctima"

SI 2a5

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 2

Y estadoactual = 6

ENTONCES 2a6

SI 2a6

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

200

Y atacanteanterior = atacanteactual

ENTONCES "Aparecen más atacantes"

SI 2a6

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante principal"

SI 2a6

Y victimaanterior = victimaactual

ENTONCES "Se mantiene el ataque a la misma víctima

principal"

SI 2a6

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 2

Y estadoactual = 7

ENTONCES "Dispersión de atacante y víctima

principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 3

Y estadoactual = 1

ENTONCES 3a1

SI 3a1

Y atacanteanterior = atacanteactual

ENTONCES "Atacante concreta su ataque sobre una

víctima"

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

201

SI 3a1

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 3a1

ENTONCES "Concreción de víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 3

Y estadoactual = 2

ENTONCES 3a2

SI 3a2

Y atacanteanterior = atacanteactual

ENTONCES "Atacante concreta su ataque sobre una

víctima principal"

SI 3a2

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 3a2

ENTONCES "Concreción de víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 3

Y estadoactual = 4

ENTONCES 3a4

SI 3a4

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

202

Y atacanteanterior = atacanteactual

ENTONCES "Aparecen más atacantes"

SI 3a4

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante principal"

SI 3a4

ENTONCES "Concreción de víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 3

Y estadoactual = 5

ENTONCES 3a5

SI 3a5

ENTONCES "Dispersión de atacante"

SI 3a5

ENTONCES "Concreción de víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 3

Y estadoactual = 6

ENTONCES 3a6

SI 3a6

Y atacanteanterior = atacanteactual

ENTONCES "Aparecen más atacantes"

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

203

SI 3a6

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante principal"

SI 3a6

ENTONCES "Concreción de víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 3

Y estadoactual = 7

ENTONCES "Dispersión de atacante"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 4

Y estadoactual = 1

ENTONCES 4a1

SI 4a1

Y atacanteanterior = atacanteactual

ENTONCES "Desaparecen los demás atacantes"

SI 4a1

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 4a1

Y victimaanterior = victimaactual

ENTONCES "Disminuye la presión sobre la víctima"

SI 4a1

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

204

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 4

Y estadoactual = 2

ENTONCES 4a2

SI 4a2

Y atacanteanterior = atacanteactual

ENTONCES "Desaparecen los demás atacantes"

SI 4a2

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 4a2

Y victimaanterior = victimaactual

ENTONCES "Se mantiene el ataque a la misma víctima

principal"

SI 4a2

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 4

Y estadoactual = 3

ENTONCES 4a3

SI 4a3

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

205

Y atacanteanterior = atacanteactual

ENTONCES "Desaparecen los demás atacantes"

SI 4a3

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 4a3

ENTONCES "Dispersión de víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 4

Y estadoactual = 5

ENTONCES 4a5

SI 4a5

ENTONCES "Dispersión de atacante principal"

SI 4a5

Y victimaanterior = victimaactual

ENTONCES "Se mantiene el ataque a la misma víctima"

SI 4a5

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 4

Y estadoactual = 6

ENTONCES 4a6

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

206

SI 4a6

Y atacanteanterior = atacanteactual

ENTONCES "Se mantiene el ataque desde el atacante

principal"

SI 4a6

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante principal"

SI 4a6

Y victimaanterior = victimaactual

ENTONCES "Disminuye la presión sobre la víctima

principal"

SI 4a6

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 4

Y estadoactual = 7

ENTONCES "Dispersión de atacante principal y

víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 5

Y estadoactual = 1

ENTONCES 5a1

SI 5a1

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

207

ENTONCES "Concreción de atacante"

SI 5a1

Y victimaanterior = victimaactual

ENTONCES "Disminuye la presión sobre la víctima"

SI 5a1

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 5

Y estadoactual = 2

ENTONCES 5a2

SI 5a2

ENTONCES "Concreción de atacante"

SI 5a2

Y victimaanterior = victimaactual

ENTONCES "Disminuye la presión sobre la víctima

principal"

SI 5a2

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 5

Y estadoactual = 3

ENTONCES 5a3

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

208

SI 5a3

ENTONCES "Concreción de atacante"

SI 5a3

ENTONCES "Dispersión de víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 5

Y estadoactual = 4

ENTONCES 5a4

SI 5a4

ENTONCES "Concreción de atacante principal"

SI 5a4

Y victimaanterior = victimaactual

ENTONCES "Se mantiene el ataque a la misma víctima"

SI 5a4

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 5

Y estadoactual = 6

ENTONCES 5a6

SI 5a6

ENTONCES "Concreción de atacante principal"

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

209

SI 5a6

Y victimaanterior = victimaactual

ENTONCES "Disminuye la presión sobre la víctima

principal"

SI 5a6

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 5

Y estadoactual = 7

ENTONCES "Dispersión de víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 6

Y estadoactual = 1

ENTONCES 6a1

SI 6a1

Y atacanteanterior = atacanteactual

ENTONCES "Desaparecen los demás atacantes"

SI 6a1

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 6a1

Y victimaanterior = victimaactual

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

210

ENTONCES "Se mantiene el ataque a la misma víctima

principal"

SI 6a1

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 6

Y estadoactual = 2

ENTONCES 6a2

SI 6a2

Y atacanteanterior = atacanteactual

ENTONCES "Desaparecen los demás atacantes"

SI 6a2

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 6a2

Y victimaanterior = victimaactual

ENTONCES "Se mantiene el ataque sobre la víctima

principal"

SI 6a2

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 6

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

211

Y estadoactual = 3

ENTONCES 6a3

SI 6a3

Y atacanteanterior = atacanteactual

ENTONCES "Desaparecen los demás atacantes"

SI 6a3

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante"

SI 6a3

ENTONCES "Dispersión de víctima principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 6

Y estadoactual = 4

ENTONCES 6a4

SI 6a4

Y atacanteanterior = atacanteactual

ENTONCES "Se mantiene el ataque desde el atacante

principal"

SI 6a4

Y atacanteanterior <> atacanteactual

ENTONCES "Nuevo atacante principal"

SI 6a4

Y victimaanterior = victimaactual

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

212

ENTONCES "Se mantiene el ataque a la misma víctima

principal"

SI 6a4

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 6

Y estadoactual = 5

ENTONCES 6a5

SI 6a5

ENTONCES "Dispersión de atacante principal"

SI 6a5

Y victimaanterior = victimaactual

ENTONCES "Se mantiene el ataque a la misma víctima

principal"

SI 6a5

Y victimaanterior <> victimaactual

ENTONCES "Nueva víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 6

Y estadoactual = 7

ENTONCES "Dispersión de atacante principal y víctima

principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 7

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

213

Y estadoactual = 1

ENTONCES "Concreción de atacante y víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 7

Y estadoactual = 2

ENTONCES "Concreción de atacante y víctima

principal"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 7

Y estadoactual = 3

ENTONCES "Concreción de atacante"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 7

Y estadoactual = 4

ENTONCES "Concreción de atacante principal y

víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 7

Y estadoactual = 5

ENTONCES "Concreción de víctima"

• • • • • • • • • • • • • • • • • • • •

SI estadoanterior = 7

Y estadoactual = 6

ENTONCES "Concreción de atacante principal y víctima

principal"

El comentario en texto que se genera en cada una de ellas

se muestra en el panel de texto.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

214

- Crear Diagnóstico: Integrar toda la información obtenida

hasta el momento en la estructura Diagnóstico e insertarla

en la lista de diagnósticos realizados del agente Supervisor

(atributo diagosticos). Actualizar con este mismo valor el

atributo del agente Supervisor ultimodiagnostico.

- Actualizar tops: Actualizar las listas de topatacantes y

topvictimas, que son atributos del agente Supervisor, con

el atacante y víctima principales anteriormente obtenidos.

Actualizar la representación gráfica de estas listas.

- Limpiar Resúmenes: Eliminar de la lista de Resúmenes

recibidos por el agente Supervisor, representada en el

sistema por el atributo resumenes, aquellos que lleven

almacenados más de 20 ventanas. Externalizar al fichero

de log resumenes.txt la información eliminada y actualizar

la interfaz gráfica.

- Limpiar Diagnósticos: Eliminar de la lista de Diagnósticos

realizados por el agente Supervisor, representada en el

sistema por el atributo diagnosticos, aquellos que lleven

almacenados más de 20 ventanas. Externalizar al fichero

de log diagnosticos.txt la información eliminada y

actualizar la interfaz gráfica.

- Pintar último Diagnóstico: Repintar el lienzo de la interfaz

gráfica del agente Supervisor con la nueva información

almacenada en su atributo ultimodiagnostico. Ver

apartado 4.4.9: Lienzo Supervisor.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

215

4.4. CLASES DE LA INTERFAZ GRÁFICA

4.4.1. MODELO DE TABLA

Todas las tablas que aparecen en cada uno de los elementos de la interfaz

gráfica del sistema IDSAI son tablas no editables por el usuario. Por tanto, toda

tabla gráfica JTable incorporada al sistema, debe soportar un modelo de tabla

que sólo sea modificable por programación.

El modelo Modelo de Tabla es un Modelo de Tabla Estándar (hereda de

DefaultTableModel) que se representa en el sistema con la clase MiTableModel

que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.4.1.1. ATRIBUTOS

Ninguno relevante en el proyecto IDSAI.

4.4.1.2. MÉTODOS

El método más relevante implementado en la clase MiTableModel es

el siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

216

� isCellEditable(): Método que altera el estado de la celda de la

tabla que incorpora el modelo, haciéndola no editable por

parte del usuario. Esta condición se aplicará a todas las celdas

de todas las tablas de la interfaz gráfica del sistema IDSAI.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

217

4.4.2. VENTANA RELOJ

Representación de la interfaz gráfica del Agente Reloj. Ver apartado

4.2.1: Agente Reloj.

La interfaz Ventana Reloj es un Frame (hereda de JFrame) que se

representa en el sistema con la clase FrameReloj que tiene la estructura

siguiente.

El constructor de la clase FrameReloj dispone los elementos gráficos

necesarios para componer la ventana Agente Reloj:

Fig. 25: Ventana Agente Reloj

Entre los elementos gráficos que podemos ver en la ventana destacan:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

218

• Etiqueta "Ventana actual": Muestra el valor de la ventana

actual, almacenado en el atributo ventana del agente Reloj.

• Tabla "Agente": Muestra la lista de agentes vivos en el

momento actual en el sistema, almacenada en el atributo

agentes del agente Reloj.

• Botón "Detener": Al pulsarlo, se duerme el agente Reloj,

deteniéndose todos sus comportamientos asociados. El botón

"Arrancar" se habilita y el "Detener" se deshabilita.

• Botón "Arrancar": Al pulsarlo, se despierta el agente Reloj,

recuperándose todos sus comportamientos asociados. El botón

"Detener" se habilita y el "Arrancar" se deshabilita.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.4.2.1. ATRIBUTOS

Los atributos mantenidos por la clase FrameReloj son los siguientes:

� agente: Referencia al agente que incorpora la interfaz. Ver

apartado 4.2.1: Agente Reloj.

� modelo: Modelo de tabla no editable por parte del usuario.

Ver apartado 4.4.1: Modelo de Tabla

� tabla: Tabla que presenta la lista de agentes vivos en el

momento actual en el sistema IDSAI.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

219

� contadorventanas: Etiqueta que se actualiza con el valor

actual de la ventana del sistema.

4.4.2.2. MÉTODOS

Los métodos implementados en la clase FrameReloj son los

siguientes:

� actualizarTabla(): Actualiza el contenido de la tabla "Agente"

con el contenido de la lista de agentes vivos en el momento

actual en el sistema, almacenada en el atributo agentes del

agente Reloj.

� actualizarContador(): Actualiza el valor de la etiqueta

"Ventana Actual" con el valor del atributo ventana del agente

Reloj.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

220

4.4.3. VENTANA AGENTE

Representación de la interfaz gráfica básica de los agentes del sistema

IDSAI, y en particular de los agentes Intérpretes (Ver apartado 4.2.3: Agente

Intérprete).

La interfaz Ventana Agente es un Frame (hereda de JFrame) que se

representa en el sistema con la clase FrameAgente que tiene la estructura

siguiente:

El constructor de la clase FrameAgente dispone los elementos gráficos

necesarios para componer la ventana Agente Intérprete:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

221

Fig. 26: Ventana Agente Intérprete

Entre los elementos gráficos que podemos ver en la ventana destacan:

• Etiqueta "Nombre": Muestra el nombre global unívoco del

agente en la plataforma multiagente.

• Panel de texto "Log": Muestra las incidencias ocurridas

durante la vida del agente.

• Botón "Limpiar Log": Limpia el área de texto "Log".

• Botón "Matar agente": Mata el agente Intérprete

correspondiente a esta interfaz. La ventana no se cierra, pero

se deshabilitan todos sus controles.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.4.3.1. ATRIBUTOS

Los atributos mantenidos por la clase FrameAgente son los

siguientes:

� editor: Panel de texto "Log".

� panel: Panel gráfico sobre el que se distribuyen los diferentes

componentes de la interfaz gráfica.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

222

� btnmataragente: Botón gráfico "Matar Agente".

� btnlimpiarlog: Botón gráfico "Limpiar Log".

� scrollpanetxtlog: Barra de desplazamiento asociada al panel

de texto "Log".

4.4.3.2. MÉTODOS

Los métodos implementados en la clase FrameReloj son los

siguientes:

� escribirLinea(): Escribe una línea de texto en el panel de texto

"Log" pasada como primer argumento con los parámetros de

formato pasados como los demás argumentos de la función.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

223

4.4.4. VENTANA AGENTE AVANZADO

Representación de la interfaz gráfica básica de los agentes avanzados del

sistema IDSAI, y en particular de los agentes Analistas (Ver apartado 4.2.10:

Agente Analista).

La interfaz Ventana Agente Avanzado es una Ventana Agente (hereda de

FrameAgente) que se representa en el sistema con la clase

FrameAgenteAvanzado que tiene la estructura siguiente:

El constructor de la clase FrameAgenteAvanzado dispone los elementos

gráficos necesarios para ampliar la ventana Agente Intérprete.

Entre los nuevos elementos gráficos que se incorporan a la ventana

destacan dos tablas que según el agente que implemente la interfaz gráfica

almacenarán información relevante sobre la que trabaje el agente:

• Tabla 1 (superior): Registra los productos del agente:

Análisis, en el caso de agentes Analistas, que se envían en

forma de Resumen al agente Supervisor y Diagnósticos, en el

caso del agente Supervisor, que se muestran por pantalla al

usuario.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

224

• Tabla 2 (inferior): Registra las fuentes del agente: Anomalías,

en el caso de agentes Analistas, que se procesan para elaborar

Análisis y Resúmenes en el caso del agente Supervisor, que se

procesan para elaborar Diagnósticos.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.4.4.1. ATRIBUTOS

Los atributos más relevantes mantenidos por la clase

FrameAgenteAvanzado son los siguientes:

� modelo1: Modelo de Tabla de la tabla superior.

� modelo2: Modelo de Tabla de la tabla inferior.

� tabla1: Tabla gráfica superior.

� tabla2: Tabla gráfica inferior

4.4.4.2. MÉTODOS

Los métodos implementados en la clase FrameAgenteAvanzado son

los siguientes:

� actualizarTabla1(): Método abstracto que debe ser sobrescrito

por las ventanas que hereden de FrameAgenteAvanzado.

Deberá incorporar las particularidades de los registros a

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

225

mostrar en la tabla1 según sea el agente que implemente la

interfaz.

� actualizarTabla2(): Método abstracto que debe ser sobrescrito

por las ventanas que hereden de FrameAgenteAvanzado.

Deberá incorporar las particularidades de los registros a

mostrar en la tabla2 según sea el agente que implemente la

interfaz.

� mostrarDetallesTabla1(): Método abstracto que debe ser

sobrescrito por las ventanas que hereden de

FrameAgenteAvanzado. Deberá incorporar las

particularidades de los registros a mostrar en la tabla1 según

sea el agente que implemente la interfaz.

� mostrarDetallesTabla2(): Método abstracto que debe ser

sobrescrito por las ventanas que hereden de

FrameAgenteAvanzado. Deberá incorporar las

particularidades de los registros a mostrar en la tabla2 según

sea el agente que implemente la interfaz.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

226

4.4.5. VENTANA AGENTE ANALISTA

Representación de la interfaz gráfica de los agentes Analistas del sistema

IDSAI. Ver apartado 4.2.10: Agente Analista).

La interfaz Ventana Agente Analista es una Ventana Agente Avanzado

(hereda de FrameAgenteAvanzado) que se representa en el sistema con la clase

FrameAgenteAnalista que tiene la estructura siguiente:

El constructor de la clase FrameAgenteAnalista dispone los elementos

gráficos necesarios para componer la ventana Agente Analista:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

227

Fig. 27: Ventana Agente Analista

Entre los nuevos elementos gráficos que se incorporan a la ventana

Agente (ver apartado 4.4.3: Ventana Agente) destacan:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

228

• Tabla "Ultimos analisis": Se trata de la tabla1 que es atributo

heredado de la clase padre. Muestra un registro por cada

Análisis existente en la lista de Análisis realizados del agente

que implementa la interfaz. Ver apartado 4.2.10: Agente

Analista. Se ha configurado el evento mouseClicked(), de

forma que al hacer clic sobre un registro de esta tabla, se abre

una Ventana Detalles (ver 5.6: Ventana Detalles) y se invoca

el método local mostrarDetallesTabla1(), de manera que se

muestra gráficamente la información detallada del Análisis

deseado. De igual manera se resalta gráficamente el registro

correspondiente a la Anomalía asociada al Análisis sobre

cuyo registro se ha hecho clic, para que sea más sencillo

referirse a ésta a la hora de analizar la traza del Análisis.

• Tabla "Anomalias recibidas": Se trata de la tabla2 que es

atributo heredado de la clase padre. Muestra un registro por

cada Anomalía existente en la lista de Análisis realizados del

agente que implementa la interfaz. Ver apartado 4.2.10:

Agente Analista. Se ha configurado el evento mouseClicked(),

de forma que al hacer clic sobre un registro de esta tabla, se

abre una Ventana Detalles (ver : Ventana Detalles) y se

invoca el método local mostrarDetallesTabla2, de manera que

se muestra gráficamente la información detallada de la

Anomalía deseada.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

229

4.4.5.1. ATRIBUTOS

El atributo mantenido por la clase FrameAgenteAnalista es el

siguiente:

� agente: Referencia al agente que incorpora la interfaz. Ver

apartado 4.2.10: Agente Analista.

4.4.5.2. MÉTODOS

Los métodos implementados en la clase FrameAgenteAnalista son

los siguientes:

� actualizarTabla1(): Sobrescribe el método de la clase padre.

Su algoritmo es completamente lineal y consiste en los

siguientes pasos:

1. Limpiar la tabla1.

2. Introducir todos los elementos de la lista de Análisis

realizados (atributo analisis) del agente Analista que

implementa la interfaz (ver apartado 4.2.10: Agente

Analista) en la tabla1.

� actualizarTabla2(): Sobrescribe el método de la clase padre.

Su algoritmo es completamente lineal y consiste en los

siguientes pasos:

1. Limpiar la tabla2.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

230

2. Introducir todos los elementos de la lista de

Anomalías recibidas (atributo anomalias) del agente

Analista que implementa la interfaz (ver apartado

4.2.10: Agente Analista) en la tabla2.

� mostrarDetallesTabla1(): Sobrescribe el método de la clase

padre. Muestra por la Ventana Detalles que se le pasa como

segundo parámetro toda la información, debidamente

formateada, del Análisis que se le pasa como primer

parámetro.

� mostrarDetallesTabla2(): Sobrescribe el método de la clase

padre. Muestra por la Ventana Detalles que se le pasa como

segundo parámetro toda la información, debidamente

formateada, de la Anomalía que se le pasa como primer

parámetro.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

231

4.4.6. VENTANA DETALLES

Representación de la interfaz gráfica básica de las ventanas de detalle del

sistema IDSAI, y en particular de aquellas que se abren al hacer clic sobre algún

registro de las tablas de las Ventanas Agente Analista (Ver apartado 4.4.5:

Ventana Agente Analista).

La interfaz Ventana Detalles es un Frame (hereda de JFrame) que se

representa en el sistema con la clase FrameReloj que tiene la estructura

siguiente:

El constructor de la clase FrameDetalles dispone los elementos gráficos

necesarios para componer la ventana Detalles:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

232

Fig. 28: Ventana Detalles

Entre los elementos gráficos que podemos ver en la ventana destacan:

• Etiqueta "label": Muestra el nombre de la estructura del

sistema IDSAI a mostrar.

• Panel de texto "texto": Muestra la información contenida en la

estructura mostrada.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

233

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.4.6.1. ATRIBUTOS

Los atributos mantenidos por la clase FrameDetalles son los

siguientes:

� label: Etiqueta que muestra el nombre de la estructura cuya

información se presenta en la caja de texto.

� texto: Caja de texto que muestra la información, debidamente

formateada, de la estructura deseada.

4.4.6.2. MÉTODOS

El método implementado en la clase FrameDetalles es el siguiente:

� escribirLinea(): Escribe una línea de texto en el panel de texto

"texto" pasada como primer argumento.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

234

4.4.7. VENTANA AGENTE SUPERVISOR

Representación de la interfaz gráfica del agente Supervisor del sistema

IDSAI. Ver apartado 4.2.17: Agente Supervisor.

La interfaz Ventana Agente Supervisor es una Ventana Agente Avanzado

(hereda de FrameAgenteAvanzado) que se representa en el sistema con la clase

FrameAgenteSupervisor que tiene la estructura siguiente:

El constructor de la clase FrameAgenteSupervisor dispone los elementos

gráficos necesarios para componer la ventana Agente Supervisor:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

235

Fig. 29: Ventana Supervisor

Entre los nuevos elementos gráficos que se incorporan a la ventana

Agente (ver apartado 4.4.3: Ventana Agente) destacan:

• Tabla "Ultimos diagnosticos": Se trata de la tabla1 que es

atributo heredado de la clase padre. Muestra un registro por

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

236

cada Diagnóstico existente en la lista de Diagnósticos

realizados del agente que implementa la interfaz. Ver

apartado 4.2.17: Agente Supervisor. Se ha configurado el

evento mouseClicked(), de forma que al hacer clic sobre un

registro de esta tabla, se abre una Ventana Detalles con

Gráfico y Tabla (ver 5.10: Ventana Detalles con Gráfico y

Tabla) y se invoca el método local mostrarDetallesTabla1(),

de manera que se muestra gráficamente la información

detallada del Diagnóstico deseado. De igual manera se

resaltan gráficamente los registros correspondientes a los

Resúmenes asociados al Diagnóstico sobre cuyo registro se ha

hecho clic, para que sea más sencillo referirse a éstos a la hora

de analizar la traza del Diagnóstico.

• Tabla "Resumenes recibidos": Se trata de la tabla2 que es

atributo heredado de la clase padre. Muestra un registro por

cada Resumen existente en la lista de Resúmenes realizados

del agente que implementa la interfaz. Ver apartado 4.2.17:

Agente Supervisor. Se ha configurado el evento

mouseClicked(), de forma que al hacer clic sobre un registro

de esta tabla, se abre una Ventana Detalles con Tabla (ver

5.11: Ventana Detalles con Tabla) y se invoca el método

local mostrarDetallesTabla2, de manera que se muestra

gráficamente la información detallada del Resumen deseado.

• Lienzo "Lienzo": Panel de dibujo en el que se representa

gráficamente la información almacenada en el atributo

ultimodiagnostico del agente Supervisor (ver apartado

4.2.17: Agente Supervisor). Ver apartado 4.4.9: Lienzo

Supervisor.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

237

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.4.7.1. ATRIBUTOS

Los atributos mantenidos por la clase FrameAgenteSupervisor son

los siguientes:

� agente: Referencia al agente que incorpora la interfaz. Ver

apartado 4.2.17: Agente Supervisor.

� lienzosupervisor: Panel de dibujo que presenta gráficamente

la información del último Diagnóstico generado. Ver

apartado 4.4.9: Lienzo Supervisor.

4.4.7.2. MÉTODOS

Los métodos implementados en la clase FrameAgenteSupervisor son

los siguientes:

� actualizarTabla1(): Sobrescribe el método de la clase padre.

Su algoritmo es completamente lineal y consiste en los

siguientes pasos:

1. Limpiar la tabla1.

2. Introducir todos los elementos de la lista de

Diagnósticos realizados (atributo diagnosticos) por el

agente Supervisor que implementa la interfaz (ver

apartado 4.2.17: Agente Supervisor) en la tabla1.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

238

� actualizarTabla2(): Sobrescribe el método de la clase padre.

Su algoritmo es completamente lineal y consiste en los

siguientes pasos:

1. Limpiar la tabla2.

2. Introducir todos los elementos de la lista de

Resumenes recibidos (atributo resumenes) del agente

Supervisor que implementa la interfaz (ver apartado

4.2.17: Agente Supervisor) en la tabla2.

� mostrarDetallesTabla1(): Sobrescribe el método de la clase

padre. Muestra por la Ventana Detalles que se le pasa como

segundo parámetro toda la información, debidamente

formateada, del Diagnóstico que se le pasa como primer

parámetro.

� mostrarDetallesTabla2(): Sobrescribe el método de la clase

padre. Muestra por la Ventana Detalles que se le pasa como

segundo parámetro toda la información, debidamente

formateada, del Resumen que se le pasa como primer

parámetro.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

239

4.4.8. LEYENDA

Estructura de datos que representa un elemento de leyenda, asociando

una clase de Signature a un color.

El sistema IDSAI almacena la información relativa a valores borrosos en

la siguiente estructura:

Donde:

� clase: Clase de Signature. Ver apartado 4.1.2.2: Signature.

� color: Color asociado.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

240

4.4.9. LIENZO SUPERVISOR

Representación del panel de dibujo de la interfaz gráfica del agente

Supervisor del sistema IDSAI. Ver apartado 4.4.7: Ventana Agente Supervisor).

El Lienzo Supervisor es un Canvas (hereda de Canvas) que se representa

en el sistema con la clase LienzoSupervisor que tiene la estructura siguiente:

En el Lienzo Supervisor se trata de representar la información relativa a

las acusaciones que se dan entre las direcciones IP atacantes y víctimas en el

sistema representadas por el atributo acusaciones del Diagnóstico diag que es a

su vez atributo de la clase LienzoSupervisor (ver apartado 4.1.2.8:

Diagnóstico). El atributo almacena el último diagnóstico realizado por el agente

Supervisor, representado por el atributo ultimodiagnostico de este agente (ver

apartado 4.2.17: Agente Supervisor).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

241

Fig. 30: Lienzo Supervisor

En la parte central del mismo, se representan las direcciones IP de los

atacantes y víctimas del último diagnóstico en torno a un círculo. Estas

direcciones IP se unen con una línea por cada acusación registrada entre atacante

y víctima registrados en el diagnóstico. El color de las líneas viene determinado

por la leyenda de colores que se indica a continuación:

• Clase unknown-class → Color AMARILLO

• Clase attempted-recon → Color CYAN

• Clase bad-unknown → Color ROJO

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

242

• Clase attempted-dos → Color VERDE

• Clase attempted-admin → Color MAGENTA

El grosor de las líneas representa el número de signatures que se dan

entre las IP atacante y víctima unidas. En el extremo de la línea correspondiente

a la víctima, se representa un cuadrado de mayor grosor a modo de extremo de

flecha. En la parte superior izquierda del panel se muestra una leyenda que

representa la correspondencia clase-color anteriormente descrita. En la parte

inferior izquierda del panel se muestra en fuente roja la lista Top 5 atacantes,

donde se listan ordenadamente las 5 direcciones IP que más veces (indicadas

entre paréntesis) se han determinado como atacante principal de diagnóstico

durante la vida del agente Supervisor. Esta lista se corresponde con el atributo

topatacantes del agente Supervisor (ver apartado 4.2.17: Agente Supervisor). De

igual manera, en la parte inferior derecha del panel se muestra en fuente azul la

lista Top 5 victimas, donde se listan ordenadamente las 5 direcciones IP que más

veces (indicadas entre paréntesis) se han determinado como víctima principal de

diagnóstico durante la vida del agente Supervisor. Esta lista se corresponde con

el atributo topvictimas del agente Supervisor (ver apartado 4.2.17: Agente

Supervisor)

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.4.9.1. ATRIBUTOS

Los atributos mantenidos por la clase LienzoSupervisor son los

siguientes:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

243

� agente: Referencia al agente que incorpora la interfaz. Ver

apartado 4.2.17: Agente Supervisor.

� diag: Diagnóstico (ver apartado 4.1.2.8: Diagnóstico) cuya

información se presenta gráficamente. Se carga con el valor

del atributo ultimodiagnostico del agente Supervisor del

sistema.

� colores: Lista de elementos Leyenda (ver apartado 4.4.8:

Leyenda) que representa la leyenda de correspondencias

clase-color descritas anteriormente.

� diametro: Constante que almacena el tamaño del círculo en

torno al cual se disponen las direcciones IP del diagnóstico.

4.4.9.2. MÉTODOS

El método principal implementado en la clase LienzoSupervisor es el

siguiente:

� paint(): Pinta sobre el panel de dibujo la información antes

descrita. La disposición correcta de los elementos se facilita

con las funciones de mapping: mappingX() y mappingY() y

ubicación en 2 dimensiones: obtenerXs() y obtenerYs(),

autoexplicativas.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

244

4.4.10. VENTANA DETALLES CON GRÁFICO Y TABLA

Representación de la interfaz gráfica de las ventanas de detalle del

sistema IDSAI que se abren al hacer clic sobre algún registro de la tabla Ultimos

Diagnosticos de la Ventana Agente Supervisor (Ver apartado 4.4.7: Ventana

Agente Supervisor).

La interfaz Ventana Detalles con Gráfico y Tabla es una Ventana

Detalles (hereda de FrameDetalles) que se representa en el sistema con la clase

FrameDetallesGraficoTabla que tiene la estructura siguiente:

El constructor de la clase FrameDetallesGraficoTabla dispone los

elementos gráficos necesarios para componer la ventana Detalles:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

245

Fig. 31: Ventana Detalles con Gráfico y Tabla

Entre los nuevos elementos gráficos que se incorporan a la ventana

Detalles (ver apartado 4.4.6: Ventana Detalles) destacan:

• Tabla de acusaciones: Representa tabuladamente la lista de

atacantes (como primer campo de los registros) y la de

víctimas (como título del resto de campos de la tabla). El

contenido de la tabla representa el número de signatures

diferentes de la Acusación que protagonizan el atacante y

víctima correspondientes a cada casilla (ver apartado 4.1.2.6:

Acusación). Se ha configurado el evento mouseClicked(), de

forma que al hacer clic sobre un registro de esta tabla, se abre

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

246

una Ventana Detalles (ver 5.6: Ventana Detalles) y se invoca

el método local mostrarDetallesTabla(), de manera que se

muestra la información detallada de la Acusación deseada.

• Lienzo detalles: Representa la información relativa al

Diagnóstico referenciado por el registro sobre el que se ha

hecho clic en la Ventana Agente Supervisor. Muestra

gráficamente las acusaciones que se dan entre las direcciones

IP atacantes y víctimas en el sistema representadas por el

Diagnóstico recibido como parámetro. Ver apartado 4.4.12:

Lienzo Detalles.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.4.10.1. ATRIBUTOS

Los atributos mantenidos por la clase FrameDetallesGraficoTabla

son los siguientes:

� modelo: Modelo de Tabla de la tabla de acusaciones. Ver

apartado 4.4.1: Modelo de Tabla.

� tabla: Tabla gráfica de acusaciones.

4.4.10.2. MÉTODOS

El método implementado en la clase FrameDetalles es el siguiente:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

247

� mostrarDetallesTabla(): Muestra los detalles de la Acusación

que protagonizan las direcciones IP atacante y víctima

pasados como primeros parámetros sobre el panel de texto

que es el atributo texto de la Ventana Detalles pasada como

cuarto parámetro. Ver apartado 4.4.6: Ventana Detalles.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

248

4.4.11. VENTANA DETALLES CON TABLA

Representación de la interfaz gráfica de las ventanas de detalle del

sistema IDSAI que se abren al hacer clic sobre algún registro de la tabla

Resumenes recibidos de la Ventana Agente Supervisor (Ver apartado 4.4.7:

Ventana Agente Supervisor).

La interfaz Ventana Detalles con Tabla es una Ventana Detalles (hereda

de FrameDetalles) que se representa en el sistema con la clase

FrameDetallesTabla que tiene la estructura siguiente:

Esta clase dispone de dos constructores debido a que originalmente

representaba tanto los detalles de Resúmenes como los de Diagnósticos. Se ha

prescindido del constructor dedicado a Diagnósticos en la implantación

definitiva del sistema.

El constructor de la clase FrameDetallesTabla dispone los elementos

gráficos necesarios para componer la ventana Detalles:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

249

Fig. 32: Ventana Detalles con Tabla

Entre los nuevos elementos gráficos que se incorporan a la ventana

Detalles (ver apartado 4.4.6: Ventana Detalles) destacan:

• Tabla de acusaciones: Representa tabuladamente la lista de

atacantes (como primer campo de los registros) y la de

víctimas (como título del resto de campos de la tabla). El

contenido de la tabla representa el número de signatures

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

250

diferentes de la Acusación que protagonizan el atacante y

víctima correspondientes a cada casilla (ver apartado 4.1.2.6:

Acusación). Se ha configurado el evento mouseClicked(), de

forma que al hacer clic sobre un registro de esta tabla, se abre

una Ventana Detalles (ver 5.6: Ventana Detalles) y se invoca

el método local mostrarDetallesTabla(), de manera que se

muestra la información detallada de la Acusación deseada.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.4.11.1. ATRIBUTOS

Los atributos mantenidos por la clase FrameDetallesGraficoTabla

son los siguientes:

� modelo: Modelo de Tabla de la tabla de acusaciones. Ver

apartado 4.4.1: Modelo de Tabla.

� tabla: Tabla gráfica de acusaciones.

4.4.11.2. MÉTODOS

El método implementado en la clase FrameDetalles es el siguiente:

� mostrarDetallesTabla(): Muestra los detalles de la Acusación

que protagonizan las direcciones IP atacante y víctima

pasados como primeros parámetros sobre el panel de texto

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

251

que es el atributo texto de la Ventana Detalles pasada como

cuarto parámetro. Ver apartado 4.4.6: Ventana Detalles.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

252

4.4.12. LIENZO DETALLES

Representación del panel de dibujo de la interfaz gráfica de la Ventana

Detalles con Gráfico y Tabla del sistema IDSAI. Ver apartado 4.4.10: Ventana

Detalles con Gráfico y Tabla.

El Lienzo Detalles es un Canvas (hereda de Canvas) que se representa en

el sistema con la clase LienzoDetalles que tiene la estructura siguiente:

En el Lienzo Detalles se trata de representar la información relativa a las

acusaciones que se dan entre las direcciones IP atacantes y víctimas en el

sistema representadas por el Diagnóstico pasado como parámetro al constructor

de la clase LienzoDetalles (ver apartado 4.1.2.8: Diagnóstico).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

253

Fig. 33: Lienzo Detalles

En la parte central del mismo, se representan las direcciones IP de los

atacantes y víctimas del diagnóstico en torno a un círculo. Estas direcciones IP

se unen con una línea por cada acusación registrada entre atacante y víctima

registrados en el diagnóstico. El color de las líneas viene determinado por la

leyenda de colores que se indica a continuación:

• Clase unknown-class → Color AMARILLO

• Clase attempted-recon → Color CYAN

• Clase bad-unknown → Color ROJO

• Clase attempted-dos → Color VERDE

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

254

• Clase attempted-admin → Color MAGENTA

El grosor de las líneas representa el número de signatures que se dan

entre las IP atacante y víctima unidas. En el extremo de la línea correspondiente

a la víctima, se representa un cuadrado de mayor grosor a modo de extremo de

flecha. En la parte superior izquierda del panel se muestra una leyenda que

representa la correspondencia clase-color anteriormente descrita.

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.4.12.1. ATRIBUTOS

Los atributos mantenidos por la clase LienzoSupervisor son los

siguientes:

� diag: Diagnóstico (ver apartado 4.1.2.8: Diagnóstico) cuya

información se presenta gráficamente. Se carga con el valor

del Diagnóstico pasado como parámetro al constructor de la

clase.

� colores: Lista de elementos Leyenda (ver apartado 4.4.8:

Leyenda) que representa la leyenda de correspondencias

clase-color descritas anteriormente.

� diametro: Constante que almacena el tamaño del círculo en

torno al cual se disponen las direcciones IP del diagnóstico.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

255

4.4.12.2. MÉTODOS

El método principal implementado en la clase LienzoSupervisor es el

siguiente:

� paint(): Pinta sobre el panel de dibujo la información antes

descrita. La disposición correcta de los elementos se facilita

con las funciones de mapping: mappingX() y mappingY() y

ubicación en 2 dimensiones: obtenerXs() y obtenerYs(),

autoexplicativas.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

256

4.5. CLASES DE LA CAPA DE PERSISTENCIA

4.5.1. EVENTO DAO

Paquete de funciones de acceso a la base de datos snortdb a nivel de

eventos.

Este conjunto de funciones se agrupa en el sistema con la clase

EventoDAO que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.5.1.1. ATRIBUTOS

Los atributos mantenidos por la clase EventoDAO son las siguientes

instrucciones SQL:

� DELETE_EVENTS: Instrucción SQL que elimina aquellos

registros de la tabla event, cuyo valor de campo timestamp

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

257

sea tantos segundos anterior como se precise respecto al

momento actual.

� DELETE_SIGNATURES: Instrucción SQL que elimina

aquellos registros de la tabla signature no referenciados en la

tabla event.

� DELETE_SIG_CLASS: Instrucción SQL que elimina

aquellos registros de la tabla sig_class no referenciados en la

tabla signature.

� DELETE_IPHDR: Instrucción SQL que elimina aquellos

registros de la tabla iphdr no referenciados en la tabla event.

� DELETE_DATA: Instrucción SQL que elimina aquellos

registros de la tabla data no referenciados en la tabla iphdr.

� DELETE_OPT: Instrucción SQL que elimina aquellos

registros de la tabla opt no referenciados en la tabla iphdr.

� DELETE_ICMPHDR: Instrucción SQL que elimina aquellos

registros de la tabla icmphdr no referenciados en la tabla

iphdr.

� DELETE_UDPHDR: Instrucción SQL que elimina aquellos

registros de la tabla udphdr no referenciados en la tabla iphdr.

� DELETE_TCPHDR: Instrucción SQL que elimina aquellos

registros de la tabla tcphdr no referenciados en la tabla iphdr.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

258

4.5.1.2. MÉTODOS

El método implementado en la clase BehaviourSincronizar es el

siguiente:

� eliminarEventosAnterioresA(): Simula un borrado en cascada

de la información más voluminosa almacenada en la base de

datos snortdb. Su algoritmo es completamente lineal y

consiste en los siguientes pasos:

1. Establecer conexión con la base de datos snortdb.

2. Ejecutar instrucción DELETE_EVENTS con el

número de segundos recibido como parámetro del

método.

3. Ejecutar instrucción DELETE_SIGNATURES.

4. Ejecutar instrucción DELETE_SIG_CLASS.

5. Ejecutar instrucción DELETE_IPHDR.

6. Ejecutar instrucción DELETE_DATA.

7. Ejecutar instrucción DELETE_OPT.

8. Ejecutar instrucción DELETE_ICMPHDR.

9. Ejecutar instrucción DELETE_UDPHDR.

10. Ejecutar instrucción DELETE_TCPHDR.

11. Cerrar la conexión con la base de datos snortdb.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

259

4.5.2. ANOMALÍA DAO

Paquete de funciones de acceso a la base de datos snortdb a nivel de

anomalías.

Este conjunto de funciones se agrupa en el sistema con la clase

AnomaliaDAO que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.5.2.1. ATRIBUTOS

Los atributos mantenidos por la clase AnomaliaDAO son las

siguientes instrucciones SQL:

� SELECT_SIG: Instrucción SQL que obtiene la información

de las signatures cuya clase es igual al tipo de especialidad

que se especifique.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

260

� SELECT_OTROS: Instrucción SQL que obtiene la

información de las signatures cuya clase especificada es del

tipo "otros".

� SELECT_EVENTS: Instrucción SQL que obtiene la

información de los eventos relacionados con la signature

deseada, de la última ventana de tiempo.

� SELECT_PORTS_TCP: Instrucción SQL que obtiene los

puertos tcp relacionados con el evento deseado.

� SELECT_PORTS_UDP: Instrucción SQL que obtiene los

puertos udp relacionados con el evento deseado.

� ventana: Contador que almacena el valor de la ventana actual.

� tamañoventana: Entero que almacena el tamaño de la ventana

indicado por el agente Reloj.

4.5.2.2. MÉTODOS

El método implementado en la clase AnomaliaDAO es el siguiente:

� obtenerAnomalias(): Obtiene la información de las signatures

del tipo que se especifique como parámetro y eventos

relacionados en la última ventana temporal. El siguiente

diagrama, representa su algoritmo básico:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

261

Fig. 34: Método obtenerAnomalias() de la clase Anomalía DAO.

INICIO

FIN

(devolver lista de

Anomalías)

Obtener ataques de la

anomalía

Obtener lista de signatures

¿hay eventos? NO

Agregar Anomalía

SI

Establecer conexión con la

base de datos snortdb

for signature

Obtener lista de eventos

relacionados con la signature

Crear Anomalía

Cerrar conexión con la base

de datos snortdb

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

262

- Establecer conexión con la base de datos snortdb:

Autoexplicativa.

- Obtener lista de signatures: Obtener una relación de las

signatures registradas en la base de datos e información

asociada. Creación de estructura Signature (Ver apartado

4.1.2.2: Signature).

- Obtener lista de eventos relacionados con la signature:

Obtener una relación de los eventos registrados en la base

de datos cuya signature asociada es la considerada en el

bucle actual (el bucle que recorre la lista de signatures

anterior). Creación de estructura Evento (Ver apartado

4.1.2.1: Evento). Se asocia a cada Evento la pareja de

puertos origen y destino que caracteriza la alerta.

- Obtener ataques de la anomalía: Obtener datos estadísticos

sobre la secuencia de eventos cuya signature asociada es

la considerada en el bucle actual. Creación de estructura

Ataque (Ver apartado 4.1.2.3: Ataque).

- Crear Anomalía: Crear la estructura Anomalía integrando

las estructuras creadas en cada bucle de signature:

Signature, lista de Eventos y lista de Ataques.(Ver

apartado 4.1.2.4: Anomalía).

- Agregar Anomalía: Añadir Anomalía a lista de Anomalías

a enviar al agente Analista correspondiente.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

263

4.6. CLASES DE FUNCIONES DE CÁLCULO

4.6.1. FUZZY

Estructura de datos que representa un elemento perteneciente a un

conjunto borroso.

El sistema IDSAI almacena la información relativa a valores borrosos en

la siguiente estructura:

Donde:

� elemento: Etiqueta del conjunto borroso al que pertenece el

elemento.

� pertenencia: Grado de pertenencia del elemento al conjunto

borroso (valorada de 0 a 1).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

264

4.6.2. CONTROL BORROSO

Paquete de funciones de manejo de conjuntos borrosos según los

controladores borrosos de Mandani representados gráficamente en el anexo 1:

Conjuntos borrosos IDSAI.

Este conjunto de funciones se agrupa en el sistema con la clase

ControlBorroso que tiene la estructura siguiente:

Los detalles de los diferentes aspectos de esta clase se definen a

continuación.

4.6.2.1. ATRIBUTOS

Ninguno.

4.6.2.2. MÉTODOS

Los métodos implementados en la clase ControlBorroso son los

siguientes:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

265

� borrosificarPrioridad(): Devuelve el valor o valores borrosos

(ver apartado 4.6.1: Fuzzy) del valor continuo pasado como

parámetro, en el conjunto borroso Prioridad (ver apartado

Prioridad en el anexo 1: Conjuntos borrosos IDSAI).

� borrosificarCompactacion(): Devuelve el valor o valores

borrosos (ver apartado 4.6.1: Fuzzy) del valor continuo

pasado como parámetro, en el conjunto borroso

Compactación (ver apartado Compactación en el anexo 1:

Conjuntos borrosos IDSAI).

� borrosificarCriticidad(): Devuelve el valor o valores borrosos

(ver apartado 4.6.1: Fuzzy) del valor continuo pasado como

parámetro, en el conjunto borroso Criticidad (ver apartado

Criticidad en el anexo 1: Conjuntos borrosos IDSAI).

� desborrosificarCriticidad(): Devuelve el grado de pertenencia

de un valor continuo pasado como segundo parámetro dentro

de un intervalo definido por un conjunto borroso pasado como

primer parámetro dentro del controlador borroso Criticidad

(ver apartado Criticidad en el anexo 1: Conjuntos borrosos

IDSAI).

� inferenciaBorrosa(): Invoca el método local

reglasInferenciaBorrosa() según sean el número de valores

borrosos prioridad y compactación pasados como parámetros.

� reglasInferenciaBorrosa(): Devuelve el valor borroso

criticidad resultante de evaluar los valores borrosos prioridad

y compactación pasados como parámetros según el siguiente

juego de reglas:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

266

SI prioridad BAJA

Y compactación BAJA

ENTONCES criticidad BAJA

SI prioridad BAJA

Y compactación MEDIA

ENTONCES criticidad BAJA

SI prioridad BAJA

Y compactación ALTA

ENTONCES criticidad MEDIA

SI prioridad MEDIA

Y compactación BAJA

ENTONCES criticidad BAJA

SI prioridad MEDIA

Y compactación MEDIA

ENTONCES criticidad MEDIA

SI prioridad MEDIA

Y compactación ALTA

ENTONCES criticidad ALTA

SI prioridad ALTA

Y compactación BAJA

ENTONCES criticidad MEDIA

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

267

SI prioridad ALTA

Y compactación MEDIA

ENTONCES criticidad ALTA

SI prioridad ALTA

Y compactación ALTA

ENTONCES criticidad ALTA

El grado de pertenencia del valor borroso se calcula mediante el

criterio del mínimo grado de pertenencia de los valores participantes.

� desborrosificarInferencias(): Devuelve el valor continuo que

se obtiene al desborrosificar la lista de conjuntos borrosos del

universo criticidad pasada como parámetro por el método del

centro de gravedad. Este proceso se realiza según el siguiente

algoritmo lineal:

1. Discretizar el intervalo de posibles valores de

criticidad (de 0 a 10) en muestras separadas 0.5

unidades.

2. Obtener para cada muestra el máximo grado de

pertenencia de los conjuntos borrosos pasados como

parámetro.

3. Obtener la lista de grados de pertenencia asociados a

cada muestra calculada anteriormente invocando la

función local desborrosificarInferenciaBorrosa para

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

268

cada uno de los conjuntos borrosos pasados como

parámetro.

4. Calcular el centro de gravedad de los grados de

pertenencia máximos obtenidos en el paso anterior

para cada muestra.

� desborrosificarInferenciaBorrosa(): Devuelve la lista de

grados de pertenencia asociados a la inferencia borrosa

pasada como parámetro según la discretización de los valores

en muestras separadas 0.5 unidades.

A continuación se muestra un ejemplo documentado de cómo a

través de las funciones de la clase ControlBorroso, se trabaja con la

información borrosa prioridad y compactación para inferir el valor de la

criticidad de la red analizada:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

269

4.6.2.3. EJEMPLO DE CÁLCULO BORROSO IDSAI

Fig. 35: Lista de análisis y resúmenes enviados

Fig. 36: Diagnóstico realizado

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

270

4.6.2.4. DESCRIPCIÓN DEL PROCESO

PREÁMBULO: Los agentes analistas realizan los Analisis

pertinentes de cada Anomalia recibida de los diferentes agentes interpretes.

En la figura 35 se muestra, para cada Resumen realizado (por cada

Analista, en este caso, dos) la valoración cuantitativa de la prioridad y

compactación de los Analisis en que se basan.

En la figura 36 se muestra la salida del agente Supervisor, sobre el

diagnóstico cuantitativo realizado.

La situación corresponde con la ventana 29 de una sesión de captura.

1.- Agente Analista: Elabora Resumen de Analisis. La compactación

y prioridad del Resumen se obtienen como media aritmética de las

compactaciones y prioridades de los Analisis. Este proceso se lleva a cabo

en la llamada al método resumir() de la clase BehaviourAnalizarAnomalias.

Resumen 1:

PRIO = media(4,4,4,4,3) = 3.8

COMP = media(11,11,12,12,1) = 9.4

Resumen 2:

PRIO = media(1,2,2) = 1.666

COMP = media(1,11,11) = 7.666

Cada agente Analista envía su Resumen al agente Supervisor.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

271

2.- Agente Supervisor: Borrosifica los valores cuantitativos de

prioridad y compactación de cada resumen según los controladores borrosos

de las figuras 20 y 21. Para este proceso se sirve de las funciones

borrosificarPrioridad() y borrosificarCompactacion() respectivamente de la

clase ControlBorroso.

Fig. 37: Prioridad Fig. 38: Compactación

Resumen 1:

PRIO 3.8 -> MEDIA (1.0)

COMP 9.4 -> MEDIA (0.2)

BAJA (0.4)

Resumen 2:

PRIO 1.666 -> ALTA (1.0)

COMP 7.666 -> MEDIA (0.8)

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

272

Como se puede observar la compactación del Resumen 1 toma dos

valores borrosos, MEDIA y BAJA con diferente grado de pertenencia.

3.- Agente Supervisor: Obtiene inferencias de la criticidad del

sistema a partir de los valores borrosos de PRIO y COMP de cada resumen,

haciendo pasar cada combinación de valores por su base de inferencias. El

grado de pertenencia de la criticidad resultante para cada par prioridad-

compactacion es el mínimo de ambos. Estos cálculos se llevan a cabo

invocando la función inferenciaBorrosa() de la clase ControlBorroso.

Resumen 1:

PRIO MEDIA (1.0)

COMP MEDIA (0.2)

INF1:CRIT MEDIA min(1.0,0.2) = (0.2)

PRIO MEDIA (1.0)

COMP BAJA (0.4)

INF2:CRIT BAJA min(1.0,0.4) = (0.4)

Resumen 2:

PRIO ALTA (1.0)

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

273

COMP MEDIA (0.8)

INF3:CRIT ALTA min(1.0,0.8) = (0.8)

Se pueden comparar estos valores con los devueltos por el sistema en

la figura 36, para ver, en efecto que son los mismos valores.

4.- Agente Supervisor: Agrega las inferencias obtenidas (en esta

ocasión, tres) para realizar una desborrosificación del conjunto por el

método del centro de gravedad. Las inferencias son conjuntos borrosos de

tipo criticidad, cuyo controlador borroso se representa en la figura 39. De

forma gráfica la agregación de las inferencias obtenidas según su

controlador queda representada en la figura 23, como el conjunto borroso

formado por la unión de los conjuntos borrosos a integrar con el mayor

grado de pertenencia. Esta compleja operación se lleva a cabo en la primera

mitad del algoritmo correspondiente al método desborrosificarInferencias()

de la clase ControlBorroso.

Fig. 39: Criticidad

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

274

Fig. 40: Agregación de inferencias

5.- Agente Supervisor: Desborrosifica la agregación de inferencias

aplicando el método del centro de gravedad. Para ello se divide el conjunto

continuo de valores de criticidad (1-10) en intervalos discretos de longitud

0.5, obteniendo una serie de 19 muestras C y de sus correspondientes

imágenes α que se operarán a través de la fórmula: Σi=1..19(αi * Ci)/ Σi=1..19 αi.

Esta operación se lleva a cabo en la segunda mitad del algoritmo

correspondiente al método desborrosificarInferencias() de la clase

ControlBorroso.

1 3

INF3 INF1 INF2

2 10 9 8 7 6 5 4

1

0.8

0.2

0.4

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

275

Fig. 41: Cálculo centro de gravedad

Valores obtenidos:

C 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9 9.5 10

α 0.8 0.8 0.8 0.75 0.5 0.25 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.4 0.4 0.4

Operándolos según la fórmula anterior:

1.0*0.8+1.5*0.8+2.0*0.8+2.5*0.75+3.0*0.5+3.5*0.25+4.0*0.2+4.5*0.2+5.0*0.2+5.5*

0.2+ 6.0*0.2+6.5*0.2+7.0*0.2+7.5*0.4+8.0*0.4+8.5*0.4+9.0*0.4+9.5*0.4+10*0.4

7.7

1 3

INF3

INF1

INF2

2 10 9 8 7 6 5 4

1

0.8

0.2

0.4

α

C

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

276

36.55 / 7.7

4.7467

Se puede comparar este último resultado con el devuelto por el

sistema en la figura 36, para ver, en efecto que se trata del mismo valor

(aproximadamente, por cuestiones de redondeo) y es subjetivamente

correcto (desequilibrado hacia la parte de criticidad alta, por el mayor grado

de pertenencia de INF3: ALTA, respecto a INF2 e INF3), como se puede

ver en la figura 42:

Fig. 42: Centro de gravedad

1 3

INF3

INF1

INF2

2 10 9 8 7 6 5 4

1

0.8

0.2

0.4

4.7467

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

277

5. ARQUITECTURA DEL SISTEMA IDSAI

En este capítulo se aborda la arquitectura del sistema IDSAI, y por tanto la

implantación de las clases y conceptos anteriormente descritos en una estructura global.

En el diseño de la arquitectura en capas de agentes inteligentes JADE y del

modelo de comportamientos en el sistema IDSAI, se aplican los conocimientos

adquiridos sobre la configuración e implantación de los sensores Snort en la red y

seguridad informática necesarios para la realización del proyecto.

5.1. ARQUITECTURA JAVA JADE MULTIAGENTE

Al abordar el proyecto IDSAI se planteó un problema de base: la

inexperiencia del desarrollador en el diseño de sistemas distribuidos y el

desconocimiento del paradigma de los agentes inteligentes, por lo que se optó por la

tecnología más en boga en estos momentos sobre el tema: JADE. El middleware

JADE proporciona una capa estable sobre la que desarrollar aplicaciones

distribuidas que oculta al desarrollador la complejidad de las capas inferiores.

El proyecto IDSAI pretende ser un Sistema de Detección de Intrusos

distribuido, fiable, escalable y fácilmente adaptable a las nuevas amenazas que

puedan surgir en redes de ordenadores. JADE permite componer un sistema

distribuido a través del desarrollo de entidades software autónomas y colaborativas

en pos de alcanzar un objetivo común, por lo que es la base ideal para alcanzar

estos fines.

JADE proporciona facilidades en cuanto a la coordinación de agentes,

seguridad, comunicación, movilidad, redundancia, y muchos otros servicios básicos

en una arquitectura distribuida. Todo ello sobre un lenguaje cuyas virtudes son de

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

278

sobra conocidas como Java. Su carácter abierto (open-source) permite el desarrollo

de aplicaciones sobre esta tecnología sin coste alguno y la flexibilidad del código lo

hace verdaderamente atractivo.

La potencia de JADE estimula a su vez la aparición de nuevas ideas que

permiten ampliar la funcionalidad de un sistema en las diferentes fases del

desarrollo. Por otra parte, la tecnología Java simplifica la extensión de

funcionalidades y la incorporación de nuevas características a anteriores versiones

de un producto software. Al optar por estas tecnologías de desarrollo se garantiza

que el resultado no será un software estático y caduco en el tiempo, sino que será

fácilmente actualizable y podrá incorporar los avances y funcionalidades necesarias

para mantenerse al día durante un largo periodo de mantenimiento.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

279

5.2. ARQUITECTURA DEL SISTEMA IDSAI

El sistema IDSAI es una distribución del popular Sistema de Detección de

Intrusos Snort, basada en agentes inteligentes JADE.

Como se ha descrito en el apartado 3.1: Sistemas de Detección de Intrusos,

un IDS es un sistema muy delicado que no se puede permitir la pérdida de paquetes

en situaciones críticas y por tanto al tener que garantizarle un mínimo de recursos

computacionales se recomienda instalar en máquinas dedicadas. Esto implica que

en general, no se instalen en la misma máquina pesadas interfaces gráficas u otros

módulos que puedan interferir con el Sistema de Detección de Intrusos. En estos

casos, se suele disponer de máquinas de monitorización remotas donde mostrar los

resultados.

Los productos básicos que devuelve un IDS al hombre encargado de su

supervisión son las alertas. Por defecto, Snort presenta las alertas en ficheros de

texto con el formato siguiente:

[**] [1:1228:7] SCAN nmap XMAS [**]

[Classification: Attempted Information Leak] [Priority: 2]

04/29-20:11:29.545751 0:16:76:47:1B:AD -> 0:16:76:47:1B:6E type:0x800 len:0x3C

192.168.20.103:37670 -> 192.168.20.199:443 TCP TTL:54 TOS:0x0 ID:9541 IpLen:20

**U*P**F Seq: 0x447A2705 Ack: 0x0 Win: 0xC00 TcpLen: 20 UrgPtr: 0x0

[Xref => http://www.whitehats.com/info/IDS30]

El análisis en tiempo real de cientos de alertas de este tipo por parte de un

humano es prácticamente imposible y requeriría de una dedicación completa. El

hombre encargado de supervisar las alertas de un IDS debería limitarse a atender en

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

280

tiempo real las situaciones verdaderamente críticas dejando para una posterior

revisión offline el repaso de las alertas menos importantes. Pero, ¿cuándo se da una

situación crítica?, ¿cómo un analista puede darse cuenta de la criticidad de una

situación y de lo que realmente está ocurriendo en la red si de lo único que dispone

es de líneas y líneas de alertas inconexas?. Evidentemente se hace necesario un

análisis asistido por ordenador sobre esa cantidad de información que aporte al

administrador de red una visión general de la situación de la red en cada momento y

un sistema de navegación más exhaustivo que le aporte mayor detalle en los puntos

en que estime necesario. Estas funcionalidades tan avanzadas restarían capacidad

computacional si se ejecutaran en la misma máquina en la que corre un IDS lo cual

no es deseable, como antes se ha descrito.

El sistema IDSAI pretende dar una solución a este problema. Mediante una

arquitectura distribuida basada en agentes inteligentes se pueden repartir los

módulos de sensor IDS, análisis computacional de los resultados y presentación de

los mismos de forma estructurada, escalable y funcional.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

281

5.2.1. MODELO DE ARQUITECTURA EN CAPAS

La distribución de las funcionalidades de un IDS se realiza generalmente

en una arquitectura distribuida basada en capas con diferentes funcionalidades a

distinto nivel. En los modelos basados en capas (como por ejemplo el conocido

modelo de red OSI), cada capa se alimenta de los productos de la capa inferior,

aportar una funcionalidad más general o especializada y devuelve sus resultados

a la capa superior.

Un típico modelo IDS distribuido basado en capas se compone de 3

niveles bien diferenciados [KOZI03]:

Fig. 43: Modelo de capas general de un IDS

Donde se distinguen las siguientes capas:

SUPERVISOR

ANALISTA

SENSOR

Capas IDS

distribuido

supervisor

red

paquetes

alertas

análisis

presentación

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

282

o Capa Sensor: Encargada de la captura del tráfico de red y generación

de alertas.

o Capa Analista: Encargada del análisis de las alertas.

o Capa Supervisor: Encargada de la presentación visual de los análisis

y la visión general del sistema al supervisor de la red.

Esta sencilla división de responsabilidades en capas es la base de todas

las arquitecturas distribuidas de IDS y en particular del sistema IDSAI.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

283

5.2.2. MODELO DE ARQUITECTURA IDSAI

El modelo distribuido del sistema IDSAI es un modelo de arquitectura en

capas basado en agentes inteligentes. Cada uno de los niveles de la arquitectura

está representado por una serie de agentes inteligentes con funcionalidades

similares que se disponen en una estructura de capas, sirviendo los

pertenecientes a una capa inferior a los de las capas superiores.

La ventaja del uso de agentes inteligentes para la implantación de los

elementos que forman cada capa, es sin duda la escalabilidad del sistema y la

capacidad de especialización que permite aportar cada agente, sobre todo en la

capa de análisis. De esta manera, el modelo de capas del sistema IDSAI, cambia

ligeramente respecto al esquema por defecto:

Fig. 44: Modelo de capas del sistema IDSAI

SUPERVISOR

ANALISTA

SENSOR (Snort)

supervisor

red

paquetes

alertas

análisis

presentación

INTÉRPRETE anomalías

RELOJ

Capas

IDSAI

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

284

En el sistema IDSAI se distinguen en detalle las siguientes capas y

funciones:

o Capa Sensor: Encargada de la captura del tráfico de red y generación

de alertas. Esta capa está compuesta exclusivamente por agentes

Sensor (ver apartado 4.2.2: Agente Sensor). En una implantación del

sistema IDSAI se pueden disponer cuantos agentes Sensor se

precisen en los segmentos de red que se deseen supervisar. La

instalación de un agente Sensor va íntimamente relacionada con la

configuración del sistema Snort al cual va asociado y de la base de

datos MySQL snortdb donde el IDS volcará sus resultados. Ver

apartados 3.1.3: Implantación de IDS y 3.5: Snort además de toda la

documentación posible relacionada con Snort.

o Capa Intérprete: Encargada de la primera manipulación de las alertas

registradas en la base de datos snortdb de cada sensor Snort. Esta

capa está compuesta exclusivamente por agentes Intérprete (ver

apartado 4.2.3: Agente Intérprete, y siguientes) de las diferentes

especialidades. En una implantación del sistema IDSAI se pueden

disponer cuantos agentes Intérprete se precisen, de las diferentes

clases de firmas, asociados a cada instancia de la base de datos

snortdb cuyos datos se deseen analizar. Cada agente Intérprete se

arranca pasándole como parámetro la fiabilidad de las Anomalías

detectadas por su Sensor correspondiente.

El trabajo principal de un agente Intérprete consiste en obtener, en

cada ventana temporal, de todo el conjunto de alertas almacenadas

en su base de datos snortdb asociada, aquellas que se corresponden

con Signatures de su especialidad y crear estructuras Anomalía (ver

apartado 4.1.2.4: Anomalía) cuyo principal atributo es dicha lista de

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

285

eventos. Los elementos de esta lista están caracterizados por su valor

de secuencia y fecha en que se registraron, por lo que gráficamente

se pueden representar de la siguiente manera:

Fig. 45: Ejemplo gráfico de Eventos de una Anomalía

En la figura 45 se simboliza con una línea gruesa horizontal el

tiempo de ventana dentro del cual el agente Intérprete recoge los

Eventos registrados, que se representan con óvalos numerados. El

número de cada Evento indica su número de secuencia a la hora de

ser detectado por el sensor Snort independientemente del tiempo,

que queda representado en el dibujo como la posición de los óvalos a

lo largo de la línea temporal horizontal.

Tras construir la lista de Eventos que forman la Anomalía el agente

Intérprete realiza una agrupación de los mismos en Ataques con un

criterio fijo (ver apartado 4.1.2.3: Ataque).

En el ejemplo representado gráficamente en la figura 45, las

discontinuidades en los números de secuencia significarían que el

tiempo de ventana

primer Evento

de la Anomalía

último Evento

de la Anomalía

1 2 6 7 8 5 15

más de 3 seg. más de 3 seg.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

286

sensor Snort ha disparado alertas intermedias entre Eventos con la

firma de esta Anomalía, aunque temporalmente no estén

considerablemente separados. Por otra parte las grandes separaciones

temporales entre Eventos consecutivos desde el punto de vista de su

numeración significan que en el intervalo de tiempo entre el registro

de los dos Eventos el sensor Snort no ha disparado ninguna Alerta de

ningún tipo. Según el criterio de identificación de Ataques explicado

en el apartado 4.1.2.3: Ataque, la agrupación de Eventos en Ataques

sería de la siguiente manera:

Fig. 46: Anomalía con agrupación de Eventos en Ataques

o Capa Analista: Encargada del análisis de las estructuras Anomalía de

la clase de firma de su especialidad recibidas de los agentes

Intérpretes correspondientes, de la capa inferior. Esta capa está

compuesta exclusivamente por agentes Analista (ver apartado

4.2.10: Agente Analista, y siguientes) de las diferentes

especialidades. En una implantación del sistema IDSAI se debe

disponer de un agente de este tipo, y sólo uno, por cada especialidad

más de 3 seg.

1 2

tiempo de ventana

6 7 8 5 15

más de 3 seg.

Ataque #1 Ataque #2 Ataque #3

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

287

de agente Intérprete desplegado en el sistema, independientemente de

su número. El agente Analista será el destinatario de todos los

Análisis procedentes de los agentes Intérpretes de su clase por lo que

debe tener un nombre fijo: analista<clase>.

La misión del agente Analista es la elaboración de estadísticas de las

Anomalías recibidas y la aplicación de heurísticas de la clase de

signature en la que está especializado para reducir la cantidad de

información de forma que sea más general y manejable a la hora de

procesarla. Esta información se integrará en la estructura Análisis

(ver apartado 4.1.2.5: Análisis), asociada a cada Anomalía. A la

hora de enviar sus resultados a la capa superior, el agente Analista

realiza un único Resumen (ver apartado 4.1.2.7: Resumen) de todos

los Análisis elaborados en la ventana actual, con una valoración

borrosa del estado de la red desde el punto de vista de su

especialidad, que enviará al agente Supervisor. En un determinado

momento, un agente Analista tiene conocimiento de todas las

Anomalías recibidas en las últimas 20 ventanas y de todos sus

Análisis correspondientes.

o Capa Supervisor: Encargada de realizar el Diagnóstico de la

situación de la ventana actual (ver apartado 4.1.2.8: Diagnóstico) en

base a los Resúmenes recibidos de los Analistas de la capa inferior.

Esta capa está compuesta exclusivamente por un sólo agente

Supervisor (ver apartado 4.2.17: Agente Supervisor) ya que al ser el

elemento de más alto nivel, es el que muestra la información más

general al usuario de forma centralizada. El agente Supervisor será el

destinatario de todos los Resúmenes procedentes de los agentes

Analistas, por lo que debe tener un nombre fijo: supervisor. En un

determinado momento, un agente Supervisor tiene conocimiento de

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

288

todos los Resúmenes recibidos en las últimas 20 ventanas y de todos

sus análisis correspondientes.

o Capa Reloj: Capa vertical (es decir, que da servicio a todas las capas

horizontales) encargada de sincronizar los agentes Intérpretes,

Analistas y Supervisor, marcándoles la ventana temporal. Esta capa

está compuesta exclusivamente por un sólo agente Reloj (ver

apartado 4.2.1: Agente Reloj), y su presencia es indispensable para el

funcionamiento de la plataforma. Los agentes con necesidad de ser

sincronizados por el agente Reloj deben darse de alta en su lista de

agentes vivos por lo que éste debe tener un nombre fijo: reloj.

Debido a la naturaleza de agentes inteligentes JADE de los elementos

que las forman, el intercambio de información entre las diferentes capas de la

arquitectura se realiza a través de mensajes ACL, excepto entre las Sensor e

Intérprete, donde el intercambio de información se realiza mediante accesos

directos a la base de datos snortdb.

Los parámetros de los mensajes ACL que intercambian los agentes que

componen la arquitectura tienen funciones muy concretas en el sistema IDSAI y

permiten clasificarlos por sus valores:

o language: Determina la intención del mensaje para los agentes que

necesitan distinguir entre mensajes de sincronización "sync" o

mensajes que contienen datos "data".

o performative: Valor numérico que permite pasar en el mensaje una

información adicional al contenido del mismo. Es utilizado por los

agentes Intérprete para propagar la fiabilidad de la información que

transmiten y por el agente Reloj para indicar el valor de la ventana

actual.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

289

o content: Almacena la estructura de datos que el agente origen envía

al destino. Puede ser un array de Anomalías para un agente Analista,

una estructura Resumen para el agente Supervisor, el tamaño de la

ventana del sistema en los mensajes de sincronización o una simple

instrucción de "ALTA" o "BAJA" para la lista de agentes vivos del

Reloj. En función del valor del campo language y de la naturaleza del

comportamiento que comprueba el buzón de correo, el agente

destinatario sabrá cómo interpretar el contenido del mensaje y actuar

en consecuencia.

El anexo 3: Diagrama de la arquitectura muestra un esquema ejemplo de

implantación del sistema IDSAI. La arquitectura propuesta está compuesta por 1

agente Reloj, 2 agentes Sensor (con sus correspondientes instancias de Snort y

MySQL snortdb), 2 y 3 agentes Intérpretes de diferentes tipos asociados a los

agentes Sensor (en total, 5), 3 agentes Analistas de los mismos tipos que los

Intérpretes y 1 agente Supervisor.

En el diagrama se indica, bajo los agentes, el esquema de los nombres

que deben tener y sus parámetros de arranque más característicos. También se

representa el flujo de la información a lo largo de las diferentes capas en forma

de flechas, muchas de ellas representando el sentido de intercambio de mensajes

ACL entre los agentes.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

290

5.2.3. MODELO DE COMPORTAMIENTOS

El funcionamiento de la arquitectura del proyecto IDSAI está regido por

los comportamientos que incorporan los agentes que componen cada una de las

capas del sistema.

Los agentes que forman el sistema IDSAI implementan, en su totalidad,

comportamientos cíclicos y periódicos que no terminan mientras los agentes

estén vivos. Esto debe ser así porque mientras una instancia de Snort esté

arrancada, puede generar una alerta en cualquier momento y los agentes activos

del sistema deben reaccionar inmediatamente según una respuesta determinista y

homogénea para cualquier tipo de evento. Un ejemplo de éstos, es el

comportamiento LimpiarBD propio del agente Sensor (no incorporado en la

versión final del sistema IDSAI por cuestiones de rendimiento). LimpiarBD

ejecuta periódicamente, independientemente de la sincronización temporal del

Reloj, instrucciones para limpiar la base de datos snortdb sobre la que trabaja la

instancia de Snort que lanza el agente Sensor en su arranque.

Puesto que el arranque de los agentes no tiene por qué ser simultáneo (y

de hecho es imposible que lo sea), la sincronización de sus comportamientos

debe estar asistida por un agente común que haga esta función. Esta tarea es

llevada a cabo por el agente Reloj (ver apartado 4.2.1: Agente Reloj) con su

comportamiento Sincronizar (ver apartado 4.3.4: Sincronizar), por el cual envía

periódicamente, según el tamaño fijado de la ventana, un mensaje a todos los

agentes vivos con el valor de la ventana actual. Para poder saber qué agentes

están vivos en el sistema en un determinado momento, el agente Reloj dispone

del comportamiento RecibirNotificaciones a la espera de mensajes de "ALTA" y

"BAJA", que le envían los agentes con necesidad de sincronización al arrancarse

y morir, respectivamente.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

291

En el momento en que un agente recibe un mensaje de sincronización

con el nuevo valor de la ventana actual, comienza un nuevo ciclo de lo que

podemos denominar ventana temporal. El comportamiento de cada agente es

diferente en cada ventana temporal, pero siempre debe seguir el mismo ciclo y el

mismo intercambio de mensajes entre agentes:

Los agentes Intérpretes reaccionan ante un mensaje de sincronización

(comienzo de nueva ventana temporal) ejecutando el método

obtenerAnomalias() de la clase AnomaliaDAO para obtener la lista de

Anomalías del tipo de firma en que están especializados, correspondientes a la

última ventana temporal. Una vez disponen de ella, la envían en un mensaje

ACL de tipo "data" al agente Analista de su misma especialidad. El agente se

queda de nuevo a la espera de una nueva ventana temporal.

Los agentes Analistas reaccionan ante un mensaje de sincronización

(comienzo de nueva ventana temporal) realizando una serie de operaciones de

mantenimiento del registro de Anomalías y Análisis que mantienen en memoria

antes de ponerse a la espera de las nuevas Anomalías de la ventana actual que les

deben enviar los agentes Intérpretes. Una vez las reciben, construyen los

Análisis correspondientes a las Anomalías recibidas y elaboran el Resumen, que

acto seguido envían al agente Supervisor. Tras el envío del Resumen, se quedan

a la espera de una nueva ventana temporal.

Finalmente, el agente Supervisor reacciona ante un mensaje de

sincronización (comienzo de nueva ventana temporal) realizando el Diagnóstico

de la ventana anterior, ya que sólo al principio de esta ventana es cuando puede

estar seguro de haber recibido todos los Resúmenes procedentes de los agentes

Analistas del ciclo anterior. En esta acción queda patente el hecho de que si el

sensor Snort lanza una alerta en medio de una ventana temporal (ya que no

funciona sincronizadamente), el agente Intérprete esperará hasta la siguiente

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

292

ventana para detectar la Anomalía, y cuando el Resumen correspondiente llegue

al agente Supervisor, éste no diagnosticará la situación hasta una ventana

temporal más tarde. El retardo del agente Supervisor es inevitable si se pretende

montar una arquitectura escalable donde no importe el número de agentes

arrancados en las capas intermedias. Tras mostrar los resultados del Diagnóstico

al usuario a través de la interfaz gráfica, el agente Supervisor procede al

mantenimiento del registro de Resúmenes y Diagnósticos que mantiene en

memoria antes de ponerse a las espera de nuevos Resúmenes de la ventana

actual que le deben enviar los agentes Analistas. Cada Resumen recibido es

almacenado en el registro de Resúmenes para ser procesados al comienzo de la

próxima ventana temporal.

El anexo 4: Diagrama de secuencia muestra un esquema ejemplo del

comportamiento de una serie de agentes del sistema IDSAI en el espacio de una

ventana temporal. La arquitectura propuesta está compuesta por 1 agente Reloj,

1 agente Sensor (con sus correspondientes instancias de Snort y MySQL

snortdb), 2 agentes Intérpretes de diferentes tipos asociados al agente Sensor, 2

agentes Analistas de los mismos tipos que los Intérpretes y 1 agente Supervisor.

En el diagrama se representan, bajo los agentes en líneas verticales, los

comportamientos que implementan y las acciones que llevan a cabo antes

descritas (envío de mensajes y procesos) en el tiempo que comprende la ventana

temporal.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

293

6. DISTRIBUCIÓN DEL PROYECTO IDSAI

El proyecto IDSAI se distribuye en soporte electrónico y consiste en dos partes:

- Carpeta de proyecto IDSAI con todos los archivos necesarios para el

arranque de la plataforma de agentes inteligentes.

- Carpeta de instalables INSTALACION IDSAI con todos los recursos

(programas externos y ficheros de configuración) necesarios para la

implantación de una plataforma de agentes IDSAI.

6.1. CARPETA DE PROYECTO IDSAI

La carpeta de proyecto IDSAI es el producto del equipo de desarrollo del

proyecto IDSAI, y dispone todos los archivos necesarios para el arranque de la

plataforma de agentes inteligentes y su mantenimiento:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

294

Fig. 47: Carpeta del proyecto IDSAI

Donde los ficheros:

o .classpath y .project: Ficheros generados por el entorno de desarrollo

Eclipse.

o MTPs-Main-Container.txt y APDescription.txt: Ficheros propios de

la ejecución del entorno de desarrollo JADE.

o instalar.bat: Script ejecutable de instalación de los contenidos de la

carpeta de proyecto en C:\IDSAI, desde donde se debe arrancar el

aplicativo.

o IDSAISensor.bat: Script ejecutable ejemplo de arranque de los

agentes JADE típicos en un host Sensor: equipo dedicado sobre el

que corre un agente Sensor y una serie de agentes Intérpretes,

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

295

correspondientes a las capas Sensor e Intérprete de la arquitectura

IDSAI (ver apartado 5.2.2: Modelo de arquitectura IDSAI).

o IDSAIAnalista.bat: Script ejecutable ejemplo de arranque del

conjunto de agentes que forman la capa Analista (ver apartado 5.2.2:

Modelo de arquitectura IDSAI). Por cuestiones de rendimiento, es

recomendable arrancar todo el conjunto de agentes Analistas en un

host dedicado, aunque no es necesario.

o IDSAISupervisor.bat: Script ejecutable ejemplo de arranque del

agente Supervisor y el agente Reloj del sistema IDSAI

correspondientes a las capas Supervisor y Reloj de la arquitectura

IDSAI (ver apartado 5.2.2: Modelo de arquitectura IDSAI). Por

cuestiones de rendimiento, es recomendable arrancar estos agentes en

un host dedicado a la gestión centralizada de la red, ya que no

implican una alta carga computacional y la presentación en tiempo

real del estado de la red ayuda en gran medida a la toma de

decisiones.

o IDSAILocalTotal.bat: Script ejecutable ejemplo de arranque de una

instancia de cada agente del sistema IDSAI en la máquina local. En

este ejemplo se arranca 1 agente Sensor (con su correspondiente

instancia de Snort y acceso a la base de datos MySQL snortdb), 6

agentes Intérpretes (uno de cada tipo), 6 agentes Analistas (uno de

cada tipo), 1 agente Supervisor y 1 agente Reloj. La ejecución de esta

cantidad de agentes requiere de una carga computacional grande, y el

sistema no demostrará un buen rendimiento. No obstante es un buen

test de estrés que resulta interesante hacer para comprobar la puesta a

punto del sistema. Esta prueba se realiza sobre la captura de red

ataqueIDSAI.pcap que se proporciona con la distribución y que debe

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

296

ubicarse allá donde se especifique en el arranque del agente Sensor.

El hecho de trabajar sobre una captura de red y pretenderlo hacer en

tiempo real, requiere retrasar el reloj del sistema a la fecha en la que

se hizo la captura. La ejecución del script automatiza la actualización

de la fecha del sistema al momento preciso por lo que se debe

restablecer manualmente al terminar la sesión.

Donde las carpetas:

o src: Contiene los paquetes Java correspondientes a los ficheros fuente

.java programados que forman parte del proyecto.

o bin: Contiene los paquetes Java correspondientes a los ficheros

binarios .class interpretados que forman parte del proyecto.

o etc: Contiene ficheros misceláneos del sistema IDSAI:

� Carpeta de imágenes e iconos de la interfaz del sistema.

� snortdb.sql: Script de construcción del esquema de la base de

datos snortdb.

� IDSAI.conf: Fichero de configuración de la instancia de Snort

que lo vincule en su arranque.

o lib: Contiene librerías de funciones que importan las diferentes clases

del sistema: librerías JADE y driver de conexión con la base de datos

MySQL.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

297

o log: Contiene los archivos de bitácora donde los diferentes agentes

del sistema IDSAI vuelcan la información que manipulan una vez

deja de estar disponible a través de la interfaz.

o doc: Contiene la documentación del proyecto:

� Portada PFC: Portada del proyecto y hoja de firmas, según la

Normativa de proyectos Fin de Carrera.

� Resumen PFC: Resumen del proyecto en castellano e inglés,

según la Normativa de proyectos Fin de Carrera.

� Proyecto Fin de Carrera: El grueso de la presente

documentación.

� Carpeta ANEXOS:

• Conjuntos borrosos IDSAI.

• Diagrama de clases.

• Diagrama de la arquitectura.

• Diagrama de secuencia.

• Esquema snortdb.

• Signatures IDSAI (Snort)

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

298

6.2. CARPETA DE INSTALABLES INSTALACION IDSAI

La carpeta de instalables INSTALACION IDSAI contiene una recopilación

de recursos (programas externos y ficheros de configuración) necesarios para la

implantación de una plataforma de agentes IDSAI.

Todos los productos que se proporcionan en esta compilación son de libre

distribución o pueden obtenerse de forma gratuita por lo que no se viola ninguna

ley de derechos de autor o similares:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

299

Fig. 48: Carpeta de instalables INSTALACION IDSAI

Donde los ficheros:

o ataqueIDSAI.pcap: Captura de red con presencia de ataques intrusos

para la realización de pruebas del sistema IDSAI.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

300

o IDSAI.conf: Fichero de configuración básico de los sensores Snort

del sistema IDSAI, que habrá que adaptar según la arquitectura de

red en la que se pretenda implantar.

o JADE-all-3.4.zip: Fichero comprimido que contiene las librerías

básicas de la distribución 3.4 de JADE. Estas librerías ya están

incorporadas en la carpeta de proyecto IDSAI en la subcarpeta lib.

o jdk-1_5_0_10-windows-i586-p.exe: Instalable de la versión 5.0 del

JDK de Java, necesario para el desarrollo e interpretación del código

Java en que consiste el proyecto.

o MySQL-5.0.27-win32-Setup.exe: Instalable de la versión 5.0 del

Sistema Gestor de Bases de datos MySQL.

o mysql-connector-java-5.0.4-bin.jar: Driver de conexión al SGBD

MySQL para Java.

o mysql-gui-tools-5.0-r8-win32.msi: Instalable de las herramientas de

acceso al SGBD MySQL de forma gráfica.

o Snort_2_6_1_1_Installer.exe: Instalable de la versión 2.6.1.1 del IDS

Snort.

o snort_manual.pdf: Manual de instalación, configuración y uso del

IDS Snort, necesario para sacarle el máximo partido a la herramienta.

o snortdb.sql: Script SQL que crea la base de datos snortdb (si existe

previamente, la elimina y la vuelve a crear desde cero), le da todos

los permisos al usuario snort, y crea todas las tablas y columnas

según el esquema snortdb.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

301

o WinPcap_3_0.exe: Instalable de la librería de captura de paquetes

estándar para Windows, necesaria para la escucha del medio de red

en modo promiscuo del interfaz Snort.

Donde las carpetas:

o Snort rules: Contiene los ficheros de reglas .rules del motor de

inferencias de Snort, que la distribución original de Snort no

incorpora por defecto y debe hacerse de forma manual.

o Programas ataques: Contiene los instalables de los programas de

intrusión Nessus y Nmap utilizados en las pruebas del sistema IDSAI

durante su desarrollo.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

302

7. MANUAL DE INSTALACIÓN DEL SISTEMA IDSAI

El sistema IDSAI ha sido desarrollado para ser desplegado en plataformas

Windows, aunque en la red en que funcione pueden coexistir otros sistemas operativos.

El sistema IDSAI engloba una serie de subsistemas que es necesario instalar de

la forma adecuada para su correcto funcionamiento en conjunto. Estos subsistemas son

los siguientes:

- Sistema de Detección de Intrusos: El IDS Snort 2.6.1.1 es la herramienta

escogida para este subsistema. La configuración de Snort no es trivial y se

requieren amplios conocimientos sobre la aplicación por lo que se

recomienda leer la documentación relacionada así como el apartado 3.5:

Snort. Una instalación del sistema IDSAI en un entorno real, requiere de

varias instancias de Snort dispuestas en diferentes segmentos de red, en este

aspecto también se recomienda leer la documentación relacionada así como

el apartado 3.1: Sistemas de Detección de Intrusos.

- Sistema Gestor de Bases de Datos: Cada una de las instancias de Snort

dispuestas a lo largo de la red requieren de una instalación asociada del

SGBD MySQL 5.0.27, con un esquema de la base de datos snortdb ya

instanciado donde volcar los resultados del IDS. También es necesario que

los agentes inteligentes tengan derecho de acceso a la base de datos por lo

que habrá que crear un usuario con los permisos adecuados dedicado a este

fin.

- Plataforma de agentes inteligentes JADE: Para la ejecución de los agentes

diseñados, será necesario contar con las librerías Java JADE, ya

incorporadas en la carpeta lib de la estructura del proyecto.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

303

7.1. INSTALACIÓN DE LA MÁQUINA VIRTUAL JAVA

El sistema IDSAI basa su despliegue en agentes Java JADE, por

lo que para su ejecución en cada una de las máquinas que albergan

entidades de este tipo es necesaria la presencia de una Máquina Virtual

Java (JVM, en inglés, Java Virtual Machine).

Si no se cuenta con una JVM instalada previamente en el sistema, la

distribución de la aplicación proporciona una copia de la versión 5.0. Para su

instalación en cada máquina implicada en el sistema IDSAI se debe ejecutar el

instalable jdk-1_5_0_10-windows-i586-p.exe, que se proporciona con la

distribución de la aplicación:

Los pasos a seguir durante la instalación son los siguientes:

1. Aceptar los términos de la licencia de Sun Microsystems.

2. Seleccionar los componentes de la JVM a instalar y la ruta, aunque es

recomendable dejar los parámetros por defecto y no compromete al

sistema.

3. Continuar con la instalación de la JRE (Java Runtime Environment),

componente básico de la JVM por ser el elemento encargado de la

interpretación en tiempo real del código Java. De nuevo, es

recomendable dejar los parámetros de componentes y ruta de

instalación con los valores por defecto.

4. Continuar hasta el final de la instalación.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

304

7.2. INSTALACIÓN DEL IDS SNORT

La instalación de un IDS, y en particular la

del IDS Snort por ofrecer tantas opciones de

configuración, no es trivial y requiere una importante inversión de tiempo para

aprender las diferentes formas de optimizar la herramienta y adaptarla al entorno en

que se va a ejecutar.

Como primera medida, es necesaria la instalación del software Snort en al

menos una máquina dedicada de la red (host Sensor). Para ello se debe ejecutar el

instalable Snort_2_6_1_1_Installer.exe, que se proporciona con la distribución de la

aplicación:

Los pasos a seguir durante la instalación son los siguientes:

1. Aceptar los términos de la licencia GNU.

2. Seleccionar un modo de logging a base de datos MySQL (opción por

defecto).

3. Seleccionar todos los componentes de Snort para la instalación

(seleccionados todos por defecto).

4. Determinar como la carpeta donde se instalará el software la carpeta

por defecto: C:\Snort.

5. Continuar hasta el final de la instalación.

Como se ha explicado en el apartado 3.5: Snort, para que este IDS pueda

capturar paquetes de red, es necesario que en el equipo en que se corra esté

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

305

instalada la librería de captura estándar libpcap. Si no se cuenta con ella

previamente (suele instalarse automáticamente con otras aplicaciones de sniffing de

red de libre distribución como Ethereal o Wireshark), debe instalarse ahora. Para

ello se debe ejecutar el instalable WinPcap_3_0, que se proporciona con la

distribución de la aplicación:

Los pasos a seguir durante la instalación son los siguientes:

1. Aceptar los términos de la licencia de NetGroup

2. Continuar hasta el final de la instalación.

Llegados a este punto, el IDS Snort puede funcionar correctamente. Ahora

es el momento de configurar el sensor Snort adecuadamente para sacarle el máximo

rendimiento en la infraestructura de red en que se va a ejecutar y prepararlo para

integrarlo en el sistema IDSAI. Para ello el primer paso es actualizar el juego de

reglas del motor de inferencias de Snort. Con la distribución de la aplicación se

proporciona la carpeta Snort rules, que contiene los ficheros básicos de reglas que

habrá que importar manualmente a la carpeta C:\Snort\rules. Por supuesto, si el

administrador del sistema IDSAI desea añadir algún fichero de reglas propio o

modificar los ya existentes, puede hacerlo sin problema, pero debe tenerlo en

cuenta para plasmarlo en el fichero de configuración de arranque de Snort.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

306

Fig. 49: Importación manual de ficheros de reglas.

La ejecución de Snort en modo NIDS requiere de un fichero de

configuración .conf que especifique detalladamente sus parámetros de arranque. La

instalación por defecto de Snort incluye en el fichero C:\Snort\etc un archivo

snort.conf con un ejemplo de configuración paso a paso que se puede aprovechar

para adaptarlo a la configuración de red a administrar. Se recomienda leer

detenidamente el contenido del fichero para aprender los detalles de la

configuración de Snort antes de incorporar al directorio antes mencionado el

fichero de configuración del sistema IDSAI que proporciona la distribución de la

aplicación. Este proceso se debe hacer manualmente, copiando el fichero

IDSAI.conf en la carpeta C:\Snort\etc.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

307

Fig. 50: Importación manual del fichero de configuración.

Este fichero tiene las siguientes particularidades, que se deben considerar y

reeditar para el optimizar el funcionamiento de cada uno de los sensores del sistema

IDSAI, dependiendo de las características de tráfico en cada segmento de red:

o Variable HOME_NET 192.168.20.0/24. Esta variable debe

modificarse con la dirección IP de la red en la que se ejecute el

sensor Snort. El valor de esta variable es fundamental para el

chequeo de reglas del motor de inferencias de Snort.

o Variable EXTERNAL_NET any. Esta variable puede modificarse si

se considera necesario. El valor de esta variable es fundamental para

el chequeo de reglas del motor de inferencias de Snort.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

308

o Demás variables de configuración. Deben adaptarse a los valores

apropiados para la implantación apropiada del sistema.

o Propiedades del Descodificador de Paquetes de Snort. Pueden

habilitarse o deshabilitarse las propiedades que se consideren

necesarias con las instrucciones config apropiadas.

o Configuración de Preprocesadores. La configuración de los

preprocesadores que se especifican en el fichero no tiene por qué ser

la más apropiada para la red en la que se implante el sistema. Es muy

recomendable repasar los parámetros de los preprocesadores para

optimizarlos según las necesidades de la red, ya que en el ejemplo se

inicializan con parámetros por defecto y de carácter general.

o Configuración de módulos externos. Aparte de los que el usuario

desee disponer, resulta fundamental para el sistema IDSAI habilitar

la salida de Snort por la base de datos mysql snortdb, con un usuario

y contraseña dedicados.

o Inclusión de ficheros de reglas. La configuración del juego de reglas

de que dispone el Motor de Inferencias de Snort se realiza incluyendo

los ficheros de reglas que se desee mediante instrucciones include. Se

debe verificar que tanto los ficheros de reglas que se deseen habilitar

como los nuevos que se deseen crear, están en la carpeta

C:\snort\rules.

La base de datos MySQL snortdb no es el único módulo de salida habilitado

para el registro de alertas de los sensores del sistema IDSAI. Para facilitar la

interoperabilidad con otras aplicaciones y disponer de la referencia a las alertas en

un formato de texto, se recomienda crear una nueva carpeta IDSAI en el directorio

C:\Snort\log. En dicha carpeta IDSAI, será donde, además de en la base de datos

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

309

snortdb, los sensores Snort escriban sus alertas en un fichero alert.ids y las

incidencias de cada captura en ficheros snort.log. La creación de esta carpeta no

será necesaria si no se requiere esta salida en el comando de ejecución de la

instancia de Snort.

Por último, para que cada agente Sensor pueda arrancar su instancia de

Snort correspondiente, es necesario incluir en la variable Path del sistema la ruta

hacia el ejecutable snort.exe que según nuestra instalación es C:\Snort\bin:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

310

Fig. 51: Actualización manual del Path del sistema con la ruta de Snort.

Antes de seguir adelante con la instalación de los demás componentes de

IDSAI se recomienda hacer una serie de pruebas arrancando Snort en las diferentes

modalidades, y en particular, en modo NIDS, para comprobar que funciona

correctamente.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

311

7.3. INSTALACIÓN DEL SGBD MySQL

La instalación de una instancia de MySQL para el

registro de alertas de Snort y la interactuación con los agentes del sistema IDSAI

tiene una serie de particularidades de configuración que se deben considerar para su

correcto funcionamiento.

Como primera medida, es necesaria la instalación del software MySQL en

cada uno de los host Sensor de la red (máquinas en las que se ha instalado un sensor

Snort). Para ello se debe ejecutar el instalable MySQL-5.0.27-win32-Setup.exe, que

se proporciona con la distribución de la aplicación:

Los pasos a seguir durante la instalación son los siguientes:

1. Seleccionar el modo de instalación por defecto (Typical) y proceder.

2. Registrarse on-line si se desea o saltarse este paso.

3. Continuar hasta el final de la instalación y pasar al proceso de

configuración.

4. Seleccionar el modo de configuración detallada (Detailed

Configuration).

5. Seleccionar el modo de servicio en máquina de desarrollo (Developer

Machine).

6. Seleccionar el tipo de uso de las bases de datos como de propósito

general (Multifunctional Database).

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

312

7. Seleccionar la ruta de ubicación de las bases de datos (se recomienda

la ruta de instalación por defecto).

8. Seleccionar como número de conexiones concurrentes, tantas como

agentes Intérpretes se deseen asociar a cada instancia de la base de

datos, más una, ya que hay que tener en cuenta el acceso continuo a

la misma por parte del sensor Snort. Puesto que en la presente versión

de IDSAI se han desarrollado 6 especialidades de agente Intérprete, y

no tiene sentido asociar dos Intérpretes del mismo tipo a la misma

base de datos (porque darían el mismo resultado), basta con permitir

hasta 7 conexiones simultáneas, aunque se recomienda alguna más

para posteriores ampliaciones. El valor por defecto (Decission

Support) es de 20, por lo que resultan más que suficientes para esta

distribución.

9. Seleccionar un modo de trabajo en red. Los agentes del sistema

IDSAI que acceden a las bases de datos (agentes Sensor e Intérpretes)

se deben arrancar en los host Sensor, por lo que no es necesario

habilitar los accesos remotos a los SGBD (y no se recomienda, por

razones de seguridad). No obstante, es necesario abrir un puerto para

la conexión con la base de datos en local. Se recomienda cambiar el

puerto por defecto y habilitar el modo estricto (Strict Mode) para

agilizar los accesos.

10. Seleccionar el juego de caracteres estándar (Standard Character Set),

ya que es el mismo con el que se ha desarrollado el resto del

aplicativo IDSAI.

11. Instalar el servicio Windows MySQL y añadir el directorio donde se

encuentra el arranque de MySQL en el PATH del sistema si se desea

trabajar mediante la consola. Más adelante se procederá a la

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

313

instalación de una serie de herramientas de administración y acceso al

SGBD que permitan la manipulación de las bases de datos desde una

agradable interfaz gráfica, por lo que deja de ser necesario el acceso a

través de la línea de comandos.

12. Modificar las opciones de seguridad introduciendo una nueva

contraseña raíz y confirmándola. No será necesario ni deseable crear

una cuenta de usuario anónimo, por cuestiones de seguridad.

13. Continuar hasta el final de la instalación.

La manipulación y configuración de una base de datos MySQL es un trabajo

tedioso si se realiza desde la consola del sistema, por lo que resulta muy cómodo

hacerlo desde una interfaz gráfica. La distribución de la aplicación IDSAI

proporciona una copia de la interfaz gráfica oficial de MySQL en el instalable

mysql-gui-tools-5.0-r8-win32.msi, de instalación opcional:

Los pasos a seguir durante la instalación son los siguientes:

1. Aceptar los términos de la licencia MySQL.

2. Seleccionar la ruta de instalación de las herramientas. (Se recomienda

la ruta de instalación por defecto).

3. Seleccionar el modo de instalación completo que incluye todos los

componentes gráficos necesarios para la administración de la base de

datos

4. Continuar hasta el final de la instalación.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

314

El resultado de la instalación es que disponemos de una serie de programas

que nos facilitarán el acceso a la información de las bases de datos de forma directa

y nos ayudarán en la configuración de la base de datos snortdb:

Fig. 52: Programas MySQL instalados.

El siguiente punto es la configuración de la base de datos snortdb, donde el

sensor Snort vuelca los resultados y los agentes Intérpretes los recogen para su

procesamiento. Para ello debemos abrir el programa recién instalado MySQL

Administrator, con un acceso local (localhost) al puerto especificado para el

servicio MySQL, introduciendo el nombre y contraseña del usuario raíz.

El menú de la aplicación nos permite navegar por los diferentes aspectos del

Sistema Gestor de Bases de Datos y facilita muchas funcionalidades. Entre ellas la

que habremos de considerar para la configuración del acceso a la base de datos

snortdb es la pestaña Administración de Usuarios (User Administration). Entrando

en este apartado, se debe crear un nuevo usuario de nombre "snort" y contraseña

"snort", ya que es la autenticación que posteriormente utilizarán los agentes

Intérpretes para acceder a la base de datos snortdb:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

315

Fig. 53: Creación de usuario snort.

En el momento en que disponemos del usuario snort, el SGBD está

preparado para crear el esquema snortdb. Para facilitar esta labor, la distribución de

la aplicación proporciona un script SQL que crea la base de datos snortdb (si existe

previamente, la elimina y la vuelve a crear desde cero), le da todos los permisos al

usuario snort, y crea todas las tablas y columnas según el esquema snortdb (ver

anexo 5: Esquema snortdb).

La ejecución del script snortdb.sql se puede realizar cómodamente mediante

la herramienta MySQL Query Browser. Para ello nos conectamos mediante un

acceso local (localhost) al servicio MySQL, introduciendo el nombre y contraseña

del usuario raíz, como se hizo anteriormente. Una vez en el interfaz del programa,

entrar en el menú Archivo (File) → Abrir Script (Open Script) y buscar el fichero

snortdb.sql que proporciona la distribución de la aplicación.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

316

Fig. 54: Carga del script snortdb.sql.

Una vez se ha cargado el script snortdb.sql se procede a su ejecución en el

botón Ejecutar (Execute) de la parte superior de la ventana. Tras unos segundos, la

base de datos snortdb está limpia y lista para ser cargada con la información del

sensor Snort.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

317

7.4. INSTALACIÓN DE LA PLATAFORMA IDSAI

La instalación de la plataforma de agentes inteligentes IDSAI es muy

sencilla. Desde el soporte de la distribución, en la carpeta del proyecto IDSAI, basta

con ejecutar el script instalar.bat, para que todo el contenido de dicha carpeta sea

copiado al directorio C:\IDSAI, desde donde los agentes IDSAI funcionarán

adecuadamente. Copiar la carpeta entera y no de forma selectiva significará que en

muchos casos habrá instalados en una máquina más tipos de agentes de los que se

van a correr en ella. Por cuestión de flexibilidad, si se pretende introducir un

cambio en el esquema de agentes planificado en un principio, resulta más cómodo

disponer de todas las posibilidades en todos los equipos. De esta manera se

simplifica la instalación de los agentes sin comprometer la capacidad del equipo, ya

que el volumen de código es muy pequeño.

Llegados a este punto, la instalación de los componentes básicos sobre los

que ejecutar el sistema IDSAI en las diferentes máquinas de la distribución está

completa por lo que el arranque y uso de los diferentes agentes que lo conforman

será tarea exclusiva del administrador del sistema desde el punto de vista del

usuario.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

318

8. MANUAL DE USO DEL SISTEMA IDSAI

El sistema IDSAI, al ser un IDS basado en una arquitectura distribuida, requiere

amplios conocimientos por parte de sus usuarios (típicamente administradores de red y

personal de seguridad informática) tanto del tema de los Sistemas de Detección de

Intrusos como de los sistemas distribuidos en entornos de red.

Por las particularidades que puede presentar la red a supervisar con la instalación

del sistema IDSAI, la puesta a punto de los agentes forma parte del trabajo del

administrador de la red desde el punto de vista del usuario:

- Configuración de los sensores Snort.

- Diseño del plan de distribución de los agentes de la plataforma. Sobre este

punto se ha hecho hincapié en el apartado 3.1.3: Implantación de IDS, por lo

que no se volverá a insistir en este punto.

- Edición y ejecución de los scripts de arranque de los agentes de la

plataforma.

Una vez estén corriendo los agentes en los diferentes equipos estratégicamente

distribuidos por la red, el usuario debe conocer las particularidades de uso de la

herramienta, para poder interpretar adecuadamente los resultados de la ejecución y saber

utilizar la interfaz de los agentes para navegar por los resultados y la información

detallada de las anomalías detectadas en la red.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

319

8.1. CONFIGURACIÓN DE LOS SENSORES

La configuración de los sensores Snort requiere de un gran dominio de la

herramienta a la hora de conocer todas sus particularidades. Aun siendo un experto

en Snort, el encargado de su configuración debe tener un amplio conocimiento

sobre la red a supervisar, el tipo de tráfico autorizado en la misma, su organización

y métodos de seguridad perimetral, etc. Esto resulta fundamental a la hora de hacer

una distribución de sensores en zonas estratégicas de la red tal y como se explica en

el apartado 3.1.3: Implantación de IDS.

La configuración de los sensores Snort para adaptarlos a las particularidades

de la red en cuestión no es trivial. El administrador de red deberá considerar cada

uno de los parámetros de Snort presentes en el fichero de configuración de cada

sensor C:\Snort\etc\IDSAI.conf y ajustarlos adecuadamente según las necesidades

de inspección, según se hace una breve introducción en el apartado 3.5.2:

Componentes de Snort.

Puesto que ya se ha insistido en este tema en anteriores apartados de la

presente documentación, este punto no se desarrollará más en detalle.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

320

8.2. ARRANQUE DE LOS AGENTES

Una vez se dispone de las herramientas IDS definitivamente situadas en los

diferentes hosts de la red y calibradas a tal efecto, se deben editar los scripts de

arranque de los agentes que procedan en dichas máquinas.

El arranque de agentes en la plataforma IDSAI se realiza mediante scripts

de ejecución de líneas de comando. Aunque el proceso de edición de un script sea

un trabajo tedioso e incómodo, en la distribución original del aplicativo se ha

dejado de esta manera por motivos de flexibilidad a la hora de arrancar los agentes

de la plataforma con sus distintos parámetros de inicialización por la consola.

Evidentemente es necesario que el encargado de la manipulación del sistema IDSAI

tenga los conocimientos básicos de arranque y gestión de agentes JADE, por lo que

también es recomendable estar familiarizado con las herramientas que acompañan

al middleware JADE, sobre todo con la interfaz de gestión de la plataforma RMA

que se recomienda arrancar en algún host poco cargado de la plataforma para

supervisar la actividad del sistema de forma centralizada.

La distribución original de IDSAI requiere que en las máquinas que

incorporan una instancia del IDS Snort, el arranque de ésta se haga mediante un

agente Sensor (ver apartado 4.2.2: Agente Sensor) acompañado por sus agentes

Intérpretes (ver apartado 4.2.3: Agente Intérprete, y siguientes) asociados

arrancados igualmente en local. Por ello, en la carpeta de proyecto IDSAI se

propone un script ejemplo de arranque de un host Sensor:

Ejecutando este fichero se arrancan los siguientes agentes en local con sus

correspondientes parámetros de arranque:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

321

sensor1 : AgenteSensor(0 C:\Snort\log\ATAQUEIDSAI\ataqueIDSAI.pcap)

interpreteattempted-recon1 : AgenteInterpreteAttemptedRecon(10)

interpreteunknown-class1 : AgenteInterpreteUnknownClass(9)

interpreteattempted-admin1 : AgenteInterpreteAttemptedAdmin(10)

interpreteattempted-dos1 : AgenteInterpreteAttemptedDos(9)

interpretebad-unknown1 : AgenteInterpreteBadUnknown(9)

interprete-otros1 : AgenteInterpreteOtros(10)

Donde la ruta especificada como segundo parámetro del Agente Sensor

indica el fichero de captura de red que se proporciona con la distribución del

proyecto IDSAI. Evidentemente, este script puede ser editado arrancando otros

agentes y modificando sus parámetros según el plan de implantación del sistema.

La distribución original de IDSAI sugiere que el arranque de los agentes

Analistas (ver apartado 4.2.10: Agente Analista, y siguientes), encargados de

procesar la información recogida por los agentes Intérpretes, se realice en máquinas

dedicadas diferentes de los hosts Sensor. En la carpeta de proyecto IDSAI se

propone un script ejemplo de arranque de un host Analista:

Ejecutando este fichero se arrancan los siguientes agentes en local:

analistaattempted-recon : AgenteAnalistaAttemptedRecon

analistaunknown-class : AgenteAnalistaUnknownClass

analistaattempted-admin : AgenteAnalistaAttemptedAdmin

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

322

analistaattempted-dos : AgenteAnalistaAttemptedDos

analistabad-unknown : AgenteAnalistaBadUnknown

analista-otros : AgenteAnalistaOtros

Evidentemente, este script puede ser editado arrancando otros agentes según

el plan de implantación del sistema.

Por último, la distribución original de IDSAI, sugiere que el arranque del

agente Supervisor (ver apartado 4.2.17: Agente Supervisor), necesario para la

monitorización del estado de la red, se realice en una máquina dedicada y de fácil

acceso para el administrador de red. En la carpeta de proyecto IDSAI se propone un

script ejemplo de arranque de un host Supervisor:

Ejecutando este fichero se arrancan los siguientes agentes en local con sus

correspondientes parámetros de arranque:

supervisor : AgenteSupervisor

reloj : AgenteReloj(20)

Donde el valor especificado como parámetro del Agente Reloj indica el

periodo de la ventana temporal de sincronización de los agentes de la plataforma.

La carga computacional que supone el arranque del agente Reloj es lo

suficientemente pequeña como para que pueda convivir con el Supervisor. Además

la interfaz del agente Reloj es muy interesante para el administrador del sistema a la

hora de saber qué agentes se encuentran vivos en un determinado momento. Debido

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

323

a que este equipo será supervisado de cerca por el encargado de la red, será

interesante que también se arranque en él el agente RMA, que facilite la gestión de

la plataforma, y puesto que será un equipo bien conocido de la red puede declararse

contenedor principal (Main-Container) de la plataforma. Evidentemente, este script

puede ser editado arrancando otros agentes y modificando sus parámetros según el

plan de implantación del sistema.

Estos tres scripts ejemplo permiten el arranque de una plataforma de agentes

IDSAI funcional y se dejan abiertos a la edición por parte del usuario para que

realice la configuración que más le convenga. Por supuesto habrá que modificar en

los scripts correspondientes al host Sensor y al host Analista la opción de -host XXX

poniendo en su lugar el nombre del equipo Supervisor, que se identifica así como el

contenedor principal de la plataforma. La ejecución de los tres scripts ejemplo en

los diferentes equipos de la red da lugar a una implantación del sistema IDSAI

como muestra la siguiente figura:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

324

Fig. 55: Implantación ejemplo del sistema IDSAI.

En la imagen se representa, como Contenedor(es)X, cada uno de los equipos

Sensores de la red, donde se arrancarán las instancias de Snort y de los agentes

Sensor e Intérpretes. El arranque de estos agentes es producto de la ejecución del

script IDSAISensor.bat. El host en el que se ubica el Contenedor1 es en el que se

arranca el conjunto de agentes Analistas de la arquitectura y debe estar disponible

para que el administrador de red pueda investigar a fondo las causas de las

RED

Contenedor(es)X (Host Sensor)

- sensorx

- interpreteattempted-reconx

- interpreteunknown-classx

- interpreteattempted-adminx

- interpreteattempted-dosx

- interpretebad-unknownx

- interprete-otrosx

Contenedor Principal (Host Supervisor)

- supervisor

- reloj

Contenedor1 (Host Analista)

- analistaattempted-recon

- analistaunknown-class

- analistaattempted-admin

- analistaattempted-dos

- analistabad-unknown

- analista-otros

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

325

anomalías de la red utilizando sus interfaces gráficas. El equipo que aloja el

Contenedor Principal es donde se ubican los agentes Reloj y Supervisor. La interfaz

que proporciona este último será de gran ayuda para el administrador de red a la

hora de tener conocimiento del estado de la red en todo momento.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

326

8.3. EXPLOTACIÓN DEL SISTEMA

Una vez arrancados los agentes de la plataforma, los resultados sobre la

situación de la red no tardarán en aparecer en la interfaz gráfica del agente

Supervisor. Los informes en tiempo real del estado de la seguridad del sistema

deben servir al administrador de red para tomar decisiones rápidas y precisas en una

situación de crisis, ya que en ellos se identifica inequívocamente a la víctima y/o al

atacante junto al tipo de actividad presente que se debe intervenir e investigar.

Este es el verdadero trabajo del hombre detrás del sistema IDSAI. Como

cualquier otro Sistema de Detección de Intrusos, IDSAI se limita a informar del

estado de la red al administrador de la misma para que éste tome las decisiones más

apropiadas, si bien el carácter distribuido de este sistema permite la integración

inteligente y especializada de la información proporcionada por múltiples sensores

en vez de uno sólo. Además la interfaz de los agentes de la plataforma IDSAI

permite la investigación en detalle de las causas de una situación anómala llegando

a nivel de alertas, que clasificadas por tipos de patrón de ataque dan una visión más

veraz de la situación sin pérdida de información. Los siguientes apartados servirán

para explicar al usuario la forma de acceder a toda la información que proporcionan

los agentes mediante la navegación por sus diferentes ventanas.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

327

8.3.1. INTERFAZ DEL AGENTE SUPERVISOR

El agente Supervisor (ver apartado 4.2.17: Agente Supervisor) es el

encargado de proporcionar al usuario la visión más general de la situación de la

red, mostrando en cada ventana temporal la información que devuelve en la

estructura Diagnóstico (ver apartado 4.1.2.8: Diagnóstico). Por ser el agente de

más alto nivel (más cercano al usuario), proporciona la interfaz gráfica más

completa de los agentes IDSAI y será el lugar de partida para el descubrimiento

de situaciones anómalas de la red por parte del administrador del sistema.

La siguiente imagen representa la interfaz principal del agente Supervisor

en un momento de la ejecución:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

328

Fig. 56: Interfaz del agente Supervisor.

La interfaz gráfica del agente Supervisor consiste en una ventana en la

que destacan los siguientes elementos:

1. Nombre unívoco del agente. Fundamental para su identificación en el

agente RMA o para el envío de mensajes ACL.

1

2

3

4

5

6

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

329

2. Log de registro de Diagnósticos. En él se imprime, en cada ventana

temporal, la información más relevante y general del Diagnóstico

actual. Los datos listados se muestran en la siguiente estructura:

VENTANA TEMPORAL (<nº ventana>) en <fecha y hora>

<listado de inferencias>

Estado actual:

<descripción del estado>

Diagnóstico comparativo:

<diagnóstico comparativo>

Donde:

� listado de inferencias: es la lista de valores borrosos de la

criticidad del sistema, que indica cada uno de los Resumenes

recibidos en base a los cuales se realiza el Diagnóstico. Hay

que recordar que un Resumen puede propagar más de una

inferencia, por tratarse de valores borrosos compatibles y con

grados de pertenencia bajos. En todo caso, las inferencias se

presentan coloreadas por tipo de firma en que se especializa el

agente Analista que propaga el Resumen, según el color

indicado en la leyenda del diagrama gráfico.

� descripción del estado: es el valor del atributo estado del

Diagnóstico actual. Le sigue el valor numérico de la criticidad

final del sistema una vez se han integrado todas las

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

330

inferencias por el método del centro de gravedad. En las dos

siguientes líneas se especifican las direcciones IP del atacante

y víctima principales de la ventana actual, esto es, los que

mayor número de firmas protagonizan entre las acusaciones

correspondientes a la ventana actual. Toda esta información

se representa coloreada según sea el valor borroso de la

criticidad de la situación: ALTA→rojo, MEDIA→naranja,

BAJA→verde. La descripción del estado es la información

más importante que se muestra en cada ventana temporal y a

la que el administrador del sistema deberá dedicar mayor

atención para prever situaciones de alta criticidad y ser capaz

de reaccionar rápida y eficazmente.

� diagnostico comparativo: es el resultado de comparar el

estado actual del sistema y el indicado en el Diagnóstico

anterior. Se indica el cambio de situación y de atacante y

víctima principales, si procede.

3. Lienzo gráfico de representación de la situación. Sobre un círculo

negro se puede ver, en cada ventana temporal, el conjunto de hosts

implicados en las anomalías detectadas en el sistema. Las líneas que

unen las diferentes direcciones IP, representan: el tipo de firma

correspondiente con los colores indicados en la leyenda de la parte

superior izquierda, el sentido del ataque con la parte de la víctima

destacada con un cuadrado de mayor grosor y la cantidad de firmas

diferentes de dicho tipo detectadas entre el atacante y la víctima con el

grosor de la línea. En la parte inferior izquierda se muestra en fuente

roja la lista de las 5 direcciones IP que se han declarado atacante

principal desde el arranque del agente. De la misma forma, en la parte

inferior derecha se muestra en fuente azul la lista de las 5 direcciones

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

331

IP que se han declarado víctima principal desde el arranque del

agente. La información que se proporciona de forma gráfica es fácil de

interpretar y se corresponde fielmente con la descripción del estado

explicada anteriormente.

4. Tabla de últimos Diagnósticos. En ella se listan los Diagnósticos

realizados en las últimas 20 ventanas indicando explícitamente la

ventana y la fecha en la que se hicieron. Los Diagnósticos anteriores

se pueden referenciar en el fichero diagnosticos.txt del directorio log

en la carpeta de proyecto donde se haya instalado el aplicativo. Para

acceder a los detalles de cada Diagnóstico en particular, el usuario

debe hacer clic sobre su registro, tras lo que se abre la siguiente

ventana:

Fig. 57: Detalles de Diagnóstico.

4.1

4.2

4.3

4.4

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

332

Los detalles del Diagnóstico se muestran en la interfaz anterior, en la

que destacan los siguientes elementos:

1.1. Identificador del detalle. Incluye una referencia a la ventana

y la fecha y hora del momento en que se registra el

Diagnóstico.

1.2. Lista de atacantes y víctimas. Enumeración de las

direcciones IP de los hosts atacantes y víctimas presentes en

la situación de la red. Cada valor va acompañado de la

proporción de patrones detectados que protagonizan desde

su posición.

1.3. Lienzo gráfico de representación del Diagnóstico. Se trata

de un panel gráfico idéntico al que apareció en la interfaz

principal del agente Supervisor cuando se registró el

Diagnóstico que se está referenciando. No se incluyen las

listas de top 5 ataques y víctimas por carecer de interés en

una situación pasada.

1.4. Tabla de Acusaciones del Diagnóstico. En ella se listan las

Acusaciones (ver apartado 4.1.2.6: Acusación) de las

Anomalías detectadas en la ventana temporal del

Diagnóstico en cuestión. Cada casilla de la tabla muestra el

número de firmas diferentes detectadas en la ventana

temporal en las que la dirección IP correspondiente a la

cabecera de la fila es el atacante y la correspondiente a la

cabecera de la columna es la víctima. Para acceder a los

detalles de cada Acusación en particular el usuario debe

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

333

hacer clic sobre su celda, tras lo que se abre la siguiente

ventana:

Fig. 58: Detalles de Acusación en Diagnóstico.

Los detalles de la Acusación en un Diagnóstico se muestran

enumerados en la interfaz anterior, en la que destacan los

siguientes elementos:

1.4.1. Identificador del detalle. Incluye una referencia al

par de hosts implicados en la Acusación en el

formato IP atacante -> IP víctima. A continuación se

4.4.1

4.4.2

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

334

indica la Prioridad media de las Signatures (ver

apartado 4.1.2.2: Signature) listadas a continuación.

1.4.2. Puesto que el Diagnóstico es la integración de todos

los Resúmenes de los diferentes tipos de firma, los

Análisis (ver apartado 4.1.2.5: Análisis) implicados

en la Acusación se listan organizados por su clase de

Signature, acompañados del par de valores puerto

atacante -> puerto víctima.

5. Tabla de Resúmenes recibidos. En ella se listan los Resúmenes

recibidos en las últimas 20 ventanas temporales indicando

explícitamente la ventana y la fecha en la que se hicieron, la

especialidad del mismo, la prioridad y compactación de las alertas que

representa y la fiabilidad de su fuente de datos. Los Resúmenes

anteriores a las últimas 20 ventanas temporales se pueden referenciar

en el fichero resumenes.txt del directorio log en la carpeta de proyecto

donde se haya instalado el aplicativo. Para acceder a los detalles de

cada Resumen en particular, el usuario debe hacer clic sobre su

registro, tras lo que se abre la siguiente ventana:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

335

Fig. 59: Detalles de Resumen.

Los detalles del Resumen se muestran en la interfaz anterior, en la que

destacan los siguientes elementos:

5.1. Identificador del detalle. Se especifica la clase de Signature

en la que está especializado el Resumen.

5.2. Listado de Análisis (ver apartado 4.1.2.5: Análisis). Listado

de información estadística sobre los análisis relacionados

con el Resumen en cuestión. De cada Análisis se indica su

5.1

5.2

5.3

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

336

signature y los valores del presunto atacante (atributo

iporigmaxratio), de la presunta víctima (atributo

ipdestmaxratio), del puerto origen (atributo

portorigmaxratio), y del puerto destino (atributo

portdestmaxratio), todos ellos acompañados de su

proporción respecto al total en el conjunto de Eventos (ver

apartado 4.1.2.1: Evento), de su Anomalía (ver apartado

4.1.2.4: Anomalía) asociada.

5.3. Tabla de Acusaciones del Resumen. En ella se listan las

Acusaciones (ver apartado 4.1.2.6: Acusación) de las

Anomalías cuyos Análisis conforman el Resumen en

cuestión. Cada casilla de la tabla muestra el número de

signatures de la misma clase que se dan entre los Análisis

que componen el Resumen, en los que la dirección IP

correspondiente a la cabecera de la fila es el atacante y la

correspondiente a la cabecera de la columna es la víctima.

Para acceder a los detalles de cada Acusación en particular

el usuario debe hacer clic sobre su celda, tras lo que se abre

la siguiente ventana:

Fig. 60: Detalles de Acusación en Resumen.

5.3.1

5.3.2

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

337

Los detalles de la Acusación en un Resumen se muestran

enumerados en la interfaz anterior, en la que destacan los

siguientes elementos:

5.3.1. Identificador del detalle. Incluye una referencia a la

clase del Resumen y al par de hosts implicados en la

Acusación en el formato IP atacante -> IP víctima. A

continuación se indica la Prioridad media de las

Signatures (ver apartado 4.1.2.2: Signature)

listadas a continuación.

5.3.2. Los Análisis (ver apartado 4.1.2.5: Análisis) que

componen el Resumen, implicados en la Acusación

se listan organizados por su clase de Signature,

acompañados del par de valores puerto atacante ->

puerto víctima.

6. Botones de control del agente. Permiten llevar a cabo determinadas

acciones sobre la interfaz y el agente Supervisor:

• Botón Limpiar Log: Al pulsarlo, el usuario deja el Log de registro

de Diagnósticos de la interfaz gráfica del agente Supervisor en

blanco. El Log del programa en general es de tamaño ilimitado,

por lo que tras una ejecución continua y prolongada es cómodo

limpiarlo para eliminar del mismo la notificación de Diagnósticos

obsoletos.

• Botón Matar agente: Al pulsarlo, el agente Supervisor ejecuta su

método takedown(), y muere. No obstante la interfaz del mismo

queda abierta y sus botones de control desactivados. También se

puede matar el agente cerrando la ventana de su interfaz gráfica

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

338

pulsando en el aspa de la esquina superior derecha de la ventana.

Al terminar la ejecución de cualquiera de estas maneras, el único

agente que es notificado de su muerte es el agente Reloj del

sistema, quien dejará de enviarle mensajes de sincronización. No

es así para el resto de agentes de la plataforma, que seguirán

enviándole mensajes aunque el destinatario ya no exista.

Las imágenes correspondientes a la interfaz gráfica del agente Supervisor

que se han mostrado en este punto, corresponden a una ejecución real del

sistema IDSAI. En la pantalla principal de la interfaz del agente (figura 56)

podemos ver que los últimos contenidos de la ventana de log se refieren a la

ventana temporal 4, en la que se han recibido 5 inferencias procedentes de 4

tipos diferentes de análisis, según reza el código de colores: attempted-recon,

otros, unknown-class y bad-unknown. La desborrosificación de ese conjunto de

inferencias (entre las que predomina el valor ALTA), da lugar a una criticidad

ALTA, indicada numéricamente y con las letras del estado actual en rojo. Se

enuncia el atacante y víctima principales (192.168.20.103 y 192.168.20.199

respectivamente) y se explica textualmente que el estado "Muchos atacantes y

muchas víctimas. Pareja destacada" es el mismo que en la ventana anterior con

los mismos hosts protagonistas.

Toda esta información se completa con el esquema gráfico que

representa el estado de la red en cuanto a ataques, ya que muestra a grandes

rasgos las acusaciones detectadas en las comunicaciones. Fijándonos en el

ejemplo, podemos comprobar que el atacante principal está participando en

múltiples ataques contra el host víctima principal de tipo attempted-recon, bad-

unknown y otros. Esto hace pensar al administrador de sistemas que el atacante

está en una fase de reconocimiento pero no se puede determinar realmente qué

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

339

está ocurriendo, por lo que habrá que investigar más a fondo. Este vistazo al

gráfico permite tomar medidas reactivas concretas, interviniendo contra el

atacante o protegiendo a la víctima contra los tipos de ataque que se están

produciendo. El gráfico en este caso es un poco confuso, ya que se están dando

otros ataques menos intensos entre otros equipos de la red, posiblemente falsos

positivos, pero que conviene verificar para evitar males mayores.

Si el administrador de red está interesado en lo que realmente está

ocurriendo en la ventana 4 de la ejecución, puede investigarlo en cualquier

momento haciendo clic sobre el registro correspondiente a esta ventana en la

tabla de Diagnósticos, tras lo que se abrirá la ventana representada en la figura

57. Esta ventana muestra la información del Diagnóstico 4 haciendo hincapié en

las acusaciones en que se basa. Para ello, la interfaz facilita una tabla donde

poder ver estos detalles. A la vista del gráfico la situación más agresiva en

cuanto a ataques se da entre los hosts 192.168.20.103 y 192.168.20.199, por lo

que, haciendo clic en la casilla de la tabla correspondiente a esta acusación

(atacantes→, víctimas↓), se entra en los detalles, abriéndose la ventana de la

figura 58.

La ventana de detalles del ejemplo 192.168.20.103 → 192.168.20.199

muestra, clasificadas por tipo, las signatures de los ataques que el primer host

ejecuta sobre el segundo, destacando las alertas de reconocimiento mediante

múltiples métodos (UDP, TCP, ping, XMAS...) además de un ataque XMAS

scan detectado por el preprocesador stream4 que corrobora la situación de

reconocimiento que está sufriendo la víctima. Cada signature va acompañada de

los puertos origen y destino predominantes que se están utilizando en cada

ataque, lo que permite la adecuada adaptación de firewalls de red y de host para

evitar futuras situaciones similares. No todas las alertas destacadas son

peligrosas, en este caso no lo son las de tipo bad-traffic, ya que, si se investiga la

causa por la que se disparan, resulta que se trata de tráfico propio del hardware

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

340

de red y pueden ser ignoradas. Estas alertas han disparado una más de tipo misc-

activity, que también puede ser ignorada, por la misma razón. Estos resultados

indican que tal vez el sensor Snort no esté bien configurado y se necesiten

modificar las reglas de la base de conocimientos que lanzan estos eventos ya que

se trata de tráfico legítimo de red.

El administrador de red puede desde este momento tomar acciones

reactivas precisas, ya que se le ha alertado de la criticidad del sistema, de los

tipos de ataques que se están dando, de los hosts implicados y de los puertos

entre los que se están produciendo las comunicaciones maliciosas. No obstante,

los cálculos que han dado lugar a estos resultados han sido redondeados y

simplificados tantas veces desde el nivel de alertas, que se ha podido perder

información en el proceso. En efecto, si el administrador investiga las causas del

diagnóstico y entra en el Resumen unknown-class correspondiente a esa ventana

temporal haciendo clic en el registro correspondiente de la tabla resúmenes de la

interfaz principal del agente Supervisor, verá la información de la figura 59. En

el log de la ventana se puede ver la información correspondiente a la anomalía

"STEALTH ACTIVITY (XMAS scan) detection" donde se especifica que tanto

el atacante como la víctima son los mismos en todas las alertas detectadas de

este tipo, pero los puertos del ataque no. En efecto, el puerto predominante

origen de ataques (37669) se ha dado en un 50% de las ocasiones, lo que

significa que el atacante está realizando el reconocimiento desde al menos 2

puertos diferentes de su máquina (posiblemente para evitar la detección de la

situación por parte de un IDS). Más llamativo aún es el porcentaje de alertas en

que se ha detectado el puerto destino de ataques predominante. El valor 0%

significa que el puerto considerado como predominante se ha repetido muy

pocas veces, o lo que es lo mismo, que el conjunto de ataques de reconocimiento

se ha realizado hacia múltiples puertos de la víctima y por tanto estamos ante un

escaneo de puertos en toda regla.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

341

Los detalles de esta acusación se pueden ver haciendo clic sobre la casilla

correspondiente de la tabla (atacantes→, víctimas↓), pero como podemos ver en

la figura 60, no aporta mucha más información debido al nivel de abstracción del

agente Supervisor.

En la actual distribución del sistema IDSAI, el agente Supervisor rechaza

los Resúmenes cuyas Anomalías de origen han sido detectadas por Intérpretes

poco fiables, por lo que no aparecerán en la tabla de Resúmenes recibidos y no

podrán ser consultados de esta manera. No obstante estas Anomalías y Análisis

aparecen en los registros de los agentes de menor nivel, por lo que pueden

consultarse allí como si nunca se hubiera construido su Resumen.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

342

8.3.2. INTERFAZ DEL AGENTE ANALISTA

Los agentes Analistas (ver apartado 4.2.10: Agente Analista, y

siguientes) son los encargados de realizar un análisis especializado de las

Anomalías (ver apartado 4.1.2.4: Anomalía) recibidas por parte de los agentes

Intérpretes de su mismo tipo. Almacenan información sobre dichas Anomalías

(estado de la red a nivel de alertas), y sus Análisis estadísticos correspondientes

(ver apartado 4.1.2.5: Análisis) que resultan muy interesantes para inspeccionar

las causas de un Diagnóstico en detalle.

La siguiente imagen representa la interfaz principal de un agente Analista

en un momento de la ejecución:

1

2

3

4

5

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

343

Fig. 61: Interfaz del agente Analista.

La interfaz gráfica del agente Analista consiste en una ventana en la que

destacan los siguientes elementos

1. Nombre unívoco del agente. Fundamental para su identificación en el

agente RMA o para el envío de mensajes ACL.

2. Log del agente. En él se indican los eventos relativos a nuevas

ventanas temporales, envío de Resúmenes, etc.

3. Tabla de últimos Análisis. En ella se listan los Análisis realizados en

las últimas 20 ventanas indicando explícitamente la ventana y la fecha

en la que se hicieron, la firma de la Anomalía correspondiente, y la

prioridad en forma numérica. Los Análisis anteriores se pueden

referenciar en el fichero analisis.txt del directorio log en la carpeta de

proyecto donde se haya instalado el aplicativo. Para acceder a los

detalles de cada Análisis en particular, el usuario debe hacer clic sobre

su registro, tras lo que se abre la siguiente ventana:

Fig. 62: Detalles de Análisis.

3.1 3.2

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

344

Los detalles del Análisis se muestran en la interfaz anterior, en la que

destacan los siguientes elementos:

3.1 Identificador del detalle. Hace referencia a la firma de la

Anomalía correspondiente al Análisis.

3.2 Listado de la información de la estructura Análisis.

4. Tabla de Anomalías recibidas. En ella se listan las Anomalías

recibidas en las últimas 20 ventanas indicando explícitamente la

ventana y la fecha en la que se hicieron, la firma correspondiente, y el

número de Eventos (ver apartado 4.1.2.1: Evento) registrados. Las

Anomalías anteriores se pueden referenciar en el fichero anomalias.txt

del directorio log en la carpeta de proyecto donde se haya instalado el

aplicativo. Para acceder a los detalles de cada Anomalía en particular,

el usuario debe hacer clic sobre su registro, tras lo que se abre la

siguiente ventana:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

345

Fig. 63: Detalles de Anomalía.

Los detalles de la Anomalía se muestran en la interfaz anterior, en la

que destacan los siguientes elementos:

4.1 Identificador del detalle. Hace referencia a la firma de la

Anomalía correspondiente.

4.2 Listado de Eventos. Listado de los Eventos detectados en la

ventana actual, indicándose para cada uno de ellos su

identificador CID, la fecha y hora en que fue registrado, la

4.2

4.1

4.3

4.4

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

346

dirección IP origen con puerto y la dirección destino con

puerto.

4.3 Resumen de Eventos. Tres líneas de texto que indican el

número de Eventos totales anteriormente enumerados, el

tiempo transcurrido entre el primer Evento detectado y el

último en la ventana actual y el número de Ataques (ver

apartado 4.1.2.3: Ataque) en que se agrupan los Eventos.

4.4 Listado de Ataques: Enumeración de los Ataques

detectados, junto con su información característica: número

de Eventos, intervalo eventual, intervalo temporal,

compactación eventual, atacante y víctima principales,

puerto origen y destino predominantes y proporción

respecto al total de estos últimos valores.

5. Botones de control del agente. Permiten llevar a cabo determinadas

acciones sobre la interfaz y el agente Analista:

• Botón Limpiar Log: Al pulsarlo, el usuario deja el Log de registro

de la interfaz gráfica del agente Analista en blanco. El Log del

programa en general es de tamaño ilimitado, por lo que tras una

ejecución continua y prolongada es cómodo limpiarlo para

eliminar del mismo notificaciones obsoletas.

• Botón Matar agente: Al pulsarlo, el agente Analista ejecuta su

método takedown(), y muere. No obstante la interfaz del mismo

queda abierta y sus botones de control desactivados. También se

puede matar el agente cerrando la ventana de su interfaz gráfica

pulsando en el aspa de la esquina superior derecha de la ventana.

Al terminar la ejecución de cualquiera de estas maneras, el único

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

347

agente que es notificado de su muerte es el agente Reloj del

sistema, quien dejará de enviarle mensajes de sincronización. No

es así para el resto de agentes de la plataforma, que seguirán

enviándole mensajes aunque el destinatario ya no exista.

La investigación de anomalías al nivel de agentes Analistas sólo se debe

llevar a cabo cuando el usuario quiere verificar la verdadera naturaleza de los

ataques, ya que en general, no será necesario profundizar tanto para tomar

decisiones reactivas rápidas. En el caso ejemplo de donde se han tomado las

imágenes en este capítulo, el administrador de red se interesa por el escaneo de

puertos detectado por la signature XMAS scan, por lo que acude al agente

Analista especialista en el tipo de ataques unknown-class que envió al agente

Supervisor el Resumen donde se notificaba de este tipo de anomalía.

La interfaz del agente Analista unknown-class (figura 61) corrobora en

su log, que el resumen de la ventana 4 fue enviado al agente Supervisor en su

momento y dispone de un par de tablas cuyo contenido es de gran interés para

comprobar los orígenes de los cálculos que dan lugar al valor de la criticidad del

sistema.

Haciendo clic sobre el registro de la tabla de análisis correspondiente al

Análisis "STEALTH ACTIVITY (XMAS scan)" de la ventana 4, se abren los

detalles de éste Análisis, que junto con otros de su mismo tipo, dieron lugar al

Resumen en el que nos interesamos en el apartado anterior. En la figura 62

podemos ver estos detalles, que nos indican, aparte de la información a nivel de

acusaciones como vimos en los detalles del Resumen, que la prioridad media de

las alertas de este tipo es 1 y la compactación de los ataques 5 (ambos valores

relativamente altos según la escala definida en los controladores borrosos del

anexo 1: Conjuntos borrosos IDSAI). También se puede ver información

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

348

estadística sobre los ataques: 787 alertas detectadas por ataque y una media de

10 segundos cada ataque. El hecho de que las desviaciones respecto a la media

de estos valores sean nulas, hace suponer que sólo se ha detectado un ataque de

esta firma, no obstante con un alto número de alertas disparadas.

La información de los Análisis debe ser lo suficientemente escueta como

para formar los Resúmenes, por lo que conviene que sea complementada con la

información que aporta la estructura Anomalía asociada a cada uno de estos

Análisis. En nuestro caso el administrador del sistema debe consultar los detalles

de la anomalía "STEALTH ACTIVITY (XMAS scan)" haciendo clic sobre la

entrada de la tabla correspondiente de la ventana 4. La figura 63 muestra estos

datos, empezando por la lista de alertas detectadas y terminando por el análisis a

nivel de ataques. La lista de eventos es incómoda de ver pero resulta

indispensable en un análisis en detalle, por ejemplo para comprobar uno a uno

los puertos escaneados. Respecto a los ataques, en este caso se observa que las

alertas de este tipo de escaneo detectadas en la ventana 4 se corresponden con un

único Ataque de una duración de 10 segundos en el que la compactación

eventual es nula, lo que confirma el hecho de que se están detectando muchos

otros ataques simultáneamente como se podía ver en el gráfico de la interfaz del

Supervisor.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

349

8.3.3. INTERFAZ DEL AGENTE INTÉRPRETE

Los agentes Intérpretes (ver apartado 4.2.3: Agente Intérprete, y

siguientes) son los encargados de recoger la información depositada por el

sensor Snort en la base de datos snortdb de forma especializada, generando las

Anomalías (ver apartado 4.1.2.4: Anomalía) que enviarán a su agente Analista

asociado para que éste las procese. Los agentes Intérpretes no almacenan

información de ningún tipo, ya que el nivel de los datos que maneja es el más

bajo: alertas registradas en la base de datos. Esta información estará siempre

disponible para ser consultada de forma manual desde las tablas de la base de

datos aunque de una forma más incómoda para el usuario.

La siguiente imagen representa la interfaz principal de un agente

Intérprete en un momento de la ejecución:

Fig. 64: Interfaz del agente Intérprete.

La interfaz gráfica del agente Intérprete consiste en una ventana en la que

destacan los siguientes elementos:

1

2

3

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

350

1. Nombre unívoco del agente. Fundamental para su identificación en el

agente RMA o para el envío de mensajes ACL.

2. Log del agente. En él se indican los eventos relativos a nuevas

ventanas temporales, envío de Anomalías, etc.

3. Botones de control del agente. Permiten llevar a cabo determinadas

acciones sobre la interfaz y el agente Intérprete:

• Botón Limpiar Log: Al pulsarlo, el usuario deja el Log de registro

de la interfaz gráfica del agente Intérprete en blanco. El Log del

programa en general es de tamaño ilimitado, por lo que tras una

ejecución continua y prolongada es cómodo limpiarlo para

eliminar del mismo notificaciones obsoletas.

• Botón Matar agente: Al pulsarlo, el agente Intérprete ejecuta su

método takedown(), y muere. No obstante la interfaz del mismo

queda abierta y sus botones de control desactivados. También se

puede matar el agente cerrando la ventana de su interfaz gráfica

pulsando en el aspa de la esquina superior derecha de la ventana.

Al terminar la ejecución de cualquiera de estas maneras, el único

agente que es notificado de su muerte es el agente Reloj del

sistema, quien dejará de enviarle mensajes de sincronización. Los

demás agentes de la plataforma no se percatan de su ausencia, ni

tienen por qué hacerlo.

La interfaz del agente Intérprete no sirve para investigar la situación de la

red, ya que sus resultados (las estructuras Anomalía) ya se muestran en la

interfaz del agente Analista que sí que almacena el histórico. Resulta

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

351

tranquilizador echarle un vistazo a su log de vez en cuando para comprobar que

está funcionando correctamente.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

352

8.3.4. INTERFAZ DEL AGENTE RELOJ

El agente Reloj (ver apartado 4.2.1: Agente Reloj) es el encargado de la

sincronización de los agentes del sistema IDSAI. Conoce en todo momento los

identificadores de los agentes vivos en la plataforma y por eso es interesante que

en su interfaz gráfica se pueda ver el listado completo.

La siguiente imagen representa la interfaz principal de el agente Reloj en

un momento de la ejecución:

Fig. 65: Interfaz del agente Reloj.

La interfaz gráfica del agente Reloj consiste en una ventana en la que

destacan los siguientes elementos:

1. Contador de la ventana actual. Indicador numérico que muestra el

valor de la ventana temporal en cada momento. Este valor es

propagado a los diferentes agentes del sistema mediante mensajes

ACL para su sincronización.

2. Tabla de agentes vivos. En ella se listan los identificadores de los

agentes vivos en la plataforma en el momento actual. Tiene mero

1

21

3

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

353

valor informativo, pero sirve para estar seguro de que los diferentes

agentes están corriendo en sus respectivos lugares, de forma

centralizada.

3. Botones de control del agente. Permiten llevar a cabo determinadas

acciones sobre el agente Reloj. Los dos botones conmutan entre sí,

esto es que cuando uno de ellos está habilitado el otro no lo está y

viceversa, ya que ejecutan acciones opuestas:

• Botón Detener: Al pulsarlo, el usuario suspende la ejecución de

los comportamientos activos del agente. De esta manera se

consigue detener la ejecución de los agentes sincronizados, ya que

no les llegará la notificación de una nueva ventana mientras el

Reloj esté en este estado. Se debe tener en cuenta que la ejecución

del sensor Snort no se detiene nunca y por tanto, mientras los

agentes del sistema IDSAI se encuentren a la espera del Reloj,

perderán posibles alertas que se disparen en ese tiempo. Por otra

parte, en este estado, al agente Reloj no le constará la entrada de

nuevos agentes a la plataforma, por lo que se debe tener en cuenta

que cuando se recupere la ejecución del Reloj, estos agentes no

dados de alta, no serán sincronizados. Pese a todo esto, en una

situación de verdadera crisis donde sea verdaderamente necesario

hacer una inspección detallada de las causas de un diagnóstico

crítico, detener los agentes puede resultar interesante con el fin de

facilitar la labor de análisis y toma de decisiones por parte del

humano tras la máquina.

• Botón Arrancar: Al pulsarlo, el usuario activa la ejecución de los

comportamientos suspendidos del agente. De esta manera se

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

354

consigue el rearranque del proceso de sincronización y de espera

del alta de nuevos agentes en la plataforma.

La interfaz del agente Reloj no sirve para investigar la situación de la red.

Simplemente muestra los agentes vivos en el momento actual y resulta útil para

comprobar su estado.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

355

9. PLANIFICACIÓN Y PRESUPUESTO DEL PROYECTO

En el presente capítulo se hace referencia a la planificación del proyecto: las

etapas de su desarrollo y diferentes actividades llevadas a cabo en cada una de las

mismas por los miembros de su organización.

9.1. ORGANIZACIÓN DEL PROYECTO

El proyecto IDSAI es un Proyecto Fin de Carrera de carácter individual, por

lo que el equipo de trabajo está formado exclusivamente por una única persona,

autor del presente documento. De esta manera, la investigación en temas de

seguridad informática, ataques a redes de computadores, Sistemas de Detección de

Intrusos y la arquitectura de agentes inteligentes JADE, ha sido realizada por la

misma persona encargada del diseño, programación y documentación del

aplicativo. El siguiente diagrama muestra la estructura organizativa del proyecto

indicándose las responsabilidades de cada uno de las personas que la integran:

Fig. 66: Organización del proyecto.

COORDINADOR

Miguel Ángel Sanz Bobi

DIRECTORES

Miguel Ángel Sanz Bobi (Director 1)

Mario Castro Ponce (Director 2)

EQUIPO DE TRABAJO

Javier Santos Ferreras

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

356

Donde las tareas y responsabilidades principales de cada uno de los grupos

que forman la organización del proyecto a lo largo de la realización del mismo se

presentan a continuación:

o Coordinador:

� Explicar la Normativa de Proyectos Fin de carrera y facilitar

la información pertinente a lo largo de su desarrollo.

� Concretar la definición del proyecto y los objetivos.

� Controlar y supervisar el trabajo en sesiones de presentación

pública de los avances realizados.

� Evaluar el producto final.

� Calificar al alumno en calidad de profesor de la asignatura

Proyecto Fin de Carrera.

o Directores:

� Proponer un proyecto de calidad y establecer las líneas y los

criterios de verificación de los resultados de forma práctica.

� Facilitar al alumno las orientaciones adecuadas ante los

problemas que vayan surgiendo en el desarrollo del proyecto.

� Supervisar la realización del proyecto, la calidad de sus

contenidos, y que se desarrolla de acuerdo con la Normativa

de Proyectos Fin de carrera.

� Dar su opinión al Coordinador sobre el alumno y el trabajo

realizado.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

357

o Equipo de trabajo:

� Asistir a las sesiones de control del proyecto tanto a las

propuestas por los Directores del proyecto como las

programadas por el Coordinador.

� Determinar el alcance del proyecto y la planificación del

mismo, que deben ser validadas por los Directores del

proyecto.

� Realizar la adquisición de información para la realización del

proyecto. Esto incluye tanto la investigación y formación

autónoma sobre los temas que trata el proyecto, como la

obtención del conocimiento necesario para llevar a cabo los

objetivos del mismo.

� Realizar el diseño del aplicativo. Esto implica la elección,

diseño y documentación de la arquitectura a montar.

� Realizar la programación del software. Esto implica la

codificación del diseño sobre el lenguaje elegido y las pruebas

pertinentes.

� Llevar a cabo la documentación y presentación del producto y

de cada uno de los prototipos a los Directores y Coordinador

del proyecto.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

358

9.2. METODOLOGÍA Y RECURSOS

El alcance del proyecto impone como software base sobre el que desarrollar

el aplicativo, el IDS Snort. Del mismo modo, se propone como solución para la

arquitectura distribuida sobre la que desplegar el sistema, la tecnología de agentes

inteligentes JADE. El desconocimiento sobre estos temas por parte del equipo de

trabajo al comenzar el proyecto impide que su desarrollo se realice mediante una

metodología lineal, ya que a medida que se avanza en él se irán descubriendo

nuevas funcionalidades y surgiendo nuevas ideas a incorporar al resultado. Por

estas razones, el proyecto se realizará mediante una metodología espiral, según la

cual, se publicarán periódicamente versiones del producto IDSAI, que tras ser

valoradas por los Directores del proyecto, pasarán por nuevas etapas de desarrollo

donde se les incorporarán funcionalidades más avanzadas.

En el apartado 9.3: Planificación de tareas, se representará la metodología

del proyecto junto con las actividades a realizar en cada etapa.

El objetivo del proyecto, que impone la implantación del mismo en una red

real, hace escoger como sistema operativo el entorno Windows, tanto para el

desarrollo como para la puesta en marcha del aplicativo, por ser el más utilizado en

la actualidad. El software base del proyecto implica que el desarrollo se realice en

lenguaje Java, ya que el middleware JADE está construido sobre esta tecnología. Al

no presentarse especificaciones hardware concretas, se considerará la implantación

del producto en equipos PC ordinarios (CPU ∼1,5 GHz y Memoria ∼512 MB), por

lo que el desarrollo se llevará a cabo también en máquinas de estas características.

Tal y como se especifica en el alcance del proyecto, tanto el software de desarrollo

como el base sobre el que se implantará el sistema debe ser gratuito y de libre

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

359

distribución, lo que condiciona en gran manera los recursos software de los que

disponer:

o Software base (para Windows):

� IDS Snort (Snort 2.6.1.1)

� SGBD MySQL (MySQL 5.0.27)

� Herramientas gráficas MySQL (MySQL Gui Tools 5.0)

� Middleware JADE (JADE 3.4)

� Máquina Virtual Java (JVM 5.0)

o Software de desarrollo (en máquina con Windows XP):

� Kit de Desarrollo Java (JDK 5.0)

� Entorno de desarrollo Java Eclipse (Eclipse SDK 3.2.1)

� Herramienta de diagramación Dia (Dia 0.95-1)

� Herramienta de documentación MS Word (MS Word 2002)

o Software de pruebas (para Windows)

� Herramienta para auditorias de seguridad Nessus (Nessus 3.0)

� Herramienta para escaneos de puertos Nmap (Nmap 4.20)

Los recursos hardware que se requieren para la realización del proyecto son

los siguientes:

o Hardware de desarrollo y pruebas:

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

360

� PC sobremesa necesario para la distribución del sistema

IDSAI en varias máquinas (AMD Athlon 64 2.5 GHz, 768

MB RAM). Incluye Windows XP.

� PC portátil para desarrollo y pruebas (Pentium Centrino 1.7

GHz, 1 GB RAM). Incluye Windows XP.

� Hub y cableado de red para pruebas.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

361

9.3. PLANIFICACIÓN DE TAREAS

En este apartado se presenta la planificación de las fases en que se divide el

desarrollo del sistema IDSAI. Debido a la metodología en espiral en que se ha

llevado a cabo el proyecto, cada una de las etapas del desarrollo consiste en la

realización y presentación de un prototipo del producto final, que es la acumulación

del resultado de los anteriores, al que se han incorporado las funcionalidades

planificadas para dicha fase.

El proyecto IDSAI dio comienzo en Octubre de 2006 y termina en

Septiembre de 2007. Tras la revisión de la planificación inicial de tareas, en la que

se preveía el final del proyecto para Junio de 2007 y que mostraba una ejecución

lineal de actividades que resultó inviable en las fases de la programación, se opta

por la metodología en espiral y posponer el final del proyecto. El siguiente esquema

muestra las actividades de adquisición de conocimiento planificadas en un principio

(A1, A2, A3, A9 y A10) y las etapas iterativas de realización de prototipos (A4, A5,

A6, A7, A8) cuyos contenidos se fueron planificando al comienzo de cada una

respecto a los avances e ideas surgidas en la anterior:

A1. Estudio de principios de seguridad en redes de computadores.

A2.1. Seguridad perimetral.

A2.2. Ataques a redes de computadores.

A2. Estudio de Sistemas de Detección de Intrusos.

A2.3. Principios de la detección de intrusos

A2.4. Sistemas de Detección de Intrusos: Clasificación,

funcionamiento y estado del arte.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

362

A2.5. Snort. Configuración e implantación. Instalación y

configuración de una instancia de la base de datos MySQL

snortdb. Uso de herramientas de ataque de red para

verificar su funcionamiento en un entorno de pruebas.

A3. Estudio de la arquitectura JADE multiagente.

A3.1. Estudio de la arquitectura de agentes inteligentes JADE.

A3.2. Diseño de aplicación de prueba de comunicación entre

agentes.

A4. Primer prototipo: Sistema local de clasificación de alertas.

A4.1. Primer diseño de agente Intérprete: Construcción de un

agente JADE cuya mera funcionalidad es el acceso

periódico a la base de datos snortdb para obtener alertas de

un determinado tipo. Diseño de funciones de la capa de

persistencia. Introducción del concepto Anomalía, que se

plasma en una estructura de datos que se envía al agente

Analista.

A4.2. Primer diseño de agente Analista: Construcción de un

agente JADE cuya única funcionalidad es la presentación

por consola de los datos que el agente Intérprete le envía

en forma de estructura Anomalía.

A4.3. Primer y definitivo diseño de agente Sensor: Construcción

de un agente JADE cuyas funcionalidades son el arranque

del sensor Snort y el mantenimiento de sus datos

actualizados en la base de datos snortdb. (Esta última

funcionalidad es desechada en fases posteriores del

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

363

desarrollo por cuestiones de rendimiento). Aunque el

código del agente Sensor se pueda retocar en posteriores

fases del desarrollo del proyecto, ésta será su

funcionalidad definitiva.

A4.4. Presentación del prototipo (a Directores).

A5. Segundo prototipo: Sistema distribuido de análisis de alertas.

A5.1. Revisión definitiva del agente Intérprete: Especialización

de agentes Intérpretes por tipo de signature. Diseño del

análisis de anomalías a nivel de ataques e introducción de

los conceptos prioridad y compactación eventual. Envío de

múltiples Anomalías al agente Analista de su misma

especialidad. Diseño de una interfaz gráfica simple para

los agentes Intérpretes. Aunque el código del agente

Intérprete se pueda retocar en posteriores fases del

desarrollo del proyecto, ésta será su funcionalidad

definitiva.

A5.2. Revisión del agente Analista: Especialización de agentes

Analistas por tipo de signature. Introducción del concepto

análisis asociado a cada tipo de Anomalía y su

representación en la estructura de datos Análisis. que se

envía al agente Supervisor. Diseño de una interfaz gráfica

que muestre la información recibida del agente Intérprete

asociado.

A5.3. Primer diseño del agente Supervisor: Construcción de un

agente JADE cuya única funcionalidad es la presentación

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

364

por una interfaz gráfica de los datos que el agente Analista

le envía en forma de estructura Análisis.

A5.4. Presentación del prototipo (a Directores).

A6. Tercer prototipo: Sistema distribuido de diagnóstico de la situación.

A6.1. Primer y definitivo diseño del agente Reloj: Construcción

de un agente JADE cuyas funcionalidades son la recepción

de mensajes de alta y baja en la red por parte de los demás

agentes de la plataforma para tener conocimiento de los

agentes vivos en todo momento y la sincronización de los

mismos marcando el periodo de captura-análisis-

diagnóstico. Diseño de una interfaz gráfica que muestre

los agentes vivos en la plataforma en tiempo real. La

creación de este agente requiere retocar los demás agentes

hasta el momento. Aunque el código del agente Reloj se

pueda retocar en posteriores fases del desarrollo del

proyecto, ésta será su funcionalidad definitiva.

A6.2. Segunda revisión del agente Analista: Especialización del

análisis de la prioridad y la compactación de las anomalías

por tipo de signature. Introducción del concepto acusación

como forma de reducir la cantidad de información de bajo

nivel a enviar al Supervisor. Introducción del concepto

resumen de análisis, que se plasma en la estructura de

datos Resumen que se envía al agente Supervisor.

A6.3. Revisión del agente Supervisor: Introducción del concepto

diagnóstico de la situación que consiste en el tratamiento

estadístico de la información de los Resúmenes recibidos

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

365

para integrar los conceptos de prioridad y compactación en

uno sólo: criticidad. Mejora de la interfaz de forma que

además de la información básica de la estructura

Diagnóstico, muestre en un diagrama gráfico las

acusaciones recibidas en todos los Resúmenes en tiempo

real.

A6.4. Presentación del prototipo (a Directores).

A7. Cuarto y definitivo prototipo: Sistema distribuido inteligente de

análisis del estado de la situación.

A7.1. Revisión definitiva del agente Analista: Introducción de

procedimientos de borrosificación para enviar los valores

de prioridad y compactación en el Resumen al agente

Supervisor. Mejora de la interfaz gráfica para que muestre,

de forma tabulada y consultable, información histórica

sobre la información con la que trabaja (Anomalías y

Análisis). Aunque el código del agente Analista se pueda

retocar en posteriores fases del desarrollo del proyecto,

ésta será su funcionalidad definitiva.

A7.2. Revisión definitiva del agente Supervisor: Introducción de

procedimientos de desborrosificación para convertir los

valores de prioridad y compactación recibidos en cada

Resumen en un único valor de criticidad del sistema.

Introducción de base de reglas para definir el estado del

sistema. Mejora de la interfaz gráfica para mostrar la

información histórica completa de Diagnósticos y

Resúmenes recibidos, de forma tabulada y consultable,

con ventanas de detalle avanzadas. Aunque el código del

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

366

agente Supervisor se pueda retocar en posteriores fases del

desarrollo del proyecto, ésta será su funcionalidad

definitiva.

A7.3. Presentación del prototipo (a Directores).

A8. Implantación del sistema distribuido IDSAI: Etapa reservada para el

retoque de las funcionalidades del sistema de cara a la presentación

del sistema completo a los directores del proyecto. Presentación de

la versión definitiva del sistema IDSAI (a Directores).

A9. Documentación del proyecto.

A10. Presentación final del proyecto (a Coordinador).

La ubicación temporal de las actividades enumeradas anteriormente, no es

estricta en el periodo de desarrollo del proyecto, por lo que la realización de éstas se

planifica aproximadamente según el siguiente diagrama.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

367

Fig. 67: Planificación de tareas.

A1

A2

A6

A8

A9

A3

A7

A5

Exámenes

Exámenes

OCT NOV DIC ENE FEB MAR ABR MAY JUN JUL AGO

SE

2006 2007

A4

A10

SEP

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

368

9.4. PRESUPUESTO

Debido al punto del apartado 2: Alcance del proyecto, que determina que

tanto el software base del proyecto como las herramientas de desarrollo utilizadas

sean gratuitas y de libre distribución, el coste del proyecto IDSAI es nulo en ese

aspecto. No obstante en las fases de desarrollo e implantación de entornos de

pruebas del sistema IDSAI hay que tener en cuenta los siguientes gastos:

Gastos fijos: Hardware de desarrollo y pruebas.

o PC sobremesa necesario para la distribución del sistema IDSAI en

varias máquinas (AMD Athlon 64 2.5 GHz, 768 MB RAM). Incluye

Windows XP: 1000 €.

o PC portátil para desarrollo y pruebas (Pentium Centrino 1.7 GHz, 1

GB RAM): 1000 €.

o Hub y cableado de red para pruebas: 50 €.

Gastos variables: Mano de obra y otros costes (incluidos en cuota laboral)

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

369

o Estimación de esfuerzo (tiempo en horas).

Tabla 2: Estimación de esfuerzo.

o Estimación del coste (en euros).

Tabla 3: Estimación del coste.

Coste total del desarrollo del proyecto:

Costes fijos: 2050 €

Costes variables: 4900 €

TOTAL PROYECTO: 6950 €

Tareas Personal

A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 TOTAL HORAS

COORDINADOR 0 0 0 1 0 1 0 0 0 2 4

DIRECTOR 1 0 0 2 2 2 4 4 4 2 1 21

DIRECTOR 2 2 2 0 2 2 4 4 4 2 1 23

EQUIPO TRABAJO 20 20 20 45 85 95 65 105 60 5 520

TOTAL ETAPA 22 22 22 50 89 104 73 113 64 9 568 h

Tareas Personal

€/ hora

A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 TOTAL €

COORDINADOR 20 0 0 0 20 0 20 0 0 0 40 80

DIRECTOR 1 15 0 0 30 30 30 60 60 60 30 15 315

DIRECTOR 2 15 30 30 0 30 30 60 60 60 30 15 345

EQUIPO TRABAJO 8 160 160 160 360 680 760 520 840 480 40 4160

TOTAL ETAPA 190 190 190 400 740 900 640 960 540 110 4900 €

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

370

10. CONCLUSIONES

Al término del proyecto, en Septiembre de 2007, se han llegado a las siguientes

conclusiones referentes a las diferentes cuestiones que han ido surgiendo a lo largo del

mismo.

Respecto a la definición del proyecto, los objetivos del mismo estuvieron claros

desde el principio, pero el modo de llevarlos a cabo y el alcance no quedaron

determinados hasta bien entrado el proceso de desarrollo. Por otra parte, el diseño

inicial de la aplicación no cumplía los requisitos de calidad exigidos por los Directores

del proyecto, por lo que tuvo que ser rehecho a medida que se iba codificando. Esto

significó tener que desechar la planificación lineal realizada inicialmente para dar lugar

a la planificación en espiral basada en prototipos de la que se ha hablado en apartados

anteriores.

Como ya se ha explicado, la planificación del proyecto fue alterada durante su

desarrollo debido al cambio de metodología. Por otra parte las tareas de investigación y

adquisición de conocimientos A1, A2 y A3 se alargaron en el tiempo, ya que durante

todo el proyecto hubo que apoyarse en la bibliografía para seguir ampliando las

funcionalidades del proyecto y adquiriendo nuevos conocimientos para implantar las

ideas que iban surgiendo. El cambio a la metodología en espiral fue realizándose

involuntariamente cuando a partir de la presentación del primer prototipo a los

directores del Proyecto (actividad A4), se fueron haciendo más frecuentes las reuniones

de supervisión en las que iban surgiendo y se iban proponiendo las nuevas

funcionalidades que debían ir integrando los sucesivos entregables. El desarrollo en

espiral ha dado al final un producto satisfactorio y ha permitido la introducción de

particularidades del diseño en los momentos apropiados que no estaban previstas en la

planificación inicial. Como una lección aprendida a aplicar en futuros proyectos queda

el hecho de que la metodología en espiral es verdaderamente eficaz cuando no se

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

371

dispone de un diseño inicial estable, aunque se deben controlar mejor las fechas de

entrega de los prototipos.

Respecto al tema de la documentación, aunque los diagramas de diseño y

arquitectura se iban haciendo de forma concurrente con el desarrollo, la realización de la

memoria final ha llevado más horas de las previstas, debido a la propia metodología,

que obligaba a rehacer constantemente las especificaciones detalladas de los

componentes del prototipo anterior, ya que se alteraban al trabajar sobre ellos.

El resultado del proyecto es satisfactorio y cumple con los objetivos, aunque

muchas de las ideas que fueron surgiendo durante el desarrollo del mismo no llegaron a

implantarse por razones de tiempo. Algunas de estas ideas y cuestiones, quedarán

pendientes para futuras versiones del producto:

- El arranque de los agentes de la plataforma, que se hace en forma de script

de línea de comandos, podría realizarse mediante una interfaz gráfica más

cómoda. Puesto que tanto el entorno de pruebas como la red en la que se

implantó el sistema eran redes pequeñas, el sistema de manipulación de

scripts no era muy engorroso, pero en una gran distribución del producto,

ésta no es la forma más adecuada de hacerlo. Se sugiere una interfaz que

permita ubicar las máquinas que alojan los agentes en el espacio y que

permita gestionarlos de forma remota.

- Por la misma razón, en una gran distribución de la aplicación resultaría

interesante que los agentes Intérpretes propagaran su posición en la red, de

forma que esto permitiera hacer diagnósticos más especializados y se tuviera

en cuenta para la toma de decisiones. Se sugiere que la criticidad del sistema

definida por el agente Supervisor, dependa también de la importancia de los

segmentos de red en que se detecten los ataques y que las acusaciones se

representen, además de con las direcciones IP origen y destino, con la

ubicación física de las máquinas atacante y víctima.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

372

- La fiabilidad de los agentes Intérpretes también tiene que tenerse en cuenta

para posteriores versiones del aplicativo. Actualmente, si el agente

Supervisor recibe varios Resúmenes de Análisis del mismo tipo de firma,

desecha aquellos cuyas anomalías han sido detectadas por Intérpretes de

menor fiabilidad. El trabajo de esos Intérpretes rechazados no debería ser

ignorado de esa manera, ya que podría aportar mayor información al

conjunto, defendiendo o refutando un diagnóstico que actualmente se está

basando en una única fuente. Se sugiere que el agente Supervisor aplique un

sistema de votación ponderada por fiabilidad entre los Resúmenes del mismo

tipo, para quedarse con las Anomalías más significativas de cara a que sean

las que se tengan en cuenta para el Diagnóstico del estado de la red.

- Una arquitectura distribuida es potencialmente insegura, ya que las

comunicaciones entre agentes pueden ser intervenidas, lo que permitiría a un

hacker el acceso a importante información de negocio. El IDS distribuido

IDSAI sería fácilmente inutilizable si se impidiera la llegada de mensajes de

alertas detectadas a la capa de presentación o si se manipulasen para ocultar

un ataque. IDSAI utiliza comunicaciones sin cifrar y no incluye acuses de

recibo en las comunicaciones entre agentes, por lo que es débil frente a estos

ataques. Afortunadamente, JADE proporciona en su API funcionalidades de

seguridad que solucionarían estos problemas, pero que no se han aplicado

por cuestión de tiempo.

- Las bases heurísticas en las que se fundamenta el análisis de la prioridad y

compactación eventual de las anomalías que se realiza en los agentes

Analistas son estáticas. Si se desearan modificar habría que alterar el código

fuente y al crear nuevos agentes Analistas de otras especialidades habría que

retocar los parámetros en tiempo de programación. Lo mismo ocurre con los

controladores borrosos que se han diseñado en la clase de cálculo borroso

Control Borroso (ver apartado 4.6.2: Control Borroso), que están

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

373

programados de forma estática. También es fija la base de reglas que infiere

el estado de la red por parte del agente Supervisor. Se sugiere la carga de las

bases de conocimiento heurístico en el arranque de los agentes a través de

ficheros externos que permitan su edición sin tocar el código, aunque haya

que programar complejas funciones de parseo de esta información para

integrarla a la lógica de la aplicación.

- La funcionalidad de mantenimiento de la información actualizada en la base

de datos snortdb, que inicialmente integraba el agente Sensor, no ha sido

implementada en la versión definitiva del aplicativo. Esto se debe a que en la

práctica, la información generada por el sensor Snort no es tan voluminosa

como se esperaba en un principio y la limpieza de la base de datos snortdb se

presenta como un proceso no crítico, por lo que puede dejarse en manos del

administrador para que lo realice de forma manual. El limpiado de las bases

de datos snortdb es un proceso que interfiere gravemente en el rendimiento

de los agentes Intérprete que se alimentan de cada instancia por lo que el

borrado de información obsoleta de los sensores, puede suponer la parada del

sistema IDSAI, lo cual es indeseable. Se intentó sin éxito la configuración

del esquema snortdb para que admitiera borrados en cascada, pero no fue

posible que sobre este nuevo esquema Snort insertara información en la base

de datos sin errores. Se sugiere la detención periódica (a nivel de días) del

Reloj del sistema IDSAI para disparar el comportamiento de limpieza de las

bases de datos de los sensores y evitar así el crecimiento incontrolado de

información. También se sugiere revisar y limpiar los ficheros de log del

sistema para prevenir una situación de falta de espacio en disco si se llenan

con demasiada información.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

374

11. BIBLIOGRAFÍA

[KOZI03] Jack Koziol, "Intrusion Detection with Snort", Sams Publishing

2003, 1ª Ed.

[NORT01] Stephen Northcutt, Judy Novak, "Network Intrusion Detection",

Sams Publishing 2001, 2ª Ed.

[DIAZ05] Luis Díaz Vizcaíno, "Sistemas de Detección de Intrusos",

Departamento de Ingeniería Telemática, Universidad Carlos III de

Madrid, 2005.

[ARAN06] Gonzalo A. Aranda Corral, "Construcción de un sistema

multiagente mediante JADE", Curso de Agentes Inteligentes,

Universidad de Sevilla, 2006.

[CAIR03] Giovanni Caire, "JADE Tutorial: Jade Programming for

Beginners", TILAB, 2003.

[BELL05] Fabio Bellifemine, Giovanni Caire, Tiziana Trucco, Giovanni

Rimassa, "JADE Programmer's Guide", TILAB, 2005.

[BELL06] Fabio Bellifemine, Giovanni Caire, Tiziana Trucco, Giovanni

Rimassa, Roland Mungenast, "JADE Administrator's Guide",

TILAB, 2006.

[GARA04] Juan Fco. Garamendi Bragado, "Agentes Inteligentes: JADE",

Programa de Doctorado: Informática y Modelización Matemática,

Universidad Rey Juan Carlos, 2004.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

375

[BELL03] F. Bellifemine, G. Caire, A. Poggi, G. Rimassa, "JADE A White

Paper", TILAB, 2003.

JADE Web Site, http://jade.tilab.com/

Snort Web Site, http://www.snort.org/

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

376

12. SIGLAS Y ACRÓNIMOS

ACL Agent Communication Language.

ARP Address Resolution Protocol

CPU Central Processing Unit.

DoS Denial of Service.

FIPA Foundation for Intelligent Physical Agents.

FTP File Transfer Protocol.

HIDS Host Intrusion Detection System.

HTML HyperText Markup Language.

HTTP Hyper Text Transfer Protocol.

IDS Intrusion Detection System. (Sistema de Detección de Intrusos)

IDSAI IDS, Sistema de Detección de Intrusos, basado en Agentes

Inteligentes.

JDK Java Development Kit.

JVM Java Virtual Machine.

ICMP Internet Control Message Protocol.

IP Internet Protocol.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

377

JADE Java Agents Development Environment (Entorno de Desarrollo de

Agentes Java).

MAC Media Access Control.

MS Microsoft.

NNIDS Network Node Intrusion Detection System.

NIDS Network Intrusion Detection System.

OSI Open System Interconnection

P2P Peer to Peer.

RPC Remote Procedure Call.

SDK Standard Development Kit.

SGBD Sistema Gestor de Bases de Datos.

SNMP Simple Network Management Protocol.

SPADE Statistical Packet Anomaly Detection Engine.

SQL Structured Query Language.

SSH Secure Socket Layer.

TCP Transmission Control Protocol.

TILAB Telecom Italian LABoratories.

UDP User Datagram Protocol.

URI Uniform Resource Identifier.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

378

URL Uniform Resource Locator.

XSS Cross-Site Scripting.

XML eXtensible Markup Language.

SISTEMA DISTRIBUIDO DE DETECCIÓN DE INTRUSOS BASADO EN AGENTES INTELIGENTES (IDSAI)

Javier Santos Ferreras

379

13. ANEXOS

ANEXO 1: Conjuntos borrosos IDSAI

ANEXO 2: Diagrama de clases

ANEXO 3: Diagrama de la arquitectura

ANEXO 4: Diagrama de secuencia

ANEXO 5: Esquema snortdb

ANEXO 6: Signatures IDSAI (Snort)