Cara mencuri uang dari kartu contactless dan Apple Pay

Bagaimana cara menyimpan uang dari kartu contactless dari saku Anda?  Seberapa amankah PayPass dan Apple Pay?

Artikel ini membahas mitos dan skenario penipuan pembayaran tanpa kontak menggunakan contoh terminal POS nyata, kartu PayPass / payWave dan telepon dengan fungsi Google Pay / Apple Pay.

Topik yang dibahas:

  • Apakah benar-benar mungkin untuk mencuri uang dengan menyandarkan terminal POS saya di saku saya? - Kami akan mencoba untuk mereproduksi sepenuhnya skenario penipuan ini dari awal hingga akhir, menggunakan terminal POS nyata dan kartu pembayaran dalam kondisi nyata.
  • Apa perbedaan antara kartu Apple Pay fisik dan virtual? - cara kartu fisik dan token Apple Pay ditautkan, dan mengapa Apple Pay jauh lebih aman daripada kartu biasa.
  • Kami menggunakan perangkat keras NFC sniffer (ISO 14443A) - kami akan menggunakan perangkat HydraNFC untuk memotong data antara terminal POS dan kartu. Pertimbangkan data sensitif apa yang dapat diekstraksi dari lalu lintas yang dicegat.
  • Kami menganalisis protokol EMV - data apa yang ditukar kartu dengan terminal POS, format permintaan yang digunakan, mekanisme untuk melindungi terhadap penipuan dan serangan replay.
  • Kami mempelajari operasi tanpa kartu (CNP, MO / TO) - dalam kasus apa sebenarnya (!) Anda dapat mencuri uang dari kartu, hanya memiliki detail yang dibaca tanpa kontak, dan di mana itu tidak mungkin.

Perhatian!

Artikel ini menjelaskan secara rinci skema hipotetis penipuan, dari awal hingga akhir, melalui mata seorang penipu, untuk mencakup semua aspek di mana mitos dan kesalahan dikembangkan. Terlepas dari judul yang provokatif, kesimpulan utama artikel ini adalah bahwa pembayaran tanpa kontak cukup aman, dan serangan terhadap mereka memakan waktu dan tidak menguntungkan .

Materi dalam artikel disajikan hanya untuk tujuan informasi. Semua adegan penipuan dipentaskan dan dieksekusi dengan persetujuan pihak-pihak yang terlibat. Semua uang yang dipotong dari kartu dikembalikan ke pemiliknya. Pencurian uang kartu adalah tindak pidana dan dapat dihukum oleh hukum.

Bagaimana cara kerjanya?


Untuk memulai, pertimbangkan konsep dasar: setiap pergerakan uang menggunakan kartu pembayaran hanya dimungkinkan melalui perantara yang terhubung ke sistem pembayaran, seperti VISA atau MasterCard. Tidak seperti transfer antar individu, debit uang dari kartu hanya tersedia untuk badan hukum (pedagang) dengan perjanjian akuisisi dengan bank.


Tahapan transaksi ketika membayar melalui terminal POS

Ilustrasi di atas menunjukkan skema pembayaran klasik melalui terminal POS. Ini adalah urutan tindakan yang terjadi ketika setelah pembayaran di kasir Anda sedang menunggu konfirmasi di terminal.

  1. Pembeli menerapkan / menahan / memasukkan kartu ke dalam terminal POS;
  2. Terminal POS mengirimkan data ke bank yang mengakuisisi melalui Internet;
  3. Bank yang mengakuisisi melalui sistem pembayaran internasional (MPS) menghubungi bank penerbit dan menanyakan apakah pemegang kartu tertentu dapat membayar pembelian tersebut;
  4. Bank penerbit mengkonfirmasi atau menolak pembelian, setelah slip dicetak (cek kedua).

Ada pengecualian untuk skema ini, misalnya, transaksi offline, kami akan mempertimbangkannya lebih lanjut. Juga, jika bank yang mengakuisisi dan bank yang menerbitkan adalah bank yang sama, langkah 2 dan 4 dilakukan dalam bank yang sama.

Penjual (Pedagang) - orang atau organisasi yang menyediakan barang atau jasa

Acquiring bank adalah bank yang menyediakan penjual dengan layanan penerimaan pembayaran melalui kartu bank. Di bank ini, biasanya, ada rekening bank penjual di mana uang yang didebit dari kartu dikreditkan.

Penerbit bank - bank yang mengeluarkan kartu. Berisi akun pemegang kartu, dari mana uang didebit.

Sistem Pembayaran Internasional (MPS) adalah sistem perantara internasional antara bank-bank di seluruh dunia yang memungkinkan bank untuk membuat penyelesaian di antara mereka sendiri tanpa membuat perjanjian dengan masing-masing bank secara terpisah. Semua bank yang terhubung dengan Kementerian Kereta Api setuju untuk bekerja sesuai dengan aturan yang sama, yang sangat menyederhanakan interaksi. Misalnya, Visa, MasterCard, UnionPay, American Express, MIR (tidak, MIR tidak bekerja di luar negeri).

Pemegang Kartu - orang yang telah menandatangani perjanjian layanan kartu dengan bank penerbit.

Apa perbedaan antara kartu biasa dari Apple Pay atau Google Pay?


Prosedur untuk menghubungkan kartu bank ke sistem Apple Pay atau Google Pay karena proses yang tidak dapat dipahami sering menimbulkan kesalahpahaman bahkan di kalangan profesional TI. Saya telah mendengar banyak mitos berbeda tentang teknologi ini.

