Deteksi Malware Berbasis System Call dengan Klasifikasi Support Vector Machine pada Android

DETEKSI MALWARE BERBASIS SYSTEM CALL DENGAN
KLASIFIKASI SUPPORT VECTOR MACHINE PADA
ANDROID

CHANDRA WANGSA SETIADIPURA

DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013

PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA
Dengan ini saya menyatakan bahwa skripsi berjudul Deteksi Malware
Berbasis System Call dengan Klasifikasi Support Vector Machine pada Android
adalah benar karya saya dengan arahan dari komisi pembimbing dan belum
diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber
informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak
diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam
Daftar Pustaka di bagian akhir skripsi ini.

Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut
Pertanian Bogor.
Bogor, April 2013
Chandra Wangsa Setiadipura
NIM G64070108

ABSTRAK
CHANDRA WANGSA SETIADIPURA. Deteksi Malware Berbasis System
Call dengan Klasifikasi Support Vector Machine pada Android. Dibimbing oleh
MUSHTHOFA.
Android merupakan sistem operasi yang paling banyak digunakan untuk
smartphone. Ancaman terbesar pada Android adalah merebaknya malware yang
bersumber dari toko-toko aplikasi Android. Umumnya pendeteksian malware
menggunakan metode signature-based yang dengan mudah dapat dikelabui oleh
malware yang memiliki kemampuan polimorfik, dengan demikian dibutuhkan
metode pendeteksian malware yang lebih dinamis. Tujuan penelitian ini adalah
membuktikan bahwa system call dapat digunakan sebagai fitur untuk mendeteksi
aplikasi malware Android dan menguji keakurasian Support Vector Machine
(SVM) dalam melakukan klasifikasi antara aplikasi malware dan non-malware.
Frekuensi system call didapat dari hasil eksekusi aplikasi Android, lalu system call

yang tidak digunakan sama sekali dihilangkan. Setelah itu, proses Principal
Component Analysis dilakukan untuk mengurangi dimensi dan menghilangkan
fitur yang tidak berpengaruh. Penggunaan kernel Radial Basis Function pada
SVM untuk klasifikasi malware menghasilkan akurasi sebesar 86.25% sedangkan
untuk kernel polinomial menghasilkan akurasi sebesar 90%.
Kata kunci: android, malware, svm, system call

ABSTRACT
CHANDRA WANGSA SETIADIPURA. Malware Detection Based on
System Call with Support Vector Machine Classification on Android. Supervised
by MUSHTHOFA.
Android is an operating system that is widely used in smartphone. The
biggest threat in Android is the spread of malware that comes from Android
application stores. Generally, malware use signature-based method which can be
easily avoided by malware that has polymorphic capabilities. Thus, it requires
more dynamic detection method. The purpose of this research is to see whether
system calls can be used as features to detect Android malware and to test the
accuracy of the Support Vector Machine (SVM) in classifying malware and nonmalware applications using system call frequencies. The frequencies of system
calls were obtained from the result of executing Android applications and unused
system calls were excluded. After that, the Principal Component Analysis process

was conducted to reduce the dimension and eliminate the irrelevant features. The
use of Radial Basis Function kernel in SVM achieves 86.25% of malware
classification while the polynomial kernel achieves 90% of malware classification.
Keywords : android, malware, svm, system call

DETEKSI MALWARE BERBASIS SYSTEM CALL DENGAN
KLASIFIKASI SUPPORT VECTOR MACHINE PADA
ANDROID

CHANDRA WANGSA SETIADIPURA

Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
pada
Departemen Ilmu Komputer

DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR

BOGOR
2013

Judul Skripsi : Deteksi Malware Berbasis System Call dengan Klasifikasi Support
Vector Machine pada Android
Nama
: Chandra Wangsa Setiadipura
NIM
: G64070108

Disetujui oleh

Mushthofa, Skom, MSc
Pembimbing

Diketahui oleh

Dr Ir Agus Buono, MSi, MKom
Ketua Departemen


Tanggal Lulus:

PRAKATA
Puji dan syukur penulis panjatkan kepada Allah subhanahu wa ta’ala atas
segala karunia-Nya sehingga karya ilmiah ini berhasil diselesaikan. Tema yang
dipilih dalam penelitian yang dilaksanakan sejak bulan Januari 2011 ini ialah
malware, dengan judul Deteksi Malware Berbasis System Call dengan Klasifikasi
Support Vector Machine pada Android.
Terima kasih penulis ucapkan kepada Bapak Mushthofa, Skom, MSc selaku
pembimbing yang telah banyak memberi pengarahan, saran dan motivasi dalam
menyelesaikan karya ilmiah ini. Ungkapan terima kasih juga disampaikan kepada
ayah dan ibu, sekaligus penulis ingin memohon maaf kepada mereka berdua
karena terlalu lama berproses menyelesaikan karya ilmiah ini. Terima kasih juga
disampaikan untuk seluruh keluarga, atas segala doa dan kasih sayangnya.
Semoga karya ilmiah ini bermanfaat.

Bogor, April 2013
Chandra Wangsa Setiadipura

DAFTAR ISI

DAFTAR TABEL

vi

DAFTAR GAMBAR

vi

DAFTAR LAMPIRAN

vi

PENDAHULUAN

1

Latar Belakang

1


Perumusan Masalah

2

Tujuan Penelitian

2

Manfaat Penelitian

2

Ruang Lingkup Penelitian

3

TINJAUAN PUSTAKA

3


System Call

3

Malware

5

Support Vector Machine (SVM)

5

Principal Component Analysis

8

METODE

8


Pengumpulan Aplikasi

9

Akuisisi Data Pemanggilan System Call

9

Praproses Data

12

Proses PCA

13

Pelatihan SVM

13


Pengujian SVM

13

Alat

14

Prosedur Analisis Data

14

HASIL DAN PEMBAHASAN

14

Hasil

14


Pembahasan

20

SIMPULAN DAN SARAN

22

Simpulan

22

Saran

22

DAFTAR PUSTAKA

23

LAMPIRAN

24

RIWAYAT HIDUP

54

DAFTAR TABEL
1 Contoh system call dan frekuensi pemanggilannya
2 Matriks Konfusi untuk SVM dengan data uji pertama
kernel RBF
3 Matriks Konfusi untuk SVM dengan data uji permata
kernel polinomial
4 Matriks Konfusi untuk SVM dengan data uji kedua
kernel RBF
5 Matriks Konfusi untuk SVM dengan data uji kedua
kernel polinomial

4
menggunakan
19
menggunakan
19
menggunakan
20
menggunakan
20

DAFTAR GAMBAR
1 Proses sebuah aplikasi mengirimkan permintaan kepada platform
perangkat keras (IBM 2007)
2 Keadaan linearly separable
3 Fungsi ϕ memetakan data ke ruang vektor yang lebih tinggi (Gisler
2008)
4 Tahapan penelitian
5 Ilustrasi proses akuisisi data
6 Perintah untuk memulai program ADB
7 Perintah untuk memulai program ADB
8 Contoh PID dari aplikasi yang akan diamati
9 Contoh perintah program Strace
10 Perintah untuk menghentikan aplikasi yang sedang diamati
11 Contoh isi fail keluaran dari proses akuisisi data
12 Hasil cross-validation kernel RBF mencari nilai parameter G
13 Hasil cross-validation kernel RBF mencari nilai parameter C
14 Hasil cross-validation kernel polinomial mencari nilai parameter G
15 Hasil cross-validation kernel polinomial mencari nilai parameter r
16 Hasil cross-validation kernel polinomial mencari nilai parameter C
17 Hasil cross-validation kernel polinomial mencari nilai parameter d
18 Rata-rata frekuensi pemanggilan system call

