Tag Archives: APDU

Membedah: mandiri e-money isi ulang

Seperti yang pernah saya singgung pada postingan sebelumnya, memberikan aplikasi untuk layanan e-money merupakan pilihan yang bisa dibilang beresiko. Apalagi untuk proses top-up. Masalahnya tentu pada aspek security dari layanan ini tentunya.

Sebelum terlalu dalam (karena waktu juga yang belum ada), mari kita coba dulu apakah aplikasi ini benar-benar bekerja sesuai yang dijanjikan.

Prosesnya cukup mudah:

  1. Registrasi terlebih dahulu, seperti halnya layanan online, pengguna harus mendaftarkan e-mail & set password
  2. NFC ON
  3. Tap kartu pada handset
  4. Aplikasi akan memunculkan informasi saldo terakhir, setelah itu muncul denominasi nilai top-up yang bisa dipilih
  5. Setelah memilih denom, user akan diminta untuk input nomor kartu ATM, expiry date, & CVV kartu
  6. Selanjutnya proses authentikasi 3DS seperti biasa kode OTP akan dikirim melalui SMS; perlu dicatat bahwa tipe SMS yang dipergunakan adalah class-0, sehingga pesan OTP hanya muncul sebagai pop-up dialog pada handset Android. Menyebabkan user harus benar-benar mengingat nilai OTP yang dikirim, untuk selanjutnya diinputkan dalam aplikasi (sebenarnya hanya menampilkan tampilan web 3DS-nya Bank Mandiri)
  7. Setelah proses 3DS selesai, user diharuskan untuk melakukan tap ulang kartu e-money pada handset; di sinilah proses top-up saldo offline kartu dilakukan
  8. Dan notifikasi akan muncul bahwa saldo e-money sudah terkredit; notifikasi juga dikirim melalui e-mail

Setelah mencoba sendiri, rasanya aplikasi ini layak mendapat acungan jempol karena,

  • Berjalan sesuai dengan yang diharapkan
  • Inovasi layanan e-money pertama di Indonesia yang memperbolehkan mekanisme top-up melalui mobile device milik user

Lalu bagian analisa security-nya?

Continue reading

Bruteforce APDU SELECT using Cardpeek + Lua script

After a couple of hours trying to find free smartcard app on my tinkering time, finally I found this Cardpeek. Simple yet light smartcard reader app.

My objective is to create simple APDU “bruteforce” to the smart card by iterate some EF values using standards APDU SELECT. By bruteforce means that the SELECT command is sent to the smartcard for any possible EF value.

Finding this Cardpeek app + powered with Lua script is enough for me. For now.

The bruteforcing idea is to create iteration of EF value using 2 bytes length, this assumed the smartcard is having 2 bytes EF structures. With this iterations hopefully some approved response (SW1-SW2 = 0x9000) is given by the smartcard, and do further exploit using known approved EF.

Following is the Lua script I created to bruteforce SELECT APDU (or you can download directly here):

And I tested the script using Commuter Line Kartu Multi Trip card, and here is some interesting responses from the card  😀