Mitos Bayar Apple Populer


  • Kartu disalin ke telepon
    Ini tidak demikian, kartu mikroprosesor berisi area memori yang dilindungi dengan informasi kriptografi yang tidak dapat diekstraksi setelah kartu dikeluarkan. Karena itu, kartu chip tidak dapat disalin, dengan cara apa pun, sama sekali. Dalam keadilan, harus dikatakan bahwa serangan semacam itu mungkin terjadi, tetapi biayanya melebihi jumlah total uang yang akan dihabiskan sebagian besar pembaca artikel ini sepanjang hidup mereka.
  • Setiap kali telepon terhubung ke Internet selama pembayaran
    Google Pay / Apple Pay tidak terhubung ke Internet selama pembayaran melalui terminal POS. Semua informasi yang diperlukan disimpan secara lokal di telepon.
  • Nomor kartu (PAN) baru dihasilkan untuk setiap pembayaran
    Mungkin terlihat begitu jika Anda membaca siaran pers Apple tentang teknologi Apple Pay. Tapi ini adalah interpretasi yang salah dari konsep token. Bahkan, detail kartu virtual tetap tidak berubah untuk waktu yang lama, Anda dapat memeriksanya dengan angka terakhir dari nomor kartu dalam slip (cek bank) saat membayar pembelian.
  • Saat membayar melalui Apple Pay / Google Pay, dikenakan biaya tambahan
    Ini tidak demikian, Anda akan membayar persis seperti yang ditunjukkan pada label harga, dan sesuai dengan ketentuan perjanjian Anda dengan bank penerbit kartu yang Anda tautkan.
  • Uang bisa didebet dua kali
    Mitos ini berlaku tidak hanya untuk Google Pay / Apple Pay, tetapi juga untuk kartu bank biasa. Saya percaya itu muncul karena sistem pembayaran angkutan umum, di mana terminal mengurangi uang dari tiket setiap kali disajikan, sehingga Anda dapat mendebit dua kali atau lebih jika Anda membawa kartu secara tidak akurat. Dalam kasus terminal POS, risiko ini tidak ada, karena terminal berhenti bertukar dengan kartu segera setelah menerima data yang diperlukan.



Mengaitkan kartu fisik dengan token di telepon

Sistem seperti Apple Pay ditenagai oleh Spesifikasi Tokenisasi Pembayaran EMV . Prosedur untuk mengaitkan kartu fisik dan telepon dengan Apple Pay belum dijelaskan secara publik, jadi kami akan menganalisis proses berdasarkan data yang diketahui:

  1. Penyedia (Google, Apple, Samsung) menerima informasi peta;
  2. Melalui MPS, penyedia meminta apakah kartu ini (bank penerbit ini) mendukung Tokenisasi EMV;
  3. Di sisi MPS, kartu virtual (token) dihasilkan, yang diunduh ke penyimpanan aman di telepon. Saya tidak tahu di mana tepatnya kunci pribadi dari kartu virtual dihasilkan, apakah itu dikirim melalui Internet atau dibuat secara lokal di telepon, dalam hal ini tidak masalah.
  4. Kartu token virtual yang dihasilkan muncul di telepon, operasi yang diinterpretasikan oleh bank penerbit sebagai operasi pada kartu fisik pertama. Dalam hal memblokir kartu fisik, token juga diblokir.


Apple Pay memungkinkan Anda membaca detail kartu virtual. Nomor PAN dan tanggal kedaluwarsa berbeda dari kartu tertaut dari Alfa-Bank Rusia. BIN kartu virtual (480099) ditentukan oleh BANK AMERIKA MBNA.

Saat membayar melalui telepon, terminal POS melihat VISA atau MasterCard biasa, dan berkomunikasi dengannya seperti halnya dengan kartu fisik. Kartu token virtual berisi semua atribut kartu biasa: nomor PAN, tanggal kedaluwarsa, dll. Pada saat yang sama, nomor kartu virtual dan masa berlaku berbeda dari kartu asli terlampir.

Skenario 1 - terminal POS biasa



Penipu terminal POS

Plot penipuan paling populer di benak orang biasa: penipu dengan terminal yang dihidupkan ditekan terhadap mereka di kerumunan dan menghapus uang. Kami akan mencoba mereproduksi skenario ini dalam kenyataan.

Syaratnya adalah sebagai berikut :

  • Penipu memiliki terminal POS biasa yang berfungsi penuh yang terhubung ke bank pengakuisisi, sama seperti di toko dan kurir. Firmware terminal tidak dimodifikasi. Dalam kasus kami - Ingenico iWL250. Ini adalah terminal POS portabel dengan modem GPRS yang mendukung pembayaran tanpa kontak, beroperasi dengan daya baterai dan sepenuhnya mobile.
  • Penipu tidak menggunakan cara teknis tambahan, hanya terminal POS
  • Dana yang didebit dikreditkan ke rekening giro penipu, sesuai dengan semua aturan sistem perbankan

Badan hukum




Pertama, kita membutuhkan badan hukum dengan akun berjalan dan mengakuisisi terhubung. Kami, seperti scammers nyata, tidak akan melihat apa pun atas nama kami, tetapi mencoba untuk membeli badan hukum siap pakai. orang di situs untuk scammers yang sama. Untuk melakukan ini, lihat iklan di halaman pertama Google untuk "beli ip" dan "beli ooo".


Menawarkan untuk menjual perusahaan siap pakai dari penipu (dapat diklik)

Harga sebuah perusahaan di pasar gelap dengan akun lancar berkisar antara 20 hingga 300 ribu rubel. Saya berhasil menemukan beberapa penawaran LLC dengan terminal POS dari 200 ribu rubel. Perusahaan semacam itu dibingkai oleh boneka, dan pembeli menerima seluruh paket dokumen, bersama dengan "kartu cache" - ini adalah kartu bank yang diikat ke akun penyelesaian perusahaan boneka. Dengan kartu seperti itu, penipu dapat menguangkan uang di ATM.

Untuk mempermudah, kami menganggap bahwa mengakuisisi LLC + rekening bank + dan terminal POS akan membebani penipu 100.000 rubel . Sebenarnya lebih banyak, tetapi kita akan menyederhanakan kehidupan scammer hipotetis kita, mengurangi biaya serangan. Bagaimanapun, semakin rendah biaya serangan, semakin mudah untuk diimplementasikan.

Mari kita curi uang


