Détecter et empêcher la fraude au SMS

Ce document explique comment utiliser la protection contre la fraude à la fraude par SMS et par SMS reCAPTCHA pour détecter et prévenir les attaques par pompage de SMS dans les entreprises qui s’appuient sur les SMS pour l'authentification à deux facteurs (A2F) ou la validation par téléphone, cible de fraude à la facturation par SMS.

L'authentification par SMS (authentification à deux facteurs et connexion) est une norme du secteur pour la sécurité de la connexion et de l'inscription, mais elle ne protège pas contre la fraude à la facturation par l'opérateur via SMS ni contre l'inflation artificielle du trafic. Avant que vous n'envoyiez un SMS, la protection contre la fraude par SMS de reCAPTCHA vous fournit avec un score de risque qui indique la probabilité que ce numéro de téléphone Fraude au paiement par SMS Sur la base de ce score, vous pouvez autoriser ou bloquer les SMS frauduleux avant d'être envoyés à votre opérateur de SMS.

Pour en savoir plus, consultez l'article de blog sur la protection contre la fraude à la facturation par l'opérateur via SMS offerte par reCAPTCHA.

Avant de commencer

Selon que vous êtes déjà un utilisateur de reCAPTCHA ou que vous découvrez reCAPTCHA, suivez les instructions de l'onglet approprié :

Utilisateur reCAPTCHA existant

Si vous utilisez déjà reCAPTCHA, activez la protection contre la fraude à la facturation par l'opérateur via SMS reCAPTCHA sur votre projet Google Cloud :

  1. Dans la console Google Cloud, accédez à la page reCAPTCHA.

    Accéder à reCAPTCHA

  2. Vérifiez que le nom de votre projet s'affiche dans le sélecteur de ressources.

    Si vous ne voyez pas le nom de votre projet, cliquez sur le sélecteur de ressources, puis sélectionnez votre projet.

  3. Cliquez sur Paramètres.

  4. Si l'outil Account Defender de reCAPTCHA n'est pas activé pour votre projet, procédez comme suit :

    1. Dans le volet Account Defender, cliquez sur Activer.
    2. Dans la boîte de dialogue Configurer le Défenseur du compte, cliquez sur Activer.
  5. Dans le volet Protection contre la fraude à la facturation par l'opérateur via SMS, cliquez sur Configurer.

  6. Cliquez sur le bouton Activer, puis sur Enregistrer.

    L'activation de la protection contre la fraude à la facturation par l'opérateur via SMS reCAPTCHA peut prendre quelques minutes pour se propager dans nos systèmes. Une fois la fonctionnalité activée vous devriez commencer à recevoir des réponses liées à la protection contre la fraude à la fraude par SMS de reCAPTCHA dans le cadre des évaluations.

Nouvel utilisateur de reCAPTCHA

Si vous débutez avec reCAPTCHA, procédez comme suit:

  1. Selon que vous souhaitez utiliser ou non la protection contre la fraude par SMS de reCAPTCHA sur un site Web ou un appareil mobile , procédez comme suit pour intégrer reCAPTCHA:

  2. Activez la protection contre la fraude à la facturation par l'opérateur via SMS reCAPTCHA sur votre projet Google Cloud :
    1. Dans la console Google Cloud, accédez à la page reCAPTCHA.

      Accéder à reCAPTCHA

    2. Vérifiez que le nom de votre projet s'affiche dans le sélecteur de ressources.

      Si vous ne voyez pas le nom de votre projet, cliquez sur le sélecteur de ressources, puis sélectionnez votre projet.

    3. Cliquez sur Paramètres.

    4. Si l'outil Account Defender de reCAPTCHA n'est pas activé pour votre projet, procédez comme suit :

      1. Dans le volet Account Defender, cliquez sur Activer.
      2. Dans la boîte de dialogue Configurer le Défenseur du compte, cliquez sur Activer.
    5. Dans le volet Protection contre la fraude à la facturation par l'opérateur via SMS, cliquez sur Configurer.

    6. Cliquez sur le bouton Activer, puis sur Enregistrer.

      L'activation de la protection contre la fraude à la facturation par l'opérateur via SMS reCAPTCHA peut prendre quelques minutes pour se propager dans nos systèmes. Une fois la fonctionnalité activée vous devriez commencer à recevoir des réponses liées à la protection contre la fraude à la fraude par SMS de reCAPTCHA dans le cadre des évaluations.

