My Blog

Belajar Membongkar Aplikasi Penipuan

12 Dec 2022

Pada kesempatan kali ini saya akan mencoba menganalisis sebuah aplikasi yang digunakan untuk modus penipuan, saya mendapatkan aplikasi ini dari teman saya mas Nikko Enggaliano terima kasih telah memberikan saya kesempatan untuk menganalisis aplikasi ini hehehe,

pertama saya melakukan reverse engineer terhadap aplikasi ini untuk mendapatkan class, library serta alur dari aplikasi itu sendiri, hasil dari reverse engineer tersebut saya mendapatkan sususan folder sebagai berikut

1

Selanjutnya saya mendapatkan AndroidManifest.xml untuk saya cari permission yang diterapkan dan activity pertama yang dijalankan

2

hasil analisis dari file AndroidManifest.xml menunjukan bahwa aplikasi akan meminta request permission untuk mendapatkan sms.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<permission android:name="abyssalarmy.smseye.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" android:protectionLevel="signature"/>
<uses-permission android:name="abyssalarmy.smseye.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"/>

namun yang cukup menarik disini adalah terdapat sebuah permission bernama abyssalarmy.smseye setelah saya cari di google smseye merupakan sebuah aplikasi android spyware yang dapat di custom yang memungkinkan untuk mendapatkan sebuah sms dari smartphone korban dan selanjutnya di forward ke telegram bot, sebenarnya aplikasi ini terdapat disclaimer “sebagai bahan untuk latihan”, namun tetap saja ada oknum yang menyalahgunakan aplikasi ini, berikut link dari aplikasi tersebut

SmsEye AbyssalArmy pelaku juga mengimplementasikan sebuah library bernama Dexter dapat dilihat di potongan kode berikut

<activity android:theme="@style/Dexter_Internal_Theme_Transparent" android:name="com.karumi.dexter.DexterActivity"/>

setelah saya telusuri di google saya menemukan Dexter adalah sebuah library yang memungkinkan untuk memproses banyak request permission dalam waktu yang bersamaan, berikut link dari library tersebut Dexter
setelah itu aplikasi akan mengarah ke sebuah activity yaitu SmsEyeMainActivity

<activity android:theme="@style/Theme_SmsEye" android:label="@string/app_name" android:name="abyssalarmy.smseye.SmsEyeMainActivity" android:exported="true">
<intent-filter>
	<action android:name="android.intent.action.MAIN"/>
	<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

didalam file SmsEyeMainActivity terdapat deklarasi sebuah viewmodel yaitu SmsEyeViewModel, namun jika diperhatikan SmsEyeViewModel tidak di proses di activity ini

public final class SmsEyeMainActivity extends ComponentActivity {
    public static final int $stable = LiveLiterals$SmsEyeMainActivityKt.INSTANCE.m0Int$classSmsEyeMainActivity();
    private SmsEyeViewModel smsEyeViewModel;

    @Override // androidx.activity.ComponentActivity, androidx.core.app.ComponentActivity, android.app.Activity
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ComponentActivityKt.setContent$default(this, null, ComposableLambdaKt.composableLambdaInstance(578910236, true, new SmsEyeMainActivity$onCreate$1(this)), 1, null);
    }
}

namun terdapat sebuah angka 578910236 yang dimana setelah saya telusuri lagi, mengarah ke sebuah class yang terkenkripsi, dan benar saja didalam class ini terdapat sebuah function yang memproses SmsEyeViewModel dan navcontroller, yang dimana ketika proses telah memenuhi syarat, akan langsung diarahkan menuju SmsEyeMainActivity.kt class ini ditulis menggunakan kotlin, itulah kenapa class ini bisa terenkripsi.

03

selanjutnya saya menganalisis SmsEyeViewModel ketika dibuka terdapat potongan kode sebagai berikut

04

