Mostrando entradas con la etiqueta ciberfraude. Mostrar todas las entradas
Mostrando entradas con la etiqueta ciberfraude. Mostrar todas las entradas

sábado, octubre 05, 2024

Cómo crear una aplicación y protegerse de ciberestafas con el API de SIM Swap

Si eres lector de este blog, seguramente ya habrás leído en más de una ocasión sobre Open Gateway y las enormes posibilidades que ofrece a los desarrolladores. Hoy quiero mostrar cómo crear una aplicación sencilla en Python para comprobar el estado de SIM Swap utilizando las APIs de Open Gateway y aprovechando el Sandbox de Telefónica para hacer pruebas sin riesgo.

Figura 1: Cómo crear una aplicación y protegerse
de ciberestafas con el API de  SIM Swap

¿Qué es SIM Swap?

Vamos a comenzar con una explicación de por qué esto es importante. SIM Swap es un evento de red que ayuda a detectar un tipo de ciberestafa en el que un atacante obtiene un duplicado de la tarjeta SIM de una víctima, mediante un engaño o una portabilidad entre empresas de telecomunicaciones fraudulenta, lo que le permite acceder a su línea de teléfono y recibir tanto llamadas de teléfono como mensajes SMS, lo que le da acceso a los códigos OTP de autenticación de segundo factor (2FA), o incluso realizar llamadas en nombre del usuario. 
Esto facilita el acceso no autorizado a cuentas bancarias, redes sociales u otros servicios sensibles que utilizan el SMS o la llamada como validación de 2FA, además de poder suplantar a la víctima en llamadas de teléfono fraudulentas. 
Con la API de SIM Swap de Open Gateway, podemos verificar si el número de teléfono de un usuario ha sido asociado recientemente a una nueva tarjeta SIM, lo que permite prevenir fraudes de manera más efectiva.

Sandbox de Telefónica Open Gateway

Antes de acceder a los datos reales, es fundamental probar la aplicación en un entorno seguro. Aquí es donde entra en juego el modo mock del Sandbox de Telefónica Open Gateway, un entorno de pruebas que simula el comportamiento real de la API sin comprometer datos de usuarios. Antes de empezar a programar, hay que dirigirse al sandbox para crear la aplicación. Aquí encontraremos las APIs disponibles con las que podemos trabajar, estando actualmente Device Location VerificationDevice StatusNumber Verification y SIM Swap.


Para la demo, se va a hacer uso de la API de SIM Swap. Tras seleccionar esta API y darle al botón de crear aplicación, se encuentra un formulario para rellenar información sobre esta. Desde aquí se puede seleccionar el modo de trabajo (producción o mock), indicar el nombre que se le quiere asignar a la aplicación, la URL de redirección (si es necesario) y una pequeña descripción.

Figura 5: Formulario de creación de aplicación

El siguiente paso es para aceptar los términos y condiciones de uso.

Figura 6: Confirmación de los términos y condiciones

En el último paso se muestra un resumen con toda la información anterior y el botón para confirmar y terminar con creación de la aplicación.

Figura 7: Resumen de la aplicación y confirmación

Ahora, en el apartado de “Mis aplicaciones”, se puede ver la nueva aplicación creada, aunque podría estar pendiente de validación. 

Figura 8: Información de la aplicación creada

Desde aquí se puede conocer el identificador de la aplicación, así como el secreto que será necesario para autenticarse al realizar llamadas a la API.

Ejemplo de aplicación SIM Swap en Python

Para comenzar a crear la aplicación en Python se tienen dos opciones:
  • Revisar la API e implementar todas las llamadas para conseguir la autorización y las llamadas a la API de SIM Swap usando alguna librería como puede ser requests.
  • Hacer uso del SDK que está preparado para trabajar con el sandbox.
Esta última opción es el que se opta por utilizar en este ejemplo para agilizar la creación de la aplicación. Su instalación se puede hacer con pip, indicando el paquete opengateway-sandbox-sdk:

pip install opengateway-sandbox-sdk

Ahora, se crea un nuevo script de Python  y vamos a definir una función que, dado un número de teléfono, cree una instancia de Simswap con los datos de nuestra aplicación (Client ID y Client Secret que se encuentran en la información de nuestra aplicación creada en el sandbox), así como el número de teléfono (en formato E.164) que se desea consultar. 

Se ejecuta la función retrieve_date() para obtener la fecha del último cambio de emparejamiento MSISDN <-> IMSI, o lo que es lo mismo, la última vez que el número de teléfono (MSISDN) fue vinculado a una nueva tarjeta SIM (IMSI).