4
5
7
8
9
10
10
11
11
12
12
16
16
17
17
18
18
21

DAFTAR LAMPIRAN
1 Daftar nama aplikasi yang digunakan dalam penelitian
2 Algoritme program untuk mengekstrak frekuensi system call
3 Algoritme program untuk mentransformasi frekuensi system call dalam
fail csv menjadi matriks
4 System call yang dipanggil oleh seluruh aplikasi selama pengamatan
5 Nilai matriks hasil pengamatan pertama
6 Nilai matriks hasil pengamatan kedua
7 Nilai matriks hasil pengamatan ketiga

24
28
29
30
32
39
46

PENDAHULUAN
Android saat ini merupakan sistem operasi yang paling banyak digunakan
untuk perangkat komputer bergerak. Aplikasi Android yang dibuat oleh para
pengembang semakin banyak dan mengakibatkan semakin banyaknya pula toko
aplikasi Android sebagai wadah bagi para pengembang aplikasi dan sebagai
penyedia jasa untuk mengunduh aplikasi bagi para pengguna Android. Banyak
toko aplikasi yang belum memiliki sistem pengecekan aplikasi yang diunggah
para pengembang aplikasi, hal ini mengakibatkan penyebaran malware semakin
meluas. Saat ini sistem penyaringan aplikasi hanya berbasis signature. Hal ini
dapat dengan mudah dikelabui oleh malware apabila malware tersebut memiliki
kemampuan polimorfik, sehingga kode signature dapat berubah-ubah. Dengan
demikian dibutuhkan pendeteksian malware secara dinamis, salah satunya dengan
cara mengamati system call.
Tujuan dari penelitian ini adalah menerapkan dugaan bahwa pendeteksian
malware pada Android dapat dilakukan melalui pengamatan system call.
Pendeteksian malware dilakukan dengan mengamati system call karena system
call merupakan bagian dasar dari sistem operasi yang selalu digunakan oleh setiap
aplikasi selama aplikasi tersebut berjalan. Dengan demikian perilaku dari malware
dapat diidentifikasi.

Latar Belakang
Sistem operasi Android saat ini sudah menguasai pasar sistem operasi
komputer bergerak. Berdasarkan data dari International Data Center (IDC) untuk
kuartal 3 tahun 2012 penggunaan Android sebagai sistem operasi komputer mobil
mencapai 75% di seluruh dunia (IDC 2012). Dengan banyaknya pengguna
Android, toko-toko penyedia aplikasi Android pun banyak bermunculan, begitu
juga dengan ancaman keamanan yang semakin besar. Ancaman terbesar saat ini
adalah merebaknya malware (aplikasi jahat) yang menyerang para pengguna
Android. Pusat penyebaran malware Android terdapat pada toko-toko aplikasi
Android. Google Play Store sebagai toko aplikasi resmi Android sudah memiliki
layanan keamanan pemindai aplikasi untuk mengidentifikasi aplikasi malware
yang dinamakan Google Bouncer, tetapi toko aplikasi lainnya belum memiliki hal
serupa.
Menurut Idika dan Marthur (2007) umumnya metode pendeteksian malware
banyak menggunakan signature-based karena metode ini sangat efektif untuk
mendeteksi malware yang sudah dikenali sebelumnya, namun metode ini dapat
dengan mudah dikelabui oleh malware yang memiliki kemapuan polimorfik.
Kemampuan polimorfik adalah kemampuan program yang dapat mengubah kode
signature-nya namun fungsi yang dilakukan tetap sama. Oleh karena itu
dibutuhkan suatu pendekatan pendeteksian malware secara dinamis dengan
mengamati fungsi-fungsi yang dijalankan oleh aplikasi malware.
Menurut Kolbitsch et al. (2009) pendeteksian malware secara dinamis dapat
dilakukan salah satunya dengan mengamati system call. System call merupakan
semacam cara bagi program atau aplikasi untuk meminta service dari kernel

2
sistem operasi. Setiap aplikasi pasti memanggil system call. Oleh karena itu
dengan mengamati system call dapat diamati pula tingkah laku dari sebuah
aplikasi.
Setelah dilakukan perekaman terhadap pemanggilan system call oleh sebuah
aplikasi maka dilakukan metode klasifikasi untuk menentukan apakah perilaku
tersebut tergolong malware atau non-malware. Cristianini dan Taylor (2000)
mengatakan bahwa Support Vector Machine (SVM) merupakan metode
klasifikasi yang memiliki proses pelatihan yang efisien dan dapat dioptimisasi di
segala bidang persoalan. Oleh sebab itu pada penelitian ini akan digunakan SVM
sebagai metode klasifikasinya.
Penelitian mengenai pendeteksian malware secara dinamis pada Android
belum begitu banyak dilakukan. Salah satu hal tentang penelitian ini dilakukan
oleh Burguera (2011). Dalam penelitian tersebut, Burguera mengamati pola yang
dihasilkan dari setiap aplikasi melalui frekuensi pemanggilan system call. Hasil
penelitian Burguera dapat mengidentifikasi malware dengan akurasi 100%.
Aplikasi yang digunakan oleh Burguera merupakan aplikasi buatan sendiri.
Burguera membuat aplikasi yang serupa untuk jenis non-malware dan malware.
Pada penelitian ini aplikasi yang akan digunakan adalah aplikasi malware dan
non-malware yang sudah beredar luas, dengan tetap mengamati frekuensi
pemanggilan system call untuk mengidentifikasi malware.

Perumusan Masalah
Perumusan masalah dalam penelitian ini adalah:
1 Apakah system call dapat digunakan untuk mengidentifikasi malware pada
Android atau tidak.
2 Seberapa baik metode klasifikasi SVM dapat digunakan untuk
mengklasifikasikan antara malware dan non-malware melalui frekuensi
pemanggilan system call.

Tujuan Penelitian
Tujuan dari penelitian ini adalah membuktikan bahwa system call dapat
digunakan sebagai fitur untuk mendeteksi aplikasi malware Android dan menguji
keakurasian tingkat ketepatan dari SVM dalam melakukan klasifikasi antara
aplikasi malware dan non-malware.

Manfaat Penelitian
Manfaat penelitian ini adalah terbentuknya konsep pendeteksian malware
berbasis system call pada Android. Penelitian ini dapat menjadi dasar untuk
penerapan sistem penyaringan aplikasi yang di-submit oleh pengembang aplikasi
Android pada toko-toko aplikasi Android pihak ketiga, dengan demikian dapat
memperkecil peluang tersebarnya malware.

