DIVA Android
  • Damn Insecure and Vulnerable App (DIVA)
  • Pendahuluan
    • Persiapan
    • Konfigurasi Burp Suite dengan Android
    • Instalasi Aplikasi DIVA
  • Reversing of APK
    • Decompiling dan Reversing APK
  • Challenges
    • Insecure Logging
    • Hardcoding Issues - Part 1
    • Insecure Data Storage - Part 1
    • Insecure Data Storage - Part 2
    • Insecure Data Storage - Part 3
    • Insecure Data Storage - Part 4
    • Input Validation Issues - Part 1
    • Input Validation Issues - Part 2
    • Access Control Issues - Part 1
    • Access Control Issues - Part 2
    • Access Control Issues - Part 3
    • Hardcoding Issues - Part 2
    • Input Validation Issues - Part 3
Powered by GitBook
On this page
  • Pendahuluan
  • Penyelesaian
  • Melihat Source Code
  • Melihat File DivaJni.c
  • Melihat File Library pada App Sanbox
  • Kesimpulan

Was this helpful?

  1. Challenges

Hardcoding Issues - Part 2

Identifying Hardcoded Sensitive Values in Native Library Files

PreviousAccess Control Issues - Part 3NextInput Validation Issues - Part 3

Last updated 4 years ago

Was this helpful?

Pendahuluan

Sama seperti kali ini kita akan mencari kerentanan hardcoded pada aplikasi diva, hanya saja kali ini kita akan mencari credentials pada library yang digunakan.

Anda mungkin sudah tahu bahwa Android APK bisa dibuat menggunakan Java, Kotlin serta seperti C, C++,dll. Dengan menggunakan , komponen Java dan C++ bisa saling berkomunikasi.

Penyelesaian

Bagian aplikasi yang akan kita bahas kali ini memiliki fitur validasi vendor key untuk mendapatkan akses.

Melihat Source Code

Hardcode2Activity.java
package jakhar.aseem.diva;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class Hardcode2Activity extends AppCompatActivity {
  private DivaJni djni;
  
  public void access(View paramView) {
    EditText editText = (EditText)findViewById(2131492990);
    if (this.djni.access(editText.getText().toString()) != 0) {
      Toast.makeText((Context)this, "Access granted! See you on the other side :)", 0).show();
      return;
    } 
    Toast.makeText((Context)this, "Access denied! See you in hell :D", 0).show();
  }
  
  protected void onCreate(Bundle paramBundle) {
    super.onCreate(paramBundle);
    setContentView(2130968608);
    this.djni = new DivaJni();
  }
}

Melihat File DivaJni.c

DivaJni.c
#include <jni.h>
#include <string.h>
#include "divajni.h"

#define VENDORKEY   "olsdfgad;lh"
...

Terlihat bahwa terdapat konstanta VENDORKEY yang bernilai olsdfgad;lh.

Setelah dicoba, nilai tersebut berhasil digunakan untuk mendapatkan akses masuk.

Ini membuktikan bahwa Attacker bisa mendapatkan vendorkey dengan mudah yang disebabkan kesalahan developer yang menyimpan credentials di dalam source code.

Melihat File Library pada App Sanbox

Selain menggunakan metodologi white box yang melihat source code, kita juga bisa melihat file library yang ada di aplikasi sanbox. Hal tersebut bisa dilakukan pada perangkat yang di-root atau konfigurasi debug=true pada perangkat non-root.

Jalankan perintah berikut dan Anda akan melihat olsdfgad;lh pada file libdivajni.so.

cd /data/data/jakhar.aseem.diva/lib # berpindah ke direktori penyimpanan lib
ls # list file
cat libdivajni.so # melihat isi file

Kesimpulan

Kita akan mencoba mencari vendor key yang valid dengan melakukan pada APK dan mencari kerentanan hardcoding yang mungkin developer menyimpan informasi vendor key pada source code.

Setelah menganalisis source code di atas kita bisa tahu bahwa DivaJni direferensikan. Karena dari itu kita akan memeriksa file .c atau .h pada direktori .

Dengan menggunakan metodologi white box kita bisa membaca file seperti berikut:

Developer seharusnya tidak menyimpan informasi sensitif seperti credentials ke dalam source code. Walaupun terdapat teknik untuk mempersulit seseorang melakukan reverse engineering, hal tersebut tidak sepenuhnya menghentikan kegiatan reverse engineering.

reversing engineering
Jni
DivaJni.c
obfuscation
sebelumnya
Native languages
Java Native Interface
Mendapatkan akses