Figura 9: Función para obtener última fecha de cambio de SIM

Este sería el código más básico para poder hacer uso de SIM Swap a través del SDK. Vamos a ampliar un poco el código para poner validación del número de teléfono y que se pueda pasar un número de teléfono o un fichero con un listado de número a través de parámetros al iniciar el script. Creamos una nueva función que, pasado un número de teléfono, compruebe a través de una expresión regular que cumple con el formato E.164
<->
Figura 10: Función para validar que un
número está en formato internacional
<->
La expresión regular que aparece en re.compile(r"^\+[1-9]\d{9,14}$") está diseñada para validar números de teléfono en formato internacional. Veamos en que consiste cada parte:
  • <->^: Marca el inicio de la cadena, asegurando que no haya caracteres antes del número.
  • <->\+: Busca el símbolo "+" al principio del número, que es obligatorio en los formatos internacionales.
  • <->[1-9]: Busca un dígito entre 1 y 9, lo que impide que el código de país comience con 0 (en números internacionales, los códigos de país nunca empiezan por cero).
  • <->\d{9,14}: Busca entre 9 y 14 dígitos después del código de país, representando el número de teléfono.
    • <->\d significa cualquier dígito (0-9).
    • <->{9,14} especifica que debe haber un mínimo de 9 dígitos y un máximo de 14 después del código de país.
  • <->$: Marca el final de la cadena, asegurando que no haya caracteres adicionales después del número.
En resumen, esta expresión regular valida un número de teléfono internacional que:
  • <->Empieza con un símbolo +.
  • <->Tiene un código de país que comienza con un dígito entre 1 y 9.
  • <->El número de teléfono contiene entre 9 y 14 dígitos después del código de país.
Algunos ejemplo válidos para esto serían: “+34600123456” (España) o “+14155552671” (EE. UU.). Y un par de ejemplos de números no válidos podrían ser: “+0123456789” (el código de país no puede empezar con 0) o “34600123456” (falta el símbolo +).

Figura 11: Libros de Python para Pentesters y Hacking con Python
de Daniel Echeverri publicados en 0xWord.

<->Por último, realizamos la creación de una función principal. La función main() se encarga de gestionar los argumentos de la línea de comandos para que el usuario pueda verificar el estado de SIM Swap de uno o varios números de teléfono. Utiliza la librería argparse, que facilita la creación de interfaces de línea de comandos en Python. A través de esta función, el usuario puede proporcionar un número de teléfono individual utilizando la opción -p/--phone, o bien un archivo que contenga varios números de teléfono, uno por línea, con la opción -f/--file.

La función emplea un grupo de argumentos mutuamente excluyentes, lo que significa que el usuario debe elegir entre una de estas dos opciones, pero no ambas al mismo tiempo. Esto simplifica el manejo de los datos y asegura que la herramienta sea flexible pero a la vez fácil de usar. 

Figura 12: Función principal del programa
<->
Cuando se pasa un número de teléfono, este se valida usando la función phone_validator(), y, si todo va bien, se procesa con la función sim_swap(). Si se utiliza un archivo, la función intenta leer los números de teléfono línea por línea, y si encuentra algún error (como que el archivo no exista o no se pueda leer), gestiona las excepciones e informa al usuario. Esta estructura permite que la herramienta sea robusta y manejable, garantizando una buena experiencia de usuario con el manejo de errores y validaciones necesarias para evitar problemas.

Para finalizar se debería realizar la llamada a la función main(), algo que se puede integrar dentro del condicional if __name__ == “__main__": típico de Python. Sólo una cosa más, ¿recuerdas que en la llamada a SIM Swap había que indicar el Client ID y Client Secret? En el código mostrado anteriormente, estos valores aparecían en la función sim_swap() en las constantes CLIENT_ID y CLIENT_SECRET

<->
<->
Figura 13: Recuperando las credenciales desde el entorno
<->
<->Como se trata de valores que contienen información sensible, como buena práctica de programación, se recomienda leerlos del entorno. Para ello se puede hacer uso de la librería python-dotenv y almacenar las credenciales en un archivo .env que contiene las variables del entorno. 

<-> A continuación comparto un vídeo de ejemplo del uso de la API de SIM Swap donde puede apreciarse el código tanto haciendo uso directo de la API, como del SDK.

Figura 14: SIM Swap API vs SDK