3
Ruang Lingkup Penelitian
Ruang lingkup penelitian ini adalah pengamatan hanya difokuskan pada
system call. Aplikasi non-malware yang digunakan pada penelitian ini diperoleh
dari Google Play Store yang memiliki rate minimal 4 dari 5 dan telah diberi rate
minimal oleh 100 000 pengguna. Untuk mendapatkan aplikasi malware tidaklah
mudah, karena pada saat terdeteksi aplikasi tersebut langsung dihapus dari
sumbernya. Terdapat satu situs yang sering digunakan untuk saling tukar contoh
malware di antara para peneliti yaitu situs contangiominidump.blogspot.com.
Versi sistem operasi Android yang digunakan adalah versi 2.3.7 bernama
Gingerbread. Gingerbread digunakan karena market share-nya pada kuartal ke-3
tahun 2012 masih merupakan versi Android yang paling banyak digunakan yaitu
sebesar 50.6% (Android 2012). Pengeksekusian aplikasi tidak menggunakan
emulator tetapi menggunakan perangkat Android yang sesungguhnya dengan GPS
dan WIFI pada kondisi menyala.

TINJAUAN PUSTAKA
System Call
Menurut Bergstra dan Polse (2001) sebuah system call merupakan semacam
cara bagi program atau aplikasi untuk meminta service dari kernel sistem operasi.
Pada sistem operasi Linux terdapat lebih dari 400 buah system call, setiap system
call diidentifikasi dengan nomor khusus yang ditemukan pada tabel system call
kernel. Sebuah system call dipanggil oleh sebuah aplikasi menggunakan fungsi
library glibc. Fungsi-fungsi seperti getpid(), open(), read() dan socket() adalah
beberapa fungsi yang glibc sediakan agar aplikasi dapat memanggil system call.
Setiap kali sebuah aplikasi dari user space melakukan permintaan kepada
sistem operasi yang dapat dilakukan melalui library glibc, permintaan tersebut
akan masuk ke dalam antarmuka system call, kernel dan akhirnya permintaan
dieksekusi pada platform perangkat keras. Library glibc menerjemahkan
permintaan dari aplikasi, lalu CPU (Central Processing Unit) berubah dari mode
user menjadi mode kernel. Antarmuka system call mendapat permintaan yang
telah diterjemahkan, lalu mengeksekusi fungsi kernel tertentu dengan melihat
kepada tabel system call. Kernel harus menerjemahkan permintaan dari antarmuka
system call dan membuat permintaan kepada platform perangkat keras. Setelah itu,
pengguna menerima informasi yang diminta oleh aplikasi dengan prosedur yang
berkebalikan. Gambar 1 menjelaskan tentang kernel Linux dan proses sebuah
aplikasi mengirimkan permintaan kepada platform perangkat keras.
Kernel Linux dieksekusi di tahap terbawah pada arsitektur Android. Ini
berarti semua permintaan yang dibuat pada tahap-tahap di atasnya pasti melalui
antarmuka system call untuk sampai pada kernel sebelum mengeksekusi
permintaan pada perangkat keras.
Menganalisis seluruh system call yang dipanggil oleh aplikasi dapat
memberikan gambaran tentang tingkah laku dari sebuah aplikasi tersebut
(Kolbitsch et al. 2009). Salah satu cara untuk mengamati system call ini adalah
dengan membuat sebuah fail keluaran berisi seluruh system call yang dipanggil

4
oleh aplikasi Android. Berdasarkan penelitian yang dilakukan Burguera (2011)
frekuensi system call dapat digunakan untuk merepresentasikan tingkah laku
sebuah aplikasi.

Aplikasi Pengguna
User Space
GNU C Library (glibc)

GNU/
Linux

Antarmuka System Call

KERNEL

Kernel Space

Architecture-Dependent Kernel
Code
Platform Perangkat Keras

Gambar 1

Proses sebuah aplikasi mengirimkan permintaan kepada
platform perangkat keras (IBM 2007)

Tabel 1 memperlihatkan contoh system call yang akan diakuisisi, terdapat
nama system call dan frekuensi pemanggilannya selama 5 menit untuk satu kali
eksekusi satu aplikasi.
Tabel 1 Contoh system call dan frekuensi pemanggilannya
Nama System Call
Frekuensi (5 menit)
accept()
0
accept4()
0
access()
2096
...
...
reboot()
0
sync()
747
...
...
waitpid()
0
write()
206

5
Malware
Menurut Kramer dan Bradfield (2010) malware adalah sebuah perangkat
lunak yang dapat merusak perangkat lunak lain atau membuat perangkat keras
bekerja lebih keras karena harus memfasilitasi eksekusi program di luar konteks
yang seharusnya. Lebih jauh mereka menjelaskan bahwa malware juga
merupakan perangkat lunak yang bertindak berbeda dari yang seharusnya
perangkat lunak tersebut lakukan.

Support Vector Machine (SVM)
Cherkassky dan Mulier (2007) mengatakan bahwa Support Vector Machine
(SVM) merupakan prosedur pembelajaran konstruktif yang universal yang
berbasis teori pembelajaran statistik. Istilah “universal” berarti bahwa SVM dapat
digunakan untuk mempelajari berbagai representasi. SVM akan mencari
hyperplane (bidang pemisah) terbaik yang memisahkan data dari suatu
permasalahan.
Misalkan data dinotasikan sebagai
untuk label kelas dari data
xi dinotasikan
dengan
dengan n adalah
banyak data. Pemisahan data secara linear pada metode SVM dapat dilihat pada
Gambar 2.
Bidang pemisah

xi .w + b = 0
Margin
support

Bidang pemisah kelas +1

xi .w + b = 1

Bidang pemisah kelas -1

xi .w + b = -1
Kelas -1

Kelas +1

Gambar 2 Keadaan linearly separable

Margin adalah jarak antara hyperplane dan pattern terdekat dari masingmasing kelas. Pattern yang paling dekat disebut support vector. Nilai margin
antara dua kelas adalah
dengan w adalah vektor bobot yang tegak
lurus terhadap hyperplane (bidang normal). Margin dapat dimaksimalkan
menggunakan fungsi optimasi Lagrangian berikut:

6

(1)
Dengan meminimumkan L terhadap w dan b, diperoleh:
(2)

(3)
Persamaan (1) dapat dimodifikasi sebagai maksimalisasi L yang hanya
mengandung a sebagai persamaan (4).
(4)

s.t

(5)

Nilai a yang dihasilkan digunakan untuk mencari w. Data yang memiliki
nilai
merupakan support vector, sedangkan sisanya memiliki nilai
.
Setelah nilai a ditemukan, kelas dari data pengujuian x dapat ditentukan
berdasarkan nilai fungsi keputusan:
(6)

dengan
= support vector,
ns = jumlah support vector,
= data yang akan diklasifikasikan.
Pada kondisi sebenarnya, terdapat data yang tidak lineary separable
sehingga bidang pemisah secara linear sulit ditemukan. Jika data tidak dapat
dipisahkan secara sempurna dengan pemisahan secara linear (Wang et al. 2009),
SVM dimodifikasi dengan menambahkan variabel
jika diklasifikasikan dengan benar , dengan formula pencarian hyperplane
adalah :
(7)

