Mendeteksi dan mencegah penipuan SMS

Dokumen ini menunjukkan cara menggunakan perlindungan terhadap penipuan pulsa SMS reCAPTCHA untuk mendeteksi dan mencegah serangan pumping SMS di bisnis yang mengandalkan SMS untuk autentikasi 2 langkah (2FA) atau verifikasi telepon, yang merupakan target potensial untuk penipuan pulsa SMS.

Autentikasi berbasis SMS (2FA dan login) adalah standar industri untuk keamanan login dan pendaftaran, tetapi tidak memberikan perlindungan terhadap penipuan pulsa SMS atau serangan pumping SMS. Sebelum Anda mengirim SMS, perlindungan terhadap penipuan pulsa SMS reCAPTCHA akan memberikan skor risiko yang menunjukkan kemungkinan nomor telepon tersebut melakukan penipuan pulsa SMS. Berdasarkan skor ini, Anda dapat mengizinkan atau memblokir pesan SMS penipuan sebelum dikirim ke penyedia SMS Anda.

Untuk informasi tambahan, lihat blog perlindungan penipuan pulsa SMS reCAPTCHA.

Sebelum memulai

Bergantung pada apakah Anda pengguna reCAPTCHA lama atau baru menggunakan reCAPTCHA, ikuti petunjuk di tab yang sesuai:

Pengguna reCAPTCHA yang sudah ada

Jika Anda sudah menjadi pengguna reCAPTCHA, aktifkan perlindungan terhadap penipuan pulsa SMS reCAPTCHA di project Google Cloud Anda:

  1. Di konsol Google Cloud, buka halaman reCAPTCHA.

    Buka reCAPTCHA

  2. Pastikan nama project Anda muncul di pemilih resource.

    Jika tidak melihat nama project, klik pemilih resource, lalu pilih project Anda.

  3. Klik Setelan.

  4. Jika pelindung akun reCAPTCHA tidak diaktifkan untuk project Anda, lakukan hal berikut:

    1. Di panel Pembela akun, klik Aktifkan.
    2. Dalam dialog Konfigurasi Account Defender, klik Aktifkan.
  5. Di panel SMS Toll Fraud Protection, klik Configure.

  6. Klik tombol Aktifkan, lalu klik Simpan.

    Mungkin perlu waktu beberapa menit agar pengaktifan perlindungan terhadap penipuan pulsa SMS reCAPTCHA diterapkan ke sistem kami. Setelah pengaktifan fitur diterapkan ke sistem kami, Anda akan mulai menerima respons terkait perlindungan penipuan SMS tol reCAPTCHA sebagai bagian dari penilaian.

Pengguna reCAPTCHA baru

Jika Anda baru menggunakan reCAPTCHA, lakukan hal berikut:

  1. Bergantung pada apakah Anda ingin menggunakan perlindungan terhadap penipuan pulsa SMS reCAPTCHA di situs atau aplikasi seluler, ikuti langkah-langkah berikut untuk mengintegrasikan reCAPTCHA:

  2. Aktifkan reCAPTCHA SMS toll fraud protection di project Google Cloud Anda:
    1. Di konsol Google Cloud, buka halaman reCAPTCHA.

      Buka reCAPTCHA

    2. Pastikan nama project Anda muncul di pemilih resource.

      Jika tidak melihat nama project, klik pemilih resource, lalu pilih project Anda.

    3. Klik Setelan.

    4. Jika pelindung akun reCAPTCHA tidak diaktifkan untuk project Anda, lakukan hal berikut:

      1. Di panel Pembela akun, klik Aktifkan.
      2. Dalam dialog Konfigurasi Account Defender, klik Aktifkan.
    5. Di panel SMS Toll Fraud Protection, klik Configure.

    6. Klik tombol Aktifkan, lalu klik Simpan.

      Mungkin perlu waktu beberapa menit agar pengaktifan perlindungan terhadap penipuan pulsa SMS reCAPTCHA diterapkan ke sistem kami. Setelah pengaktifan fitur diterapkan ke sistem kami, Anda akan mulai menerima respons terkait perlindungan penipuan SMS tol reCAPTCHA sebagai bagian dari penilaian.