Jadi, penipu mendapatkan terminal POS dan siap untuk pergi ke tempat yang ramai untuk bersandar pada korban dan mencuri uang dari sakunya. Dalam percobaan kami, semua korban sudah diinstruksikan tentang niat kami, dan semua upaya untuk menghapus uang dilakukan dengan persetujuan mereka. Dalam kasus di mana subjek tidak memiliki kartu bank contactless mereka sendiri, mereka diminta untuk memasukkan kartu kami di dompet mereka. Sebelumnya, subjek mengetahui persis di mana dan bagaimana mereka menyimpan kartu mereka, sehingga penipu tahu sebelumnya di mana kartu contactless berada di dalam tas / saku.


Video: penipu mengamuk di pusat perbelanjaan

Dalam hal penghapusan yang berhasil, transaksi dibatalkan melalui menu terminal, dan uang dikembalikan ke akun subyek. Untuk keseluruhan durasi percobaan, kami mencoba "mencuri" uang dari 20 subjek di gedung pusat perbelanjaan dan di jalan. Hasil tes dijelaskan di bawah ini.

Masalah: Batas transaksi tanpa PIN


Batas jumlah transaksi maksimum tanpa mengonfirmasi kode PIN dapat diatur baik pada terminal POS itu sendiri (Batas Wajib CVM) dan di sisi bank. Di Rusia, pembatasan ini sama dengan 1000 rubel.



UPD Dalam pengaturan kartu, jenis otorisasi metode verifikasi Pemegang Kartu (CVM) dapat ditetapkan sebagai tanda tangan pada cek. Dalam hal ini, transaksi tanpa kontak akan dilakukan untuk jumlah berapa pun tanpa kode PIN.



Penipu kami memutuskan untuk menghapus 999,99 rubel sekaligus. Jika Anda diminta untuk mencoba lagi untuk menghapus jumlah di bawah batas dalam periode waktu yang singkat, Anda juga akan diminta untuk memasukkan kode PIN dan, dalam kebanyakan kasus, tidak mungkin untuk menghapus 999,99 rubel beberapa kali berturut-turut. Oleh karena itu, strategi yang paling optimal adalah tidak lebih dari satu tagihan dari satu kartu.

Terminal POS dengan jumlah 999,99

Di Rusia, jumlah maksimum yang didebit tanpa kode PIN adalah 1000 rubel.

Bahkan, banyak penghapusbukuan dengan jumlah 999,99 rubel dalam waktu singkat dapat memicu sistem anti penipuan di sisi bank yang mengakuisisi, sehingga strategi ini tidak optimal bagi penipu. Jadi, dalam kehidupan nyata, ia harus memilih jumlah yang lebih beragam, sehingga mengurangi potensi pendapatan.

Omong-omong, banyak artikel tentang topik ini dalam bahasa Rusia mengatakan bahwa Anda dapat secara manual menetapkan batas Anda sendiri untuk transaksi tanpa kontak tanpa kode PIN. Saya tidak dapat menemukan opsi seperti itu di bank-bank utama Rusia. Mungkin Anda tahu tentang kemungkinan ini? Ini tentang pembayaran tanpa kontak, dan bukan transaksi chip & pin.

Masalah: Banyak kartu di dompet


Ini adalah poin penting dalam skenario serangan ini, karena pada kenyataannya hampir tidak ada yang membawa satu kartu pun di sakunya. Dalam kebanyakan kasus, kartu disimpan di dompet bersama dengan kartu tanpa kontak lainnya, seperti tiket perjalanan atau kartu bank lainnya.

Dompet bengkak kartu

Khususnya, terminal Igenico iWL250 saya, ketika mendeteksi lebih dari satu kartu di bidang aksi dengan SAK yang menunjukkan dukungan untuk protokol 14443-4, mengembalikan kesalahan: "hadir satu kartu."

Tetapi tidak semua terminal melakukan ini. Misalnya, terminal POS VeriFone Sberbank memilih kartu acak dari beberapa. Beberapa terminal mengabaikan semua kartu jika ada lebih dari satu, tanpa menunjukkan pesan kesalahan.


Mencoba membaca beberapa kartu dalam dompet. Terminal POS mengembalikan kesalahan.

Anti-tabrakan ISO 14443-3


Membaca satu kartu khusus dari beberapa bukanlah tugas yang mudah di tingkat fisik. Untuk mengatasi masalah ini, ada mekanisme antikolonisasi. Ini memungkinkan Anda memilih satu kartu jika respons diterima dari beberapa kartu sekaligus. Ini adalah langkah pertama dalam menjalin kontak dengan kartu tanpa kontak dalam protokol ISO-14443A. Pada tahap ini, pembaca tidak dapat mengetahui kartu mana yang disajikan adalah perbankan. Satu-satunya pilihan adalah memilih kurang lebih mirip dengan kartu bank, berdasarkan respons SAK (Pilih Akui).

Nilai bit dalam respons SAK

Jadi, misalnya, kartu Troika (standar Mifare) yang digunakan dalam angkutan umum Moskow memiliki nilai SAK = 0x08 (b00001000) , di mana bit keenam adalah nol. Sementara untuk semua kartu bank dalam respons SAK, bit keenam adalah 1, yang berarti dukungan untuk protokol ISO 14443-4.

Oleh karena itu, yang dapat dilakukan terminal ketika beberapa kartu terdeteksi pada saat yang sama adalah untuk mengecualikan kartu yang tidak mendukung ISO 14443-4 dan memilih yang serupa dengan perbankan. Dukungan untuk protokol ISO 14443-4, omong-omong, tidak menjamin bahwa kartu ini akan menjadi kartu bank, tetapi kemungkinan besar, dalam dompet orang biasa tidak akan ada jenis kartu lain yang mendukung ISO 14443-4.


Bagan alir protokol anti-tabrakan

Dari pengalaman pribadi: meskipun ada protokol anti-tabrakan, jika ada setidaknya tiga kartu tanpa kontak di dompet Anda, sangat sulit untuk membaca kartu yang diinginkan dengan sukses . Sebagian besar upaya menghasilkan kesalahan baca. Bahkan lebih sulit untuk melakukan ini dalam pelarian, menempel di saku dan tas orang lain.

