Diseño e implementación de un sistema de identificación de ataques del tipo smishing

Speaker 1

BENEFICIARIO

INTEGRANTES

  • María Paula Moreno  | Cargo:  Cloud Security Consultant
  • Nicolás Rodríguez Menjura  | Cargo: Embedded Technical Consultant

AÑO

2023

PALABRAS CLAVE

API, Machine Learning, Phishing, Redes móviles, Short Message Service (SMS), Smishing


CONTEXTO

En el contexto actual de crecimiento acelerado de la ciberdelincuencia, se hace evidente la necesidad de abordar y mitigar las diversas modalidades de ataques que afectan a usuarios y organizaciones. Uno de los métodos que ha ganado terreno en este panorama es el smishing, una técnica que se vale de mensajes de texto para suplantar entidades legítimas y así engañar a los usuarios con el propósito de robar sus datos personales y financieros. En este mismo contexto, en el cual los diferentes servicios se están apoyando cada vez más en el uso de los servicios de mensajería, como el SMS o WhatsApp, con el fin de divulgar información a sus usuarios o bien como mecanismo complementario en la autenticación para acceder a dichos servicios, se pronostica que la tendencia de ataques del tipo smishing continuará en aumento.

PROPUESTA

Se diseñará e implementará una solución tecnológica con la cual los usuarios de telefonía móvil, que pueden ser víctimas de smishing, puedan verificar de forma ágil y sencilla si un mensaje recibido es legítimo y si su contenido es malicioso. Esta solución podrá ser utilizada mediante una interfaz de usuario, en donde los usuarios podrán reenviar el contenido del mensaje recibido. La solución se encargará de realizar el análisis del contenido y posteriormente su clasificación apoyándose en modelos de Machine Learning y servicios externos de análisis de malware. Finalmente, los usuarios recibirán en la misma interfaz de usuario, la respuesta con el resultado obtenido luego de que la solución realice la clasificación y verificación del contenido del mensaje enviado por el usuario.

El sistema, en primera instancia, cuenta con la fase que estará a cargo del preprocesamiento del texto recibido. En caso de que el mensaje contenga una URL, posteriormente, el sistema realizará una validación de dominio, en donde utilizará servicios externos para realizar el análisis de este. Esto permitirá determinar si la URL incluida en el mensaje puede o no representar algún impacto para el usuario. En paralelo se realizará la clasificación del contenido del mensaje para determinar si es malicioso o legítimo, en donde para este caso el sistema se apoyará en una modelo de Machine Learning previamente entrenado con datasets externos para obtener el resultado de una clasificación acertada con base en los patrones conocidos de mensajes correspondientes a ataques del tipo Smishing. Finalmente, los resultados obtenidos en la validación del dominio y el modelo de Machine Learning son enviados al módulo de evaluación de la criticidad del mensaje, el cual se encargará de determinar el nivel de criticidad del mensaje detectado utilizando los tres niveles definidos presentados a continuación:

Mensaje Legítimo:

  • Características: Los mensajes legítimos son aquellos que no representan ninguna amenaza y son enviados por fuentes confiables.
  • Criterio: El sistema asignará esta categoría al mensaje cuando el resultado en la clasificación del contenido resulte ser propia de un mensaje legítimo y cuando el análisis de dominio también indica que no es malicioso o bien, cuando el sistema no identifica alguna URL en el contenido del mensaje.
  • Ejemplos: Mensajes de bancos, instituciones gubernamentales, empresas reconocidas y contactos de confianza.
  • Recomendaciones: Estos mensajes pueden ser entregados al usuario sin ningún tipo de advertencia y se consideran seguros.

Mensaje sospechoso:

  • Características: Los mensajes sospechosos son aquellos que generan dudas sobre su autenticidad, pero no pueden ser confirmados como maliciosos de inmediato.
  • Criterio: El sistema asignará esta categoría al mensaje cuando el resultado del sistema no es concluyente y se requiere de una acción adicional del usuario para determinar la autenticidad del mensaje. Esto se puede presentar cuando la clasificación indique que se trata de un mensaje legítimo pero que contenga una URL cuyo análisis indica que no se puede concluir si el dominio es o no malicioso, o bien, cuando el resultado de la clasificación del contenido indique que es malicioso al tener los patrones comunes en mensajes utilizados en ataques del tipo Smishing pero que el análisis del dominio sea inconcluso o imposible de realizar. Se envía esta categoría para prevenir que los usuarios descarten mensajes legítimos de fuentes confiables.
  • Ejemplos: Mensajes que contienen enlaces no reconocidos, solicitudes inusuales o información inconsistente.
  • Recomendaciones: Se debe alertar al usuario sobre la posible sospecha y sugerir precaución al interactuar con el mensaje. Puede recomendarse una verificación adicional antes de seguir cualquier enlace o proporcionar información.