Créer une évaluation avec le numéro de téléphone

Pour la protection contre la fraude aux SMS par SMS reCAPTCHA, créez des évaluations avec le jeton générées par la fonction execute() et le numéro de téléphone, à l'aide de la méthode les bibliothèques clientes reCAPTCHA ou l'API REST à partir de votre backend.

Ce document explique comment créer une évaluation à l'aide de l'API REST. Pour savoir comment créer une évaluation à l'aide des bibliothèques clientes, consultez Créer des évaluations.

Avant de créer une évaluation, procédez comme suit:

  • Configurez l'authentification auprès de reCAPTCHA.

    La méthode d'authentification que vous choisissez dépend de l'environnement dans lequel reCAPTCHA est configuré. Le tableau suivant vous aide à choisir la méthode d'authentification appropriée et l'interface compatible pour configurer l'authentification :

    Environnement Interface Méthode d'authentification
    Google Cloud
    • REST
    • Bibliothèques clientes
    Utilisez des comptes de service associés.
    Sur site ou auprès d'un autre fournisseur cloud REST Utilisez des clés API ou la fédération d'identité de charge de travail.

    Si vous souhaitez utiliser des clés API, nous vous recommandons de les sécuriser en appliquant des restrictions de clé API.

    Bibliothèques clientes

    Utilisez les ressources suivantes :

  • Choisissez un identifiant de compte accountId stable qui n'est pas souvent modifié par l'utilisateur et fournissez-le à l'évaluation dans la méthode projects.assessments.create. Cet identifiant de compte stable doit avoir la même valeur pour tous les événements liés au même utilisateur. Vous pouvez indiquer les éléments suivants comme compte identifiant:

    Identifiants utilisateur

    Si chaque compte peut être associé de manière unique à un nom d'utilisateur, une adresse e-mail ou un numéro de téléphone stables vous pouvez l'utiliser comme accountId. Lorsque vous fournissez des données (identifiants qui peuvent être réutilisés sur plusieurs sites), reCAPTCHA utilise des informations permettant d'améliorer la protection de vos comptes utilisateur en s'appuyant sur des modèles intersites Signalement des identifiants de compte abusifs et utilisation de la connaissance des schémas d'abus intersites liés à ces identifiants.

    Si vous disposez d'un ID utilisateur interne associé de manière unique à chaque compte, vous pouvez indiquez-le comme accountId.

    Hachées ou chiffrées

    Si vous ne disposez pas d'un ID utilisateur interne associé de manière unique à chaque compte, vous pouvez transformer n'importe quel identifiant stable en identifiant de compte opaque propre au site. Cet identifiant est encore nécessaire pour permettre à reCAPTCHA Account Defender de comprendre l'activité des utilisateurs et de détecter les comportements anormaux. En revanche, ces données ne sont pas partagées avec les autres sites.

    Choisissez un identifiant de compte stable et rendez-le opaque avant de l'envoyer à reCAPTCHA en à l'aide du chiffrement ou du hachage:

    • Chiffrement (recommandé) : chiffrez l'identifiant de compte à l'aide d'une méthode de chiffrement déterministe qui produit un texte chiffré stable. Pour obtenir des instructions détaillées, consultez la section Chiffrer les données de manière déterministe. Lorsque vous choisissez le chiffrement symétrique plutôt que le hachage, vous n'avez pas besoin conservez la correspondance entre vos identifiants utilisateur et les identifiants utilisateur opaques correspondants. Déchiffrez les identifiants opaques renvoyés par reCAPTCHA pour les transformer en identifiant utilisateur.

    • hachage: nous vous recommandons de hacher l'identifiant de compte à l'aide de la méthode SHA256-HMAC, une valeur salt personnalisée de votre choix. Comme les hachages sont à sens unique, vous devez conserver un mappage entre les hachages générés et vos identifiants utilisateur afin de mapper les valeurs identifiant de compte qui sont renvoyés aux comptes d'origine.