Namun, kami akan menganggap bahwa penipu kami sangat beruntung, dan pembatasan ini tidak mengganggunya.

Transaksi Offline vs Online


Dalam kisah-kisah berita yang menakutkan, mereka berbicara tentang scammer dengan terminal POS di mobil kereta bawah tanah, yang menulis uang dari kantong Anda tepat di jalan. Kisah-kisah ini tidak menyebutkan dari mana scammer mendapatkan Internet seluler dari dalam kereta bawah tanah. Mungkin terminalnya mendukung transaksi offline?

Spesifikasi EMV memungkinkan transaksi offline. Dalam mode ini, pendebitan terjadi tanpa konfirmasi online dari bank penerbit. Ini berfungsi, misalnya, dalam transportasi umum di Moskow dan St. Petersburg. Agar tidak mengambil antrian di pintu masuk bus, sementara terminal menyelesaikan konfirmasi online, mereka membiarkan Anda masuk segera tanpa memeriksa apakah Anda memiliki cukup uang di akun Anda untuk membayar ongkos. Pada akhirnya, ketika Internet muncul di terminal, transaksi yang ditandatangani dikirim ke bank penerbit. Jika ternyata saat ini Anda tidak punya uang untuk membayar ongkos, kartu akan ditambahkan ke daftar berhenti di semua terminal di kota. Anda dapat melunasi hutang melalui akun pribadi Anda dengan nomor kartu. Baca lebih lanjut tentang membayar bus di St. Petersburg.

Secara pribadi, saya tidak bisa mendapatkan terminal POS yang mendukung fungsi ini, jadi dalam skenario dengan terminal POS "sipil" yang biasa, kami tidak akan mempertimbangkan kemungkinan mendebit offline. Ini tidak mengubah apa pun, kecuali bahwa penyerang akan membutuhkan Internet di terminal, jadi serangan itu, misalnya, di kereta bawah tanah, jauh lebih rumit.
Ada model terminal yang mendukung WiFi, dan secara teori, penipu kami dapat menggunakan WiFi di metro, setelah sebelumnya membeli akses bebas iklan untuk alamat MAC terminal POS-nya sehingga otentikasi tidak perlu dilakukan melalui captive portal, karena pada POS terminal tidak dapat melakukan ini.

Hitung untung


Dalam skenario kami, biaya serangan itu 100.000 rubel. Ini berarti bahwa untuk setidaknya mengembalikan investasi, pahlawan kita perlu menyelesaikan setidaknya 100 transaksi masing-masing 1.000 rubel. Bayangkan dia cukup gesit dan berlari-lari di kota sepanjang hari, berpegangan erat pada semua orang, sehingga pada akhirnya dia berhasil membuat 120 penghapusan buku yang sukses. Kami tidak akan mempertimbangkan komisi perolehan (rata-rata 2%), komisi pencairan (4-10%) dan komisi lainnya.

Bisakah dia berhasil mencairkan uang menggunakan kartu yang terikat pada akun saat ini?

Pada kenyataannya, tidak semuanya begitu sederhana. Uang akan dikreditkan ke akun penipu hanya dalam beberapa hari! Selama waktu ini, penipu kita harus berharap bahwa tidak satu pun dari seratus dua puluh korban akan menentang transaksi, yang sangat tidak mungkin. Oleh karena itu, pada kenyataannya, akun penipu akan diblokir bahkan sebelum uang dikreditkan padanya.

Jika seseorang memperhatikan bahwa pembelian dilakukan pada kartunya yang tidak dia lakukan, dia harus menghubungi bank penerbit dan mengajukan klaim. 30 , , β€” 60 . - -, - , .

, ()

Kesimpulan


Biaya serangan dalam skenario kami adalah 100.000 rubel. Bahkan, itu akan beberapa kali lebih tinggi, sehingga penipu akan membutuhkan lebih banyak upaya untuk menghasilkan keuntungan.

Dalam skenario kami, penipu selalu menghapuskan 999,99 rubel, yang, kemungkinan besar, akan memerlukan pengoperasian sistem anti penipuan di sisi bank yang mengakuisisi. Pada kenyataannya, penipu perlu menghapuskan jumlah yang lebih kecil.

Untuk setidaknya mengembalikan investasi, penipu perlu memproses beberapa ratus korban. Jika bahkan selusin dari mereka menghubungi bank penerbit dan menyengketakan transaksi, akun penipu kemungkinan besar akan diblokir. Skenario di mana bank yang mengakuisisi berkolusi dengan penipu tidak mungkin, karena lisensi untuk bekerja dengan MPS jauh lebih mahal daripada potensi keuntungan dari jenis penipuan ini.

Dari 20 mata pelajaran, hanya tiga yang berhasil menghapus uang dari kartu, yang merupakan 15% keberhasilan dari semua upaya. Ini adalah kasus-kasus buatan ketika ada satu kartu di saku Anda. Dalam kasus dengan dompet dan beberapa kartu, terminal mengembalikan kesalahan. Dalam skenario dengan terminal yang menggunakan firmware yang dimodifikasi dan menerapkan mekanisme anti-tabrakan, persentase biaya yang berhasil mungkin lebih tinggi. Namun, bahkan dalam kasus menggunakan anti-tabrakan, dalam kondisi nyata dalam pelarian, sangat sulit untuk menghitung satu kartu dari beberapa kartu sehingga keberhasilan mendebit dalam kondisi seperti itu dapat dianggap sebagai keberuntungan. Pada kenyataannya, bagian dari penghapusan yang berhasil hampir tidak akan melebihi 10% dari jumlah upaya.

, , , . - , .

2 β€” POS-


Katakanlah scammer kami bekerja di kasir di toko atau kurir dengan terminal POS seluler. Dalam hal ini, ia memiliki peluang untuk menangkap data kartu, yang, dalam beberapa kasus, mungkin cukup untuk membayar di Internet.

