Openlysis

Icono de un escáner.
Tres pantallas de una aplicación de Android mostrando las herramientas y resultados de análisis de 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

  • Logo característico de Dotnet.

    .NET 8

    Framework utilizado para construir el sistema back-end.

  • Logo característico de Csharp.

    C#

    Lenguaje de desarrollo utilizado en el sistema back-end.

  • Logo característico del sistema de base de datos PostgreSQL.

    PostgreSQL 17

    Sistema de base de datos utilizado para el back end.

  • Logo característico de Jetpack Compose.

    Jetpack Compose

    Framework utilizado para construir la aplicación de Android.

  • Logo característico de Kotlin.

    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

  • Logo característico del sistema operativo Android.

    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.

Arquitectura global mostrando un sistema back-end interactuando con servicios externos y un sistema front-end utilizado por un usuario.

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.

Arquitectura del sistema back-end mostrando una API de análisis, una API de autenticación, un orquestador de análisis, un intermediario de mensajería, una base de datos y un almacenamiento de archivos temporales.

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

Arquitectura del orquestador de análisis mostrando su modularidad y capacidad de integración con servicios externos.

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.

Arquitectura del sistema front-end mostrando una capa de presentación hecha con Jetpack Compose y una capa de datos con interacción al sistema back-end y al almacenamiento local del dispositivo Android.

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.