7
Pencarian hyperplane dengan penambahan variabel disebut soft margin
hyperplane, C adalah parameter yang menentukan besar penalti akibat kesalahan
dalam klasifikasi. Dengan demikian, dual problem yang dihasilkan pada non
linear problem sama dengan dual problem yang dihasilkan dengan linear problem.
Hanya saja, rentang antara
.
Cara lain agar permasalahan non-linear dapat dipisahkan secara linear ialah
memetakan permasalahan tersebut ke dalam ruang ciri berdimensi tinggi,
kemudian diterapkan klasifikasi linear dalam ruang tersebut. Tepatnya, variabel
input x dipetakan ke dalam vektor variabel ciri ϕ dengan fungsi transformasi
ϕ . Fungsi yang memetakan suatu permasalahan non-linear ke dalam ruang
ciri yang lebih tinggi disebut dengan fungsi kernel,
(Osuna et al. 1997).
Ilustrasi pemetaan data ke ruang vektor yang lebih tinggi dapat dilihat pada
Gambar 3.
ϕ

input space

feature space
Gambar 3 Fungsi ϕ memetakan data ke ruang vektor yang
lebih tinggi (Gisler 2008)

Menurut Byun dan Lee (2003), fungsi kernel yang umum digunakan ialah
sebagai berikut:
a Kernel linear
(8)
b Kernel polinomial
(9)
c Kernel Radial Basis Function (RBF)
(10)
Dalam hal ini, G, r dan d merupakan parameter-parameter pada kernel
polinomial dan G juga merupakan parameter pada kernel RBF.

8
Principal Component Analysis
Principal Component Analysis (PCA) adalah salah satu cara
mengidentifikasi pola dalam data dan mengekspresikannya sedemikian rupa
sehingga dapat terlihat persamaan dan perbedaannya. Pola ini berguna untuk
mengompresi data, yaitu mengurangi ukuran atau dimensi data tanpa kehilangan
banyak informasi yang terkandung (Smith 2002).
Secara matematis, Joliffe (2002) mendefinisikan PCA sebagai transformasi
linear ortogonal pada data ke sistem koordinat yang baru sehingga variansi
terbesar dari proyeksi data manapun akan berada pada koordinat pertama dan
disebut sebagai komponen utama pertama, variansi terbesar kedua pada koordinat
kedua, dan selanjutnya.

METODE
Secara garis besar, tahapan dalam penelitian ini digambarkan pada Gambar
4. Penjelasan lebih lengkap tentang tahapan-tahapan penelitian akan dipaparkan di
bawah ini.
Pengumpulan Aplikasi
Akuisisi Data Pemanggilan System
Call
Praproses Data
Proses PCA

SVM
Data Latih
Data Uji
Pelatihan SVM

Pengujian SVM

Analisis

Gambar 4 Tahapan penelitian

9
Pengumpulan Aplikasi
Sebanyak 80 aplikasi dikumpulkan dalam penelitian ini. Aplikasi-aplikasi
tersebut terdiri dari 50 aplikasi non-malware dan 30 aplikasi malware. Seluruh
aplikasi non-malware didapatkan dari Google Play Store, sedangkan aplikasi
malware didapatkan dari situs contagiominidump.blogspot.com. Daftar nama
aplikasi yang digunakan pada penelitian ini dapat dilihat pada Lampiran 1.
Untuk menguji kemampuan pengenalan aplikasi malware yang bersifat
polimorfik, sebanyak 5 aplikasi malware diubah signature-nya dengan teknik resign. Android mengharuskan setiap aplikasi diberi signature sebelum aplikasi
tersebut dapat dipublikasikan dan dijalankan pada perangkat Android. Sayangnya,
setiap aplikasi Android dapat diberi signature berulang kali walaupun bukan oleh
pembuat aplikasi tersebut. Dengan demikian, cara ini dapat menghindari sistem
pendeteksian anti-virus yang hanya mengidentifikasi malware sesuai dengan
signature aslinya (Zheng et al. 2013).

Akuisisi Data Pemanggilan System Call
Seluruh aplikasi dipasang pada smartphone yang menggunakan sistem
operasi Android yang sudah di-root dan ditambahkan program Strace untuk
mencatat pemanggilan system call. Telepon pintar tersebut dihubungkan dengan
sebuah komputer melalui kabel USB. Dengan bantuan program Android Debug
Bridge (ADB) yang sudah terpasang di komputer, system call yang digunakan
oleh aplikasi Android pada saat eksekusi dapat direkam pada komputer. Setiap
aplikasi pada penelitian ini dieksekusi selama 5 menit dan diulang sebanyak 3 kali.
Ilustrasi tentang proses akuisisi data pemanggilan system call ini digambarkan
pada Gambar 5.

ADB SHELL
Kabel USB

Strace

Strace

System call
Fail Keluaran

Aplikasi Android

Komputer

Perangkat Android

Gambar 5 Ilustrasi proses akuisisi data

10
Sebagai contoh, akan dipasang sebuah aplikasi Android bernama Daily Ab
Workout pada perangkat Android. Kemudian perangkat Android tersebut
dihubungkan dengan komputer yang sudah terpasang program ADB melalui kabel
USB. Setelah aplikasi berhasil dipasang pada perangkat Android, aplikasi tersebut
dijalankan dan akan mulai diamati pemanggilan system call-nya melalui komputer.
Pada komputer mulai dijalankan program ADB dengan menggunakan shell.
Gambar 6 menunjukkan perintah untuk memulai program ADB.

Gambar 6 Perintah untuk memulai program ADB

Setelah program ADB berhasil dijalankan, hal ini berarti shell Linux pada
perangkat Android dapat dikendalikan melalui komputer. Langkah selanjutnya
adalah mencari Process ID (PID) aplikasi yang akan diamati. Gambar 7
menunjukkan perintah shell Linux untuk melihat seluruh proses yang sedang
berjalan.

Gambar 7 Perintah untuk memulai program ADB

Setelah seluruh proses yang sedang berjalan pada perangkat Android
ditampilkan, langkah selanjutnya adalah mencari PID aplikasi yang akan diamati.
Keterangan nama aplikasi yang akan diamati berada pada kolom terakhir atau
kolom ke-9, sedangkan PID dari aplikasi tersebut berada pada kolom ke-2.
Gambar 8 menunjukkan contoh PID aplikasi yang dicari dari aplikasi Daily Ab
Workout yaitu 1603.

11

Gambar 8 Contoh PID dari aplikasi yang akan diamati
PID dari aplikasi yang akan diamati telah didapatkan. Selanjutnya untuk
merekam system call yang akan dipanggil oleh aplikasi Daily Ab Workout,
dibutuhkan satu jendela shell baru. Pada jendela shell yang baru ini diketikan
perintah untuk menjalankan program Strace yang akan merekam pemanggilan
system call dan menyimpannya pada fail keluaran di komputer. Gambar 9
menunjukkan perintah program Strace dengan angka 1603 merupakan PID dari
aplikasi yang akan diamati, dan dailyAbWorkout_1.txt merupakan nama fail
keluaran yang berisi system call hasil pengamatan.

Gambar 9 Contoh perintah program Strace

Selama program Strace berjalan, aplikasi pada perangkat Android
dieksekusi sebagaimana pengguna biasa mengeksekusi aplikasi tersebut. Waktu
eksekusi adalah 5 menit. Apabila telah mencapai batas waktu eksekusi, aplikasi
Android diberhentikan dengan perintah seperti yang tercantum pada Gambar 10.
Angka 1603 pada Gambar 10 merupakan PID dari aplikasi yang akan dihentikan.
Secara otomatis program Strace akan berhenti karena tidak ada lagi aplikasi
dengan PID tersebut yang sedang diamati.

12

Gambar 10 Perintah untuk menghentikan aplikasi yang sedang diamati