Pertama, mari kita cari tahu bagaimana transaksi tanpa kontak terlihat persis, dan data apa yang ditukar kartu dengan terminal POS. Karena kami terlalu malas untuk membaca ribuan halaman dokumentasi Spesifikasi Tanpa Kontak EMV , kami cukup mencegat pertukaran di tingkat fisik menggunakan sniffer HydraNFC.

Ada beberapa perbedaan antara spesifikasi EMV untuk MasterCard PayPass dan Visa payWave. Ini adalah perbedaan dalam format tanda tangan dan beberapa data. Tetapi bagi kami ini tidak penting.

Pelacak NFC



HydraNFC adalah sniffer mandiri open-source ISO-14443A sepenuhnya yang menyimpan perintah APDU yang dicegat ke kartu SD. Antena sniffer terletak di antara terminal dan kartu, dan secara pasif menangkap semua informasi yang dikirimkan.

β†’ Situs web tentang HydraBus dan perisai HydraNFC
β†’ Sumber firmware


Demonstrasi intersepsi pertukaran antara terminal POS dan telepon dengan Apple Pay

Ke depan, saya harus mengatakan bahwa pada tingkat ini pembayaran melalui telepon dan kartu plastik biasa tidak berbeda. Untuk terminal POS, ini adalah kartu VISA biasa. Namun, membayar melalui telepon jauh lebih aman daripada menggunakan kartu fisik, dan kemudian kita akan menganalisis alasannya.

Penguraian protokol EMV


Inilah yang terlihat seperti tempat pembuangan sampah saat membayar cokelat dan sebotol air dengan nilai total 142,98 rubel menggunakan Apple Pay:

Data mentah diterima dari sniffer (spoiler terbuka)

()

R (READER) β€” POS-
T (TAG) β€” ( )
R>> 52
R>> 52
R>> 52
R>> 52
R>> 52
R>> 52
R>> 52
T<< 04 00
R>> 93 20
T<< 08 fe e4 ec fe
R>> 93 70 08 fe e4 ec fe dd 6e
T<< 20 fc 70
R>> 50 00 57 cd
R>> 26
R>> 52
T<< 04 00
R>> 93 70 08 fe e4 ec fe dd 6e
T<< 20 fc 70
R>> e0 80 31 73
T<< 05 78 80 70 02 a5 46
R>> 02 00 a4 04 00 0e 32 50 41 59 2e 53 59 53 2e 44 44 46 30 31 00 e0 42
T<< 02 6f 23 84 0e 32 50 41 59 2e 53 59 53 2e 44 44 46 30 31 a5 11 bf 0c 0e 61 0c 4f 07 a0 00 00 00 03 10 10 87 01 01 90 00 4b b3
R>> 03 00 a4 04 00 07 a0 00 00 00 03 10 10 00 bc 41
T<< 03 6f 31 84 07 a0 00 00 00 03 10 10 a5 26 9f 38 18 9f 66 04 9f 02 06 9f 03 06 9f 1a 02 95 05 5f 2a 02 9a 03 9c 01 9f 37 04 bf 0c 08 9f 5a 05 60 08 40 06 43 90 00 1d 66
R>> 02 80 a8 00 00 23 83 21 36 a0 40 00 00 00 00 01 42 98 00 00 00 00 00 00 06 43 00 00 00 00 00 06 43 18 09 18 00 e0 11 01 03 00 f9 14
T<< 02 77 62 82 02 00 40 94 04 18 01 01 00 9f 36 02 02 06 9f 26 08 d6 f5 6b 8a be d7 8f 23 9f 10 20 1f 4a ff 32 a0 00 00 00 00 10 03 02 73 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9f 6c 02 00 80 57 13 48 00 99 72 50 51 17 56 d2 31 22 01 00 00 05 20 99 99 5f 9f 6e 04 23 88 00 00 9f 27 01 80 90 00 af c8
R>> 03 00 b2 01 1c 00 c9 05
T<< 03 70 37 5f 28 02 06 43 9f 07 02 c0 00 9f 19 06 04 00 10 03 02 73 5f 34 01 00 9f 24 1d 56 30 30 31 30 30 31 34 36 31 38 30 34 30 31 37 37 31 30 31 33 39 36 31 36 37 36 32 35 90 00 a7 7b


Mari kita menguraikan setiap baris dari dump yang dicegat secara terpisah.

R >> - data yang dikirimkan oleh terminal POS
T >> - data yang dikirimkan oleh kartu (dalam kasus kami, telepon dengan Apple Pay)

14443-A Pilih


Di awal pertukaran, terminal membuat koneksi dengan kartu di tingkat saluran. Bagi mereka yang terbiasa dengan jaringan dan model OSI, akan lebih mudah untuk menyajikan ini sebagai tingkat L2, dan UID (Pengidentifikasi Unik) kartu sebagai alamat MAC host.

Dalam terminologi standar ISO-14443:
PCD (proximity coupling device) adalah nama pembaca, dalam kasus kami ini adalah
PICC terminal-PIC (proximity circuit circuit card) adalah sebuah kartu, dalam kasus kami telepon memainkan peran ini

Perbedaan penting antara kartu pembayaran reguler dari Apple Pay adalah bahwa kartu selalu dapat dibaca dan tidak memungkinkan Anda untuk mengontrol proses membaca. Itu dapat secara tak terkendali membaca pakaian, sementara telepon, jatuh ke dalam bidang tindakan pembaca, meminta pengguna untuk mengaktifkan kartu virtual. Sampai pengguna mengonfirmasi, ponsel tidak mengirimkan data apa pun, dan pembaca bahkan tidak tahu bahwa ada kartu virtual di dekatnya.

