Las amenazas cyber-terroristas cada día toman más importancia; por ello, muchos países desarrollan su defensa en dos frentes diferentes: el frente clásico, de fronteras, aviones y soldados; y el ciberespacio.
En base a esta premisa, hace un año desarrollamos Hackobot, un proyecto en colaboración con Telefónica y el equipo de Sinfonier para tratar de detectar actividad cyberterrorista y ciberactivista en Internet. Hackobot se apoya en tres pilares para procesar datos de diferentes fuentes (páginas de paste como Pastebin, redes sociales como Facebook y Twitter, y el chat más conocido de Internet, IRC), mantener conversaciones sencillas con sospechosos, interactuar en las redes sociales y generar bots dinámicamente. Estos pilares son el (1) Sistema de monitorización, procesamiento y filtrado de datos, (2) Sistema de interacción automática y finalmente, el (3) Sistema de generación automática de cuentas.
En este proyecto combinamos tecnologías de procesamiento masivo de datos, Procesamiento de Lenguaje Natural (NLP en sus siglas inglesas), Aprendizaje Automático y mucho web scrapping. En este post vamos a describir las herramientas principales que han dado vida a Hackobot.
Para que Hackobot procesara datos casi en tiempo real, de forma escalable y tolerante a fallos utilizamos Apache Storm, un framework para procesar streams de datos de forma distribuida y tolerante a fallos. Storm es parte del paradigma stream processing, que trata de procesar “unidades de datos” según se van generando; de esta forma a medida que Hackobot va capturando nuevos tweets, entradas en Pastebin etc, podemos procesarlos de forma individual, filtrando con listas blancas y negras, expresiones regulares y modelos de aprendizaje automático posibles actividades sospechosas.
Estos filtros de aprendizaje automático se crearon con la herramienta WEKA. Con esta herramienta podemos generar modelos que detectan actividades sospechosas e introducirlos en nuestro sistema de monitorización, de esta forma, conseguimos descartar la información irrelevante.
El procesado de datos por sí solo no es suficiente, y aquí es donde entra el paradigma del NLP. Por un lado, gracias al reconocimiento de entidades nombradas podemos hacer que una máquina detecte que el string ‘Irene’ se refiere a una persona y ‘Universidad de Deusto’ a un lugar. Con el framework NLTK conseguimos crear modelos para detectar nuevas entidades en el texto procesado, de esta forma Hackobot es capaz de detectar nuevos sospechosos y centrar la monitorización en ellos. Por otro lado, generamos un sistema conversacional basado en el antiguo ELIZA, que trataba de camuflar a nuestros bots dándoles aires conversacionales humanos, así como tratar de sonsacar información a los sospechosos.