Proses akuisisi data untuk 1 kali pengamatan terhadap 1 aplikasi telah
selesai. Hasil dari pengamatan ini berupa fail teks yang berisi informasi terkait
dengan system call yang dipanggil oleh aplikasi Android selama dieksekusi.
Gambar 11 menunjukkan contoh isi dari fail keluaran proses akuisisi data.

Gambar 11 Contoh isi fail keluaran dari proses akuisisi data

Praproses Data
Format data yang sudah didapatkan dari hasil eksekusi belum berupa nama
system call dan frekuensinya, oleh karena itu dibuat sebuah program yang dapat
mengekstrak nama system call dan frekuensinya. Program yang digunakan
merupakan program yang ditulis dengan bahasa pemrograman Perl. Algoritme
program ini dapat dilihat pada Lampiran 2. Keluaran program tersebut berupa fail
dalam format CSV yang berisi frekuensi dari setiap system call yang digunakan
oleh aplikasi Android selama eksekusi.
Data pada fail CSV tersebut kemudian ditransformasi menjadi sebuah
matriks untuk diolah pada perangkat lunak Matlab. Algoritme program yang
digunakan untuk mentransformasi fail CSV ke dalam bentuk matriks dapat dilihat
pada Lampiran 3. Satu baris matriks merepresentasikan satu buah aplikasi dan
satu kolom matriks merepresentasikan sebuah system call Android. Terdapat 3
buah matriks berukuran 80 x 401. Masing-masing matriks merepresentasikan
pengulangan eksekusi aplikasi Android.

13
Matriks 1 dan matriks 3 digabung untuk menjadi data latih, dan matriks 2
yang akan menjadi data uji. Dengan demikian ukuran matriks data latih adalah
160 x 401 dan ukuran matriks data uji adalah 80 x 401.
Dari 401 system call yang tersedia pada sistem operasi android, tidak semua
system call dipanggil oleh aplikasi pada waktu pengamatan. System call yang
sama sekali tidak pernah dipanggil oleh seluruh aplikasi pada saat pengamatan,
system call tersebut akan dihilangkan. Pada data yang sudah ditransformasi ke
dalam matriks, kolom yang akan dihilangkan adalah kolom yang bernilai 0 di
semua baris matriks.
Setelah semua kolom yang bernilai 0 pada setiap baris dalam matriks
dihilangkan, nilai dalam matriks uji dan matriks latih akan diskalakan. Penskalaan
ini membuat nilai tengah setiap kolom adalah 0 dan nilai simpangannya adalah 1.
Penskalaan ini menggunakan fungsi mapstd yang terdapat pada program Matlab.

Proses PCA
Matriks yang sudah melalui proses pembuangan system call yang tidak
pernah digunakan oleh seluruh aplikasi selama waktu pengamatan, kemudian
dilakukan proses Principal Component Analysis (PCA). Proses PCA bertujuan
untuk mengurangi ukuran atau dimensi data tanpa kehilangan banyak informasi
yang terkandung (Smith 2002).

Pelatihan SVM
Proses identifikasi aplikasi malware menggunakan metode klasifikasi
Support Vector Machine (SVM). Data latih yang digunakan untuk pelatihan SVM
adalah gabungan dari hasil eksekusi ulangan pertama dan eksekusi ulangan ke-3.
Fungsi kernel SVM yang digunakan pada penelitian ini adalah Radial Basis
Function (RBF) dan polinomial. Ada beberapa nilai parameter untuk fungsi kernel
RBF dan polinomial yang harus dicari agar hasil klasifikasi SVM optimal. Untuk
mencari nilai parameter terbaik dari masing-masing kernel dilakukan proses
cross-validation dengan nilai fold adalah 5.
Pada kernel RBF, nilai parameter yang dibutuhkan adalah nilai parameter C
(Cost) dan nilai parameter G (Gamma). Nilai parameter C dicari dari 2-5 sampai
215 dan untuk nilai parameter G dicari dari 2-15 sampai 23.
Pada kernel polinomial, nilai parameter yang dibutuhkan adalah nilai
parameter C (Cost), nilai parameter G (Gamma), nilai parameter d (Degree), dan r
(coefficient 0). Nilai parameter C dicari dari 2-5 sampai 215, nilai parameter G
dicari dari 2-15 sampai 23, nilai parameter d dicari dari 1 sampai 6, dan nilai
parameter r dicari dari 0 sampai 4.

Pengujian SVM
Setelah didapatkan nilai parameter untuk setiap kernel dari hasil pelatihan
SVM, klasifikasi SVM akan diuji dengan 2 jenis data uji. Data uji yang pertama
merupakan data hasil eksekusi pada ulangan ke-2, dan data uji yang kedua adalah

14
hasil eksekusi pada ulangan ke-2 dengan 5 aplikasi malware yang sudah diubah
signature-nya. Hal ini dilakukan untuk menguji apakah metode ini mampu
mengenali perilaku aplikasi malware yang memiliki kemampuan polimorfik atau
tidak.

Alat






Perangkat keras:
Pemroses Komputer Intel Core 2 Duo T7200,
Memori Akses Acak Komputer 2 GB,
Cakram Keras berkapasitas 500 GB,
Pemroses Telepon Seluler 800 MHz ARM 11, dan
Memori Akses Acak Telepon Seluler 278 MB.







Perangkat lunak:
Sistem Operasi Microsoft Windows 7 Ultimate,
Sistem Operasi Android versi 2.3.7 Gingerbread,
MATLAB R2012a,
Libsvm versi 3.16, dan
Android Debug Bridge versi 1.0.29

Prosedur Analisis Data
Dari hasil pelatihan dan pengujian SVM dengan kernel yang berbeda akan
didapatkan hasil kinerja klasifikasi SVM terhadap aplikasi Android. Setelah itu
dicari akurasi untuk masing-masing klasifikasi. Rumus yang digunakan untuk
menghitung akurasi hasil klasifikasi, yaitu :
kurasi

umlah data uji benar
x
umlah data uji

HASIL DAN PEMBAHASAN
Hasil
Akuisisi Data
Dengan mengamati sebanyak 80 aplikasi dan setiap aplikasi dieksekusi
sebanyak 3 kali, didapatkan fail keluaran sebanyak 240 buah. Seluruh fail
keluaran ini dibagi menjadi 3 bagian, setiap bagian merepresentasikan urutan
pengulangan eksekusi. Bagian-bagian tersebut akan ditransformasi menjadi
bentuk matriks.

15
Praproses Data
Terdapat 3 buah matriks masing-masing berukuran 80 x 401. Setelah
dilakukan praproses data, masing-masing matriks tersebut berukuran 80 x 57. Hal
ini berarti dari 3 kali pengamatan terhadap 80 aplikasi Android, hanya 57 system
call yang digunakan oleh seluruh aplikasi dalam penelitian ini. Daftar system call
yang dipanggil oleh seluruh aplikasi dalam penelitian ini dapat dilihat pada
Lampiran 4 dan nilai matriks untuk hasil pengamatan pertama dapat dilihat pada
Lampiran 5, untuk ulangan kedua pada Lampiran 6, serta untuk ulangan ketiga
pada Lampiran 7. Untuk proses selanjutnya matriks hasil eksekusi pertama
digabung dengan matriks hasil eksekusi ketiga untuk menjadi data latih dan
matriks kedua digunakan sebagai data uji. Dengan demikian ukuran matriks data
latih adalah 160 x 57 dan ukuran matriks data uji adalah 80 x 57.