R>> 52 // WUPA (wake up)
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
T<< 04 00 // ATQA (Answer To Request type A) 
R>> 93 20 // Select cascade 1 (Anti Collision CL1 SEL)
T<< 08 fe e4 ec fe // UID (4 bytes) + BCC (Bit Count Check)
R>> 93 70 08 fe e4 ec fe dd 6e // SEL (select tag 0x9370) + UID + CRC16
T<< 20 fc 70  // SAK (Select Acknowledge 0x20) + CRC16 
R>> 50 00 57 cd // HALT (Disable communocaion 0x5000) + CRC16
R>> 26 // REQA
R>> 52 // WUPA
T<< 04 00 // ATQA
R>> 93 70 08 fe e4 ec fe dd 6e // SELECT
T<< 20 fc 70 // SAK
R>> e0 80 31 73 // RATS (Request Answer to Select 0xE080) + CRC16
T<< 05 78 80 70 02 a5 46 // ATS (Answer to select response)

Terminal terus-menerus mengirimkan perintah Wake-up (WUPA) 0x52, dan segera setelah kartu muncul di bidang tindakan, terminal merespons dengan perintah Answer To Request tipe A (ATQA), dalam kasus kami adalah 0x04 0x00 . Respons ATQA dapat bervariasi menurut produsen chip.

Setelah menerima respons ATQA, terminal memulai prosedur deteksi tabrakan untuk menentukan apakah ada lebih dari satu kartu di bidang tindakan. Perintah 0x93 0x20 Select cascade level 1 (SEL CL1) meminta semua kartu di bidang tindakan untuk melaporkan bagian pertama UID mereka.

Kartu merespons dengan 0x08 0xFE 0xE4 0xEC 0xFE , empat byte pertama adalah UID kartu virtual Apple Pay dan 0xFE Bit Count Check (BCC) pada akhirnya.

Setelah menerima pengidentifikasi kartu, pembaca mengakses kartu khusus dengan perintah 0x93 0x70 (SELECT). Untuk sebuah tim untuk menjadi kartu UID 0x08 0xFE 0xe4 0xec + 0xFE BCC + 0xdd 0x6e CRC16.

Kartu merespons dengan 0x20 Pilih Pengakuan (SAK) + 0xfc 0x70 CRC16.

Jika beberapa respons SAK diterima pada langkah ini, pembaca dapat mengurangi panjang UID dalam perintah SELECT hingga satu kartu merespons. Namun, seperti yang ditunjukkan di atas, beberapa terminal POS menolak untuk melanjutkan jika tabrakan terdeteksi pada tahap ini, yaitu adanya beberapa kartu pada saat yang sama.

UID 4, 7 10 . , , Apple Pay, UID 4 . , Apple Pay UID , , UID . , , , UID .

Pembaca mengirimkan perintah 0x50 0x00 HALT + 0x57 0xcd CRC16. Ini adalah perintah terminasi.

Kemudian prosedur diulangi lagi, pembaca membangunkan kartu lagi (WUPA), tetapi tanpa memeriksa tabrakan, SELECT segera dieksekusi. Mengapa ini dilakukan - saya tidak tahu, mungkin ini adalah cara yang lebih dapat diandalkan untuk menentukan tabrakan.

Kali kedua pembaca sudah mengirimkan perintah 0xE0 0x80 Minta Jawaban untuk Memilih (RATS) + 0x31 0x73 CRC16.

Kartu merespons 0x05 0x78 0x80 0x70 0x02 Jawaban untuk memilih respons (ATS) + 0xA5 0x46 CRC16.

Jawab untuk memilih- Jawabannya mirip dengan Answer To Reset (ATR) untuk kartu kontak. Ini berisi informasi tentang ukuran bingkai maksimum dan parameter lapisan tautan.

Pada tahap ini, level "saluran" selesai, kemudian pertukaran dimulai pada protokol level yang lebih tinggi, tergantung pada aplikasi yang terdapat pada kartu. Operasi SELECT adalah sama untuk semua kartu tanpa kontak dengan standar ISO 14443A, termasuk tag NFC, tiket angkutan umum, dll.

Permintaan untuk aplikasi yang tersedia - SELECT PPSE


Deskripsi resmi: Spesifikasi Tanpa Kontak EMV - PPSE dan Manajemen Aplikasi untuk Elemen Aman

Awal komunikasi dengan kartu EMV selalu terjadi dengan membaca PPSE (Lingkungan Sistem Pembayaran). Terminal menanyakan kartu apa aplikasi pembayaran yang ada di dalamnya.

Paling sering ini adalah satu aplikasi, seperti dalam contoh kita - VISA. Namun, ada kartu dengan beberapa aplikasi pembayaran, misalnya, ada kartu MIR domestik khusus dengan dua aplikasi pembayaran di dalamnya. Karena sistem pembayaran MIR tidak berfungsi di luar negeri, aplikasi pembayaran kedua terintegrasi ke dalam kartu, bahkan kartu kedua. Ini bisa berupa aplikasi sistem pembayaran JCB atau UnionPay. Kartu-kartu semacam itu disebut cobaging.

Perintah PPSE APDU SELECT

'00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00'
  00 A4 04 00 //  select 
   0E //  command data (14 )
    32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 // command data 2PAY.SYS.DDF01
    00 //  

Balas ke SELECT PPSE

'6F 23 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 11 BF 0C 0E 61 0C 4F 07 A0 00 00 00 03 10 10 87 01 01 90 00'

Untuk kenyamanan, kami akan menganalisis jawabannya menggunakan parser online format TVL iso8583.info/lib/EMV/TLVs . Jawaban yang sama diproses oleh parser:

EMV SELECT PPSE VISA RESPONE diuraikan
Dari semua ini, kami hanya tertarik pada pengenal aplikasi pembayaran (AID). Dalam hal ini, nilai ini adalah A0000000031010 , yang berarti Visa Internasional.

AID ditandai dengan penanda 4F . Bit kedua setelah token adalah panjang data yang dikandungnya. Meskipun panjang AID dapat bervariasi dari 5 hingga 16 byte, dalam kebanyakan kasus itu adalah 7 byte.

Daftar Besar AID: eftlab.co.uk/knowledge-base/211-emv-aid-rid-pix

Beberapa AID Populer

A0000000031010 Visa International
A0000000032020 Visa International
A0000000041010 Mastercard International
A0000000043060 Mastercard International United States Maestro (Debit)

