Openlysis
Openlysis es un sistema integral diseñado para analizar archivos, URLs, mensajes SMS y correos electrónicos utilizando servicios externos como VirusTotal, HybridAnalysis, Filescan y Urlquery. Centrado en combatir el phishing y el smishing, democratiza el acceso a la seguridad digital mediante una app para Android (API 24, Android 7.0 Nougat).
Tecnologías Usadas
-
.NET 8
Framework utilizado para construir el sistema back-end.
-
C#
Lenguaje de desarrollo utilizado en el sistema back-end.
-
PostgreSQL 17
Sistema de base de datos utilizado para el back end.
-
Jetpack Compose
Framework utilizado para construir la aplicación de Android.
-
Kotlin
Lenguaje de desarrollo utilizado en la aplicación de Android.
Características
-
Análisis de Mensajes
Recibe SMS y correos, extrae las URLs y las analiza junto con los archivos adjuntos.
-
Análisis de Archivos
Analiza archivos individuales en cualquier formato.
-
Análisis de URLs
Analiza URLs, especialmente aquellas que redireccionan a sitios web.
-
Detección de Mensajes SMS
Detecta SMS entrantes al dispositivo Android y notifica al usuario para analizarlos.
-
Visualización de Resultados de Análisis
Representa de forma simple e intuitiva el veredicto y otros resultados del análisis.
-
Actualizaciones en Tiempo Real
Comunica actualizaciones de los resultados de análisis en tiempo real utilizando SignalR.
-
Autenticación con JWTs
Autenticación básica con JSON Web Tokens.
Plataformas Soportadas
-
Android
Objetivo
Proponer un sistema capaz de ofrecer indicadores claros de confiabilidad y amenaza sobre datos digitales, soportado en servicios de análisis externos y enfocado en los usuarios no técnicos con dispositivos móviles Android en la versión 7.0 o superiores.
Arquitectura
Global
Entendiendo las limitaciones de recursos que tienen los dispositivos móviles, en especial la batería, el sistema se divide en una parte back-end y otra front-end, orientadas a la extensibilidad y rendimiento.

Sistema Back-end
El sistema consiste de tres servicios internos: orquestador de análisis, API de análisis y la API de autenticación. Además, emplea otros tres servicios para la comunicación y almacenamiento robusto: RabbitMQ, Google Cloud Storage y PostgreSQL.

El orquestador de análisis es modular, lo que le permite acoplar y desacoplar servicios de análisis externos fácilmente.

Sistema Front-end
La aplicación de Android está basada en una arquitectura de capas, en las que se aplican patrones como el flujo de datos unidireccional (Unidirectional Data Flow) y la filosofía Offline-First.
Desafíos
-
Gestión de Archivos - Sistema Back-end
Situación
Utilizar el mecanismo por defecto del sistema back-end, que alojaba los archivos en memoria de forma temporal, representaba un problema potencial, en especial con archivos de gran tamaño, ya que esto podría consumir toda la memoria del servidor o el espacio disponible del disco, particularmente si es un contenedor.
Solución
El desarrollo de un mecanismo personalizado para retransmitir los archivos entrantes a un servicio especializado como Google Cloud Storage mitigó los riesgos de consumo de memoria y disco e incrementó la escalabilidad y flexibilidad del sistema back-end.
-
Orquestación de Análisis - Sistema Back-end
Situación
Coordinar los análisis utilizando servicios de análisis externos requirió un proceso robusto y resiliente, capaz de gestionar errores durante la inicialización de los análisis y la actualización de sus resultados.
Solución
La librería MassTransit fue una gran herramienta para dar la resiliencia requerida. La implementación de consumidores de trabajos (JobConsumer) ayudó a mantener y guardar el proceso de orquestación ante errores y realizar reintentos. Además, facilitó la aplicación de un tiempo de espera para aquellos análisis con duraciones excesivamente largas.