Proses PCA
Pengaturan proses PCA pada penelitian ini adalah membuang fitur yang
ragamnya bernilai 0, sehingga tidak mengurangi informasi awalnya sama sekali.
Hasil yang didapat dari proses PCA ini adalah semakin berkurangnya dimensi
matriks yang akan diinput kedalam proses klasifikasi SVM. Ukuran matriks data
latih sebelum proses PCA adalah 160 x 57, setelah melalui proses PCA ukuran
matriks data latih menjadi 160 x 51. Begitu pula dengan ukuran matriks data uji
semula berukuran 80 x 57, setelah melalui proses PCA menjadi 80 x 51.

Pelatihan SVM
Proses SVM untuk kernel RBF dan polinomial membutuhkan beberapa nilai
parameter. Nilai parameter tersebut didapat dengan melakukan proses crossvalidation dengan nilai fold sebesar 5. Nilai parameter yang dibutuhkan kernel
RBF adalah C dan G, sedangkan untuk kernel polinomial adalah C, G, d, dan r.
Dari Gambar 12 dapat dilihat bahwa akurasi tertinggi pada proses crossvalidation untuk kernel RBF dengan nilai parameter C=1 dicapai pada saat nilai G
adalah 2-2. Setelah itu nilai G tersebut digunakan untuk mencari nilai C yang
optimal melalui proses cross-validation juga. Gambar 13 menunjukkan hasil nilai
C yang optimal untuk kernel RBF yaitu sebesar 25.

16

Gambar 12

Hasil cross-validation kernel RBF mencari nilai
parameter G

Gambar 13 Hasil cross-validation kernel RBF mencari nilai parameter C

Untuk kernel polinomial nilai parameter yang pertama kali dicari adalah
nilai G dengan C=0.5; d=4; dan r=1. Gambar 14 menunjukkan akurasi terbaik
untuk kernel polinomial dengan nilai G sebesar 2-3.

17

Gambar 14

Hasil cross-validation kernel polinomial mencari nilai
parameter G

Setelah nilai parameter G didapatkan, nilai parameter selanjutnya yang
dicari untuk kernel polinomial adalah nilai parameter r. Gambar 15
memperlihatkan bahwa akurasi tertinggi dicapai pada saat nilai r=1.

Gambar 15 Hasil cross-validation kernel polinomial mencari nilai
parameter r
Parameter yang dicari selanjutnya adalah parameter C. Dengan melakukan
cross-validation dan nilai parameter d=4; G=0.125; dan r=1 didapatkan akurasi

18
terbaik pada saat nilai C=2-1. Gambar 16 menunjukkan akurasi dari beberapa nilai
parameter C.

Gambar 16

Hasil cross-validation kernel polinomial mencari nilai
parameter C

Parameter selanjutnya yang dicari untuk kernel polinomial adalah parameter
d. Gambar 17 memperlihatkan hasil proses cross-validation untuk beberapa nilai
d, dan didapatkan akurasi terbaik terjadi pada saat nilai d=4.

Gambar 17 Hasil cross-validation kernel polinomial mencari nilai
parameter d

19
Dengan demikian dari proses cross-validation didapatkan beberapa nilai
parameter optimal untuk kernel RBF dan kernel polinomial. Untuk kernel RBF
parameter C bernilai 32 dan parameter G bernilai 0.25. Untuk kernel polinomial
parameter C bernilai 0.5; parameter G bernilai 0.125; parameter d bernilai 4; dan
parameter r bernilai 1.

Pengujian SVM
Nilai parameter yang didapatkan dari hasil pelatihan SVM digunakan dalam
proses SVM dengan menggunakan data uji. Confusion matrix hasil identifikasi
SVM dengan data uji yang pertama menggunakan fungsi kernel RBF dapat dilihat
pada Tabel 2 dan confusion matrix hasil identifikasi SVM dengan fungsi kernel
polinomial dapat dilihat pada Tabel 3.
Tabel 2 Confusion matrix untuk SVM dengan
data uji pertama menggunakan kernel
RBF
Prediksi
Kernel RBF
Malware
Non-Malware
Malware
20
10
Non-Malware
1
49

Tabel 3 Confusion matrix untuk SVM dengan
data uji permata menggunakan kernel
polinomial
Prediksi
Kernel
Polinomial
Malware
Non-Malware
Malware
24
6
Non-Malware
2
48

Dengan menggunakan data uji pertama, dari Tabel 2 dapat diketahui bahwa
akurasi pendeteksian malware dengan SVM dan menggunakan kernel RBF
mencapai 86.25%, dan dari Tabel 3 dapat diketahui bahwa akurasi pendeteksian
malware dengan SVM dan kernel polinomial mencapai 90%.
Pengujian selanjutnya adalah dengan menggunakan data uji yang di
dalamnya terdapat 5 aplikasi malware yang telah diubah signature-nya. Confusion
matrix hasil identifikasi SVM dengan data uji yang kedua menggunakan fungsi
kernel RBF dapat dilihat pada Tabel 4 dan confusion matrix hasil identifikasi
SVM dengan fungsi kernel polinomial dapat dilihat pada Tabel 5.

20
Tabel 4 Confusion matrix untuk SVM dengan
data uji kedua menggunakan kernel
RBF
Prediksi
Kernel RBF
Malware
Non-Malware
Malware
20
10
Non-Malware
1
49

Tabel 5 Confusion matrix untuk SVM dengan
data uji kedua menggunakan kernel
polinomial
Prediksi
Kernel
Polinomial
Malware
Non-Malware
Malware
24
6
Non-Malware
2
48

Seluruh aplikasi malware yang diubah signature-nya, dapat diidentifikasi
dengan benar sebagai malware. Jika dibandingkan antara Tabel 2 dan Tabel 4
serta Tabel 3 dan Tabel 5, pendeteksian malware dengan signature yang
sebelumnya tidak diubah dan pendeteksian malware yang sudah diubah signaturenya hasilnya adalah sama. Dengan demikian, metode ini mampu mengenali
aplikasi malware yang memiliki kemampuan polimorfik.
Pembahasan
Burguera (2011) mengatakan bahwa system call access(), chmod(), chown(),
kill(), open(), dan read() merupakan system call yang paling umum digunakan
oleh malware Android. Namun hasil penelitian ini tidak menunjukkan hal serupa,
dapat dilihat pada Gambar 18 bahwa system call access(), chmod(), kill(), open(),
dan read() memiliki rata-rata frekuensi pemanggilan yang hampir serupa antara
malware dan non-malware, sedangkan system call chown() tidak pernah dipanggil
sama sekali oleh satu aplikasipun pada waktu pengamatan.

21

Gambar 18 Rata-rata frekuensi pemanggilan system call