Indikator Prioritas Aplikasi - menunjukkan prioritas aplikasi pembayaran. Misalnya, dalam pembuatan kartu MIR yang memiliki beberapa aplikasi pembayaran di dalam, bidang ini menunjukkan yang mana dari dua aplikasi yang diprioritaskan. Karena kami hanya memiliki satu aplikasi Visa International, itu menunjuk ke sana dan tidak ada prioritas.

Buka aplikasi pembayaran - SELECT AID

'00 A4 04 00 07 A0 00 00 00 03 10 10'
  00 A4 04 00 //  select 
   07 //  command data (7 )
    A0 00 00 00 03 10 10 // AID Visa International

Setelah memilih aplikasi pembayaran yang diperlukan, terminal meluncurkannya.

PDOL (Memproses Opsi Daftar Objek Data)


'6f 31 84 07 a0 00 00 00 03 10 10 a5 26 9f 38 18 9f 66 04 9f 02 06 9f 03 06 9f 1a 02 95 05 5f 2a 02 9a 03 9c 01 9f 37 04 bf 0c 08 9f 5a 05 60 08 40 06 43 90 00'

Mari kita parsing jawaban dengan parser


Sebagai tanggapan terhadap peluncuran aplikasi pembayaran, kartu melaporkan seperangkat parameter yang diharapkan akan diterima dari terminal - PDOL (Memproses Opsi Data Objek Daftar). Terminal harus merespons sesuai dengan urutan ini.

PDOL untuk kartu yang berbeda dapat bervariasi. Jumlah total parameter PDOL adalah beberapa puluh. Daftar lengkap parameter PDOL dapat ditemukan di sini .

Mari kita lihat lebih dekat pada PDOL. Panjang yang ditunjukkan setelah penanda adalah panjang respons yang diharapkan dari terminal terhadap permintaan ini. Jawaban kosong diisi dengan nol hingga panjang yang diinginkan.

Permintaan parsing PDOL:

9F 38 18 //   PDOL.  18 (24 ) 
 9F 66 ( 04) // Terminal Transaction Qualifiers (TTQ).    . 
  9F 02 ( 06) //  
   9F 03 ( 06) //  
   9F 1A ( 02) //     ISO3166-1
   95 ( 05) // Terminal Verification Results
    5F 2A ( 02) //  ,    ,   ISO4217
     9A ( 03) //    YYMMDD
      9C ( 01) //   
       9F 37 ( 04) //   

Hingga saat ini, semua data yang dikirimkan sama untuk setiap transaksi pada kartu ini.

Permintaan Biaya - DAPATKAN OPSI PENGOLAHAN


'80A8000023832136A0400000000001429800000000000006430000000000064318091800E011010300'
 80 A8 00 00 //  GET PROCESSING OPTIONS (GPO)
  23 //    (35 )
   83 //  PDOL-
    21 //  PDOL- (33 )
     36 A0 40 00 // Terminal Transaction Qualifiers (TTQ)
      00 00 00 01 42 98 //   (142,98 )
       00 00 00 00 00 00 //   
        06 43 //    (643 - )
         00 00 00 00 00 // Terminal Verification Results (TVR)
          06 43 //  (643 - russian ruble) 
           18 09 18 //  (18  2018 )
            00 //  
             E0 11 01 03 //   

Jawaban ini jelas menunjukkan bagaimana terminal, yang terletak di Rusia, meminta untuk didebit dari kartu dalam jumlah 142,98 rubel. Kami menarik perhatian ke nomor acak di akhir (E0110103). Ini adalah parameter 9F37 Nomor Tidak Dapat Diprediksi . Ini adalah penyebutan pertama dari kriptografi. Di masa mendatang, nomor ini, bersama dengan data transaksi, kartu harus masuk dengan tanda tangan kriptografi. Ini memberikan terminal kontrol atas relevansi tanda tangan dari kartu dan melindungi terhadap serangan replay.

Respons kartu terhadap DAPATKAN OPSI PENGOLAHAN


'7762820200409404180101009F360202069F2608D6F56B8ABED78F239F10201F4AFF32A00000000010030273000000004000000000000000000000000000009F6C02008057134800997250511756D23122010000052099995F9F6E04238800009F2701809000'

Jawaban ini berisi bidang data khusus VISA, jadi saya menggunakan parser dengan dukungan untuk Spesifikasi Pembayaran Tanpa Kontak VISA (VCSP) .



Application Interchange Profile (AIP) - berisi informasi tentang parameter aplikasi pembayaran. Dalam kasus kami, AIP adalah 00 40 . Pertimbangkan nilai-nilai parameter ini dari EMV 4.3 Buku 3 .


Dalam kasus kami, satu bit diatur dalam byte kedua, yang, menurut tabel ini, dicadangkan untuk Penggunaan Masa Depan (RFU). Apa artinya ini, dan apa gunanya berinvestasi di Apple Pay, saya tidak tahu.

AIP berisi informasi penting tentang metode otentikasi yang didukung (SDA, CDA, DDA) pembayaran. Mengapa dalam kasus saya semua bendera ini sama dengan nol - Saya tidak mengerti.

Application File Locator (AFL) - Berisi SFI rentang informasi catatan dalam AID tertentu. Berdasarkan respons ini, terminal akan menghasilkan permintaan READ RECORD.

Mari kita menganalisis jawaban AFL lebih terinci:

Short File Identifier (SFI) adalah 0x18. Parameter ini dikodekan dengan lima bit, bukan delapan. Dengan demikian, nilai 0x18 (b00011000) dikonversi ke b00000011, dan kami mendapatkan 0x3.
Rekor pertama = 1
Rekor terakhir = 1
yaitu. dalam "folder" No. 3 ada entri dari 1 hingga 1, yaitu, satu entri.

Application Transaction Counter (ATC) adalah counter transaksi tambahan yang bertambah satu setiap kali OPSI PENGOLAHAN MENDAPAT diminta. Setelah mencapai nilai 0xFFFF atau 0x7FFF, aplikasi pembayaran akan diblokir secara permanen. Saya percaya bahwa ini dilakukan untuk melindungi terhadap kekuatan kasar dari kunci pribadi kartu. Dalam kasus kami, dapat dilihat bahwa iPhone dengan Apple Pay ini sudah digunakan untuk membayar 518 (0x206) kali.