Las APIs de Telefónica Open Gateway son una puerta abierta para que los desarrolladores puedan explorar nuevas formas de enriquecer sus aplicaciones con capacidades avanzadas, como el ejemplo visto con la detección de SIM Swap. El acceso a estos servicios no solo refuerza la seguridad de las aplicaciones, sino que también te permite crear experiencias más confiables para los usuarios.


Con el sandbox, tienes a tu disposición un entorno seguro para experimentar, probar e integrar estas funcionalidades en tiempo récord, sin necesidad de comprometer datos reales.  Si buscas llevar tus proyectos al siguiente nivel, esta es tu oportunidad, y puedes comenzar hoy mismo a experimentar con las APIs de Telefónica Open Gateway, explorar todo su potencial y transformar tus ideas en soluciones reales que impacten de forma positiva a miles de usuarios.
<->
<->Developer Hub

<->
Para que empecéis a experimentar, es necesario que os unáis al Developer Hub de Telefónica Open Gateway. La inscripción a este programa no tiene ningún coste, por lo que podréis disfrutar del Sandbox de forma gratuita. En la sección Technical Toolbox del área privada, una vez que os hayáis registrado y logado, encontraréis el acceso y, una vez dentro, lo primero que veréis es nuestro catálogo completo de APIs disponibles en el entorno de pruebas. 

Seleccionad aquella con la que queráis trabajar, añadid la información general de vuestra aplicación y elegid el modo que deseéis, ya sea de producción o mock, para empezar con vuestros desarrollos. Probad vuestros desarrollos con estas APIs para llevarlos al siguiente nivel de seguridad antifraude con OpenGateway.


Y si quieres mantenerte informado con novedades en la iniciativa como más webinars sobre nuestras soluciones, lanzamientos comerciales o nuevas APIs disponibles, suscríbete a nuestra newsletter de Open Gateway.

Saludos y

Happy Coding!

domingo, abril 28, 2024

Se busca inversión para luchar contra los ciberestafadores de ciptomonedas

Hola a todos y un saludo de su amigo y vecino Deckcard23. Antes de comenzar agradecer a Chema Alonso su atención y consejo así como la oportunidad una vez más de hacer eco de mi palabra en su blog. Por si no me conocéis me dedico desde hace ya años a la recuperación de activos digitales. Dentro de mi labor la más difícil es la recuperación de dinero robado a víctimas de estafas de criptomonedas. La más común es el “Pig Butchering Scam” que es algo así como “Estafa de cebar el cerdo”. 

Figura 1: Se busca inversión para luchar contra los ciberestafadores de ciptomonedas

Esta estafa puede ser mediante un estafador del amor o no. Consiste en engañar a una persona a la cual se ha contactado al azar para crear un vínculo de amistad o amoroso. Una vez esa persona, emocionalmente débil o en un momento complicado de su vida, por falta de cariño, necesidad de apoyo personal, desesperación, porque no tiene dinero y necesita nuevas fuentes de ingresos, o simplemente por avaricia o ganas de invertir, es animada por su nuevo “amigo/a” a realizar una inversión. 


Éste sería el primer paso hacia su ruina, y hemos visto casos muy duros por aquí en el blog - Los Falsos Brokers y las víctimas de sus estafas: Un negocio de escala - como los que ha contado , y ejemplos de cómo operan estos estafadores en forma de Fake Brokers en las redes sociales, como el caso de "Linda" en Instagram o Youtube


La víctima no es presionada para invertir sino que sutilmente, el estafador, muestra como gana dinero y la va animando poco a poco. En el momento que pica el anzuelo empieza el escándalo. Todos los ahorros de su vida, préstamos, dinero de la familia, son invertidos en un espejismo. Cuando quiere retirar ese dinero y ya pensando en la casa que se va a comprar, la solución de los problemas ya solucionados y los caprichos que va a tener es cuando se da cuenta de la cruda realidad: el cerdo está listo para comer.

Hay otras variantes de estafas relacionadas con las criptomonedas. Entre ellas las app falsas en la Web3 que controlan tu wallet y te la vacían. Estafas de tareas. Aquí supuestamente se paga en Bizum por ver videos pero esos Bizums vienen de otros estafados. Seguidamente se anima a invertir y vuelta a la estafa anterior.

Mi experiencia pesonal persiguiendo a criptoestafadores  

