Pada artikel ini, saya akan membahas bagian pertama dari analisis salah satu varian malware ActionSpy.
Pendahuluan
Posting ini adalah bagian pertama dari membalikkan versi ActionSpy. Alat yang digunakan adalah :
- BurpSuite
- Ninja Biner
- jadx-gui
- AVD
- apktool
- terutama
Pengumpulan informasi
Izin
Menggunakan jadx-gui untuk membalikkan APK, dapat diamati bahwa malware menggunakan hampir semua izin Android, beberapa di antaranya tercantum di bawah ini:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
....
Analisis lalu lintas
Dimulai dengan analisis lalu lintas akan memberikan informasi lebih lanjut tentang bagaimana malware berkomunikasi dengan server C2C dan informasi mana yang dikirim.
Menginstal malware pada Perangkat Virtual Android yang memiliki Burp Suite sebagai proxy, dapat diamati bahwa server mengirim permintaan HTTP yang berbeda ke server yang berbeda dengan nama domain gvt1.com 11:
- redirector.gvt1.com 8
- r6---sn-n0ogpnx-b85l.gvt1.com 4
- r3---sn-n0ogpnx-b85l.gvt1.com 2
- r5---sn-n0ogpnx-b85l.gvt1.com 2
Permintaan HTTP pertama dikirim ke redirector.gvt1.com 8, yang akan dialihkan ke salah satu server C2C.
Jika kita mengikuti pengalihan, file biner diunduh dari server C2C.
Menggunakan wget
untuk mengunduh file untuk memeriksa isinya:
wget "http://r3---sn-n0ogpnx-b85l.gvt1.com/edgedl/release2/chrome_component/AKi1sv7cx4bJf9W1XiuhCek_9.18.0/KDDyO-ENZ8HrUUsbZHNxeA" -O file1.data
Malware mengirimkan beberapa parameter melalui permintaan termasuk alamat IP publik korban.
Bagian AKi1sv7cx4bJf9W1XiuhCek_9.18.0/KDDyO-ENZ8HrUUsbZHNxeA
dari permintaan berubah setiap saat, diduga bahwa informasi yang dikirim terenkripsi melalui permintaan.
Analisis file yang diunduh
Dimulai dengan mengidentifikasi jenis file dari file yang diunduh.
> file file1.data
file1.data: Google Chrome extension, version 3
Aplikasi Google Chrome di Android tidak mendukung ekstensi. Untuk mendapatkan data dari file foremoset
ini digunakan.
> foremost file1.data -o output_file1/
Alat ini membuat satu file zip yang berisi 3 file dan satu direktori:
File Filtering Rules
berisi daftar 6291 nama domain.
Pada setiap permintaan, daftar baru diunduh dengan nama domain yang berbeda.
APK tersemat
Malware menyematkan tiga APK yang terletak di folder assets/init
. APK ini adalah:
- Kamera.apk
- inti.apk
- Lokasi.apk
APK ini akan dianalisis nanti (Tidak di posting saat ini).
Analisis Statis
Aktifitas utama
Kegiatan utamanya adalah com.jsyjv.klxblnwc.p004u.MainActivity
. Fungsinya onCreate
terlihat sebagai berikut:
Kode memanggil fungsi asli mo684a
dari perpustakaan hello-jni
yang menghasilkan kunci, periksa apakah ini pertama kali aplikasi diluncurkan dengan membaca nilai dari file preferensi bersama yang terletak di/data/data/com.isyjv.klxblnwc/shared_prefs/com.isyjv.klxblnwc.xml
.
Malware memanggil fungsi com.isyjv.klxblnwc.util.Utils.desDecrypt
dengan kunci hex yang dihasilkan.
Fungsinya adalah sebagai berikut:
cipher.init(2, skeyFactory.generateSecret(desKeySpec)); // Initialize cipher to decryption mode
Sebelum mengenkripsi argumen, fungsi membagi string menjadi dua karakter, mengubahnya masing-masing menjadi integer lalu mengenkripsinya:
byte[] btxts = new byte[(txt.length() / 2)];
int count = txt.length();
for (int i = 0; i < count; i += 2) {
btxts[i / 2] = (byte) Integer.parseInt(txt.substring(i, i + 2), 16);
}
Karena dekripsi DES adalah kebalikan dari enkripsi DES, fungsi desDecrypt di sini digunakan sebagai rutin enkripsi.
Setelah pembuatan kunci, malware memulai layanan yang memulai file konfigurasi dan mengalihkan log aplikasi ke file. Nama filenya adalah microlog.txt dan terletak di folder /sdcard. isinya adalah sebagai berikut:
[DEBUG]22:14:53,00 Utils|main PService onCreate |Microlog 1
[DEBUG]22:14:53,00 Utils|main PService onBind Intent { cmp=com.isyjv.klxblnwc/.s.PService } |Microlog 1
[DEBUG]22:14:53,01 Utils|main PService Binder uid:10149 |Microlog 2
[DEBUG]22:14:53,03 Utils|main PService caller signature md5:3bd158635713d3e220113fb6adc8b6e2 |Microlog 4
[DEBUG]22:14:53,48 AppEnv|main onCreate |Microlog 0
[DEBUG]22:14:53,50 AppEnv|main startJobSheduler ret 1 |Microlog 2
[DEBUG]22:14:53,52 AppEnv|main onCreate List pkgName: com.isyjv.klxblnwc svrName: com.isyjv.klxblnwc.s.HService |Microlog 4
[DEBUG]22:14:53,53 AppEnv|main onStartCommand startId:1 |Microlog 5
[DEBUG]22:14:53,54 AppEnv|Thread-2 startGuard pkgName: com.isyjv.klxblnwc svrName: com.isyjv.klxblnwc.s.HService |Microlog 6
[DEBUG]22:14:53,54 AppEnv|Thread-2 startGuard wating... |Microlog 6
[DEBUG]22:14:54,679 Utils|Binder:4646_3 start to installPlugin /storage/emulated/0/origin/Camera.apk,pkgname:null |Microlog 1680
[DEBUG]22:14:54,712 Utils|Binder:4646_3 install plugin failed, pkgname:null resultCode:0 |Microlog 1713
[DEBUG]22:14:54,722 Utils|Binder:4646_3 start to installPlugin /storage/emulated/0/origin/Core.apk,pkgname:null |Microlog 1723
[DEBUG]22:14:54,798 Utils|Binder:4646_3 install plugin failed, pkgname:null resultCode:0 |Microlog 1799
[DEBUG]22:14:54,813 Utils|Binder:4646_3 start to installPlugin /storage/emulated/0/origin/Location.apk,pkgname:null |Microlog 1814
[DEBUG]22:14:54,869 Utils|Binder:4646_3 install plugin failed, pkgname:null resultCode:0 |Microlog 1870
Layanan ini memulai layanan kedua yang akan menginstal APK yang dikemas, mencantumkan Aplikasi yang diinstal, dan memeriksa apakah perangkat telah di-root. Informasi ini dicatat ke file /sdcard/microlog.txt.
Itu saja untuk bagian pertama ini dan terima kasih telah membaca!