Application Cryptogram (AC) - tanda tangan kriptografi yang dihitung oleh kartu menggunakan kunci privatnya. Tanda tangan ini dikirimkan bersama dengan sisa data ke bank penerbit, dan keaslian transaksi diverifikasi berdasarkan basisnya. Karena kunci pribadi kartu tidak dapat (cara diakses) diambil dari kartu, ini menghilangkan kemungkinan menyalin kartu.

Data Aplikasi Penerbit (IAD) - Berisi data eksklusif untuk VISA. Saya tidak menguasai analisis struktur ini, tolong.

Kualifikasi Transaksi Kartu (CTQ) - daftar spesifik kartu yang didukung oleh VISA. Misalnya, apakah mungkin untuk menggunakan kartu tanpa kontak ini untuk transaksi di ATM atau tidak, dan konfirmasi seperti apa yang diperlukan.

Lacak 2 Data Setara - Oppa!Bidang ini berisi nomor kartu dan tanggal kedaluwarsa, detail lebih lanjut tentang informasi ini akan dibahas nanti.

Form Facto Indicator (FFI) - bidang khusus VISA. Menjelaskan faktor bentuk dan karakteristik perangkat pembayaran. Dalam kasus kami, jelas bahwa ini adalah ponsel.

Data Informasi Kriptogram (CID) - Saya belum menguasai analisis struktur ini, tolong.

BACA permintaan REKAM DATA


'00 b2 01 1c 00'

Terminal mengirim permintaan untuk membaca catatan yang diterima dari AFL:


Dalam kasus ini, mulai dari byte 0x1C , dibaca sebagai dua nilai, di mana lima bit pertama adalah 0x18 (b000011) dan SFI, dan tiga bit berikutnya adalah 0x04 (d100), dan membuat nomor catatan.

Balas ke READ RECORD


'70375F280206439F0702C0009F19060400100302735F3401009F241D5630303130303134363138303430313737313031333936313637363235'



Application Usage Control (AUC) - menentukan apakah diizinkan untuk membayar dengan kartu di luar negeri, dan jenis operasi yang diizinkan.

9F19 adalah sesuatu yang tidak dapat dipahami, tampaknya - Daftar Obyek Data Otentikasi Data Dinamis (DDOL)

EMV yang sudah ketinggalan zaman, Referensi Akun Pembayaran (PAR) adalah parameter khusus untuk kartu token (virtual). Saya tidak menguasai analisis struktur ini, tolong.

Apa yang bisa diekstraksi dari transaksi yang dicegat?


Kami menganalisis satu contoh spesifik dari lalu lintas yang dicegat dari transaksi tanpa kontak Apple Pay dengan kartu VISA yang ditautkan. Protokol MasterCard sedikit berbeda, tetapi secara keseluruhan serupa. Dari analisis dapat dilihat bahwa transaksi dilindungi oleh crypto-signature, dan protokol dilindungi dari serangan replay. Ada protokol pembayaran contactless yang ketinggalan zaman dalam mode Magnetic Stripe (MSD), yang jauh lebih terlindungi dari serangan replay, tetapi dalam artikel ini saya tidak akan membongkarnya, karena, sejauh yang saya tahu, hampir tidak didukung dalam CIS, mungkin saya salah.


Dari data yang dicegat, Anda dapat mengekstrak nomor kartu (PAN) dan tanggal kedaluwarsa

Seperti yang Anda lihat, dari lalu lintas yang dicegat, Anda dapat mengekstrak nomor kartu lengkap dan tanggal kedaluwarsa. Meskipun CVV tidak ada dalam dump ini, data ini sudah cukup untuk membayar di beberapa toko online. Dalam kasus kartu plastik fisik biasa, data yang dicegat akan berisi PAN yang sama dan tanggal kedaluwarsa yang tertera pada kartu itu sendiri!

Pembayaran internet tanpa CVV (CNP, MO / TO)


Dalam artikel saya sebelumnya "Kami menggunakan kartu Apple Pay dan Troika sebagai izin untuk bekerja" tentang ACS berdasarkan Apple Pay, saya dikritik dalam komentar, mengatakan bahwa dengan hanya 10 digit kartu terakhir Anda dapat mencuri uang. Dalam dump di atas, tidak hanya jumlah penuh kartu saya ditunjukkan, tetapi juga tanggal kedaluwarsa. Data ini cukup untuk membayar di beberapa toko di Internet. Nah, coba lakukan itu.


Formulir penambahan kartu Amazon tidak memerlukan CVV

Jika itu nomor kartu fisik, uang memang bisa dicuri, tetapi data token Apple Pay HANYA dapat digunakan untuk operasi Client Present (CP) ketika kartu menandatangani transaksi kriptografi dengan tanda tangan. Data ini tidak dapat digunakan untuk pembayaran di Internet dan operasi lain seperti Kartu tidak ada (CNP), yaitu melalui telepon atau email. Itu dia!

Kepada semua orang yang ingin memverifikasi ini, saya memberitahu Anda bahwa perincian dari tempat pembuangan Apple Pay yang dicegat di atas saat ini relevan dan terkait dengan kartu yang valid yang memiliki uang. Pada saat penulisan, ini adalah 5 ribu rubel. Saya sarankan mencoba mencuri mereka :)

Mengapa Apple Pay lebih aman daripada kartu biasa?



Apple Pay vs kartu contactless biasa

  • Apple Pay ( ) . POS-. , «» , , , , , . Apple Pay , , .
  • β€” Apple Pay (13,56 ), , . . Apple Pay , .
  • β€” Card not present (CNP), , .. Apple Pay .
  • β€” (Cardholder name) . , , . Apple Pay .


. , . .

, Apple Pay . CNP- ( ) , .



:

Source: https://habr.com/ru/post/id422551/


All Articles