Mensaje malicioso:

  • Características: Los mensajes maliciosos son aquellos que representan una amenaza clara para la seguridad del usuario. Por lo general, intentan engañar o estafar al receptor.
  • Criterio: El sistema asignará esta categoría al mensaje cuando la clasificación del contenido del mensaje y el análisis del dominio indican que el mensaje es malicioso o bien, cuando se sabe que el dominio es malicioso a pesar de que el resultado de clasificación del mensaje indique lo contrario.
  • Ejemplos: Mensajes que solicitan información personal o financiera sensible, contienen enlaces a sitios de phishing o intentan suplantar identidades de organizaciones legítimas.
  • Recomendaciones: Estos mensajes deben ser identificados y bloqueados de inmediato para proteger al usuario. Se debe proporcionar una advertencia clara y no permitir que el usuario interactúe con el contenido peligroso.

El presente proyecto no contempla algún proceso que considere la necesidad de un reentrenamiento de los modelos debido a la perdida de precisión de estos cuando los patrones de los ataques cambien, sin embargo, en el enfoque de mejora continua y adaptación del sistema a las condiciones cambiantes de los ataques del tipo smishing, se considera la integración de un mecanismo de almacenamiento de información que permita guardar los mensajes de texto que son enviados por los usuarios, junto con el resultado del diagnóstico generado por el sistema. Esta funcionalidad se incluirá con el objetivo de construir una base de conocimiento propia que será útil en el entrenamiento de modelos futuros de clasificación de mensajes de texto, o bien, para el reentrenamiento del modelo del sistema para mejorar su precisión y eficacia conforme las características de los mensajes de este tipo de ataques van evolucionando en el tiempo.

RESULTADOS

Basados en los requerimientos y componentes de la solución, se decidió crear una arquitectura en AWS utilizando los siguientes servicios: función Lambda, API Gateway, SageMaker y DynamoDB. Por otro lado, para la integración de una interfaz gráfica, se creó un bot en Telegram que facilitará el envío de mensajes y la recepción del diagnóstico generado por la solución. Finalmente, para el análisis de dominio, se utilizó la API de Virus Total para realizar un diagnóstico de las URL contenidas en los mensajes enviados por los usuarios.

En lo que respecta al dataset de entrenamiento de los modelos evaluados, se encontró la referencia del dataset público “SMS spam Collection”, el cual cuenta con un conjunto de mensajes de texto etiquetados y recopilados específicamente para la investigación sobre spam de SMS. Este dataset contiene 5574 mensajes en inglés, clasificados en dos categorías: legítimos (ham) o spam. Además de contar con diversos trabajos que ya han realizado análisis exploratorio de datos sobre este dataset, se encontró que también tiene una gran cantidad de referencias publicadas sobre su usabilidad en el entrenamiento y evaluación de modelos de Machine Learning para la clasificación de mensajes y la prevención de ataques del tipo Smishing, por este motivo, para el presente proyecto, se optó por utilizarlo en el entrenamiento del modelo que utilizará el prototipo de la solución.

Luego de realizar el preprocesamiento de los datos contenidos en el dataset seleccionado, se realizó el entrenamiento y evaluación de los siguientes modelos de Machine Learning: 

  • Support Vector Machine (SVM) 
  • Logistic regression
  • Random Forest (RF)
  • Multilayer perceptron (MLP)
  • Naive Bayes
  • XGBoost

Encontrando que el modelo MultiLayer Perceptron (MLP) es el que tiene mejor rendimiento de forma global. Esto llevó a profundizar en un modelo basado en redes neuronales llamado BERT (Bidirectional Encoder Representations from Transformers). Este es un modelo desarrollado por Google, el cual fue introducido en un artículo de investigación en 2018 y se ha convertido en una de las arquitecturas más influyentes en el campo del procesamiento del lenguaje natural (NLP). Este es un modelo previamente entrenado con grandes cantidades de datos no etiquetados, como texto en varios idiomas, y que luego puede ser ajustado para tareas específicas de procesamiento de lenguaje natural (NLP) mediante un proceso llamado "fine-tuning" en conjuntos de datos más pequeños y etiquetados para esas tareas particulares. Finalmente, se optó por utilizar este modelo BERT fined tunned para implementar el prototipo de la solución.

Con el fin de validar la solución se realizaron pruebas mediante 3 dispositivos diferente teniendo como resultado, respuestas iguales, de tal manera que el dispositivo no afecta la respuesta del modelo, realizando más de 100 pruebas al sistema con una concurrencia máxima de 7 invocaciones al mismo tiempo. Posterior a la validación del sistema, se eligieron 13 mensajes a los cuales se le añadieron URLs maliciosas, disponibles en el repositorio de Kaggle. A continuación, se listan algunos puntos importantes como resultado:

  • De un total de 13 mensajes seleccionados, 2 se clasificaron incorrectamente, lo cual corresponde al 26% de las pruebas. El porcentaje de mensajes correctamente clasificados es de 74%.
  • Este 26% se analizó y se encontró que algunas URLs, no fueron correctamente detectadas por la solución y/o VirusTotal no pudo validar se criticidad.
  • El 100% de los mensajes de texto que no contienen URLs, se clasificaron correctamente.
  • Los mensajes que contienen más de 1 URL en el mensaje pueden generar errores a la hora de identificarse por el sistema.
  • Algunas puntuaciones como el uso de / o .(Punto), pueden generar falsas URLs que proporcionan errores al sistema. 
  • El tiempo promedio de respuesta y procesamiento del mensaje es de 20 segundos.

MÁS DETALLES