Investigar cibercrimen en Android con Sinfonier & Path 5
En el último Security Innovation Day 2014 presentamos desde Eleven Paths nuestro nuevo Path 5, una plataforma para investigar incidentes de seguridad dentro del mundo de las apps para terminales móviles. En esta primera iteración la integración se hizo con las apps de sistemas operativos Android y gracias a esta plataforma ya son varios los incidentes de seguridad que hemos podido localizar como ShuaBang Botnet o un par de casos en colaboración conjunta con Europol que están ahora en manos de la justicia.
Figura 1: Investigaciones de Europol con Path 5
Sinfonier Project es actualmente un sistema de programación visual que permite manipular fuentes de datos sobre una plataforma de procesamiento distribuido Apache Storm para generar conocimiento. De manera muy sencilla se puede hacer un flujo de datos que va desde distintas fuentes hasta unos resultados de salida usando tres sencillos elementos, llamados en este proyecto SPOUT, BOLT y DRAIN. Para entender mejor el proyecto, puedes ver la presentación que nuestros compañeros Fran y Carlos hicieron en la última RootedCON y tienes este libro para usar Sinfonier en la generación de ciberinteligencia.
Figura 3: Presentación de Sinfonier en RootedCON 2014
El objeto SPOUT es un conector contra una fuente de datos que puede ser un RSS, una conexión con un API de algún servicio como Twitter que devuelva datos en JSON o una conexión a una página HTML que ofrezca datos en brutos. Estas fuentes generan materia prima que los investigadores de seguridad generalmente desean cruzar con servicios externos, y lo que es más importante, de manera continuada para sacar inteligencia.
Para procesar los datos se utilizan los componentes BOLT que reciben unos datos desde algún componente SPOUT otro desde otro componente BOLT que haya modificado el flujo de la información para hacerla más útil en la investigación.
Por último, los objetos terminadores, o lo que es lo mismo, los que depositan los datos son los componentes DRAIN. Uno de estos elementos DRAIN podría ser un componente que escribiera la salida en una cuenta de Twitter, o que depositara los datos en un MongoDB o que utilizando algún servicio de Dashboards en la red mostrara una representación gráfica en un panel de control para que el equipo de seguridad pueda ver que está pasando constantemente.
Path 5 es un sistema que constantemente está recabando información de nuevas apps en el mundo Android, y permite generar filtros para los analistas que, en formato RSS, catalogan las apps según cumplan diferentes características de seguridad. Por ejemplo, un filtro podría generar un canal RSS para todas las apps que cumplan una determinada combinación de permisos dentro de Android, o para las apps que han sido eliminadas de Google Play, o para las que se han creado en China y tienen el nombre de una determinada empresa, o para las que han sido creadas por un desarrollador en algún instante de tiempo, que acceden a los SMS y tienen una URL en el código de un deteminado dominio.
Es el analista el que define qué apps son las que le interesa investigar manualmente, y cuales les interesa que le lleguen filtradas en un RSS. Para la demo que preparamos en el evento de ayer elegimos algo tan sencillo como un filtro RSS que fuera mostrando las apps que van siendo eliminadas de Google Play.
Para poder procesar y cruzar la informa que genera Path 5 y genera más inteligencia podemos usar una Topología en Sinfonier. Esta topología no es nada más que una representación gráfica de cómo la información debe ser procesada por medio de componentes SPOUT, BOLT y DRAIN para tener al final un post-procesamiento y un panel de control que ofrezca el pulso exacto de los datos de la investigación que estamos realizando.
Este RSS generado en Path 5, para nuestra demo, se mete dentro de Sinfonier por medio de un componente SPOUT que va a procesar el RSS cada cierto espacio de tiempo (120 segundos en este ejemplo). De ese RSS se va a sacar del campo link el packagename de la app que ha sido eliminada, pero que aún así está en nuestra plataforma Path 5, donde hacemos archivado masivo de todas las apps que hemos ido descubriendo y localizando desde que la echamos a andar hace ya más de seis meses.
Para sacar información por pantalla en un dashboard se ha creado uno en Ducksboard, un servicio online que permite crear componentes visuales de muchos tipos para representar la información, y a los cuales se accede con WidgetID y una API KEY desde cualquier lugar de Internet. Así, el primer objeto DRAIN que sale después del BOLT que procesa el link del RSS se envía a un contador que va contando las apps que se vayan eliminando de Google Play.
Figura 7: Parte de la topología para sacar el contador de apps tiradas |
El mismo packagename se usa para consultar la base de datos de Path 5 por medio de una API privada que permite, dado un packagename - obtener un JSON con toda la información relativa a esa app que tenemos en nuestra plataforma, donde entre otras cosas estarán los datos del developer. Estos datos se utilizarán para generar un Time-line en nuestro particular DashBoard mostrando los datos obtenidos, para ello, se utiliza un objeto DRAIN. También se puede ver un DRAIN de debug para sacar datos a consola y depurar topologías.
La última parte del ejemplo es sencilla, desde los datos de la app recibidos por el BOLT que se conecta a PATH 5 se accede a las URLs que aparecen en el código, se parsean para sacar de ellas el HOSTNAME y se consulta a RIPE para sacar la ubicación GPS en la que se supone que está esa dirección para pintarla en el dashboard en un mapa, tal y como se puede ver a continuación.
Una vez terminada la topología, se da al botón de RUN y todo este trabajo se estará ejecutando sobre Apache Storm en los servidores de Sinfonier, que se dedicará a buscar las fuentes de datos de los objetos SPOUT, procesarlas según la topología creada con los objetos BOLT y obtener la información limpia y post-procesada en las fuentes de salida marcadas por los objetos DRAIN. Puedes ver el dashboard de este ejemplo en esta URL: Dashboard Path 5 + Sinfonier. Verás que está vivo corriendo sobre Sinfonier.
Sin embargo, además de este procesamiento continuo de procesado de información, lo que permite el uso de Sinfonier es la reutilización de componentes para crear nuevas topologías usando los mismos elementos y el reutilizar completamente las topologías cambiando las fuentes de datos. A día de hoy Sinfonier Project es un servicio que funciona gratis para la versión community y donde cualquier desarrollador puede, siguiendo el paradigma de desarrollo de componentes SPOUT, BOLT y DRAIN crear sus propias funcionalidades o reutilizar en sus topologías los componentes ya existentes en el sistema para crear tu propio procesado de datos.
Saludos Malignos!
2 comentarios:
Simplemente bello.
He visto este firewall http://www.mercadoit.com/blog/productos-hardware-it/cisco-revela-el-primer-firewall-de-proxima-generacion-frente-amenazas/
qué opináis sobre él? ayudará al cibercrimen o me pasarácomo a Sony?
Publicar un comentario