Jika diperhatikan dengan seksama dibagian potongan kode berikut, terdapat sebuah function yang tereknripsi salah satunya m6x95df507e() dan semua function itu mengarah ke sebuah class yang lagi-lagi juga terenkripsi.

05

berikut potongan dari class tersebut

06

dimana setiap function memproses variable yang digunakan untuk proses sharedandpreference

07

dan setelah saya telusuri lebih dalam lagi, saya menemukan sebuah class SmsEyeNavigationKt, dimana pada class ini memproses tampilan apakah webviewRoute atau welcomeRoute sesuai dengan kondisi dari smsEyeViewModel.getNavController() yang terdapat pada viewmodel, yang selanjutnya dinavigasi oleh NavHost yang mana merupakan salah satu dari jetpack component, untuk sebuah spyware menurut saya cukup update dengan menggunakan android jetpack

08

Selanjutnya saya akan melakukan analisis terhadap file SmsEyeWebviewKt

SmsEyeWebviewKt, didalam class ini tentu saja memproses untuk menampilkan webview dari sebuah url

09

nah web apa yang sebenarnya ditampilkan di webview ini, disini saya berhasil menemukan web yang ditampilkan di dalam webview dari potongan kode berikut

10

terdapat sebuah kode SmsEyeTools.Companion.smsEyeData(context).getUrl() bisa diambil kesimpulan bahwa url yang akan ditampilkan terdapat pada class SmsEyeTools di function getUrl(), selanjutnya saya mencoba menelusuri url apa yang disematkan. hasil penelusuran saya di class SmsEyeTools terdapat fungsi berikut

11

fungsi tersebut memiliki hasil return dari variable url, dan ketika saya menganalisis lebih kanjut saya menemukan kode seperti berikut

12

diketahui bahwa url disimpan di dalam sebuah file txt bernama url.txt yang terdapat di folder assets, selanjutnya saya membuka folder asset yang terdapat di resource

13

dan ketika saya buka, ternyata url tersebut berisi website salah satu jasa ekspedisi yang cukup terkenal di indonesia

14

setelah selesai dengan SmsEyeWebviewKt, saya menemukan class SmsEyeSmsListener dilihat dari potongan kode berikut, saya berspekulasi bahwa pada class SmsEyeSmsListener akan selalu merekam pesan yang masuk dan kemudian di forward ke telegram bot

15

nah kenapa saya berspekulasi seperti itu, saya melihat sebuah kode berikut

16

dimana sebuah variable msgBody di parsing ke sebuah function yang berada di class SmsEyeNetwork, dan ketika saya buka SmsEyeNetwork, benar saja di dalam class ini terdapat sebuah proses dari telegram bot, dan terdapat sebuah function sendTextMessage yang dimana berfungsi untuk memparsing pesan yang berhasil di rekam untuk selanjutnya di forward ke telegram bot berikut potongan kodenya

17

Telegram bot membutuhkan sebuah Id dan Token telegram, selanjutnya saya mencari lokasi id dan token nya, berdasarkan kode dibawah ini

18

id dan token, disimpan juga di SmsEyeTools dan benar, seluruh id dan token disimpan di dalam folder assets berdampingan dengan url sebelumnya

19

dan ketika dibuka, isinya seperti berikut
id.txt

20_1

token.txt

20_2

dan ketika saya coba token tersebut melalui api telegram hasilnya seperti ini

21
yap ternyata token masih aktif XD, selanjutnya saya telusuri melalui aplikasi telegram dengan username tersebut, hasilnya sebagai berikut

22
alhasil username tersebut terdaftar di telegram dan sesuai dengan response yang diterima saat saya coba mengguanakan token, bahwa username ini adalah sebuah bot.

Sekian tulisan tentang bagaimana cara saya melakukan reverse engineering terhadap aplikasi yang digunakan untuk modus penipuan, bila masih ada salah dan kurang nya, saya mohon maaf yang sebesar-besarnya, karena disini saya juga belajar menerapkan sesuatu yang sangat jarang saya lakukan, terima kasih.