Ajoutez le paramètre accountId et le numéro de téléphone au format E.164 en tant que UserId à valider dans l'évaluation dans la méthode projects.assessments.create.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet Google Cloud.
  • TOKEN : jeton renvoyé par l'appel grecaptcha.enterprise.execute().
  • KEY_ID : clé basée sur le score que vous avez installée sur votre site Web.
  • ACCOUNT_ID: identifiant d'un compte utilisateur propre à votre site Web.
  • PHONE_NUMBER : numéro de téléphone à vérifier pour détecter toute activité malveillante. Le numéro de téléphone doit être au format E.164 et ne doit pas être haché ni chiffré.

Méthode HTTP et URL :

POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments

Corps JSON de la requête :


{
  "event": {
    "token": "TOKEN",
    "siteKey": "KEY_ID",
    "userInfo": {
      "accountId": "ACCOUNT_ID",
      "userIds": [
        {
          "phoneNumber": "PHONE_NUMBER"
        }
      ]
    }
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :


{
  "event": {
     …
  },
  "name": "ASSESSMENT_ID",
  "smsFraudAssessment": {
    "smsFraudRisk": 0.3
  }
}

La réponse que vous recevez inclut le score smsFraudRisk dans le champ smsFraudAssessment . Plus le score est élevé, plus le numéro de téléphone est risqué. Plus le score est faible, plus le numéro de téléphone est légitime.

Vous êtes responsable des actions que vous effectuez sur la base de l'évaluation. Pour une intégration plus simple, vous pouvez définir des seuils sur smsFraudRisk pour contribuer à votre décision.

Annoter l'évaluation

Pour effectuer le suivi du trafic SMS et améliorer la détection des fraudes, vous devez annoter les évaluations dans les 10 minutes suivant l'envoi du SMS. une fois le numéro de téléphone validé.

Pour annoter une évaluation, envoyez une requête à la méthode projects.assessments.annotate avec l'ID de l'évaluation. Dans le corps de cette requête, incluez le numéro de téléphone au format E.164 dans le champ phoneAuthenticationEvent.

Pour annoter une évaluation, procédez comme suit :

  1. Déterminer les informations et les étiquettes à ajouter dans le corps JSON de la requête selon votre cas d'utilisation.

    Le tableau suivant répertorie les étiquettes et les valeurs que vous pouvez utiliser pour annoter événements:

    Libellé Description Exemple de requête
    reasons

    Obligatoire. Un libellé pour étayer vos évaluations.

    Fournissez les détails des événements en temps réel dans la Libellé reasons quelques secondes ou minutes après l'événement car elles influencent la détection en temps réel.

    Valeurs possibles :

    • INITIATED_TWO_FACTOR : un code de validation est envoyé par SMS.
    • PASSED_TWO_FACTOR : le code de validation a bien été validé.
    • FAILED_TWO_FACTOR : le code de validation est incorrect.
        {
        "reasons": ["INITIATED_TWO_FACTOR"],
        "phoneAuthenticationEvent": {
          "phoneNumber": "+18005550175"
        }
      }
    annotation

    Facultatif. Libellé indiquant la légitimité des évaluations.

    Fournissez des informations sur les événements de connexion et d'enregistrement pour valider ou corriger vos évaluations des risques dans le libellé annotation.

    Valeurs possibles : LEGITIMATE ou FRAUDULENT.

    Nous vous recommandons d'envoyer ces informations dans quelques secondes ou minutes. après l'événement, car il influence la détection en temps réel.

      {
       "annotation": "LEGITIMATE"
      }
      
  2. Créez une requête d'annotation avec les libellés appropriés.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • ASSESSMENT_ID: valeur du champ name renvoyé par l'appel projects.assessments.create.
    • ANNOTATION : facultatif. Étiquette indiquant si l'évaluation est légitime ou frauduleuse.
    • REASONS : raisons qui justifient votre annotation. Pour la liste des valeurs possibles, voir reasons values.
    • PHONE_NUMBER : numéro de téléphone évalué. Le numéro de téléphone doit être au format E.164, et il ne doit pas être haché ni chiffré.

    Méthode HTTP et URL :

    POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate

    Corps JSON de la requête :

    {
      "annotation": ANNOTATION,
      "reasons": REASONS,
      "phoneAuthenticationEvent": {
        "phoneNumber": "PHONE_NUMBER"
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    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

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $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 Content

    Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

Étape suivante