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

viernes, julio 03, 2026

Cómo sacar partido a la nueva dirección de e-mail de MyPublicInbox protegida con Tempos

En MyPublicInbox la comunicación de valor entre los usuarios es la clave. Conseguir que los mensajes enviados con apreciación del valor del tiempo del receptor - pagados con Tempos - y los que son oportunidades profesionales para los Perfiles Públicos, como entrevistas, conferencias, oportunidades laborales, o demás servicios que se van incorporando en la plataforma, lleguen al buzón es lo que nos hace trabajar. Reducir el ruido y aumentar el valor. Son las dos consignas con las que se construye MyPublicInbox.

En la última actualización de la plataforma hemos metido dos grandes mejoras, que hemos tenido en pruebas durante estas semanas. La primera de ella es la de asociar una dirección de e-mail al buzón público de los perfiles públicos de la plataforma que permite un funcionamiento similar al de la plataforma pero, en lugar de ir vía web o vía app, se puede hacer vía correo electrónico.
Cada Perfil Público está ahora accesible vía una dirección de e-mail construida sobre el domino mypublicinbox.email, que es totalmente funcional, y se puede utilizar en cualquier plataforma que solicite el correo electrónico o en cualquier red social. En mi caso, como podéis ver arriba es chemaalonso@mypublicinbox.email.

Figura 3: Envío de e-mail a la dirección @mypublicinbox.email

Esta dirección, bien puede ser la que vendan las plataformas de Data Enrich, que no hay ningún problema con ello. Si cualquiera usa esa dirección de e-mail para enviar un mensaje, podrá hacerlo perfectamente. Pero el sistema responde de manera automática con el proceso de envío con Tempos.

Figura 4: Respuesta recibida por e-mail

Cuando el remitente quiera enviar el mensaje final al buzón, se irá a la web de uso de Tempos de MyPublicInbox, pero además, si no quiere sacarse una cuenta de MyPublicInbox, podrá hacerlo vía usuario invitado - desde su dirección de e-mail de origen -, pero comprando los Tempos ad-hoc.

Figura 5: Envío de mensaje en myPublicInbox cómo invitado vía e-mail

Pero no sólo eso. Ahora, si tu quieres, puedes tener listas blancas de direcciones de correo electrónico permitidas para que entren sin coste de Tempos vía e-mail en tu buzón, de tal manera que si vas a un hotel, o un evento, o a un sitio donde te piden los datos de dirección de e-mail y tú no quieres que te manden mensajes publicitarios, pues usas tu dirección de e-mail @mypublicinbox.email y listo. Y si quieres recibirlos, pues añades el domino de esa empresa en la lista blanca.

Figura 5: Registrándome con mi e-mail de mypublicinbox.email

Y si el mensaje cumple con tus normas, pues entonces entrará en tu buzón sin ningún coste de Tempos para nadie. Es tu decisión de valor, y si para un Perfil Público tiene valor esa comunicación, la plataforma lo permite configurar.

Figura 6: En Mi Correo -> Configurar Correo puedes configurar el acceso vía e-mail

Hemos bloqueado los dominios generalistas, por ahora, que habilitar un Gmail o un Hotmail, u otros dominos, es abrir la caja de Pandora a phishers, spammers, scammers, y demás gente de mal vivir en el mundo de las ciberestafas, así que si lo intentas, te saldrá una alerta.

Figura 7: No se permiten dominios generalistas completos.

Cuando llegue un mensaje, entonces aparecerá dentro de tu buzón como una Oportunidad, y podrás entrenar el algoritmo con si tiene o no valor para ti ese mensaje. ¿Por qué eso? Pues porque hemos añadido otra opción que está en pruebas, que es el filtrado de oportunidades.

Figura 8: Cuando entre el correo entrará como Oportunidad sin Tempos.
(en este caso la aceptación desde un congreso de nuestro último paper)

En este caso, si llega algún mensaje de alguien que la plataforma identifica en tu buzón como una oportunidad profesional como las que tienes en la plataforma, puede ser que el mensaje entre en tu buzón. Estos mensajes entrarán sin Tempos, por lo que no tienes la obligación de contestarlos, y podrás entrenar el algoritmo marcando si tiene valor para ti o no esa oportunidad en concreto.

No se vayan todavía, aún ahí más...

Este año, que el roadmap es muy agresivo, iremos viendo más cosas para ampliar las capacidades de la plataforma, así que os tendré que contar muchas nuevas cosas de MyPublicInbox

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


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!

