jueves, 2 de diciembre de 2010

Ontología de seguridad para resolver vulnerabilidades

Buenas a todos, el otro día @ariel me comentaba en un post que publiqué el año pasado que estaba interesado en saber más sobre un proyecto que desarrollé durante mi postgrado en Tecnologías de la Información, en el que mediante una Ontología y una base de datos del conocimiento, podía ayudar a resolver un gran número de problemas de seguridad.

Pues bien, con el siguiente post pretendo explicaros como funciona mi idea y como siempre digo, si hay algún interesado podemos tratar de evolucionarla.

Para empezar os contaré rápidamente, para quienes no estén familiarizados con el término, qué es una Ontología y para que puede servir. Una ontología es una forma de representar el conocimiento de un determinado dominio con la finalidad de facilitar la comunicación y el intercambio de información entre diferentes sistemas y entidades. Es aplicado sobretodo en Inteligencia Artificial.

Si estáis interesados en la rama de Inteligencia Artificial y Ontologías os recomiendo el paper que presenté junto con unos compañeros el pasado mes de Septiembre en el congreso HetRec con el título Ontology-based web service to recommend spare time activities.

¿Y que tiene que ver la inteligencia artificial y una ontología con la seguridad?. Bien, como os he contado la finalidad primordial de una ontología es representar el conocimiento, para ello ha sido utilizada en numerosos campos de tipos tan dispares como la medicina, la aeronática, la robótica, el turismo y un largo etcétera con la idea de facilitar el acceso a la información en sus respectivos campos. Por ejemplo, hace más de 20 años que se está desarrollando una ontología de medicina que almacena información sobre distintas patologías y problemas que padecen los seres humanos y sus posibles curas, de manera que, en vez de realizar una compleja búsqueda en una enciclopedia médica para buscar información sobre medicamentos que curen la enfermedad que creemos que tiene un paciente por la evaluación que nuestro conocimiento de médico experto determine, podremos acceder a ella desde esta ontología preguntándole simplemente que medicamento curaría
a esta persona si presenta estos problemas de salud, algo más fácil de evaluar por una persona sin muchos conocimientos en medicina (¿veis por donde voy verdad?).

Resumiendo, la idea de la ontología es darle de input, una serie de problemas de salud que nosotros vemos que una persona tiene, y la ontología debería de ser capaz con su base de datos de conocimiento darnos una cura, como si fuese un médico experto. Aclararos que la ontología solo representa el conocimiento y es necesario otro sistema que haga la búsqueda de la información dentro de ese conocimiento, como la herramienta Protégé que más adelante en el post os explico.

Esta idea es la que he querido aplicar a mi proyecto, ya que los sistemas de información son como los seres humanos, tienen una serie de problemas de salud (vulnerabilidades) que pueden ser curadas con la medicación adecuada (parches, actualizaciones, filtros en el código fuente, antivirus, firewall, etc.)

Para una primera aproximación de lo que sería la ontología perfecta he decidido incluir conocimiento sobre vulnerabilidades web, fugas de información, malware y exploits.

La implementación de la ontología la he llevado a cabo con la herramienta Protégé, desarrollada por el Stanford Medical Informatics de la Universidad de Stanford. Ésta herramienta permite construir ontologías fácilmente, crear clases y jerarquías, declarar propiedades para las clases, instancias e introducir valores, todo al estilo .Net, sencillo.

Vamos a ver como funciona, imaginaros que somos auditores y hemos detectado que tenemos una vulnerabilidad web Remote File Inclusion (1er conocimiento), por otro lado sabemos que el error proviene de un servidor Apache que ejecuta código PHP (2º conocimiento), ya tenemos todo lo necesario, ahora iríamos a Protégé e introduciríamos como input nuestros dos conocimientos. En este caso, protégé recorrerá su base de datos de conocimiento (que previamente un experto habrá alimentado) y nos devolverá la solución: Comprobar que el fichero solicitado en la URL tiene la extensión .PHP y que se encuentra dentro del directorio donde está alojado el sitio web y sino se deberá rechazar la petición web.

Otro ejemplo, imaginaros que hemos detectado que en el fichero host de un Windows hay una redirección DNS para llevarnos a una web determinada, quizás para un intento de Phising. Si le proporcionamos estos datos, Protégé nos diría que podría tratarse de un malware tipo Pharming y nos recomendaría utilizar la herramienta AntiPharming.

A continuación os dejo una imagen con otro ejemplo:


Toda esta inteligencia es posible, si previamente un grupo de expertos ha alimentado la base de datos de conocimiento de la ontología con información adecuada, actualizada y sobretodo bien escogida. Como veis, conseguir una base de datos así es un proceso largo y complejo pero que al igual que se está realizando en medicina podría aplicarse a nuestro campo, ¿no creéis?

Saludos!

6 comentarios:

Patricio dijo...

Hola, Soy un seguidor de tu blog y siempre leo tus articulos ya que leo diariamente mis RSS.

Realmente me interesa mucho este proyecto. Yo trabajo en seguirdad informatica y me gustaria ser parte de el y poder colaborar en lo que sea y pueda. Si en algun momento necesitas ayuda me encantaria que cuentes conmigo.

twitter.com/pcastagnaro

Juan Antonio Calles dijo...

Gracias @Patricio. Ahora mismo el proyecto lo tengo aparcado, porque no doy mas de mí, además del trabajo y alguna certificación, etc. que me ando sacando, estoy embarcado en el desarrollo de Anubis 2.0 para poder liberarlo a la comunidad definitivamente en la primavera de 2011 y otro proyecto sobre malware que os iré contando a finales de este mes en el blog. Pero no descarto que en cuanto acabe con ellos resucite este proyecto, de momento te he mandado una petición de seguimiento al Twitter ;)

Permanecemos en contacto, gracias saludos!

kike dijo...

Excelente trabajo, actualmente estoy planeando desarrollar una ontologia de la norma ISO/IEC 27001 (seguridad de la información) como base de mi trabajo de grado, si tienes información que me puedas pasar que me sirvan de guía para orientar mi proyecto te lo agradecería demasiado.
Mi correo es kikejeus@gmail.com

Juan Antonio Calles dijo...

Hola Kike, me alegra mucho que hayas decidido esta línea para tu trabajo. La idea es realmente buena, ya que hay abundante documentación sobre como se debería aplicar la norma 27001, que te servirá para realimentar la BBDD, y la ontología facilitaría enormemente la implementación de la misma.

Te recomiendo esta lectura, muy completa y con bastantes ejemplos:

http://www.google.es/url?sa=t&source=web&cd=8&ved=0CFsQFjAH&url=http%3A%2F%2Fwww.aenor.es%2Faenor%2Fdescargadocumento.asp%3Fnomfich%3D%2FDocumentos%2FComercial%2FArchivos%2FPUB_DOC_Tabla_AEN_5292_2.pdf%26cd_publicacion%3D5292%26cd_publicacion_doc%3D2&rct=j&q=iso%2027002%20libro%20implantar%20iso%2027001%20guia%20practica&ei=YWxPTv_uLcL64QTDtM3LBw&usg=AFQjCNHcxChcgE9aQZY-4VF_JPIj8vvPhA&sig2=WADg0hBqtpZoHTco3cmj5w

kike dijo...

Saludos, gracias por el link, lastimosamente no es el libro completo sino la "vista previa" del mismo. Te pido que si tienes información mas concreta (ejemplos de ontologias de seguridad de información o documentación "para dummies" de Methontology), me la puedas pasar al correo electrónico y te lo agradecería sinceramente.

Juan Antonio Calles dijo...

Tienes un email Kike

saludos