Questo documento mostra come utilizzare SMS defense per rilevare e prevenire gli attacchi di tipo SMS pumping nelle attività che si basano sugli SMS per l'autenticazione a due fattori (2FA) o la verifica telefonica, che è un potenziale obiettivo della frode tariffaria SMS.
L'autenticazione basata su SMS (autenticazione a due fattori e accesso) è uno standard di settore per la sicurezza di accesso e registrazione, ma non fornisce protezione contro la frode tariffaria SMS o la frode di tipo "SMS pumping". Prima di inviare un SMS, SMS defense ti fornisce un punteggio di rischio che indica la probabilità che quel numero di telefono commetta frodi tariffarie tramite SMS. In base a questo punteggio, puoi consentire o bloccare gli SMS fraudolenti prima che vengano inviati al tuo fornitore di servizi SMS.
Il punteggio di rischio di SMS defense funziona in modo inverso rispetto al punteggio globale di reCAPTCHA. Un punteggio di rischio di SMS defense pari a 0,0 indica una bassa probabilità che si verifichi una frode tariffaria tramite SMS, mentre un punteggio di rischio pari a 1,0 indica un'alta probabilità che si verifichi una frode tariffaria tramite SMS. Per saperne di più sui punteggi reCAPTCHA, consulta Interpretare i test per i siti web. Se utilizzi Firebase Authentication o Identity Platform, consulta la documentazione di Identity Platform.
Per ulteriori informazioni, consulta il blog su SMS defense.
Prima di iniziare
A seconda che tu sia un utente esistente di reCAPTCHA o un nuovo utente, segui le istruzioni nella scheda appropriata:
Utente reCAPTCHA esistente
Se sei un utente esistente di reCAPTCHA, abilita SMS defense nel tuo progetto Google Cloud :
Nella console Google Cloud , vai alla pagina reCAPTCHA.
Verifica che il nome del tuo progetto venga visualizzato nel selettore di risorse.
Se non vedi il nome del tuo progetto, fai clic sul selettore di risorse e poi seleziona il tuo progetto.
Fai clic su Impostazioni.
Nel riquadro SMS defense, fai clic su Configura.
Fai clic sul pulsante di attivazione/disattivazione Attiva e poi su Salva.
Potrebbero essere necessari alcuni minuti prima che l'attivazione di SMS defense venga propagata ai nostri sistemi. Una volta che l'attivazione della funzionalità viene propagata ai nostri sistemi, dovresti iniziare a ricevere risposte relative a SMS defense nell'ambito delle valutazioni.
Nuovo utente reCAPTCHA
Se non hai mai utilizzato reCAPTCHA, procedi nel seguente modo:
-
A seconda che tu voglia utilizzare SMS defense su un sito web o un'applicazione mobile, segui questi passaggi per integrare reCAPTCHA:
Sito web
App per dispositivi mobili
- Crea una chiave basata sul punteggio per la tua applicazione mobile.
- Integra reCAPTCHA con un'app per iOS o un'app per Android
- Abilita
SMS Defense nel tuo progetto Google Cloud :
Nella console Google Cloud , vai alla pagina reCAPTCHA.
Verifica che il nome del tuo progetto venga visualizzato nel selettore di risorse.
Se non vedi il nome del tuo progetto, fai clic sul selettore di risorse e poi seleziona il tuo progetto.
Fai clic su Impostazioni.
Nel riquadro SMS defense, fai clic su Configura.
Fai clic sul pulsante di attivazione/disattivazione Attiva e poi su Salva.
Potrebbero essere necessari alcuni minuti prima che l'attivazione di SMS defense venga propagata ai nostri sistemi. Una volta che l'attivazione della funzionalità viene propagata ai nostri sistemi, dovresti iniziare a ricevere risposte relative a SMS defense nell'ambito delle valutazioni.
Crea una valutazione con il numero di telefono
Per la SMS defense, crea valutazioni con il token generato dalla funzione execute() e il numero di telefono utilizzando le librerie client reCAPTCHA o l'API REST dal backend.
Questo documento mostra come creare un test utilizzando l'API REST. Per scoprire come creare una valutazione utilizzando le librerie client, consulta Creare valutazioni.
Prima di creare un test, segui questi passaggi:
Configura l'autenticazione in reCAPTCHA.
Il metodo di autenticazione che scegli dipende dall'ambiente in cui è configurato reCAPTCHA. La seguente tabella ti aiuta a scegliere il metodo di autenticazione appropriato e l'interfaccia supportata per configurare l'autenticazione:
Ambiente Interfaccia Metodo di autenticazione Google Cloud - REST
- Librerie client
Utilizza i service account collegati. On-premise o su un altro cloud provider REST Utilizza le chiavi API o la federazione delle identità per i workload. Se vuoi utilizzare le chiavi API, ti consigliamo di proteggerle applicando limitazioni alle chiavi API.
Librerie client Utilizza quanto segue:
- Per Python o Java, utilizza le chiavi API o la federazione delle identità per i carichi di lavoro.
Se vuoi utilizzare le chiavi API, ti consigliamo di proteggerle applicando limitazioni alle chiavi API.
- Per le altre lingue, utilizza la federazione delle identità per i workload.
Scegli un identificatore di account stabile
accountIdche non venga modificato spesso dall'utente e forniscilo alla valutazione nel metodoprojects.assessments.create. Questo identificatore di account stabile deve avere lo stesso valore per tutti gli eventi correlati allo stesso utente. Puoi fornire i seguenti elementi come identificatore dell'account:Identificatori utente
Se ogni account può essere associato in modo univoco a un nome utente, un indirizzo email o un numero di telefono stabile, puoi utilizzarlo come
accountId. Quando fornisci questi identificatori cross-site (identificatori che possono essere riutilizzati su più siti), reCAPTCHA utilizza queste informazioni per migliorare la protezione dei tuoi account utente in base a modelli cross-site contrassegnando gli identificatori di account illeciti e utilizzando la conoscenza dei pattern di abuso cross-site correlati a questi identificatori.In alternativa, se hai un ID utente interno associato in modo univoco a ogni account, puoi fornirlo come
accountId.Sottoposto ad hashing o criptato
Se non disponi di un ID utente interno associato in modo univoco a ogni account, puoi trasformare qualsiasi identificatore stabile in un identificatore di account opaco specifico per il sito. Questo identificatore è ancora necessario a reCAPTCHA Account Defender per comprendere i pattern di attività utente e rilevare comportamenti anomali, ma non viene condiviso con altri siti.
Scegli un identificatore di account stabile e rendilo opaco prima di inviarlo a reCAPTCHA utilizzando la crittografia o l'hashing:
crittografia (consigliata): cripta l'identificatore dell'account utilizzando un metodo di crittografia deterministico che produce un testo cifrato stabile. Per istruzioni dettagliate, consulta Criptare i dati in modo deterministico. Quando scegli la crittografia simmetrica anziché l'hashing, non devi mantenere una mappatura tra gli identificatori utente e gli identificatori utente opachi corrispondenti. Decripta gli identificatori opachi restituiti da reCAPTCHA per trasformarli nell'identificatore utente.
hashing: ti consigliamo di eseguire l'hashing dell'identificatore dell'account utilizzando il metodo SHA256-HMAC con un sale personalizzato a tua scelta. Poiché gli hash sono unidirezionali, devi mantenere una mappatura tra gli hash generati e gli identificatori utente in modo da poter mappare l'identificatore dell'account sottoposto ad hashing restituito agli account originali.
Aggiungi il parametro accountId e il numero di telefono nel formato E.164 come
UserId da
verificare nella valutazione nel metodo projects.assessments.create.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- PROJECT_ID: il tuo ID progetto Google Cloud .
- TOKEN: token restituito dalla chiamata
grecaptcha.enterprise.execute(). - KEY_ID: la chiave basata sul punteggio che hai installato sul tuo sito web.
- ACCOUNT_ID: un identificatore per un account utente univoco per il tuo sito web.
- PHONE_NUMBER: il numero di telefono da controllare per verificare la presenza di attività dannose. Il numero di telefono deve essere nel formato E.164 e non deve essere sottoposto ad hashing o criptato.
Metodo HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Corpo JSON della richiesta:
{
"event": {
"token": "TOKEN",
"siteKey": "KEY_ID",
"userInfo": {
"accountId": "ACCOUNT_ID",
"userIds": [
{
"phoneNumber": "PHONE_NUMBER"
}
]
}
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{
"event": {
…
},
"name": "ASSESSMENT_ID",
"phoneFraudAssessment": {
"smsTollFraudVerdict": {
"risk": 0.3
}
}
}
La risposta che ricevi include il punteggio risk nel campo phoneFraudAssessment.smsTollFraudVerdict . Più alto è il punteggio, più è probabile che il numero di telefono sia rischioso; più basso è il punteggio, più è probabile che il numero di telefono sia legittimo.
Sei responsabile delle azioni che intraprendi in base alla valutazione.
Per l'integrazione più semplice, puoi impostare soglie su
phoneFraudAssessment.smsTollFraudVerdict.risk per contribuire alla tua decisione.
Annotare la valutazione
Per monitorare il traffico SMS e migliorare il rilevamento delle frodi, devi annotare le valutazioni entro 10 minuti dall'invio dell'SMS o dopo la verifica riuscita del numero di telefono.
Per annotare una valutazione, invia una richiesta al metodo
projects.assessments.annotate
con l'ID valutazione. Nel corpo della richiesta, includi il numero di telefono in formato E.164 nel campo phoneAuthenticationEvent.
Per annotare un test:
Determina le informazioni e le etichette da aggiungere al corpo JSON della richiesta a seconda del caso d'uso.
La tabella seguente elenca le etichette e i valori che puoi utilizzare per annotare gli eventi:
Etichetta Descrizione Esempio di richiesta reasonsObbligatorio. Un'etichetta per supportare le tue valutazioni.
Fornisci i dettagli degli eventi in tempo reale nell'etichetta
reasonspochi secondi o minuti dopo l'evento perché influiscono sul rilevamento in tempo reale.Valori possibili:
INITIATED_TWO_FACTOR: viene inviato un codice di verifica tramite SMS.PASSED_TWO_FACTOR: il codice di verifica è stato verificato correttamente.FAILED_TWO_FACTOR: il codice di verifica non è valido.
{ "reasons": ["INITIATED_TWO_FACTOR"], "phoneAuthenticationEvent": { "phoneNumber": "+18005550175" } }annotationFacoltativo. Un'etichetta per indicare la legittimità delle valutazioni.
Fornisci informazioni sugli eventi di accesso e registrazione per convalidare o correggere le tue valutazioni del rischio nell'etichetta
annotation.Valori possibili:
LEGITIMATEoFRAUDULENT.Ti consigliamo di inviare queste informazioni pochi secondi o minuti dopo l'evento, perché influiscono sul rilevamento in tempo reale.
{ "annotation": "LEGITIMATE" }Crea una richiesta di annotazione con le etichette appropriate.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- ASSESSMENT_ID: valore del campo
namerestituito dalla chiamataprojects.assessments.create. - ANNOTATION: (Facoltativo) Un'etichetta per indicare se la valutazione è legittima o fraudolenta.
- REASONS: i motivi a supporto dell'annotazione. Per l'elenco dei valori possibili, vedi valori dei motivi.
- PHONE_NUMBER: il numero di telefono valutato. Il numero di telefono deve essere nel formato E.164 e non deve essere sottoposto ad hashing o criptato.
Metodo HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
Corpo JSON della richiesta:
{ "annotation": ANNOTATION, "reasons": REASONS, "phoneAuthenticationEvent": { "phoneNumber": "PHONE_NUMBER" } }Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json, quindi esegui il comando seguente: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
Salva il corpo della richiesta in un file denominato
request.json, quindi esegui il comando seguente:$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 ContentDovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.
- ASSESSMENT_ID: valore del campo
Passaggi successivi
- Scopri di più sulle funzionalità di protezione degli account utente di reCAPTCHA.