lunes, mayo 23, 2022

El "leak" del Login en tu Banca Online con tu D.N.I. (NIF) o con tu C.I.F.

Ya he hablado muchas veces de lo que llamamos El "leak" del login, o lo que es lo mismo, cómo saber que una persona tiene una cuenta en un servicio a base de aprovechar los intentos de intentar hacer las tres acciones que se pueden hacer con datos públicos de una persona, es decir, Iniciar Sesión, Crear una cuenta o Recuperar una contraseña, y analizar los mensajes de error.

Figura 1: El "leak" del Login en tu Banca Online con tu D.N.I. (NIF) o con tu C.I.F.

Para iniciar sesión en un servicio, para recuperar la contraseña, y para crear una cuenta, nos van a solicitar datos que normalmente son públicos, como son la dirección de correo electrónico, el usuario, o el número de teléfono. Datos, que en una tarjeta de visita pueden aparecer con mucha facilidad. Con estos datos se puede intentar iniciar sesión en un servicio, se puede intentar recuperar una contraseña, o se puede intentar crear una cuenta. 

Figura 2: Se informa al que introduce el e-mail de si la cuenta existe o no

Si el sitio web en el que estamos probando, tanto al intentar iniciar sesión, al recuperar una contraseña o al intentar crear una cuenta, da un mensaje distinto cuando la dirección de correo electrónico o el número de teléfono existe previamente en el servicio, que cuando no existe, entonces podremos saber con facilidad si esa persona tiene una cuenta en esa plataforma, lo que es un leak de privacidad, como hemos visto en ejemplos varios:
Con todos estos "leaks", es posible capturar el correo electrónico y/o el número de teléfono de una tarjeta de visita y sacar un mapa de los servicios en los que una persona tiene una cuenta, lo que da mucha información de su vida en la red. Con esta premisa, creamos el servicio de Dirty Business Card en nuestro equipo de Ideas Locas.


Figura 3: Demo de Dirty Business Card

Sin embargo, una de las cosas que también se puede extraer información de las entidades bancarias en las que una persona tiene cuenta, no solo por el número de teléfono (como vimos en el caso de Bizum) o la dirección de correo electrónico, lo que facilitaría los ataques de phishing bancario, enviando el correo de phishing del banco correcto a la persona correcta, sino que también se puede hacer por el número de DNI de una persona.

En algunos bancos, para saber si tienes cuenta o no con ellos, y poder activarte la Banca Online, te solicitan el número de DNI, y si tienen el "leak del login", entonces darán un mensaje diferente cuando ese DNI esté en sus sistemas a cuando no esté en sus sistemas, como en este ejemplo que podéis ver aquí, que para poder ver si tienes cuenta se solicita primero el número de DNI.

Figura 5: Activar el acceso a la Banca Online en un banco

Después, si la cuenta no existe, da un mensaje de error en el que invita a hacerse cliente de la entidad bancaria en concreto, como podéis ver en la imagen siguiente.

Figura 6: Ese DNI o tiene Banca Online

Mientras que si tienes una cuenta bancaria asociada a ese número de DNI (o CIF o NIF dependiendo del número que soliciten), entonces saldrá un proceso distinto para comenzar la recuperación de la contraseña.

Figura 7: Ese DNI tiene Banca Online en este Banco -> Leak

Por desgracia, en nuestro país, localizar el número de DNI, teniendo los dos apellidos y el nombre de una persona, no es demasiado complejo encontrar su número de DNI, ya que en el Boletín Oficial del Estado, en entidades públicas, listados de oposiciones, listados de notas, etcétera, se han publicado y se publican por transparencia, lo que no siempre es lo mejor por privacidad y seguridad.

Figura 8: Un poco de Hacking con Buscadores en Google o Bing y con
Nombre y Apellidos de una tarjeta de visita no es difícil dar con el DNI.


Figura 9: Libro de "Cómo protegerse de los peligros en Internet"
de José Carlos Gallego en  0xWord

Así que, si encuentras un "leak del login" en una entidad bancaria, lo suyo es que se lo reportes para que hagan menos "Verbose" el proceso y no sea fácil conocer si una persona ( o una organización ) tiene cuenta en esa entidad o no, ya que se lo ponemos más fácil a los malos, que con mucha información, y un poco de ingeniería social son capaces de hacer estragos en las personas menos informadas, como la banda que desarticuló la Policía. Y nos ayuda a todos a estar más protegidos contra los peligros en Internet.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares