
Detecte fraudes de troca de SIM com verificações de segurança de nível empresarial
Tempo de leitura: 7 minutos
Introdução
Neste tutorial, você aprenderá a usar o recurso SIM Swap do Vonage Identity Insights para reforçar a segurança de um login típico em um aplicativo web, detectando possíveis fraudes de troca de SIM.
O que é a fraude por troca de cartão SIM?
A fraude por troca de SIM é uma técnica maliciosa na qual os criminosos induzem as operadoras de celular a transferir o número de telefone da vítima para um cartão SIM sob seu controle. Depois de sequestrarem o número de telefone, eles conseguem contornar a autenticação de dois fatores (2FA), o que lhes dá acesso a contas confidenciais, como e-mails pessoais, contas bancárias ou qualquer Application que dependa de verificação por telefone. Essa fraude explora uma vulnerabilidade no processo de 2FA, tornando-se uma ameaça significativa à segurança das contas e à proteção de dados pessoais. Saiba mais sobre a fraude de troca de SIM neste artigo da Norton.
O que é o recurso SIM Swap do Vonage Identity Insights?
O recurso SIM Swap do Vonage Identity Insights é uma API poderosa projetada para mitigar os riscos de fraudes por troca de SIM. Ao se comunicar diretamente com as operadoras de rede (Provedores de Serviços de Comunicação (CSPs), a API consegue detectar se o número de telefone de um usuário foi recentemente transferido para um novo cartão SIM. Esse mecanismo de detecção ajuda a impedir a invasão de contas, identificando atividades suspeitas relacionadas a trocas de cartão SIM. O recurso SIM Swap do Vonage Identity Insights oferece uma maneira confiável e eficiente de aumentar a segurança de aplicativos que utilizam autenticação de dois fatores (2FA).
Pré-requisitos
Observação: As APIs de rede estão disponíveis apenas nos seguintes Provedores de Serviços de Comunicação (CSPs) e países, e a lista de países será ampliada em breve.
Visão geral
Preparei um exemplo de uma página típica de login de um aplicativo bancário para o tutorial de hoje. Quando o SIM Swap Insight verifica junto às operadoras de celular se houve alguma alteração recente no número de telefone do chip, o usuário não consegue fazer o login caso tais alterações tenham ocorrido. Caso contrário, ele poderá acessar sua conta.
O usuário faz login e verifica sua identidade por meio do front-end. O front-end envia essas informações ao servidor, que, por sua vez, se comunica com a Vonage Communication Services para verificar os detalhes da troca de SIM junto aos provedores de serviços de comunicação.
Overview Diagram
Arquitetura do projeto
Para sua referência, é assim que ficará a estrutura do diretório do projeto. Você pode encontrar o código completo no GitHub.
[node_modules]
[public]
client.js
style.css
[views]
main.html
index.html
.env
server.js
package-lock.json
package.json
private.key
Configure seu ambiente de desenvolvimento
Para começar, você precisará ter o Node.js e o npm instalados no seu computador. Você também precisará instalar o npm. Para começar, você precisará ter o Node.js e o npm instalados no seu computador. Você também precisará instalar alguns pacotes do npm, incluindo @vonage/identity-insights, dotenv, expresse nodemon para lidar com variáveis de ambiente, solicitações HTTP e operações do servidor.
npm install Estruture seu aplicativo
Vamos importar e inicializar nossas dependências e configurar o Express para servir arquivos estáticos da pasta “public”. A autenticação com o Vonage é feita automaticamente pelo cliente do SDK do IdentityInsights quando você fornece seu ID de aplicativo e sua chave privada; não é necessário gerenciar manualmente JWTs ou tokens.
// 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 o cliente do Vonage Identity Insights
Em seguida, leia suas credenciais a partir das variáveis de ambiente e instancie o cliente do IdentityInsights. O SDK lida com toda a autenticação internamente; ele gera os tokens necessários usando seu ID de aplicativo e sua chave privada, de modo que você não precisa gerenciar os JWTs manualmente.
A variável de ambiente VONAGE_PRIVATE_KEY pode ser definida como o caminho do arquivo private.key (por exemplo, ./private.key) ou como a própria sequência de caracteres da chave. O código abaixo lida com ambos os 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,
});
Verificações de troca de cartão SIM
Usando o identityClient que você acabou de inicializar, é possível chamar o SIM Swap Insight para verificar um número de telefone. O SIM Swap Insight verifica a data de ativação de um cartão SIM na rede móvel por meio de dois campos:
latest_sim_swap_at: data e hora em UTC (ISO 8601) da última troca de SIM realizada
is_swapped: indica se o cartão SIM foi trocado durante o período especificado
O variável phoneNumber é o número de telefone que você deseja verificar; é o que o usuário insere ao fazer login. A variável PERIOD especifica o número máximo de horas para verificar se o chip foi trocado (de 1 a 2400; o padrão é 240).
Se a resposta for bem-sucedida, o valor booleano no campo isSwapped indica se ocorreu uma troca de SIM durante o período 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);
}
} Criar o login
Para implementar o login, vamos criar um endpoint POST chamado /login que verifica se o nome de usuário e a senha inseridos estão corretos e, em seguida, realiza uma verificação de troca de SIM antes de conceder acesso.
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." });
}
});
Compilar o cliente
O arquivo client.js obterá as informações relevantes sobre os elementos HTML e as enviará aos endpoints do servidor criados para lidar com as verificações de login e troca de SIM. Seu servidor processa as respostas do SIM Swap Insight e repassa essas informações ao usuário por meio do seu front-end. Se o chip do usuário tiver sido trocado recentemente, informe-o e sugira ações imediatas, como entrar em contato com a operadora de celular.
Criar o arquivo de variáveis de ambiente
Crie um arquivo .env para o seu projeto e adicione as seguintes variáveis de ambiente. Sua VONAGE_PRIVATE_KEY pode ser o caminho para o seu arquivo de chave privada (por exemplo, ./private.key) ou o conteúdo bruto da chave como uma string. Consulte postagem no blog do Michael para obter uma explicação sobre como usar variáveis de ambiente no 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=
Criar o front-end
Crie um página index.html onde os usuários possam inserir suas credenciais para fazer login. Há um formulário para o usuário inserir seu nome de usuário e senha, além de um modal que aparece caso seja detectada uma troca de SIM, exibindo a mensagem: “Atenção! Foi detectada uma troca recente de cartão SIM na sua Account. Acesso negado.”
Experimente
Adicione uma porta para o servidor escutar, por exemplo, 3000.
//server.js
app.listen(3000, () => {
console.log("Server is running on port 3000");
});Execute o arquivo JavaScript do servidor para inicializar o aplicativo web.
node server.jsAcesse localhost:3000 e digite suas credenciais de login. Se o número de telefone associado a essa conta tiver sido alterado recentemente, você receberá um aviso e não conseguirá fazer o login. Caso contrário, você poderá fazer o login e acessar a página de resumo do banco.
Conclusão
Parabéns, você chegou ao final deste tutorial! Você aprendeu a usar o recurso SIM Swap Insight do Vonage Identity Insights para detectar se os números de telefone dos seus usuários foram trocados nos últimos dias. O que você aprendeu hoje é essencial para proteger contas online e prevenir ataques de troca de SIM, que podem levar à invasão de contas e à fraude.
É fascinante entender como funciona a troca de cartão SIM e como ela afeta as informações pessoais. Ao implementar métodos de autenticação multifatorial e estar ciente das táticas comuns de engenharia social, você pode proteger melhor a si mesmo e aos seus usuários contra esses golpes.
À medida que os celulares e as redes 5G se tornam mais comuns, fica ainda mais importante ficar atento à sua segurança. Verifique regularmente se há atividades incomuns no seu cartão SIM e tenha cuidado com as informações pessoais que você compartilha nas redes sociais e em Accounts online.
Tem alguma dúvida ou quer compartilhar o que está criando?
Inscreva-se no Boletim Informativo para Desenvolvedores
Siga-nos no X (antigo Twitter) para ficar por dentro das novidades
Assista aos tutoriais no nosso canal do YouTube
Conecte-se conosco na página de desenvolvedores da Vonage no LinkedIn
Fique conectado e acompanhe as últimas notícias, dicas e eventos para desenvolvedores.
Leitura complementar
Aprimore sua autenticação multifatorial com as APIs Verify e SIM Swap.
Experimente a API de rede Sandbox para começar a usar a API de troca de SIM.