
Detecte el fraude en el intercambio de tarjetas SIM con comprobaciones de seguridad de nivel empresarial
Tiempo de lectura: 7 minutos
Introducción
En este tutorial, aprenderás a utilizar la función función SIM Swap de Vonage Identity Insights para fortalecer la seguridad del inicio de sesión de una aplicación web típica mediante la detección de posibles fraudes de intercambio de SIM.
¿Qué es el fraude SIM Swap?
El fraude de intercambio de SIM es una técnica maliciosa en la que los delincuentes engañan a los proveedores de telefonía móvil para que transfieran el número de teléfono de la víctima a una tarjeta SIM bajo su control. Una vez que han secuestrado el número de teléfono, pueden saltarse la autenticación de dos factores (2FA), lo que les permite acceder a cuentas sensibles como correos electrónicos personales, cuentas bancarias o cualquier aplicación que dependa de la verificación basada en el teléfono. Este fraude aprovecha una vulnerabilidad del proceso 2FA, lo que lo convierte en una amenaza importante para la seguridad de las cuentas y la protección de los datos personales. Más información sobre el fraude SIM swap en este artículo de Norton.
¿Qué es la función SIM Swap de Vonage Identity Insights?
La página función SIM Swap de Vonage Identity Insights es una potente API diseñada para mitigar los riesgos de fraude por intercambio de SIM. Al comunicarse directamente con los operadores de red (proveedores de servicios de comunicación (CSP)la API puede detectar si el número de teléfono de un usuario ha sido transferido recientemente a una nueva tarjeta SIM. Este mecanismo de detección ayuda a evitar la apropiación de cuentas mediante la identificación de actividades sospechosas relacionadas con los cambios de tarjeta SIM. La función SIM Swap de Vonage Identity Insights ofrece una manera confiable y eficiente de mejorar la seguridad de las aplicaciones que usan 2FA.
Requisitos previos
Vonage API Account To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
Nota: Las API de red sólo están disponibles en los siguientes proveedores de servicios de comunicación (CSP) y países, y la lista de países se ampliará próximamente.
Visión general
Para el tutorial de hoy he preparado un ejemplo de página de inicio de sesión de una aplicación web bancaria típica. Cuando SIM Swap Insight comprueba con los operadores de telefonía móvil si se han producido cambios recientes en el número de teléfono de la tarjeta SIM, el usuario no podrá iniciar sesión si se han producido dichos cambios. En caso contrario, podrá acceder a su Account.
El usuario inicia sesión y verifica su identidad a través de la interfaz. El front end envía esta información al servidor, que luego se comunica con los servicios de comunicación de Vonage para verificar los detalles de SIM Swap con los proveedores de servicios de comunicación.
Overview Diagram
Arquitectura de proyectos
Como referencia, este es el aspecto que tendrá el directorio del proyecto. Puede encontrar el código código completo en GitHub.
[node_modules]
[public]
client.js
style.css
[views]
main.html
index.html
.env
server.js
package-lock.json
package.json
private.key
Configure su entorno de desarrollo
Para empezar, necesitarás Node.js y npm instalados en tu máquina. También necesitarás instalar npm. Para empezar, necesitarás Node.js y npm instalados en tu máquina. También necesitarás instalar algunos paquetes npm, incluyendo @vonage/identity-insights, dotenv, expressy nodemon para manejar variables de entorno, peticiones HTTP y operaciones de servidor.
npm install Estructure su aplicación
Importaremos e inicializaremos nuestras dependencias y le diremos a Express que sirva archivos estáticos desde la carpeta pública. La autenticación con Vonage es manejada automáticamente por el cliente IdentityInsights SDK cuando proporcionas tu ID de aplicación y clave privada; no se requiere la gestión manual de JWT o token.
// server.js
require("dotenv").config();
const path = require("path");
const express = require("express");
const { IdentityInsights } = require("@vonage/identity-insights");
const fs = require("fs");
const app = express();
app.use(express.json());
app.use(express.static("public")); Inicializar el cliente Vonage Identity Insights
A continuación, lee tus credenciales de las variables de entorno e instala el cliente IdentityInsights. El SDK gestiona toda la autenticación internamente; genera los tokens necesarios utilizando tu ID de aplicación y tu clave privada, por lo que no necesitas gestionar los JWT manualmente.
La variable de entorno VONAGE_PRIVATE_KEY puede definirse como la ruta del archivo private.key (por ejemplo, ./private.key) o como la propia cadena de claves sin procesar. El código a continuación maneja ambos casos:
const users = {
user1: { password: "123", phoneNumber: process.env.PHONE_NUMBER }
};
const APPLICATION_ID = process.env.VONAGE_APPLICATION_ID;
const PRIVATE_KEY = process.env.VONAGE_PRIVATE_KEY;
const PERIOD = process.env.PERIOD;
if (!APPLICATION_ID || !PRIVATE_KEY) {
console.error("VONAGE_APPLICATION_ID or VONAGE_PRIVATE_KEY not set");
process.exit(1);
}
const keyContent = fs.existsSync(PRIVATE_KEY)
? fs.readFileSync(PRIVATE_KEY, "utf8")
: PRIVATE_KEY;
if (!keyContent) {
console.error(
"INVALID private key. Check if the file exists or the environment variable is correctly set"
);
process.exit(1);
}
const identityClient = new IdentityInsights({
applicationId: APPLICATION_ID,
privateKey: keyContent,
});
Comprobaciones de SIM Swap
Utilizando la función identityClient que acaba de inicializar, puede llamar al SIM Swap Insight para comprobar un número de teléfono. El SIM Swap Insight verifica la fecha de activación de una tarjeta SIM en la red móvil a través de dos campos:
latest_sim_swap_atfecha y hora en UTC ISO 8601 del último intercambio de SIM realizado
is_swapped: indica si la tarjeta SIM ha sido intercambiada durante el periodo especificado
La dirección phoneNumber es el número de teléfono que desea comprobar; es lo que el usuario introduce al iniciar sesión. La variable PERÍODO especifica el número máximo de horas que se comprobará si se ha intercambiado la tarjeta SIM (de 1 a 2400; el valor predeterminado es 240).
Si la respuesta es correcta, el valor booleano del campo isSwapped indica si se ha producido un intercambio de SIM durante el periodo especificado.
async function checkSim(phoneNumber) {
try {
const resp = await identityClient.getIdentityInsights({
phoneNumber: phoneNumber,
purpose: "FraudPreventionAndDetection",
insights: {
format: {},
originalCarrier: {},
currentCarrier: {},
simSwap: {
period: parseInt(PERIOD),
},
},
});
return resp.insights?.simSwap?.isSwapped === true;
} catch (error) {
console.warn("Identity Insights SDK call failed:", error && error.message);
}
} Construir el inicio de sesión
Para implementar el inicio de sesión, crearemos un endpoint POST llamado /inicio de sesión que comprueba si las credenciales de usuario y contraseña introducidas son correctas, y luego ejecuta una comprobación de intercambio SIM antes de conceder el acceso.
app.post("/login", async (req, res) => {
try {
const { username, password } = req.body;
const user = users[username];
if (user && user.password === password) {
const simSwapped = await checkSim(user.phoneNumber);
if (simSwapped) {
return res.status(401).json({ message: "SIM Swapped" });
} else {
res.json({ message: "Success" });
}
} else {
res.status(401).json({ message: "Invalid username or password" });
}
} catch (err) {
console.error("Error during login:", err);
res.status(500).json({ message: "Error processing request." });
}
});
Construir el cliente
El sitio client.js obtendrá la información relativa a los elementos HTML y la enviará a los puntos finales del servidor creados para gestionar el inicio de sesión y las comprobaciones de SIM Swap. Su servidor maneja las respuestas del SIM Swap Insight y transmite esa información al usuario a través de su front-end. Si la SIM del usuario ha sido intercambiada recientemente, infórmele y sugiérale acciones inmediatas, como ponerse en contacto con su operador de telefonía móvil.
Crear el archivo de variables de entorno
Crear un archivo .env para tu proyecto y añade las siguientes variables de entorno. Su VONAGE_CLAVE_PRIVADA puede ser la ruta a tu archivo de clave privada (por ejemplo ./clave.privada) o el contenido de la clave en bruto como una cadena. Consulte de Michael para una explicación de cómo usar variables de entorno en Node.js.
# Period in hours to check SIM Swap events
PERIOD=72
# Phone Number you'll use for the SIM Swap Insight
PHONE_NUMBER=+990123400
VONAGE_APPLICATION_ID=
VONAGE_PRIVATE_KEY=
Construir el frontend
Crear un archivo index.html donde los usuarios puedan introducir sus credenciales para iniciar sesión. Hay un formulario para que el usuario introduzca su nombre de usuario y contraseña, además de un modal que aparece si se ha detectado un intercambio de SIM, mostrando el mensaje: "¡Atención! Se ha detectado un cambio reciente de SIM en su Account. Acceso denegado".
Pruébelo
Añade un puerto para que el servidor escuche, por ejemplo, 3000.
//server.js
app.listen(3000, () => {
console.log("Server is running on port 3000");
});Ejecute el archivo JavaScript del servidor para inicializar la aplicación web.
node server.jsNavegue a localhost:3000 e introduce tus credenciales de acceso. Si el número de teléfono asociado a esa cuenta se ha intercambiado recientemente, recibirás un aviso y no podrás iniciar sesión. De lo contrario, podrás acceder y ver la página de resumen del banco.
Conclusión
Felicitaciones, ¡llegaste al final de este tutorial! Aprendiste a usar Vonage Identity Insights SIM Swap Insight para detectar si los números de teléfono de tus usuarios fueron intercambiados en los últimos días. Lo que aprendiste hoy es esencial para proteger las cuentas en línea y prevenir ataques de intercambio de SIM que pueden llevar a la apropiación de cuentas y al fraude.
Entender cómo funciona el SIM swapping y cómo afecta a la información personal es fascinante. Implementando métodos de autenticación multifactor y siendo consciente de las tácticas comunes de ingeniería social, puedes protegerte mejor a ti mismo y a tus usuarios de estas estafas.
A medida que se generalizan los teléfonos móviles y las redes 5G, vigilar tu seguridad es aún más importante. Comprueba con regularidad tu tarjeta SIM en busca de actividad inusual y ten cuidado con la información personal que compartes en redes sociales y cuentas online.
¿Tienes alguna pregunta o algo que compartir? Únete a la conversación en Slack de la comunidad de Vonagey mantente actualizado con el Boletín para desarrolladoressíguenos en X (antes Twitter)suscríbete a nuestro canal de YouTube para ver tutoriales en video, y sigue la página de página para desarrolladores de Vonage en LinkedInun espacio para que los desarrolladores aprendan y se conecten con la comunidad. Mantente conectado, comparte tu progreso y entérate de las últimas noticias, consejos y eventos para desarrolladores.
Lecturas complementarias
Mejore su autenticación multifactor con Verify y SIM Swap API.
Pruebe la API de red Sandbox para empezar a utilizar la API SIM Swap.
