Neste documento, mostramos como usar a proteção contra fraudes de cobrança por SMS do reCAPTCHA para detectar e impedir ataques de bombeamento de SMS em empresas que dependem de SMS para autenticação de dois fatores (2FA) ou verificação por telefone, que é um possível alvo de fraudes de cobrança por SMS.
A autenticação baseada em SMS (autenticação de dois fatores e login) é um padrão do setor para a segurança de login e de inscrição, mas não oferece proteção contra fraudes de cobrança por SMS ou de bombeamento de SMS. Antes de enviar um SMS, a proteção contra fraudes de cobrança por SMS do reCAPTCHA oferece uma pontuação de risco que indica a probabilidade de esse número de telefone cometer fraude de cobrança por SMS. Com base nessa pontuação, você pode permitir ou bloquear mensagens SMS fraudulentas antes que elas sejam enviadas ao seu provedor de SMS.
Para mais informações, consulte o blog Proteção contra fraudes de cobrança por SMS do reCAPTCHA.
Antes de começar
Dependendo se você já é usuário do reCAPTCHA ou se é novo nele, siga as instruções na guia apropriada:
Usuário do reCAPTCHA
Se você já é usuário do reCAPTCHA, ative a proteção contra fraudes de cobrança por SMS do reCAPTCHA no seu projeto do Google Cloud:
No console do Google Cloud, acesse a página reCAPTCHA.
Verifique se o nome do projeto aparece no seletor de recursos.
Se você não encontrar o nome do projeto, clique no seletor de recursos e selecione o projeto.
Clique em
Configurações.Se o defensor da conta do reCAPTCHA não estiver ativado para seu projeto, faça o seguinte:
- No painel Defesa de conta, clique em Ativar.
- Na caixa de diálogo Configure account defender, clique em Ativar.
No painel Proteção contra fraudes de cobrança por SMS, clique em Configurar.
Clique no botão Ativar e em Salvar.
Pode levar alguns minutos para que a ativação da proteção contra fraudes de cobrança por SMS do reCAPTCHA seja propagada nos nossos sistemas. Depois que a ativação do recurso for propagada para nossos sistemas, você vai começar a receber respostas relacionadas à proteção contra fraudes de cobrança por SMS do reCAPTCHA como parte das avaliações.
Novo usuário do reCAPTCHA
Se você não conhece o reCAPTCHA, faça o seguinte:
-
Dependendo se você quer usar a proteção contra fraudes de cobrança por SMS do reCAPTCHA em um site ou aplicativo para dispositivos móveis, siga estas etapas para integrar o reCAPTCHA:
Site
Aplicativo para dispositivos móveis
- Crie uma chave baseada em pontuação para seu app para dispositivos móveis.
- Integrar o reCAPTCHA a um app iOS ou Android
- Ative a proteção contra fraudes de cobrança por SMS do reCAPTCHA no seu projeto do Google Cloud:
No console do Google Cloud, acesse a página reCAPTCHA.
Verifique se o nome do projeto aparece no seletor de recursos.
Se você não encontrar o nome do projeto, clique no seletor de recursos e selecione o projeto.
Clique em
Configurações.Se o defensor da conta do reCAPTCHA não estiver ativado para seu projeto, faça o seguinte:
- No painel Defesa de conta, clique em Ativar.
- Na caixa de diálogo Configure account defender, clique em Ativar.
No painel Proteção contra fraudes de cobrança por SMS, clique em Configurar.
Clique no botão Ativar e em Salvar.
Pode levar alguns minutos para que a ativação da proteção contra fraudes de cobrança por SMS do reCAPTCHA seja propagada nos nossos sistemas. Depois que a ativação do recurso for propagada para nossos sistemas, você vai começar a receber respostas relacionadas à proteção contra fraudes de cobrança por SMS do reCAPTCHA como parte das avaliações.
Criar uma avaliação com o número de telefone
Para a proteção contra fraudes de SMS do reCAPTCHA, crie avaliações com o token gerado pela função execute()
e o número de telefone usando as bibliotecas de cliente do reCAPTCHA ou a API REST do seu back-end.
Este documento mostra como criar uma avaliação usando a API REST. Para saber como criar uma avaliação usando as bibliotecas de cliente, consulte Criar avaliações.
Antes de criar uma avaliação, faça o seguinte:
Configure a autenticação para o reCAPTCHA.
O método de autenticação escolhido depende do ambiente em que o reCAPTCHA está configurado. A tabela a seguir ajuda a escolher o método de autenticação adequado e a interface com suporte para configurá-la:
Ambiente Interface Método de autenticação Google Cloud - REST
- Bibliotecas de cliente
Use contas de serviço anexadas. No local ou em outro provedor de nuvem REST Use chaves de API ou a federação de identidade da carga de trabalho. Se você quiser usar chaves de API, recomendamos proteger as chaves de API aplicando restrições.
Bibliotecas de cliente Use o seguinte:
- Para Python ou Java, use chaves de API ou federação de identidade da carga de trabalho.
Se você quiser usar chaves de API, recomendamos proteger as chaves de API aplicando restrições.
- Para outros idiomas, use Federação de identidade da carga de trabalho.
Escolha um identificador de conta estável
accountId
que não seja alterado com frequência pelo usuário e forneça-o à avaliação no métodoprojects.assessments.create
. Esse identificador de conta estável precisa ter o mesmo valor para todos os eventos relacionados ao mesmo usuário. Você pode fornecer o seguinte como identificador da conta:Identificadores de usuários
Se cada conta puder ser associada exclusivamente a um nome de usuário, endereço de e-mail ou número de telefone estável, você poderá usá-lo como o
accountId
. Quando você fornece esses identificadores entre sites (identificadores que podem ser reutilizados em vários sites), o reCAPTCHA usa essas informações para melhorar a proteção das suas contas de usuário com base em modelos entre sites, sinalizando identificadores de contas abusivas e usando o conhecimento de padrões de abuso entre sites relacionados a esses identificadores.Como alternativa, se você tiver um ID de usuário interno associado exclusivamente a cada conta, poderá fornecê-lo como
accountId
.Criptografado ou com hash
Se você não tiver um ID de usuário interno associado exclusivamente a cada conta, poderá transformar qualquer identificador estável em um identificador de conta opaco e específico do site. Esse identificador ainda é necessário para que o Account Defender do reCAPTCHA entenda os padrões de atividade do usuário e detecte comportamentos anormais, mas ele não é compartilhado em outros sites.
Escolha qualquer identificador de conta estável e torne-o opaco antes de enviar para o reCAPTCHA usando criptografia ou hash:
criptografia (recomendada): criptografe o identificador da conta usando um método de criptografia determinístico que produz um texto criptografado estável. Para instruções detalhadas, consulte Como criptografar dados de forma determinística. Quando você escolhe a criptografia simétrica em vez do hash, não é necessário manter um mapeamento entre os identificadores de usuário e os identificadores opacos correspondentes. Descriptografar os identificadores opacos retornados pelo reCAPTCHA para transformá-los no identificador do usuário.
Hash: recomendamos gerar hash do identificador da conta usando o método SHA256-HMAC com uma opção de sal personalizada. Como os hashes são unidirecionais, é necessário manter um mapeamento entre os hashes gerados e os identificadores de usuário para que você possa mapear o identificador da conta hash retornado para as contas originais.
Adicione o parâmetro accountId
e o número de telefone no formato E.164 como
UserId
para
verificar na avaliação no método projects.assessments.create
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é seu ID do projeto no Google Cloud.
- TOKEN: token retornado da chamada
grecaptcha.enterprise.execute()
. - KEY_ID: a chave baseada na pontuação que você instalou no seu site.
- ACCOUNT_ID: um identificador exclusivo da conta de usuário do seu site.
- PHONE_NUMBER: o número de telefone que precisa ser verificado quanto à existência de malware. O número de telefone precisa estar no formato E.164 e não pode ser criptografado nem ter hash.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Corpo JSON da solicitação:
{ "event": { "token": "TOKEN", "siteKey": "KEY_ID", "userInfo": { "accountId": "ACCOUNT_ID", "userIds": [ { "phoneNumber": "PHONE_NUMBER" } ] } } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "event": { … }, "name": "ASSESSMENT_ID", "smsFraudAssessment": { "smsFraudRisk": 0.3 } }
A resposta que você recebe inclui a pontuação smsFraudRisk
no campo
smsFraudAssessment
. Quanto maior a pontuação, maior a probabilidade de o
número de telefone ser arriscado. Quanto menor a pontuação, maior a probabilidade de o número de telefone ser
legítimo.
Você é responsável pelas ações que tomar com base na avaliação.
Para a integração mais simples, defina limites em smsFraudRisk
para
contribuir com sua decisão.
Anotar a avaliação
Para acompanhar o tráfego de SMS e melhorar a detecção de fraude, você precisa anotar as avaliações em até 10 minutos após o envio do SMS ou após a verificação do número de telefone.
Para anotar uma avaliação, envie uma solicitação ao método
projects.assessments.annotate
com o ID da avaliação. No corpo da solicitação, inclua o
número de telefone no formato E.164 no campo phoneAuthenticationEvent
.
Para fazer anotações em uma avaliação, faça o seguinte:
Determine as informações e os rótulos a serem adicionados no corpo JSON da solicitação, dependendo do seu caso de uso.
A tabela a seguir lista os rótulos e valores que podem ser usados para anotar eventos:
Rótulo Descrição Exemplo de solicitação reasons
Obrigatório. Um rótulo para apoiar suas avaliações.
Forneça detalhes do evento em tempo real no rótulo
reasons
alguns segundos ou minutos após o evento, porque eles influenciam a detecção em tempo real.Valores possíveis:
INITIATED_TWO_FACTOR
: um código de verificação por SMS é enviado.PASSED_TWO_FACTOR
: o código de verificação foi verificado.FAILED_TWO_FACTOR
: o código de verificação é inválido.
{ "reasons": ["INITIATED_TWO_FACTOR"], "phoneAuthenticationEvent": { "phoneNumber": "+18005550175" } }
annotation
Opcional. Um rótulo para indicar a legitimidade das avaliações.
Forneça fatos sobre eventos de login e registro para validar ou corrigir suas avaliações de risco no rótulo
annotation
.Valores possíveis:
LEGITIMATE
ouFRAUDULENT
.Recomendamos enviar essas informações alguns segundos ou minutos após o evento, porque isso influencia a detecção em tempo real.
{ "annotation": "LEGITIMATE" }
Crie uma solicitação de anotação com os rótulos apropriados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- ASSESSMENT_ID: valor do campo
name
retornado pela chamadaprojects.assessments.create
. - ANNOTATION: opcional. Um rótulo para indicar se a avaliação é legítima ou fraudulenta.
- REASONS: motivos que justificam sua anotação. Para conferir a lista de valores possíveis, consulte valores de motivos.
- PHONE_NUMBER: o número de telefone que foi avaliado. O número de telefone precisa estar no formato E.164 e não pode ser criptografado nem ter hash.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
Corpo JSON da solicitação:
{ "annotation": ANNOTATION, "reasons": REASONS, "phoneAuthenticationEvent": { "phoneNumber": "PHONE_NUMBER" } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate"PowerShell
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate" | Select-Object -Expand ContentVocê receberá um código de status bem-sucedido (2xx) e uma resposta vazia.
- ASSESSMENT_ID: valor do campo
A seguir
- Saiba mais sobre os recursos de proteção de contas de usuário do reCAPTCHA.