Membuat penilaian dengan nomor telepon

Untuk perlindungan penipuan SMS tol reCAPTCHA, buat penilaian dengan token yang dihasilkan oleh fungsi execute() dan nomor telepon, menggunakan Library Klien reCAPTCHA atau REST API dari backend Anda.

Dokumen ini menunjukkan cara membuat penilaian menggunakan REST API. Untuk mempelajari cara membuat penilaian menggunakan Library Klien, lihat Membuat penilaian.

Sebelum membuat penilaian, lakukan hal berikut:

  • Siapkan autentikasi ke reCAPTCHA.

    Metode autentikasi yang Anda pilih bergantung pada lingkungan tempat reCAPTCHA disiapkan. Tabel berikut membantu Anda memilih metode autentikasi yang sesuai dan antarmuka yang didukung untuk menyiapkan autentikasi:

    Lingkungan Antarmuka Metode autentikasi
    Google Cloud
    • REST
    • Library klien
    Gunakan akun layanan terlampir.
    Lokal atau penyedia cloud lain REST Gunakan kunci API atau Workload identity federation.

    Jika Anda ingin menggunakan kunci API, sebaiknya amankan kunci API dengan menerapkan pembatasan kunci API.

    Library klien

    Gunakan resource berikut:

  • Pilih ID akun accountId yang stabil dan tidak sering diubah oleh pengguna dan berikan ke penilaian dalam metode projects.assessments.create. ID akun stabil ini harus memiliki nilai yang sama untuk semua peristiwa yang terkait dengan pengguna yang sama. Anda dapat memberikan hal berikut sebagai ID akun:

    ID pengguna

    Jika setiap akun dapat dikaitkan secara unik dengan nama pengguna, alamat email, atau nomor telepon yang stabil, Anda dapat menggunakannya sebagai accountId. Saat Anda memberikan ID lintas situs tersebut (ID yang dapat digunakan kembali di seluruh situs), reCAPTCHA menggunakan informasi ini untuk meningkatkan perlindungan bagi akun pengguna Anda berdasarkan model lintas situs dengan menandai ID akun yang melakukan penyalahgunaan dan menggunakan pengetahuan tentang pola penyalahgunaan lintas situs yang terkait dengan ID ini.

    Atau, jika Anda memiliki User-ID internal yang dikaitkan secara unik dengan setiap akun, Anda dapat memberikannya sebagai accountId.

    Di-hash atau dienkripsi

    Jika tidak memiliki ID pengguna internal yang secara unik dikaitkan dengan setiap akun, Anda dapat mengubah ID stabil menjadi ID akun spesifik per situs yang buram. ID ini masih diperlukan agar reCAPTCHA account defender dapat memahami pola aktivitas pengguna dan mendeteksi perilaku yang tidak normal, tetapi tidak dibagikan di situs lain.

    Pilih ID akun yang stabil dan buat buram sebelum dikirim ke reCAPTCHA dengan menggunakan enkripsi atau hashing:

    • enkripsi (direkomendasikan): mengenkripsi ID akun menggunakan metode enkripsi deterministik yang menghasilkan ciphertext yang stabil. Untuk petunjuk selengkapnya, lihat mengenkripsi data secara deterministik. Jika memilih enkripsi simetris daripada hashing, Anda tidak perlu menyimpan pemetaan antara ID pengguna dan ID pengguna buram yang sesuai. Dekripsi ID buram yang ditampilkan oleh reCAPTCHA untuk mengubahnya menjadi ID pengguna.

    • hashing: sebaiknya lakukan hashing pada ID akun menggunakan metode SHA256-HMAC dengan salt kustom pilihan Anda. Karena hash hanya bersifat satu arah, Anda perlu mempertahankan pemetaan antara hash yang dihasilkan dan ID pengguna agar dapat memetakan ID akun yang di-hash yang ditampilkan kembali ke akun asli.

