En el presente Proyecto de Fin de Grado se automatiza la adquisición de datos que se encuentran en fuentes abiertas para la posterior generación de inteligencia (OSINT), almacenando dichos datos en Elasticsearch. Cabe mencionar que se ha realizado la planificación del proyecto siguiendo el PMBOK.
Se ha utilizado el framework Recon-ng, que ya dispone de diversos módulos para adquirir datos de fuentes abiertas, y se ha realizado un desarrollo de nuevos módulos en Python de acuerdo con las necesidades de nuestra empresa. De esta manera, con los módulos desarrollados se adquieren direcciones de correo, documentos, noticias, posts de foros, pastes, servidores de correo en listas negras y dominios similares a partir de unos datos de entrada, tales como dominios y nombres de marca.
Dado que este framework utiliza una base datos SQL (SQLite), se ha realizado una reingeniería para migrarla a NoSQL (Elasticsearch). Así, se ha integrado Elasticsearch con Recon-ng para almacenar los datos obtenidos con los módulos, con la consiguiente adaptación de los componentes del framework que interaccionan con la base de datos.
Por cada workspace de Recon-ng se crea un índice en Elasticsearch, donde se indexan los documentos con los datos recopilados, organizándose dichos documentos según el tipo de datos que contienen. Además, puesto que Elasticsearch no tiene un control de la duplicidad de los documentos que se indexan al utilizar por defecto un _id autogenerado, se ha implementado un método para evitar la redundancia de datos.
Asimismo, los datos recopilados con los módulos desarrollados e indexados en Elasticsearch se visualizan con Kibana. También se ha desarrollado un módulo de reportes para exportar los datos en Excel con el formato de los informes corporativos.
The aim of this project is to automate the acquisition of data from publicly available sources for intelligence gathering (OSINT), storing the data in Elasticsearch. It is worth mentioning that a project planning has been done in accordance with the PMBOK.
The Recon-ng framework already has several modules to collect data from publicly available sources, and new modules has been developed in Python based on our company needs. In this way, emails addresses, documents, news, forum posts, pastes, blacklisted mail servers and similar domains are collected with the developed modules, using domain and brand names as input.
This framework has a SQL database (SQLite), so a reengineering has been carried out in order to migrate it to NoSQL (Elasticsearch). Elasticsearch has been integrated with Recon-ng to store the data gathered through the modules, adapting the framework components that interact with the database.
An index is created in Elasticsearch for each Recon-ng workspace, where documents containing the collected data are indexed, organised by type of data. In addition, due to the lack of duplicity control in Elasticsearch as it uses an autogenerated _id by default, a method has been implemented to avoid data redundancy.
Furthermore, the data gathered through the developed modules and indexed in Elasticsearch is visualized with Kibana. A reporting module has also been developed, which exports the data to Excel according to the corporate report format.