Dari hasil penelitian ini, tidak terlihat system call mana yang dapat
membedakan secara signifikan antara malware dan non-malware. Hasil klasifikasi
dapat mencapai akurasi cukup tinggi karena data uji yang digunakan merupakan
hasil pengamatan dari aplikasi yang sama dengan data latih. Hal tersebut
merupakan kelemahan metode ini karena tidak dapat mengidentifikasi aplikasi
baru yang belum pernah diamati frekuensi system call-nya dan dilatih dengan
klasifikasi SVM.
Berdasarkan hasil pengamatan pemanggilan system call oleh aplikasi
Android, dapat dilihat pada Lampiran 5, Lampiran 6, dan Lampiran 7 ditemukan
bahwa hampir seluruh aplikasi pada penelitian ini memanggil system call clone()
yang berfungsi untuk menciptakan child process, juga terdapat beberapa aplikasi
yang memanggil system call fork() yang berfungsi untuk menduplikasi process.
Hal ini berarti pada saat satu buah aplikasi dieksekusi, PID yang dibangkitkan
oleh aplikasi tersebut dapat berjumlah lebih dari satu buah, sedangkan dalam
penelitian ini pengamatan frekuensi pemanggilan system call oleh satu buah
aplikasi hanya diamati dari satu buah PID, yaitu PID yang pertama kali muncul
pada saat aplikasi tersebut dijalankan. Oleh karena itu, hal ini juga merupakan
kelemahan pada metode penelitian ini, bisa saja perilaku malware dari suatu
aplikasi dilakukan oleh proses lain dengan PID yang berbeda.
Untuk penelitian selanjutnya, perlu dibuat cara agar pada saat eksekusi satu
aplikasi Android. Pengamatan yang dilakukan dapat mencakup seluruh PID yang
dibangkitkan oleh aplikasi tersebut.
Secara umum, tujuan penelitian ini belum tercapai sepenuhnya karena
belum dapat dibedakan tingkah laku malware dan non-malware secara umum jika
diamati melalui system call. Walaupun demikian jika metode penelitian ini
dibandingkan dengan metode signature-based, hasil dari metode ini relatif lebih

22
baik karena metode ini mampu mengenali malware yang memiliki kemampuan
polimorfik.

SIMPULAN DAN SARAN
Simpulan
Konsep pendeteksian malware Android berbasis system call dapat dengan
baik mengidentifikasi malware. Menggunakan klasifikasi SVM dengan fungsi
kerrnel polinomial didapatkan akurasi sebesar 90%. Dari penelitian ini juga
didapatkan bahwa belum ditemukan system call yang dengan signifikan dapat
mencirikan sebuah malware. Kelemahan dari penelitian ini adalah metode yang
digunakan tidak dapat mengidentifikasi aplikasi yang belum pernah dilakukan
pengamatannya dan dilatih dengan klasifikasi SVM. Terdapat juga kelemahan lain,
yaitu pengamatan frekuensi pemanggilan system call hanya diperoleh dari PID
pertama pada saat aplikasi Android tersebut berjalan. Walaupun demikian jika
metode penelitian ini dibandingkan dengan metode signature-based, hasil dari
metode ini relatif lebih baik karena metode ini mampu mengenali malware yang
bersifat polimorfik.

Saran
Hasil penelitian ini menunjukkan akurasi yang cukup tinggi dalam
mengidentifikasi aplikasi malware dan non-malware. Namun, data latih dan data
uji didapatkan dari pengamatan aplikasi yang sama. Saran untuk penelitian
berikutnya adalah memodifikasi metode penelitian pada tahap akuisisi data
pemanggilan system call. Pada penelitian ini, satu buah aplikasi hanya diamati
melalui satu buah PID, padahal terdapat banyak aplikasi yang memanggil system
call clone() dan fork() yang dapat menyebabkan aplikasi tersebut membangkitkan
PID lebih dari satu buah. Oleh karena itu dibutuhkan suatu cara agar seluruh PID
yang dibangkitkan oleh sebuah aplikasi dapat diamati. Saran selanjutnya adalah
menggunakan lebih banyak lagi aplikasi malware dan non-malware dalam tahap
pelatihan, sehingga diharapkan dapat ditemukan pola umum frekuensi
pemanggilan system call oleh aplikasi malware dan non-malware, atau aplikasi
malware dan non-malware yang digunakan dalam tahap pelatihan merupakan
aplikasi yang serupa sehingga dapat terlihat anomali frekuensi pemanggilan
system call pada aplikasi malware. Saran lainnya adalah pada tahap pengujian
dapat digunakan data frekuensi system call dari aplikasi yang berbeda dengan
tahap pelatihan. Hal ini bertujuan untuk mendeteksi jenis malware baru namun
dengan perilaku yang serupa dengan aplikasi malware yang telah diamati.

23

DAFTAR PUSTAKA
Android. 2012. Current distribution [Internet]. [diunduh 2012 Des 6]. Tersedia
pada: http:// developer.android.com/about/ dashboards/index.html.
Bergstra JA, Polse A. 2001. Register-machine based processes. Journal of the
ACM. 48 (6):1207-1241.doi:10.1145/504794.504799.
Burguera I. 2011. Behavior-based malware detection system for the android
platform [tesis]. Lingkoping (SE): Lingkoping University.
Byun H, Lee S. 2003. A survey on pattern applications of support vector machines.
International Journal of Pattern Recognition and Artificial Intelligene 17(3):
459-486.
Cherkassky V, Mulier F. 2007. Learning from Data: Concepts, Theory, and
Methods. Ed ke-2. New Jersey (US): John Wiley & Sons.
Cristianini N, Taylor JS. 2000. An Introduction to Support Vector Machine and
Other Kernel-based Learning Methods. Cambridge (GB): Cambridge
University Press.
Gisler H. 2008. An Interactive painting based on image selection and voice input
[tesis]. Baden-Wurttemberg (DE): University of Fribourg.
IBM. 2007. Anatomy of the Linux kernel [Internet]. [diunduh 2013 April 8].
Tersedia pada: http://www.ibm.com/developerworks/linux/library/l-linuxkernel.
IDC. 2012. Android marks fourth anniversary since launch with 75.0% market
share in third quarter, according to IDC [Internet]. [diunduh 2012 Nov 17].
Tersedia pada: http://www.idc.com/getdoc.jsp?containerId=prUS23771812.
Idika N, Marthur AP. 2007. A Survey of Malware Detection Techniques. West
Lafayetle (US): Purdue University.
Joliffe IT. 2002. Principle Component Analysis. Berlin (GE): Springer.
Kolbitsch C, Comparetti PM, Kruegel C, Kirda E, Zhou X, Wang X. 2009.
Effective and Efficient Malware Detection at the End Host. Di dalam:
Kolbitsch C, Comparetti PM, editor. SSYM'09 Proceedings of the 18th
conference on USENIX security symposium [Internet]; 2009 Agustus 10-14;
Montreal, Kanada. Barkeley (CA): USENIX. hlm 351-366; [diunduh 2013 Feb
26]. Tersedia pada: http://www.usenix.org/event/sec09/tech/full_papers/
kolbitsch.pdf
Kramer S, Bradfield JC. 2010. A general definition of malware. Journal in
Computer Virology. 6(2):105-114.
Osuna EE, Freund R, Girosi F. 1997. Support Vector Machines: Training and
Applications. AI Memo 1602, Massachusetts Institute of Technology.
Smith LI. 2002. A Tutorial on Principal Component Analysis. New York (US):
Cornell University.
Wang S, Mathew A, Chen Y, Ci L, Ma L, Lee J. 2009. Empirical analysis of
support vector machine ensemble classifiers. Expert System with Applications
36: 6466-6476.
Zheng M, Lee PP, Lui JC. 2013. Adam: an automatic and extensible platform to
stress test android anti-virus systems. Detection of Intrusions and Malware,
and Vulnerability Assessment. Berlin (GE): Springer. hlm 82-101.