Tambahkan parameter accountId dan nomor telepon dalam format E.164 sebagai UserId untuk diverifikasi dalam penilaian di metode projects.assessments.create.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Google Cloud Anda.
  • TOKEN: token yang ditampilkan dari panggilan grecaptcha.enterprise.execute().
  • KEY_ID: kunci berbasis skor yang Anda instal di situs.
  • ACCOUNT_ID: ID untuk akun pengguna yang unik untuk situs Anda.
  • PHONE_NUMBER: nomor telepon yang perlu diperiksa apakah berbahaya atau tidak. Nomor telepon harus dalam format E.164 dan tidak boleh di-hash atau dienkripsi.

Metode HTTP dan URL:

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

Isi JSON permintaan:


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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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

Anda akan melihat respons JSON seperti berikut:


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

Respons yang Anda terima menyertakan skor smsFraudRisk di kolom smsFraudAssessment . Makin tinggi skornya, makin besar kemungkinan nomor telepon berisiko; makin rendah skornya, makin besar kemungkinan nomor telepon merupakan nomor yang sah.

Anda bertanggung jawab atas tindakan yang Anda lakukan berdasarkan penilaian. Untuk integrasi yang paling sederhana, Anda dapat menetapkan nilai minimum pada smsFraudRisk untuk berkontribusi pada keputusan Anda.

Memberikan anotasi pada penilaian

Untuk melacak traffic SMS dan meningkatkan deteksi penipuan, Anda harus menambahkan anotasi pada penilaian dalam waktu 10 menit setelah SMS dikirim atau setelah nomor telepon berhasil diverifikasi.

Anda menganotasi penilaian dengan mengirim permintaan ke metode projects.assessments.annotate dengan ID penilaian. Dalam isi permintaan tersebut, sertakan nomor telepon dalam format E.164 di kolom phoneAuthenticationEvent.

Untuk menganotasi penilaian, lakukan hal berikut:

  1. Tentukan informasi dan label yang akan ditambahkan dalam isi JSON permintaan, bergantung pada kasus penggunaan Anda.

    Tabel berikut mencantumkan label dan nilai yang dapat Anda gunakan untuk menganotasi peristiwa:

    Label Deskripsi Contoh permintaan
    reasons

    Wajib. Label untuk mendukung penilaian Anda.

    Berikan detail peristiwa real-time di label reasons dalam beberapa detik atau menit setelah peristiwa karena hal ini memengaruhi deteksi real-time.

    Nilai yang memungkinkan:

    • INITIATED_TWO_FACTOR: kode verifikasi melalui SMS dikirim.
    • PASSED_TWO_FACTOR: kode verifikasi berhasil diverifikasi.
    • FAILED_TWO_FACTOR: kode verifikasi tidak valid.
        {
        "reasons": ["INITIATED_TWO_FACTOR"],
        "phoneAuthenticationEvent": {
          "phoneNumber": "+18005550175"
        }
      }
    annotation

    Opsional. Label untuk menunjukkan legitimasi penilaian.

    Berikan fakta tentang peristiwa login dan pendaftaran untuk memvalidasi atau memperbaiki penilaian risiko Anda di label annotation.

    Kemungkinan nilai: LEGITIMATE atau FRAUDULENT.

    Sebaiknya kirim informasi ini dalam beberapa detik atau menit setelah peristiwa karena hal ini memengaruhi deteksi real-time.

      {
       "annotation": "LEGITIMATE"
      }
      
  2. Buat permintaan anotasi dengan label yang sesuai.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • ASSESSMENT_ID: nilai kolom name yang ditampilkan dari panggilan projects.assessments.create.
    • ANNOTATION: Opsional. Label untuk menunjukkan apakah penilaian tersebut sah atau menipu.
    • REASONS: alasan yang mendukung anotasi Anda. Untuk mengetahui daftar kemungkinan nilai, lihat nilai alasan.
    • PHONE_NUMBER: nomor telepon yang dinilai. Nomor telepon harus dalam format E.164 dan tidak boleh di-hash atau dienkripsi.

    Metode HTTP dan URL:

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

    Isi JSON permintaan:

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

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    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

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $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

    Anda akan menerima kode status yang berhasil (2xx) dan respons kosong.

Langkah selanjutnya