Durante años he investigado estos cibercrímenes y he ayudado a víctimas de todo el mundo lo mejor que he podido y los he apoyado en su dolor. Hoy puedo decir que hago una pausa, un parón y ya no voy a prestar más servicios de investigación en estos casos. El motivo, es sencillo: falta de inversión y cooperación. Sinceramente me he sentido como David peleando contra Goliat. Lo que era parte de un modelo de negocio se ha convertido en una obligación.

Me llena mucho ayudar a la gente pero como cualquiera de los mortales necesito comer. Resolver este tipo de casos es muy difícil y me he convertido en la esperanza para muchos. Este último mes he hablado con muchos inversores y nadie quiera invertir en mi proyecto. Recuperar dinero de víctimas de estafas al parecer no es rentable económicamente y por tanto no hay nada que hacer. 

He intentando vender la idea de un software para ciberinvestigadores de este tipo de delitos, forenses que quieran buscar información en equipos informáticos incautados, recuperación de wallets, etcétera pero al parecer todos me dicen lo mismo: financiar software no es rentable y no es para nada nuestra linea de negocio.Por otro lado tenemos a los exchangers que son utilizados por los estafadores para mover sus ganancias. Recordamos que los exchangers cambian de Fiat a criptomoneda el dinero estafado en su inmensa mayoría.


Figura 5: Campañas de publicidad en medios nacionales de gran tirada

Advierten y advierten al cliente de cómo puede ser estafado pero cuando les he llamado para que inviertan en mi proyecto no les ha interesado. Luego tenemos a los bancos. Ellos también tienen parte de impacto. Podrían saber de sobra cuándo una cuenta en Lituania tiene pinta de ser un fraude y aún así los estafadores mueven dinero de cuentas de personas jubiladas que envían todos sus ahorros sin que se bloqueen esas cuentas automáticamente. Por último, los buscadores y redes sociales que permiten la publicidad de esta gentuza que con una simple mirada diaria cualquiera que entienda se daría cuenta. Al final, es un problema que se aprovecha de la falta de coordinación global de todos para acabar con estos cibercriminales.

Figura 6: Testimonios publicados en la web de los falsos brokers

En definitiva, las ciberestafas en criptomonedas se han convertido en un problema global que yo equiparo al trafico de drogas o la trata de blancas. Para quien no lo sepa, las bandas organizadas de este tipo de delitos tienen en condiciones infrahumanas a los captadores de víctimas. Dichas personas viven recluidas en edificios donde no los dejan salir, les dan palizas, les obligan a estafar, los maltratan física y psicológicamente. En estos países es imposible a menos que mandes a los mercenarios porque la policía y los gobiernos están corruptos.

A la víctima sólo le queda la esperanza de que un familiar, amigo, compañero de trabajo, mujer de la limpieza, primo, vecino, etcétera, le haya robado dichos fondos. O que haya sido una estafa piramidal mediática o bien un grupo que reside en España, Europa o algún país extranjero con buenas relaciones políticas.

Sacar un proyecto como éste adelante (ayudar y recuperar dinero estafado a víctimas) necesita inversión y cooperación para seguir funcionando. He ayudado a muchas víctimas desinteresadamente: nadie ha aportado ni un mísero Euro a la causa. La cooperación de exchangers, empresas de criptomonedas, otros investigadores no profesionales, abogados, etcétera, no es suficiente, o prácticamente inexistente en algunos casos. Eso sí, todos están contentos conmigo cuando les derivo clientes pero hay poca compartición de información para reducir el impacto de estas ciberestafas.

Figura 7: Mensaje publicado por Chema Alonso que le llegó a 
su buzón en MyPublicInbox de una víctima de la estafa de los Falsos Brokers.

Mando un abrazo a todas aquellas personas que ahora mismo son víctimas de una cibrerestafa y aunque muchos los vean como los "tontos" que caen en el “timo del tocomocho digital” y que invierten dinero porque les sobra, yo les mando mi apoyo porque sé como va este juego donde el estado emocional esta presente. Me sigo dedicando profesionalmente a otras ramas de mi profesión que nunca he abandonado a la espera de alguna noticia favorable para reactivar este servicio que creo es muy necesario.

Saludos,

Autor: Jorge Esclapez aka Deckcard23autor del libro “El imperio de bitcoin”, una guía para aquel que quiere aprender más sobre el origen de Bitcoin y todo lo que ha representado durante estos más de 10 años. 

Entrada destacada

+300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial

Hace un mes comencé a recuperar en un post mi interés en los últimos años, donde he publicado muchos artículos en este blog , y he dejado mu...

Entradas populares