24
Lampiran 1 Daftar nama aplikasi yang digunakan dalam penelitian
No

Sumber / Nama fail

Tipe

1 com.rovio.new.ads-LeNa.c.apk

Malware

2 5D27C7D0C5630F4C7A8B7A8F45512F09

Malware

3 astrolog.great.little.war.game.apk

Malware

4 com.christmasgame.balloon.apk

Malware

5 0DA3484A20C85C0489FEA8F53316B53C

Malware

6 3374D6322542D6AEC9D319DF335215E5

Malware

7 189D11C33EEE3076BE3EE20033F6B06E

Malware

8 C05D4FF1A80F18BA9D8A86AFD88BC05D
9 com.christmasgame.deal.apk

Malware
Malware

10 82F5BF4509E35C3AE7172A0DD7C3ECF4

Malware

11
12
13
14

Malware
Malware
Malware
Malware

il.co.egv-3.apk
025A55C1BCBD3BE2CA03AA314CE9A4C2
8498984D8F9B7260FD032D6F0A2534AA
B9E392DEE83D9596DD72B2739486062F

15 543E9D86DD28005342A3313BDC588009

Malware

16
17
18
19
20
21
22
23

Malware
Malware
Malware
Malware
Malware
Malware
Malware
Malware

24069021F25C1E699B5BC54DA38E7C7D
5ADE65BF5B4B73A24FA0F7DE7315C9FF
178BA57AAC8FB2014CDA5D0BBC9FCC3D
com.mediawoz.gotq.apk
54FAD8426E03A05279223173EC7D2FE2
714136CBCE1A7BC24351B41A92A7DD08
F8A6F3DE5255AE3C6750C256559887C5
Puss.Boots.wallpapers_055038.apk

24 com.redmicapps.puzzles.ladies2.apk

Malware

25
26
27
28

Malware
Malware
Malware
Malware

6A19CB7915895B6A6A6AF542EF0382C5
android.dds.com-STiNiTER.apk
skyscanner
97CA61C8497AE5E3FF5F853C7070E5C6

Nama
Aplikasi
angry birds
space
armored
strike
astrologgreat-littlewar-game
balloon
game
baseball
superstar
china
lot
synergy
crazy
hamster
ddong
deal and be
millionaire
es
file
explorer
find and call
gold miner
iDracula
instant heart
rate
jelly
matching
Katie
keji.danti
magic shop
mediawoz
metro
mini army
mouthOff
puss in boots
wallpaper
puzzleladies2
shotgun
siniter
skyscanner
tower
defense

25
Lanjutan
No

Sumber / Nama fail

29 com.christmasgame.wildjump.apk
30 B6847521B548B806CF5E4F71B687EC26
31 Google Play Store
32 Google Play Store
33 Google Play Store
34 Google Play Store
35 Google Play Store
36 Google Play Store
37 Google Play Store
38 Google Play Store
39 Google Play Store
40 Google Play Store
41 Google Play Store
42 Google Play Store
43 Google Play Store
44 Google Play Store
45 Google Play Store
46 Google Play Store
47 Google Play Store
48 Google Play Store

49 Google Play Store
50 Google Play Store

Tipe
Malware
Malware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware

Nama
Aplikasi
wild jump
zahling
Amazing
Alex
Angry Bird
space
Ant smasher
Basketball
shoot
BBC News
BMX boy
Cartoon
Camera
Color Splash
FX
death racing
Defender II
detikcom
Doraemon
Fishing 2
Drag Racing
Drag Racing
bike edition
Endomondo
Evernote
Facebook
Farm
Invasion
USA
Foursquare

Nonmalware
NonFruit
malware Free

Ninja

26
Lanjutan
No

Sumber / Nama fail

51 Google Play Store
52 Google Play Store
53 Google Play Store

54 Google Play Store
55 Google Play Store
56 Google Play Store
57 Google Play Store
58 Google Play Store
59 Google Play Store
60 Google Play Store

61 Google Play Store
62 Google Play Store
63 Google Play Store
64 Google Play Store

65 Google Play Store
66 Google Play Store
67 Google Play Store
68 Google Play Store
69 Google Play Store
70 Google Play Store

Tipe

Nama
Aplikasi
Gold Miner

Nonmalware
NonHambo
malware
NonIMDb
malware Movies &
TV
NonInotia4
malware
NonKung
Fu
malware Do Fighting
NonLazy Snakes
malware
Nonlondon city
malware guide
NonMega Jump
malware
NonMortal Skies
malware 2 Free
NonMusiXmatch
malware Lyrics
&
Music
NonNinja
malware Chicken
NonNinjump
malware
Nonsmart
malware measure
NonOpera Mini
malware Web
browser
Nonphoto studio
malware
NonQuran
malware Android
NonReal drum
malware
NonSkater Boy
malware
NonNoogra Nuts
malware
NonSongify
malware

27
Lanjutan
No
Sumber / Nama fail
71 Google Play Store
72 Google Play Store
73 Google Play Store
74 Google Play Store
75 Google Play Store
76 Google Play Store
77 Google Play Store
78 Google Play Store
79 Google Play Store
80 Google Play Store

Tipe
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware
Nonmalware

Nama
Aplikasi
StreamZoo
Tower
Defense
Tune wiki
TuneIn radio
Twitter
Whats app
Wordpress
Workout
Trainer
Yahoo
Messenger
Yoo
Ninja!Free

28
Lampiran 2 Algoritme program untuk mengekstrak frekuensi system call
1 Read directory;
2 While (file in directory){
3
Read file;
4
While(line in file not EOF){
5
A = Read syscall from line;
6
syscall_array[A]++;
7
}
8
Out = output_file;
10
While(syscall_array as syscall_freq){
11
syscall_freq > out;
12
}
13
Print syscall_freq > matriks.csv;
14 }

29
Lampiran 3 Algoritme program untuk mentransformasi frekuensi system call
dalam fail csv menjadi matriks
1
2
3
4
5
6
7
8
9

Read directory;
While (file in directory){
Read file;
While(line in file not EOF){
Vector = Concatenate(vector,line,” “);
}
Vector = concatenate(vector,”;\n”);
}
Print Vector > matriks.txt;

Lampiran 4 System call yang dipanggil oleh seluruh aplikasi selama pengamatan
No.
System
call

Nama System
Call

Deskripsi System Call

access
bind
brk
chmod
clone
close
connect

memeriksa hak akses pengguna terhadap fail
memautkan nama ke socket
mengubah ukuran segmen data
mengubah hak akses dari fail
menciptakan child process
menutup descriptor fail
memulai koneksi pada socket

8
9
10
11
12
13
14

dup
fcntl64
fdatasync
fork
fstat64
fsync
ftruncate

menduplikasi descriptor fail
memanipulasi descriptor fail
mensinkronisasi sebuah fail dengan perangkat penyimpanan
menduplikasi process
mendapatkan status fail
mensinkronisasi sebuah fail dengan perangkat penyimpanan
memotong fail dengan panjang tertentu

15
16
17
18
19
20

getdents64
getegid32
geteuid32
getgid32
getpid
getpriority

mendapatkan entri direktori
mendapatkan identitas kelompok
men