PERANCANGAN DAN IMPLEMENTASI SISTEM ...budi.rahardjo.id/files/students/rela-tesis.pdf“Perancangan...
Transcript of PERANCANGAN DAN IMPLEMENTASI SISTEM ...budi.rahardjo.id/files/students/rela-tesis.pdf“Perancangan...
PERANCANGAN DAN IMPLEMENTASI
SISTEM DATABASE MALWARE
TESIS
Karya tulis sebagai salah satu syarat
untuk memperoleh gelar Magister dari
Institut Teknologi Bandung
Oleh
RELA ANNISA CAMILIA MARHUN
NIM: 23218011
(Program Studi Magister Teknik Elektro)
INSTITUT TEKNOLOGI BANDUNG
Juni 2020
i
ABSTRAK
PERANCANGAN DAN IMPLEMENTASI
SISTEM DATABASE MALWARE
Oleh
Rela Annisa Camilia Marhun
NIM: 23218011
(Program Studi Magister Teknik Elektro)
Berkembangnya teknologi memicu terciptanya malware baru, tanpa terkecuali di
Indonesia. Para attacker memanipulasi signature dari malware yang ada untuk
mengelabui antivirus. Malware baru ini kemungkinan besar hanya terdapat di
Indonesia saja (malware lokal), sehingga antivirus sulit untuk mendeteksi malware
lokal tersebut. Oleh karena itu, diperlukan pemutakhiran terhadap aplikasi
pendeteksi malware dan pengembangan penelitian terkait malware. Saat ini,
Indonesia belum memiliki sistem yang dapat mendukung proses penelitian
malware. Analisis malware pun hanya dilakukan untuk kebutuhan operasional saja
dan hampir tidak ada dokumentasi mengenai proses dan hasil analisa malware.
Oleh sebab itu, Indonesia membutuhkan suatu sistem yang dapat digunakan tidak
hanya untuk operasional, namun juga untuk kebutuhan penelitian. Sistem tersebut
harus dapat menyimpan dan mengelola sampel malware, mendokumenkan hasil
analisa dan informasi lainnya, yang selanjutnya digunakan untuk proses deteksi dan
penanganan serangan malware. Pada penelitian ini telah dirancang dan
diimplementasikan suatu Sistem Database Malware. Sistem ini dapat menyimpan
dan mengoleksi berbagai jenis malware beserta informasi terkait seperti metadata,
analisa statik, cara penanganan serta keterangan detail lain yang mendukung proses
penelitian. Signature malware yang terdapat dalam database digunakan untuk
proses deteksi malware. Sistem ini juga menyediakan fitur bagi pengguna untuk
dapat melaporkan dan mengirimkan jenis malware baru. Sistem ini
diimplementasikan dalam bentuk prototipe dan diuji terhadap fungsionalitas,
kinerja, dan keamanan. Diharapkan sistem database malware ini dapat membantu
para peneliti dan analis baik untuk operasional maupun proses penelitian malware.
Kata kunci: database, malware, deteksi, signature, antivirus
ii
ABSTRACT
DESIGN AND IMPLEMENTATION OF
MALWARE DATABASE SYSTEM
By
Rela Annisa Camilia Marhun
NIM: 23218011
(Master’s Program in Electrical Engineering)
The development of technology triggers the creation of new malware, Indonesia is
included. Attackers manipulate the signatures of existing malware to trick
antiviruses. This new malware is mostly found in Indonesia (local malware), so
antiviruses difficult to detect the local malware. Therefore, updating the malware
detection application and developing malware research are needed. Currently,
Indonesia does not have a system that can support the malware research. Malware
analysis is only for operational and almost no documentation regarding the process
and results of malware analysis. So, Indonesia needs a system that can be used not
only for operations, but also for research needs. The system must be able to store
and manage malware samples, document analysis results and other information,
which are then used for the detection and handling of malware attacks. In this
research, a Malware Database System has been designed and implemented. This
system can store and collect various types of malware along with related
information such as metadata, static analysis, handling methods and other detailed
information that supports the research process. The malware signature contained
in the database is used for the malware detection process. This system also provides
features for users to be able to report and send new types of malware. This system
is implemented in the form of a prototype and tested on the functionality,
performance, and security. We expect that this malware database system can help
researchers and analysts both for operational and malware research.
Keywords: database, malware, detection, signature, antivirus
iii
PERANCANGAN DAN IMPLEMENTASI
SISTEM DATABASE MALWARE
HALAMAN PENGESAHAN Oleh
Rela Annisa Camilia Marhun
NIM: 23218011 (Program Studi Magister Teknik Elektro)
Institut Teknologi Bandung
Menyetujui
Pembimbing
Tanggal ……………………….
Pembimbing,
___________________
(Ir. Budi Rahardjo M.Sc.,Ph.D.)
iv
PEDOMAN PENGGUNAAN TESIS
Tesis Magister yang tidak dipublikasikan terdaftar dan tersedia di Perpustakaan
Institut Teknologi Bandung, dan terbuka untuk umum dengan ketentuan bahwa hak
cipta ada pada penulis dengan mengikuti aturan HaKI yang berlaku di Institut
Teknologi Bandung. Referensi kepustakaan diperkenankan dicatat, tetapi
pengutipan atau peringkasan hanya dapat dilakukan seizin penulis dan harus
disertai dengan kaidah ilmiah untuk menyebutkan sumbernya.
Sitasi hasil penelitian Tesis ini dapat di tulis dalam bahasa Indonesia sebagai
berikut:
Marhun, R.A.C. (2020): Perancangan dan Implementasi Sistem Database
Malware, Tesis Program Magister, Institut Teknologi Bandung.
dan dalam bahasa Inggris sebagai berikut:
Marhun, R.A.C. (2020): Design and Implementation of Malware Database System,
Master’s Thesis, Institut Teknologi Bandung.
Memperbanyak atau menerbitkan sebagian atau seluruh tesis haruslah seizin Dekan
Sekolah Pascasarjana, Institut Teknologi Bandung.
v
HALAMAN PERUNTUKAN
Dipersembahkan kepada Ayah dan Mama tercinta, serta adikku Gema dan Cahi
yang senantiasa memotivasi dan menginspirasiku.
vi
KATA PENGANTAR
Puji syukur kehadirat Allah SWT yang telah memberikan rahmat dan karunianya,
sehingga penulis dapat menyelesaikan penelitian dan penulisan tesis yang berjudul
“Perancangan Sistem Database Malware” dengan lancar.
Selesainya tesis ini tidak terlepas dari bantuan serta bimbingan banyak pihak yang
telah memberi masukan dalam menyelesaikan kesulitan-kesulitan selama
menyusun tesis ini. Untuk itu penulis mengucapkan banyak terimakasih kepada:
1. Kedua orangtua, Bapak Dr. Masnipal Marhun, M.Pd dan Ibu Onyas
Rohayati, terimakasih atas doa dan dukungan secara moril maupun materil.
2. Bapak Ir. Budi Rahardjo M.Sc., Ph.D. sebagai dosen pembimbing yang
telah memberikan motivasi, petunjuk, ilmu, waktu, inspirasi, serta nasehat
kepada penulis sehingga penelitian ini dapat terselesaikan.
3. Bapak Prof. Dr. Ing. Ir. Suhardi, MT selaku Ketua Program RMKI.
4. Staf dan dosen Program Magister Opsi RMKI, Institut Teknologi Bandung,
terima kasih atas dedikasi yang tinggi dalam mengajar dan memberi ilmu
kepada para mahasiswanya terutama kepada penulis. Semoga ilmu yang
telah diamalkan selalu bisa bermanfaat dan menjadi amalan baik.
5. Rekan-rekan seperjuangan terutama RMKI Angkatan 2018 dan pihak-pihak
yang tidak bisa penulis sebutkan satu persatu yang telah membantu penulis
menyelesaikan tesis ini.
Penulis menyadari bahwa masih banyak kekurangan dalam penulisan tesis ini. Oleh
karena itu, kritik dan saran yang membangun sangat penulis harapkan demi
kesempurnaan tesis ini. Semoga penelitian ini dapat memberikan manfaat bagi
pembaca. Atas segala perhatiannya penulis ucapkan terima kasih.
Bandung, Juni 2020
Penulis
vii
DAFTAR ISI
ABSTRAK ............................................................................................................... i
ABSTRACT .............................................................................................................. ii
HALAMAN PENGESAHAN ................................................................................ iii
PEDOMAN PENGGUNAAN TESIS.................................................................... iv
HALAMAN PERUNTUKAN ................................................................................ v
KATA PENGANTAR ........................................................................................... vi
DAFTAR ISI ......................................................................................................... vii
DAFTAR LAMPIRAN ........................................................................................... x
DAFTAR GAMBAR DAN ILUSTRASI .............................................................. xi
DAFTAR TABEL ................................................................................................ xiv
DAFTAR ALGORITMA ...................................................................................... xv
DAFTAR SINGKATAN DAN LAMBANG ...................................................... xvi
Bab I Pendahuluan ............................................................................................... 1
I.1. Latar Belakang .......................................................................................... 1
I.2. Rumusan Masalah ..................................................................................... 4
I.3. Tujuan Penelitian ...................................................................................... 4
I.4. Batasan Masalah ....................................................................................... 4
I.5. Kontribusi ................................................................................................. 5
I.6. Metodologi Penelitian ............................................................................... 5
I.6.1. Need Analysis ................................................................................ 6
I.6.2. Concept Exploration ..................................................................... 6
I.6.3. Concept Definition ........................................................................ 6
I.6.4. Advanced Development ................................................................. 6
I.6.5. Engineering Design ....................................................................... 7
I.6.6. Integration and Evaluation ........................................................... 7
I.7. Sistematika Penulisan ............................................................................... 7
Bab II Tinjauan Pustaka ....................................................................................... 9
II.1. Definisi dan Klasifikasi Malware ............................................................. 9
II.1.1. Virus ............................................................................................ 10
II.1.2. Worm ........................................................................................... 10
II.1.3. Trojan Horse ............................................................................... 10
II.1.4. Ransomware ................................................................................ 11
II.1.5. Rootkit ......................................................................................... 11
II.1.6. Backdoor ..................................................................................... 11
II.1.7. Downloader ................................................................................. 12
II.2. Kajian Penelitian Terkait ........................................................................ 12
II.2.1. Database ...................................................................................... 12
II.2.2. Teknik Deteksi Malware ............................................................. 13
II.3. Virus Total .............................................................................................. 14
II.4. Sampel Malware ..................................................................................... 14
viii
Bab III Perancangan Sistem ............................................................................... 15
III.1. Metode Perancangan Sistem................................................................... 15
III.2. Konsep Sistem ........................................................................................ 16
III.2.1. Sistem Admin ........................................................................... 17
III.2.2. Sistem User ............................................................................... 18
III.2.3. Sistem Mitra .............................................................................. 19
III.3. Kebutuhan dan Spesifikasi Perangkat .................................................... 20
III.3.1. Perangkat Keras ........................................................................ 20
III.3.2. Perangkat Lunak Perancangan Sistem ...................................... 21
III.3.3. Perangkat Lunak Pendukung .................................................... 21
III.4. Desain Sistem ......................................................................................... 21
III.4.1. Aktor, Fitur, dan Hak Akses ..................................................... 22
III.4.2. Diagram Use Case .................................................................... 24
III.4.3. Diagram Alir ............................................................................. 26
III.5. Desain Database ..................................................................................... 34
Bab IV Implementasi & Pengujian .................................................................... 35
IV.1. Implementasi Sistem .............................................................................. 35
IV.1.1. Halaman Utama Menu .............................................................. 35
IV.1.2. Fungsi Login ............................................................................. 37
IV.1.3. Fungsi Deteksi .......................................................................... 38
IV.1.4. Fungsi Penampil Data ............................................................... 50
IV.1.5. Fungsi Tambah Data ................................................................. 56
IV.1.6. Fungsi Hapus Data .................................................................... 62
IV.1.7. Fungsi Unduh Sampel ............................................................... 63
IV.1.8. Fungsi Ubah Data ..................................................................... 64
IV.1.9. Fungsi Logout ........................................................................... 67
IV.2. Implementasi Database ........................................................................... 68
IV.2.1. Koneksi Database ..................................................................... 68
IV.2.2. Tabel Malware .......................................................................... 69
IV.2.3. Tabel Benign ............................................................................. 70
IV.2.4. Tabel Baru................................................................................. 70
IV.2.5. Tabel Akun ............................................................................... 71
IV.2.6. Tabel Riwayat ........................................................................... 71
IV.3. Pengujian Fungsionalitas ........................................................................ 73
IV.3.1. Fungsi Login ............................................................................. 73
IV.3.2. Fungsi Deteksi .......................................................................... 74
IV.3.3. Fungsi Penampil Data ............................................................... 77
IV.3.4. Fungsi Tambah Data ................................................................. 83
IV.3.5. Fungsi Hapus Data .................................................................... 87
IV.3.6. Fungsi Unduh Sampel ............................................................... 88
IV.3.7. Fungsi Ubah Data ..................................................................... 89
IV.3.8. Fungsi Logout ........................................................................... 91
IV.4. Pengujian Kinerja ................................................................................... 92
IV.4.1. Website ..................................................................................... 92
ix
IV.4.2. REST API ................................................................................. 94
IV.5. Pengujian Keamanan ............................................................................ 103
IV.5.1. Confidentiality ........................................................................ 103
IV.5.2. Integrity ................................................................................... 106
IV.5.3. Availability .............................................................................. 108
Bab V Kesimpulan dan Saran .......................................................................... 114
V.1. Kesimpulan ........................................................................................... 114
V.2. Saran ..................................................................................................... 114
DAFTAR PUSTAKA ......................................................................................... 115
LAMPIRAN ........................................................................................................ 117
x
DAFTAR LAMPIRAN
Lampiran A List Program ................................................................................... A-1
A1. List Program Client ...................................................................................... A-1
A2. List Program Server ..................................................................................... A-2
Lampiran B Kode Program Deteksi .................................................................... B-1
B1. deteksi.php (Default) .................................................................................... B-1
B2. deteksi_vt.php (Virus Total) ......................................................................... B-2
B3. functions_vt.php (Virus Total) ..................................................................... B-3
Lampiran C Kode Program REST API Client .................................................... C-1
C1. api_malware.php .......................................................................................... C-1
C2. api_benign.php ............................................................................................. C-3
C3. api_baru.php ................................................................................................. C-4
C4. api_admin.php .............................................................................................. C-5
C5. api_mitra.php ................................................................................................ C-7
C6. api_recent.php .............................................................................................. C-9
Lampiran D Kode Program REST API Server (Controller) ............................... D-1
D1. Malware.php ................................................................................................. D-1
D2. Benign.php ................................................................................................... D-3
D3. Baru.php ....................................................................................................... D-5
D4. Admin.php .................................................................................................... D-6
D5. Mitra.php ...................................................................................................... D-8
D6. Recent.php .................................................................................................. D-10
D7. Riwayat.php................................................................................................ D-11
D8. m_Riwayat.php .......................................................................................... D-11
Lampiran E Kode Program REST API Server (Models) ..................................... E-1
E1. Malware_model.php ...................................................................................... E-1
E2. Benign_model.php ......................................................................................... E-1
E3. Baru_model.php............................................................................................. E-2
E4. Admin_model.php ......................................................................................... E-3
E5. Mitra_model.php ........................................................................................... E-3
E6. Recent_model.php ......................................................................................... E-4
E7. Riwayat_model.php ....................................................................................... E-4
E8. m_Riwayat_model.php .................................................................................. E-4
xi
DAFTAR GAMBAR DAN ILUSTRASI
Gambar I. 1 Peningkatan jumlah Malware terdeteksi dalam 10 tahun terakhir...... 1
Gambar I. 2 System Engineering Principles and Practice ...................................... 5
Gambar III. 1 Metode Waterfall............................................................................ 15
Gambar III. 2 Konsep Sistem Keseluruhan........................................................... 16
Gambar III. 3 Konsep Sistem Admin .................................................................... 17
Gambar III. 4 Konsep Sistem User ....................................................................... 18
Gambar III. 5 Konsep Sistem Mitra ...................................................................... 19
Gambar III. 6 Diagram Use Case Admin.............................................................. 24
Gambar III. 7 Diagram Use Case User ................................................................. 25
Gambar III. 8 Diagram Use Case Mitra ................................................................ 25
Gambar III. 9 Diagram Alir Sistem User .............................................................. 26
Gambar III. 10 Diagram Alir Deteksi (Virus Total) ............................................. 26
Gambar III. 11 Diagram Alir Deteksi (Metode Default) ...................................... 27
Gambar III. 12 Diagram Alir Sistem Mitra (Login - Profil) ................................. 28
Gambar III. 13 Diagram Alir Mitra (Deteksi - Logout) ........................................ 29
Gambar III. 14 Diagram Alir Sistem Admin (Login - DB Malware) ................... 30
Gambar III. 15 Diagram Alir Sistem Admin (DB Benign) ................................... 31
Gambar III. 16 Diagram Alir Sistem Admin (Analisa File) ................................. 31
Gambar III. 17 Diagram Alir Sistem Admin (Tambah File) ................................ 32
Gambar III. 18 Diagram Alir Sistem Admin (Registrasi - Logout) ...................... 33
Gambar III. 19 Relasi Database............................................................................ 34
Gambar IV. 1 Halaman Utama User & Mitra ....................................................... 35
Gambar IV. 2 Halaman Menu Mitra ..................................................................... 36
Gambar IV. 3 Halaman Menu Admin ................................................................... 36
Gambar IV. 4 Halaman Login ............................................................................... 37
Gambar IV. 5 Login – Username atau Password Salah ....................................... 38
Gambar IV. 6 Deteksi User & Mitra ..................................................................... 38
Gambar IV. 7 Deteksi Default - File Aman .......................................................... 39
Gambar IV. 8 Deteksi Default - Terdeteksi Malware (Status).............................. 40
Gambar IV. 9 Deteksi Default - Terdeteksi Malware (Analisa dan Metadata) .... 41
Gambar IV. 10 Deteksi Default - Terdeteksi Malware (Analisa) ......................... 42
Gambar IV. 11 Deteksi Default - Proses Analisa ................................................. 43
Gambar IV. 12 Deteksi Default - Perlu Analisa ................................................... 44
Gambar IV. 13 Deteksi Default - Ticketing System .............................................. 45
Gambar IV. 14 Deteksi Virus Total – Undetected (hasil deteksi) ........................ 46
Gambar IV. 15 Deteksi Virus Total - Undetected (scan antivirus) ....................... 46
Gambar IV. 16 Deteksi Virus Total - Undetected (informasi detail) .................... 47
Gambar IV. 17 Deteksi Virus Total - Detected (hasil deteksi) ............................. 48
Gambar IV. 18 Deteksi Virus Total - Detected (scan antivirus) ........................... 48
xii
Gambar IV. 19 Deteksi Virus Total - Detected (informasi detail) ........................ 49
Gambar IV. 20 Deteksi Virus Total – Queue ........................................................ 50
Gambar IV. 21 Database Benign – Fitur Admin .................................................. 51
Gambar IV. 22 Database Malware - Fitur Admin ................................................ 52
Gambar IV. 23 Analisa File (Sampel Baru) – Fitur Admin .................................. 52
Gambar IV. 24 Data Admin – Fitur Admin .......................................................... 53
Gambar IV. 25 Data Mitra – Fitur Admin ............................................................ 53
Gambar IV. 26 Recent – Fitur Admin ................................................................... 54
Gambar IV. 27 Riwayat – Fitur Mitra ................................................................... 54
Gambar IV. 28 Riwayat – Fitur User .................................................................... 55
Gambar IV. 29 Profil – Fitur Mitra ....................................................................... 55
Gambar IV. 30 Lab Malware – Fitur Mitra .......................................................... 56
Gambar IV. 31 Tambah Benign – Fitur Admin .................................................... 58
Gambar IV. 32 Tambah Malware (Upload File) – Fitur Admin .......................... 58
Gambar IV. 33 Tambah Malware (Metadata) – Fitur Admin ............................... 59
Gambar IV. 34 Tambah Malware (Penanganan) – Fitur Admin .......................... 60
Gambar IV. 35 Tambah Malware (Data Ransome) – Fitur Admin ...................... 60
Gambar IV. 36 Registrasi Admin.......................................................................... 61
Gambar IV. 37 Registrasi Mitra ............................................................................ 61
Gambar IV. 38 Konfirmasi Hapus ........................................................................ 62
Gambar IV. 39 Hapus Berhasil ............................................................................. 62
Gambar IV. 40 Unduh Sampel (Malware) ............................................................ 63
Gambar IV. 41 Edit Database Malware – Admin ................................................ 64
Gambar IV. 42 Profil – Edit Akun Mitra .............................................................. 66
Gambar IV. 43 Profil – Edit Password Mitra ....................................................... 66
Gambar IV. 44 Logout .......................................................................................... 67
Gambar IV. 45 Database Sistem ........................................................................... 68
Gambar IV. 46 Tabel Malware ............................................................................. 69
Gambar IV. 47 Tabel Benign ................................................................................ 70
Gambar IV. 48 Tabel Baru .................................................................................... 70
Gambar IV. 49 Tabel Admin ................................................................................ 71
Gambar IV. 50 Tabel Mitra ................................................................................... 71
Gambar IV. 51 Tabel Recent Admin .................................................................... 71
Gambar IV. 52 Tabel Riwayat User ...................................................................... 72
Gambar IV. 53 Tabel Riwayat Mitra .................................................................... 72
Gambar IV. 54 Hasil Pengujian Kinerja Website ................................................. 93
Gambar IV. 55 Grafik Pengujian Kinerja Website ............................................... 93
Gambar IV. 56 Hasil Pengujian Kinerja API Publik Virus Total ......................... 94
Gambar IV. 57 Grafik Pengujian Kinerja REST API Virus Total ........................ 95
Gambar IV. 58 Hasil Pengujian Kinerja REST API Default – Case1 .................. 96
Gambar IV. 59 Grafik Pengujian Kinerja REST API Default – Case1 ................ 97
Gambar IV. 60 Hasil Pengujian Kinerja REST API Default – Case2 .................. 97
Gambar IV. 61 Tabel Hasil Pengujian Kinerja REST API Default – Case2 ........ 98
Gambar IV. 62 Grafik Pengujian Kinerja REST API Default - Case2 ................. 98
Gambar IV. 63 Hasil Pengujian Kinerja REST API Default – Case3 .................. 99
xiii
Gambar IV. 64 Tabel Pengujian Kinerja REST API Default – Case3 ................. 99
Gambar IV. 65 Grafik Pengujian Kinerja REST API Default – Case3 .............. 100
Gambar IV. 66 Hasil Pengujian Kinerja REST API Default – Case4 ................ 100
Gambar IV. 67 Tabel Pengujian Kinerja REST API Default – Case4 ............... 101
Gambar IV. 68 Grafik Pengujian Kinerja REST API Default – Case4 .............. 101
Gambar IV. 69 Skenario Serangan Sniffing ........................................................ 103
Gambar IV. 70 Hasil Pengujian Confidentiality – Sniffing ................................. 104
Gambar IV. 71 Hasil Follow TCP Stream pada protokol HTTP POST .............. 105
Gambar IV. 72 Skenario Serangan SQL Injection .............................................. 106
Gambar IV. 73 Hasil Pengujian Integrity - SQL Injection .................................. 107
Gambar IV. 74 Tingkat Ancaman SQL Injection terhadap Web Sistem ............ 108
Gambar IV. 75 Skenario Pengujian Availability – Serangan SYN Flooding ...... 109
Gambar IV. 76 Performance Sistem Sebelum Serangan SYN Flooding ............ 110
Gambar IV. 77 Serangan SYN Flooding menggunakan Hping3 ......................... 111
Gambar IV. 78 Peningkatan Utilitas CPU Saat Serangan SYN Flooding ........... 111
Gambar IV. 79 Akses Klien Saat Serangan SYN Flooding ................................. 112
Gambar IV. 80 Trafik Jaringan Saat Serangan SYN Flooding ............................ 112
Gambar IV. 81 Performance Sistem Saat Serangan SYN Flooding.................... 113
xiv
DAFTAR TABEL
Tabel I. 1 Pengaduan insiden pada laporan Dwi Bulan II 2018 ID-CERT ............. 2
Tabel I. 2 Pengaduan insiden pada laporan Dwi Bulan III 2018 ID-CERT ........... 2
Tabel III. 1 Fitur dan Hak Akses Admin............................................................... 22
Tabel III. 2 Fitur dan Hak Akses User .................................................................. 23
Tabel III. 3 Fitur dan Hak Akses Mitra ................................................................. 23
Tabel IV. 1 Pengujian Login ................................................................................. 73
Tabel IV. 2 Pengujian Deteksi Berdasarkan Ukuran Berkas ................................ 74
Tabel IV. 3 Pengujian Deteksi Berdasarkan Tipe Berkas ..................................... 75
Tabel IV. 4 Pengujian Deteksi Virus Total ........................................................... 76
Tabel IV. 5 Pengujian Deteksi Default ................................................................. 76
Tabel IV. 6 Pengujian Penampil Data - DB Malware ........................................... 78
Tabel IV. 7 Pengujian Penampil Data – DB Benign ............................................. 79
Tabel IV. 8 Pengujian Penampil Data - Analisa File ............................................ 79
Tabel IV. 9 Pengujian Penampil Data Admin dan Mitra ...................................... 80
Tabel IV. 10 Pengujian Penampil Data – Recent .................................................. 81
Tabel IV. 11 Pengujian Penampil Data - Riwayat Mitra ...................................... 81
Tabel IV. 12 Pengujian Penampil Data - Riwayat User........................................ 82
Tabel IV. 13 Pengujian Penampil Data - Profil Mitra .......................................... 82
Tabel IV. 14 Pengujian Penampil Data - Lab Malware ........................................ 83
Tabel IV. 15 Pengujian Tambah Data - Tambah File (Malware) ......................... 84
Tabel IV. 16 Pengujian Tambah Data – Tambah File (Benign) ........................... 85
Tabel IV. 17 Pengujian Tambah Data - Registrasi ............................................... 86
Tabel IV. 18 Pengujian Hapus Data ...................................................................... 87
Tabel IV. 19 Pengujian Unduh Sampel................................................................. 88
Tabel IV. 20 Pengujian Ubah Data – Edit Malware ............................................. 89
Tabel IV. 21 Pengujian Ubah Data - Edit Akun ................................................... 90
Tabel IV. 22 Pengujian Ubah Data - Ubah Password ........................................... 91
Tabel IV. 23 Pengujian Logout ............................................................................. 92
Tabel IV. 24 Skenario Pengujian REST API Sistem ............................................ 95
Tabel IV. 25 Perbandingan Hasil Pengujian Kinerja REST API ........................ 102
xv
DAFTAR ALGORITMA
Algoritma IV. 1 Login (Admin) ............................................................................ 37
Algoritma IV. 2 Deteksi Default – File Aman ...................................................... 39
Algoritma IV. 3 Deteksi Default – Terdeteksi Malware....................................... 40
Algoritma IV. 4 Deteksi Default – Proses Analisa ............................................... 42
Algoritma IV. 5 Deteksi Default– Perlu Analisa .................................................. 43
Algoritma IV. 6 Deteksi Default – Simpan Sampel Baru ..................................... 44
Algoritma IV. 7 Deteksi Virus Total..................................................................... 45
Algoritma IV. 8 Penampil Data (DB Benign) ....................................................... 51
Algoritma IV. 9 Tambah Data (Benign) – REST Client ....................................... 56
Algoritma IV. 10 Tambah Data (Benign) – REST Server controllers .................. 57
Algoritma IV. 11 Tambah Data (Benign) – REST Server models ....................... 57
Algoritma IV. 12 Hapus Data (Malware) – REST Client ..................................... 62
Algoritma IV. 13 Hapus Data (Malware) – REST Server .................................... 62
Algoritma IV. 14 Unduh Sampel (Malware) ........................................................ 63
Algoritma IV. 15 Ubah Data (Malware) – REST Client ...................................... 65
Algoritma IV. 16 Ubah Data (Malware) – REST Server ...................................... 65
Algoritma IV. 17 Logout (Mitra) .......................................................................... 67
Algoritma IV. 18 Koneksi Database ..................................................................... 68
Algoritma IV. 19 Fungsi anti SQL Injection ....................................................... 107
xvi
DAFTAR SINGKATAN DAN LAMBANG
SINGKATAN
Nama Pemakaian
pertama kali
pada halaman
Malware Mallicious Software 1
AV Anti-Virus 1
PUA Potentially Unwanted Application 1
ID-CERT Computer Emergency Response Team 2
PANDI Pengelola Nama Domain Internet Indonesia 2
APJII Asosiasi Penyelenggara Jasa Internet
Indonesia
2
AFCC Anti Fraud Command Center 2
NAP Network Access Point 2
PJI/ISP Penyedia Jasa Internet/Internet Service
Provider
2
KEMDIKBUD Kementerian Pendidikan dan Kebudayaan
Republik Indonesia
2
HaKi Hak Atas Kekayaan Intelektual 2
IPR Intellectual Property Rights 2
SQL Structured Query Language 4
RAT Remote Administration Tool 11
URL Uniform Resource Locator 16
1
Bab I Pendahuluan
I.1. Latar Belakang
Malware adalah sebuah perangkat lunak yang dapat menyusup ke sistem operasi
sehingga dapat merusak dan mencuri file-file penting pada sistem. Malware
mencakup virus, Trojan horse, spyware, adware, crimeware, dan perangkat lunak
lainnya yang berniat jahat dan tidak diinginkan [1]. Saat ini malware menjadi salah
satu ancaman utama terhadap keamanan yang berkaitan dengan integritas,
kerahasiaan, dan ketersediaan sistem komputer [2]. Program perangkat lunak ini
memiliki dampak yang mengganggu pada aplikasi, penyedia layanan,
penyimpanan, server, dan jaringan.
Pada tahun 2020, AV-TEST Institute telah mendaftarkan lebih dari 350.000 program
jahat (malware) dan aplikasi yang tidak diinginkan (Potentially Unwanted
Application/PUA) setiap harinya. Data-data tersebut kemudian diperiksa,
diklasifikasi dan disimpan. Hasilnya berupa diagram statistik malware seperti pada
Gambar I. 1. Grafik menunjukkan bahwa dalam sepuluh tahun terakhir, jumlah
malware yang ditemukan terus mengalami peningkatan disetiap tahunnya [3].
Gambar I. 1 Peningkatan jumlah Malware terdeteksi dalam 10 tahun terakhir
2
Dalam laporan Dwi Bulan II & III tahun 2018 dari hasil pemantauan ID-CERT
diperoleh data bahwa dari tujuh kategori pengaduan insiden keamanan, malware
mengalami peningkatan jumlah pengaduan terbesar secara persentase. Kategori
pengaduan tersebut yaitu HaKI/IPR, Spam, Network Incident, Malware, Respon,
Spoofing/Phishing, dan Komplain Spam. Data pada laporan ini diperoleh dari 41
responden yaitu: Kominfo, ID-CERT, PANDI, APJII, Detik.net, Zone-h, AntiFraud
Command Center (AFCC), dan Kaspersky, tiga operator telekomunikasi, tujuh
NAP, 22 Penyedia Jasa Internet (PJI/ISP), dan KEMDIKBUD [4], [5].
Tabel I. 1 Pengaduan insiden pada laporan Dwi Bulan II 2018 ID-CERT
Kategori Maret April %
Malware 517 632 22,24%
Komplain Spam 212 250 17,92%
Respon 24 22 -8,33%
Spoofing/Phishing 366 310 -15,30%
Spam 2.880 2.376 -17,50%
Network Incident 1.435 1.066 -25,71%
HaKI/IPR 6.513 4.040 -37,97%
Pada Dwi Bulan II (Maret-April) yang ditujukkan pada Tabel I. 1, jumlah
peningkatan malware sebesar 22,24% yaitu 115 pengaduan. Peningkatan jumlah
sebesar 115 pengaduan tersebut ketika pada bulan Maret berjumlah 517 pengaduan
dan pada bulan April meningkat menjadi 632 pengaduan [4].
Tabel I. 2 Pengaduan insiden pada laporan Dwi Bulan III 2018 ID-CERT
Kategori Mei Juni %
Malware 754 1.007 33,55%
Komplain Spam 491 572 16,50%
Respon 3.744 4.309 15,09%
Spoofing/Phishing 388 374 -3,61%
Spam 2.221 2.012 -9,41%
Network Incident 1.421 1.279 -9,99%
HaKI/IPR 24 10 -58,33%
Nilai persentase semakin meningkat pada Dwi Bulan III (Mei-Juni) yang
ditunjukkan pada Tabel I. 2, dengan jumlah peningkatan sebesar 33,55%. atau 253
pengaduan [5].
3
Dari kedua laporan ini, dapat disimpulkan bahwa jumlah serangan malware terus
meningkat dari waktu ke waktu. Berkembangnya teknologi pun memicu
dikembangkannya malware baru, tanpa terkecuali di Indonesia. Para attacker
mencoba mengelabui antivirus dengan cara memanipulasi signature malware yang
telah ada, sehingga tercipta jenis malware baru. Malware baru yang dibuat oleh
para attacker di Indonesia ini kemungkinan besar hanya terdapat di Indonesia saja
(malware lokal), sehingga antivirus tidak dapat mendeteksi malware lokal tersebut.
Oleh karena itu, untuk mengurangi resiko terinfeksi malware, diperlukan
pemutakhiran terhadap aplikasi keamanan dan basis data terkait serta
mengembangkan penelitian terkait malware.
Saat ini, Indonesia belum memiliki sistem yang dapat mendukung proses penelitian
malware. Analisis malware pun hanya dilakukan untuk kebutuhan operasional saja,
sehingga hampir tidak ada dokumentasi mengenai proses dan hasil analisa malware.
Oleh sebab itu, Indonesia membutuhkan suatu sistem yang dapat digunakan tidak
hanya untuk operasional, namun juga untuk kebutuhan penelitian. Sistem tersebut
harus dapat menyimpan dan mengelola sampel malware, mendokumenkan hasil
analisa dan informasi lainnya, yang selanjutnya digunakan untuk proses deteksi dan
penanganan serangan malware.
Pada penelitian ini telah dirancang dan diimplementasikan suatu sistem database
malware. Sistem ini dapat menyimpan dan mengoleksi berbagai jenis malware
beserta informasi terkait seperti metadata, analisa statik, cara penanganan serta
keterangan detail lain yang mendukung proses penelitian. Signature malware yang
terkumpul dalam database akan digunakan untuk proses deteksi. Sistem ini juga
menyediakan fitur bagi pengguna untuk dapat melaporkan dan mengirimkan jenis
malware baru. Malware baru tersebut akan dianalisis dan ditambahkan kedalam
database sehingga sistem ini selalu update terhadap malware baru terutama
malware lokal. Kesulitan dalam pembuatan sistem ini yaitu karena malware dapat
menginfeksi sistem yang ditempatinya, sehingga diperlukan suatu desain yang tepat
untuk menyimpan malware di database dengan aman.
4
I.2. Rumusan Masalah
Pertanyaan penelitian berdasarkan latar belakang dan masalah penelitian adalah:
1. Bagaimana cara merancang dan mengimplementasikan sistem database
yang dapat mendeteksi malware?
2. Bagaimana cara menyimpan malware dengan aman dalam sistem database?
3. Bagaimana cara pengguna melaporkan malware baru dan menggunakan
database ini?
I.3. Tujuan Penelitian
Tujuan dari penelitian ini adalah merancang dan mengimplementasikan sistem
database malware yang dapat:
1. Mendeteksi malware terutama malware lokal Indonesia yang tidak terdaftar
dalam antivirus luar negeri;
2. Menyimpan sampel dan metadata malware untuk pengembangan penelitian
terkait dalam sistem database dengan aman;
3. Memberikan fasilitas bagi pengguna untuk melaporkan malware baru dan
menjadi sistem database malware yang selalu update.
I.4. Batasan Masalah
Pada penelitian ini sistem database tidak hanya digunakan untuk menyimpan
malware saja, namun juga untuk mendeteksi berkas file yang terinfeksi malware.
Terdapat dua cara deteksi dalam sistem ini yaitu secara Default (oleh sistem
database malware) dan melalui Virus Total yang keduanya menggunakan metode
deteksi berbasis signature. Ticketing System tidak diimplementasikan pada
penelitian ini. Proses analisa dan penyimpanan sampel malware seharusnya
dilakukan secara terpisah menggunakan server khusus dan ditangani oleh analis
malware, namun pada penelitian ini, analisa malware dilakukan diluar sistem
dengan metode analisa statik pada Virtual Box. Sampel malware didapatkan dari
theZoo (GitHub) dan tutorialjinni.com. Metadata dan informasi lainnya diperoleh
dari berbagai web dan forum penelitian. Database yang digunakan yaitu MariaDB
yang merupakan database SQL atau relational. Web sistem dibangun
menggunakan PHP.
5
I.5. Kontribusi
Diharapkan sistem ini dapat membantu perkembangan penelitian terkait malware
di Indonesia. Selain itu, sistem ini juga dapat membantu para analis malware dan
masyarakat umum dalam mendeteksi adanya malware serta memberikan
pengetahuan dan pemahaman tentang metadata dan cara penanganan malware.
I.6. Metodologi Penelitian
Penelitian ini menggunakan Systems Engineering Principles and Practice [6]
sebagai pendekatan metodologi penelitian. Secara umum terdapat tiga tahapan
utama dalam metodologi ini yaitu: concept development, engineering development,
dan post-development. Namun pada penelitian ini tahapan terakhir yaitu post-
development tidak dilakukan, karena produk yang dihasilkan tidak dipasarkan.
Penjabaran dari tahapan utama dalam pendekatan ini ditunjukan pada Gambar I. 2.
Gambar I. 2 System Engineering Principles and Practice
Concept
Development
Need Analysis
Concept
Exploration
Concept
Definition
Engineering
Development
Advanced
Development
Engineering
Design
Integration and
Evaluation
Post
Development
Production
Operating and
Support
6
I.6.1. Need Analysis
Tahap awal yaitu menentukan dan mengidentifikasi masalah yang akan
diselesaikan dalam penelitian. Adapun masalah yang akan diselesaikan pada
penelitian ini yaitu belum adanya sistem yang dapat digunakan untuk
pengembangan penelitian malware di Indonesia, yang dapat mendeteksi dan
mengelola malware lokal yang terus berkembang di Indonesia. Sementara para
attacker terus mengembangkan dan membuat malware baru untuk mengelabui
antivirus.
I.6.2. Concept Exploration
Setelah mengidentifikasi masalah, tahap selanjutnya adalah mencari dan melakukan
pembelajaran terhadap literatur yang memiliki korelasi searah dengan penelitian
untuk menyelesaikan permasalahan. Literatur terkait penelitian ini yaitu: Definisi
dan Klasifikasi Malware, Database, Teknik Deteksi Malware, Teknik Analisis
Malware, dan Sampel Malware.
I.6.3. Concept Definition
Pada tahap ini dilakukan pemilihan konsep dari hasil concept exploration:
1. Database yang dipilih yaitu MariaDB dengan menggunakan PHPMyAdmin
sebagai alat untuk memanajemen database;
2. Pendeteksian malware menggunakan teknik deteksi berbasis signature;
3. Teknik analisa malware yang digunakan yaitu analisis statik;
4. Sampel malware berasal dari tutorialjinni.com dan theZoo (GitHub).
I.6.4. Advanced Development
Tahap ini menjelaskan kebaruan/peningkatan yang dilakukan pada konsep yang
telah dipilih sebelumnya. Kebaruan dalam penelitian ini yaitu belum adanya
literatur yang secara spesifik membuat suatu sistem database malware. Di
Indonesia sendiri, belum ada sistem yang mendukung untuk proses pengembangan
penelitian terkait malware, dimana sampel dan informasi terkait malware dikoleksi
dan dapat dikelola untuk kepentingan operasional dan pendidikan. Kebanyakan
penelitian hanya berfokus pada teknik analisa atau deteksi malware saja.
7
I.6.5. Engineering Design
Pada tahap ini dilakukan perancangan sistem. Pada penelitian ini perancangan
sistem database malware dibagi menjadi tiga diagram blok utama yang saling
berhubungan yaitu, blok menu admin, user, dan mitra. Selain itu, terdapat diagram
alir untuk proses deteksi, pengelolaan database, dan pendaftaran mitra.
I.6.6. Integration and Evaluation
Pada tahap terakhir, diagram blok yang telah dirancang kemudian
diimplementasikan menjadi suatu sistem utuh yang dapat berfungsi. Selanjutnya
akan dilakukan pengujian fungsional dari sistem tersebut. Pengujian dilakukan
untuk menilai rancangan sistem database malware yang ditinjau dari ketepatan
dalam mendeteksi malware serta parameter pengujian lainnya yang telah
ditetapkan. Hasil pengujian kemudian di analisa dan didokumentasikan dalam
laporan penelitian.
Pada penelitian ini, tahap concept development dan engineering development telah
selesai dikerjakan, dimana sistem telah selesai dirancang dan diimplementasikan.
Sedangkan untuk tahapan terakhir yaitu post-development tidak dilakukan pada
penelitian ini, karena produk yang dihasilkan dalam penelitian hanya berupa
prototipe dan tidak dipasarkan.
I.7. Sistematika Penulisan
Sistematika penulisan dalam penelitian ini disusun sebagai berikut:
▪ BAB I Pendahuluan
Bab ini berisi latar belakang, rumusan masalah, tujuan penelitian, batasan
masalah, kontribusi penelitian, metodologi penelitian dan sistematika
penulisan.
▪ BAB II Tinjauan Pustaka
Bab ini menguraikan tinjauan pusaka yang berisi uraian tentang state of the
art dari penelitian, membahas secara umum teori pendukung dan hasil
penelitian ilmiah lainnya yang berkaitan dengan permasalahan yang
dibahas.
8
▪ BAB III Perancangan Sistem
Bab ini menguraikan tentang konsep dan perancangan sistem database
malware berdasarkan metode pengembangan sistem.
▪ BAB IV Implementasi dan Pengujian
Bab ini menguraikan implementasi sistem dari hasil rancangan pada bab
sebelumya dalam bentuk prototipe. Sistem kemudian diuji dan hasilnya
dianalisis. Pengujian dilakukan terdahap tiga aspek sistem, yaitu pengujian
fungsional, pengujian kinerja, dan pengujian keamanan sistem.
▪ BAB VI Kesimpulan dan Saran
Bab ini berisi kesimpulan dari hasil perancangan dan implementasi sistem
yang diusulkan, serta saran untuk pengembangan penelitian ini.
9
Bab II Tinjauan Pustaka
II.1. Definisi dan Klasifikasi Malware
Malware atau Mallicious Software adalah perangkat lunak jahat yang digunakan
untuk mengganggu operasi komputer, mengumpulkan informasi sensitif,
mendapatkan akses ke sistem komputer, atau menampilkan iklan yang tidak
diinginkan. Konsep malware pertama kali ditemukan pada tahun 1949 oleh Von
Neumann melalui Teori Self-Reproducing Automata, bahwa ada sebuah program
yang dapat mereplikasi dirinya sendiri dan mampu mengendalikan program lain.
Kemudian pada 1959, tiga peneliti muda dari Bell Labs menciptakan sebuah
permainan yang disebut CoreWar yang menerapkan teori Von Neumann, dimana
program dari permainan ini bersaing untuk menguasai komputer lawan. Permainan
ini dianggap sebagai cikal bakal kemunculan virus komputer. Perangkat lunak
berbahaya disebut virus komputer sebelum istilah malware diciptakan pada tahun
1990 oleh Yisrael Radai [7], [8].
Malware adalah salah satu ancaman terbesar saat ini dalam keamanan komputer.
Malware dapat menginfeksi banyak perangkat dengan masuk melalui email,
download internet, atau program yang terinfeksi. Pada perangkat yang terinfeksi,
malware dapat menyebabkan kerusakan dan memungkinkan juga terjadi pencurian
data karena sebuah malware yang dikendalikan oleh seorang cracker dapat saja
mencuri data – data penting di perangkat korban [9].
Pada umumnya, penyebaran malware dilakukan dengan cara men-download
software dari tempat ilegal yang telah disisipkan malware. Bukan hanya terbatas
pada program saja, malware juga dapat berbentuk kode script. Malware dapat
bersembunyi dalam program yang tampaknya sah (bertindak sebagai Trojan Horse)
yang dipasang atau diunduh pengguna [10]. Jadi, malware meliputi berbagai
program dan script yang dicurigai mampu merusak sistem dan berbagai informasi
penting yang ada didalamnya, mencakup virus, worm, Trojan horse, rootkit,
spyware, adware, serta software-software lain yang berbahaya dan tidak diinginkan
oleh pengguna.
10
Umumnya malware diklasifikasikan berdasarkan cara penyebaran dan dampaknya.
Berikut ini beberapa klasifikasi malware dalam [11]:
II.1.1. Virus
Secara sederhana, virus komputer adalah jenis kode program yang mereplikasi diri
yang diinstal ke suatu program tanpa persetujuan pengguna. Definisi virus dapat
dirinci lebih jauh, berdasarkan jenis objek yang diinfeksi, metode yang digunakan
untuk memilih host, atau teknik yang digunakan untuk menyerang. Virus juga dapat
muncul dalam berbagai bentuk, mulai dari lampiran email hingga tautan unduhan
berbahaya di Internet, dan dapat melakukan banyak tugas berbahaya pada OS
korban.
II.1.2. Worm
Worm dianggap sebagai subdivisi dari virus karena merupakan program replikasi
diri. Program ini berbahaya karena dapat menyalin dirinya sendiri berulang-ulang,
pada drive lokal, jaringan, email, atau Internet. Program ini menggunakan jaringan
komputer untuk mengirimkan salinan dirinya ke node lainnya dan dapat
menginfeksi tanpa sepengetahuan pengguna. Hal ini disebabkan oleh kelemahan
keamanan pada komputer target. Worm tidak menginfeksi file atau memodifikasi
file melainkan menimbulkan kerugian pada jaringan karena worm akan
mengkonsumsi bandwith jaringan, sehingga mengakibatkan kecepatan Internet
lambat. Worm seperti halnya virus, yang dapat didefinisikan lebih lanjut dengan
memecah metode dimana mereka menginfeksi, seperti melalui email, pesan instan
atau berbagi file.
II.1.3. Trojan Horse
Berbeda dengan virus dan worm, Trojan adalah program non-replikasi yang
berpura-pura sah, tetapi sebenarnya dirancang untuk melakukan tindakan
berbahaya terhadap korban mereka. Diberi nama “Trojan” karena malware ini
bertindak dengan cara yang sama seperti kuda Troya Yunani yang terkenal,
menyembunyikan diri mereka sebagai program yang bermanfaat sambil diam-diam
menjalankan fungsi destruktif mereka yang sebenarnya. Karena Trojan tidak
11
mereplikasi diri, maka mereka tidak menyebar sendiri, melainkan melalui Internet
untuk menjangkau banyak pengguna. Trojan terus berkembang dalam berbagai
bentuk, seperti Backdoor Trojan (yang mencoba mengambil alih kendali
administrasi komputer korban) dan Trojan Downloader (yang menginstal kode
berbahaya lain ke komputer korban).
II.1.4. Ransomware
Ransomware adalah jenis malware yang dirancang untuk memeras uang dari para
korbannya. Malware ini mampu mengambil alih kendali atas sebuah komputer dan
mencegah penggunanya untuk mengakses data hingga tebusan dibayar. Saat ini,
terdapat jenis ransomware yang lebih canggih, dimana operasi dilakukan dengan
mengenkripsi berkas-berkas pada komputer korban sehingga tidak dapat diakses.
Ransomware dapat muncul sebagai pop up, tautan phishing, atau situs web jahat,
dan jika ditindaklanjuti maka akan memicu kerentanan dalam sistem pengguna,
mengunci keyboard dan layar, dan bahkan seluruh komputer.
II.1.5. Rootkit
Rootkit adalah bentuk malware yang dirancang khusus untuk menyembunyikan
keberadaan dan tindakannya dari pengguna dan perangkat lunak perlindungan
apapun yang telah diinstal pada sistem korban. Rootkit dapat melakukan ini melalui
integrasi mendalam dengan sistem operasi, bahkan terkadang dimulai sebelum
sistem operasi melakukannya (bootkit). Perangkat lunak antivirus canggih masih
dapat mendeteksi rootkit dan menyingkirkannya.
II.1.6. Backdoor
Backdoor atau Remote Administration Tool (RAT) adalah aplikasi yang
memungkinkan seorang administrator sistem atau cybercriminal mengakses sistem
komputer tanpa persetujuan atau sepengetahuan pengguna. Bergantung pada fungsi
RAT, penyerang dapat menginstal dan meluncurkan perangkat lunak lain,
mengirim penekanan tombol, mengunduh atau menghapus file, mengaktifkan
mikrofon dan / atau kamera, atau mencatat aktivitas komputer dan mengirimkannya
kembali ke penyerang.
12
II.1.7. Downloader
Infeksi ini adalah potongan kecil kode yang digunakan untuk mengambil file yang
dapat dieksekusi secara diam-diam, atau file yang memerintahkan komputer korban
untuk melakukan tugas yang ditunjukkan dari server. Setelah diunduh, melalui hal-
hal seperti lampiran email dan gambar berbahaya, mereka berkomunikasi kembali
ke server perintah dan kemudian diperintahkan untuk mengunduh malware
tambahan ke sistem korban.
II.2. Kajian Penelitian Terkait
Bagian ini berisi penelitian-penelitian sebelumnya terkait database dan deteksi
malware.
II.2.1. Database
Database merupakan sekumpulan data yang disimpan secara sistematis dan dapat
dikelola sesuai kebutuhan. Terdapat dua jenis database yaitu database relasional
dan non-relasional. Database relasional adalah suatu konsep penyimpanan data
terstruktur dengan pengaturan data dalam tabel yang berisi baris dan kolom [12].
Database ini memiliki kumpulan tabel item data yang diatur sesuai dengan model
relasional, dimana setiap skema tabel harus mengidentifikasi kolom utama untuk
mengidentifikasi baris yang disebut kunci utama [13]. Database Relasional telah
menyediakan ruang penyimpanan selama beberapa dekade dengan implementasi
seperti Oracle, MySQL, dll [14]. Sedangkan teknologi database non-relasional
dapat menangani berbagai jenis data, dari yang terstruktur, semi-terstruktur hingga
data tidak terstruktur. Sistem NoSQL adalah database non-relasional yang
dirancang untuk memberikan aksesibilitas tinggi, keandalan, dan skalabilitas untuk
data yang sangat besar [15].
Database relasional maupun non-relasional memiliki kelebihan dan kekurangan
masing-masing. Pemilihan jenis database ini disesuaikan dengan kebutuhan dan
konsep sistem yang akan diterapkan. Pada penelitian ini, jenis database relasional
(SQL) paling sesuai untuk konsep sistem database malware, dimana sistem
database yang akan dirancang sudah jelas strukturnya. Database SQL yang akan
digunakan pada penelitian ini yaitu MariaDB.
13
II.2.2. Teknik Deteksi Malware
Terdapat sejumlah program antivirus yang dapat mendeteksi, memblokir, dan
menghapus malware apapun yang berjalan pada sistem. Terdapat empat mekanisme
dan teknik yang digunakan oleh perangkat lunak antivirus untuk mendeteksi
keberadaan malware, yaitu sebagai berikut [16]:
1. Deteksi Berbasis Signature: Metode ini beroperasi pada pencocokan sidik
jari (fingerprint) pada file dengan signature virus. Signature adalah
serangkaian byte dalam file. Pada teknik signature ini dilakukan dulu
analisa terhadap sample malware. Dari hasil analisa ini dibuat sebuah model
yang disebut sebagai signature. Setelah itu signature ini akan dibandingkan
dengan file yang akan dianalisa. Kelemahan dari metode deteksi ini adalah
tidak bisa mendeteksi jenis malware baru yang belum ada signature-nya.
2. Deteksi Berbasis Heuristic: Dalam teknik ini program antivirus beroperasi
dengan cara memeriksa file statis untuk setiap karakteristik yang
mencurigakan tanpa kecocokan signature yang tepat. Teknik ini juga dapat
menandai file yang sah sebagai file berbahaya.
3. Deteksi Berbasis Behavior: Deteksi berbasis perilaku bekerja dengan
mengamati perilaku file yang mencurigakan. Metode ini beroperasi dengan
mengeksekusi dan membongkar malcode dan mendengarkan penekanan
tombol dll. Teknik ini memberikan program antivirus kemampuan untuk
mendeteksi program jahat dalam sistem komputer.
4. Deteksi Berbasis Cloud: Teknik berbasis cloud mengidentifikasi kesalahan
dengan mengumpulkan data dari berbagai komputer yang dilindungi,
menganalisis semua data dan mengirimkan hasilnya ke klien. Keputusan
dibuat dengan menganalisis karakteristik dan behavior klien.
Penelitian ini menggunakan teknik deteksi malware berbasis signature, karena
meskipun teknik ini memiliki kelemahan seperti tidak dapat menandai file
berbahaya jika signature dari virus baru belum dibuat, namun cara deteksi ini masih
lebih menjanjikan dibanding deteksi lain [1]. Selain itu, teknik ini juga dapat
dilakukan dengan cepat dibanding dengan teknik deteksi lain, sehingga sangat
sesuai dengan layanan yang akan diberikan oleh sistem database malware ini.
14
II.3. Virus Total
Virus Total [17] merupakan layanan pemindaian online yang menyediakan mesin
pendeteksi malware (antivirus) dari berbagai vendor. Dengan memadukan
database malware dari berbagai perangkat antivirus, produk ini dapat mendeteksi
malware pada file atau URL yang di unggah oleh pengguna. Namun, karena
menggunakan teknik deteksi berbasis signature, maka produk ini memiliki
keterbatasan dalam mendeteksi malware baru yang belum tercatat signature-nya
[18]. Virus Total memiliki API Publik yang dapat diakses digunakan untuk
melakukan scanning file baik dengan cara mengunggah berkas file maupun
mengirimkan hash file. Pengguna membutuhkan api-key untuk dapat mengakses
API Publik Virus Total. Api-key ini didapatkan dari hasil registrasi pada
https://www.virustotal.com/gui/sign-in [19]. Terdapat beberapa keterbatasan dalam
mengakses API Publik Virus Total, diantaranya:
1. Jumlah permintaada API Publik dibatasi hingga 4 permintaan per menit dan
1000 permintaan per hari,
2. API Publik tidak boleh digunakan dalam produk atau layanan komersial.
3. API Publik tidak boleh digunakan dalam alur kerja bisnis yang tidak
berkontribusi terhadap file baru.
Pada penelitian ini, sistem menggunakan dua metode deteksi, salah satunya adalah
Virus Total. Deteksi dilakukan dengan cara mengirimkan request GET dan data
hash file ke API Publik Virus Total di https://developers.virustotal.com/v3.0 [20].
II.4. Sampel Malware
Penelitian malware tidak terlepas dari kebutuhan untuk mengumpulkan sampel
malware. Terdapat beberapa cara untuk dapat mengumpulkan sampel malware,
salah satunya yaitu menggunakan honeypots yang dipasang pada komputer.
Namun, cara termudah untuk mendapatkan sampel malware yaitu melalui website
database yang menyediakan sampel-sampel malware. Hal tersebut dinilai lebih
efektif karena terdapat berbagai jenis malware yang tersedia [21]. Pada penelitian
ini, sampel malware didapatkan dari beberapa web penyedia sampel malware yaitu
theZoo (Github) dan tutorialjinni.com.
15
Bab III Perancangan Sistem
III.1. Metode Perancangan Sistem
Sistem ini diimplementasikan secara software dengan menggunakan metode
waterfall menurut Roger S. Pressman [22]. Metodologi ini menjadi panduan dalam
perancangan, pembangunan dan pengembangan sistem database malware.
Tahapan dalam metode waterfall ini ditunjukkan pada Gambar III. 1.
Gambar III. 1 Metode Waterfall
Tahap awal Requirement yaitu melakukan analisis kebutuhan. Pada penelitian ini,
analisa kebutuhan dilakukan terhadap informasi yang diperoleh melalui
wawancara, diskusi, dan survey. Selanjutnya pada tahap Design, dilakukan
perancangan sistem berdasarkan hasil analisa kebutuhan dari tahap sebelumnya.
Perancangan sistem ini menggunakan aplikasi desain yEd Graph Editor dan
proto.io. Tahap ketiga Implementation yaitu dilakukan pembangunan sistem. Pada
penelitian ini, sistem dibangun menggunakan bahasa pemrograman PHP. Sistem
yang sudah dibangun kemudian dikembangkan dan diuji pada tahap Verification.
Pengujian sistem dilakukan terhadap fungsionalitas, kinerja, dan keamanan Sistem
Database Malware. Tahap terakhir yaitu Maintenance, dimana program yang sudah
dibangun lalu dijalankan dan dilakukan pemeliharaan. Pemeliharaan ini termasuk
dalam memperbaiki kesalahan yang tidak ditemukan pada langkah sebelumnya.
16
III.2. Konsep Sistem
Sistem Database Malware merupakan aplikasi berbasis web yang digunakan untuk
mendeteksi malware secara online. Selain itu, sistem ini juga digunakan untuk
menyimpan, dan mengelola sampel serta informasi terkait malware untuk
kebutuhan analisis dan penelitian. Konsep secara keseluruhan pada Gambar III. 2.
Gambar III. 2 Konsep Sistem Keseluruhan
Dalam sistem ini terdapat tiga aktor, yaitu admin, user, dan mitra. Admin adalah
pengelola basis data yang memiliki hak akses penuh atas basis data. Sedangkan
mitra dan user merupakan client dalam sistem ini. Aktor dapat mengakses sistem
melalui aplikasi web, dimana admin memiliki aplikasi terpisah dari user dan mitra.
Semua permintaan (Request) yang masuk baik dari web admin maupun web sistem
akan diteruskan ke REST-API untuk dikelola. REST-API akan memvalidasi
permintaan, mengubah data (jika ada) menjadi JSON dan menentukan apakah
permintaan harus diteruskan ke Database Malware atau ke API Publik Virus Total.
Kemudian REST-API akan mengolah respon (Feedback) yang menjadi sebuah
laporan dan meneruskannya ke aplikasi web. Pada penelitian ini terdapat bagian
perancangan sistem yang tidak diimplementasikan, diantaranya penambahan RTIR
untuk Ticketing System, penggunaan VM untuk proses ZIP-UNZIP, penambahan
Reporting System dan penambahan server khusus untuk analisa malware.
17
III.2.1. Sistem Admin
Konsep sistem admin ditunjukkan pada Gambar III. 3, dimana permintaan
(Request) dikirimkan melalui aplikasi web admin. Permintaan berupa penambahan
data, perubahan data, penghapusan, pengunduhan sampel malware maupun untuk
melihat data. Database Malware menyimpan sampel dan data-data terkait malware,
benign, sampel baru yang dilaporkan oleh mitra/user, akun admin, akun mitra, dan
catatan aktivitas aktor. Permintaan dikirim ke REST API sebelum diteruskan ke
Database Malware. REST API akan memvalidasi permintaan dan mengubah data
yang dikirim dalam bentuk HTML menjadi JSON. Database Malware kemudian
akan mengirimkan respon dalam bentuk JSON dan kode status ke REST API untuk
diolah menjadi sebuah laporan yang ditampilkan pada web admin.
Gambar III. 3 Konsep Sistem Admin
Pada penelitian ini, Reporting System tidak diimplementasikan, dimana seharusnya
sistem dapat membuat laporan berkala (perbulan dan pertahun) secara otomatis.
Laporan berisi data tentang jumlah berkas yang dideteksi/diunggah klien, jumlah
malware baru yang ditemukan, dan data lainnya yang dibutuhkan untuk keperluan
administrasi. Selain itu, sampel malware baru (dari mitra maupun user) seharusnya
dikirimkan dan disimpan dalam sebuah server khusus (lab malware) untuk proses
analisa lebih lanjut. Pengelola server juga harus memiliki arsip dari semua jenis
sistem operasi atau environment yang menjadi target setiap malware. Hal tersebut
diperlukan agar dapat menjalankan malware untuk proses analisis dan penelitian.
Seharusnya sampel malware, metadata, dan sistem operasi target disimpan dalam
server terpisah, namun pada penelitian ini hal tersebut tidak diimplementasikan
(proses analisa malware dilakukan secara terpisah dari sistem).
18
III.2.2. Sistem User
User dapat mengakses sistem melalui Website Sistem, seperti pada Gambar III. 4.
Pada sistem ini user dapat melakukan deteksi malware terhadap suatu berkas (file)
dan melaporkan sampel yang dicurigai sebagai malware untuk dianalisa. Terdapat
dua metode deteksi pada aplikasi web, yaitu Virus Total dan metode deteksi
Default. Ketika user mengunggah berkas dan memilih metode deteksi Virus Total,
maka permintaan tersebut akan dikirimkan ke REST API untuk kemudian
diteruskan ke Virus Total melalui API Publik Virus Total. Respon dari Virus Total
kemudian diolah dan dilaporkan oleh REST API ke Website Sistem. Hasil deteksi
menggunakan Virus Total dibagi menjadi tiga kategori, yaitu detected (malware),
undetected (benign), dan queue (berkas akan dianalisa lebih lanjut).
Gambar III. 4 Konsep Sistem User
Jika user memilih metode Default untuk mendeteksi berkas yang diunggah, maka
permintaan akan diteruskan oleh REST API ke Database Malware. Pada tahap ini,
berkas akan di hash menggunakan SHA-256. Hash berkas kemudian dicocokkan
dengan hash sampel yang tersimpan dalam Database Malware. Hasil deteksi dibagi
menjadi empat kategori status, yaitu terdeteksi (malware), file aman (benign),
proses analisa (sampel baru), dan perlu analisa (berkas dilaporkan sebagai sampel
baru). Status ini ditentukan dari hasil pencocokkan hash, dimana hash yang cocok
dengan data malware menunjukkan bahwa berkas terinfeksi/terdeteksi malware
sedangkan hash yang cocok dengan data benign adalah file aman/tidak terdeteksi.
19
Selain itu, jika hash cocok dengan data sampel baru maka berkas merupakan sampel
yang dicurigai sebagai malware dan sedang dalam proses analisa lebih lanjut.
Sementara hash yang tidak cocok dengan data manapun dalam basis data,
ditetapkan sebagai sampel baru yang memerlukan analisa lebih lanjut. Pada
kategori ini seharusnya sampel baru dikirimkan ke Ticketing System untuk
memantau proses analisa (menggunakan Request Tracker) dan disimpan dalam
server khusus untuk dianalisa. Namun, pada penelitian ini, hal tersebut tidak
diimplementasikan. Ticketing dilakukan menggunakan nomor ID sampel pada basis
data sebagai tiket dan sampel baru masih disimpan dalam basis data yang sama.
III.2.3. Sistem Mitra
Mitra memiliki keuntungan khusus dibanding user. Selain mendeteksi dan
melaporkan malware, mitra juga dapat mengunduh sampel malware, melihat hasil
analisa dan metadata terkait malware tersebut. Untuk bergabung menjadi mitra,
calon mitra harus mendaftarkan diri terlebih dahulu dan mendapatkan akun. Akun
ini kemudian digunakan untuk login pada menu khusus di aplikasi Website Sistem.
Gambar III. 5 Konsep Sistem Mitra
Gambar III. 5 menunjukkan bahwa permintaan (Request) dari mitra akan dikimkan
ke REST API melalui aplikasi web. Selain dapat mendeteksi dan melaporkan
malware, mitra juga dapat mengelola akun dan melihat catatan aktivitas pribadinya.
20
Proses deteksi malware pada sistem mitra sama seperti sistem user, dimana mitra
dapat melakukan deteksi menggunakan Virus Total dan metode deteksi Default.
Ketika mitra mengirimkan permintaan untuk mengunduh malware, maka
permintaan tersebut akan dikirim ke REST API server dan kemudian diteruskan ke
Database Malware. Pada basis data ini, sampel-sampel malware disimpan dalam
bentuk ZIP ber-password agar tidak menginfeksi sistem. Password ZIP yang
digunakan merupakan password default admin. Password admin ini sebaiknya
tidak diketahui oleh mitra, oleh karena itu saat mitra meminta sistem untuk
mengunduh sampel malware, pergantian password harus dilakukan terlebih dahulu.
Proses pergantian password ZIP ini sangat berbahaya jika dilakukan didalam
sistem, karena malware dapat menginfeksi sistem saat proses UNZIP dilakukan
(untuk membuka password admin). Oleh karena itu, dibutuhkan suatu container
atau environment lain yang dapat digunakan untuk proses ini. Virtual Machine
dapat digunakan untuk melakukan proses ZIP-UNZIP ini. Namun pada penelitian
ini, proses ZIP-UNZIP tidak diimplementasikan. Pada penelitian ini, password ZIP
diketahui dan digunakan bersama oleh admin dan mitra. Respon dari Database
Malware berupa sampel malware dalam bentuk ZIP ber-password. Respon ini
kemudian diteruskan oleh REST-API ke aplikasi web untuk diunduh mitra.
III.3. Kebutuhan dan Spesifikasi Perangkat
Penelitian ini membutuhkan perangkat keras dan perangkat lunak dalam proses
perancangan, pembangunan, dan pengembangan Sistem Database Malware. Selain
itu juga dibutuhkan perangkat pendukung untuk proses penulisan laporan dan
dokumentasi.
III.3.1. Perangkat Keras
Penelitian ini dikerjakan menggunakan laptop ACER Swift SF314-56G, dengan
spesifikasi sebagai berikut:
▪ Processor : Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz 1.80GHz
▪ RAM : 8,00 GB
▪ System Type : 64-bit operating system, x64-based processor
21
III.3.2. Perangkat Lunak Perancangan Sistem
Perangkat lunak yang digunakan pada perancangan sistem ini yaitu:
1. Sistem Operasi Windows 10 Home Single Language.
2. XAMPP digunakan untuk pengembangan aplikasi web dan database.
3. Google Chrome sebagai web browser yang digunakan untuk pengembangan
dan pengujian sistem.
4. Visual Studio Code sebagai teks editor yang digunakan untuk membantu
proses pembuatan dan pengembangan sistem.
5. Postman digunakan untuk pengembangan dan pengujian REST API baik
dari sisi REST Client, REST Server, maupun koneksi ke API Publik.
6. LoadImpact digunakan untuk menguji kinerja sistem.
7. Virtual Box digunakan untuk melakukan analisa sampel malware.
8. Bootstrap 4 sebagai kerangka kerja CSS dan HTML untuk pengembangan
front-end website.
9. CodeIgniter digunakan sebagai kerangka kerja PHP dengan model MVC
untuk pembangunan sistem REST API Server.
10. Guzzle digunakan sebagai library PHP untuk melakukan HTTP request
pada sistem REST API Client.
11. Sampel Malware yang didapat dari the Zoo (GitHub) dan tutorialjinni.com.
III.3.3. Perangkat Lunak Pendukung
Perangkat pendukung yang digunakan untuk penulisan buku tesis dan dokumentasi:
1. yEd Graph Editor digunakan untuk membuat diagram use case.
2. Draw.io digunakan untuk membuat diagram alir dan relasi basis data.
3. Zotero digunakan untuk pembuatan daftar pustaka dalam buku tesis ini.
4. OBS Studio dan Wondershare Filmora 9 untuk membuat video demo.
III.4. Desain Sistem
Konsep sistem yang telah dibuat kemudian digunakan untuk merancang sistem
database malware secara utuh, menentukan aktor, dan fitur-fitur yang dibutuhkan
serta menetapkan hak akses untuk setiap aktor. Diagram use case dan diagram alir
juga dibuat dalam perancangan sistem database malware ini.
22
III.4.1. Aktor, Fitur, dan Hak Akses
Terdapat tiga aktor dalam penelitian ini, yaitu admin, user, dan mitra. Masing-
masing aktor memiliki fitur dan hak akses yang berbeda. Admin merupakan aktor
pengelola basis data, sedangkan user dan mitra sebagai aktor pengguna (client).
Tabel III. 1 menunjukkan desain fitur dan penetapan hak akses untuk admin. Pada
sistem ini, hanya admin yang memiliki hak akses penuh atas pengelolaan basis data.
Tabel III. 1 Fitur dan Hak Akses Admin
AKTOR: ADMIN
FITUR HAK AKSES
Login Admin Admin harus menginputkan username dan password akun
untuk dapat mengakses sistem.
Halaman Menu Admin Admin dapat melihat keterangan fungsi setiap menu.
Database Benign
Admin dapat melihat/mengubah/menghapus basis data yang
menyimpan sampel berkas berstatus aman yang sudah
dianalisa oleh admin.
Database Malware Admin dapat melihat/mengubah/menghapus sampel malware,
metadata dan analisa statik malware yang pernah dianalisa
Analisa File Admin dapat melihat/menghapus/mengunduh daftar sampel
baru yang belum dianalisa.
Tambah File
Admin dapat menambahkan sampel baru yang telah dianalisa,
baik yang ditemukan oleh admin maupun dari user, dimana
sampel tersebut dimasukkan kedalam basis data yang sesuai
dengan hasil analisa (sampel benign atau malware).
Recent
Admin dapat melihat catatan aktivitas pengelolaan basis data
baik itu menambahkan sampel, menghapus, mengedit, dan
mengunduh sampel. Selain itu, catatan juga berisi keterangan
waktu dan akun admin yang bertanggung jawab atas
perubahan data tersebut.
Registrasi
Admin dapat menambahkan akun untuk admin dan mitra yang
baru bergabung. Admin mendaftarkan mitra setelah calon
mitra meminta bergabung melalui email. Pembuatan akun
mitra menggunakan username dan password sementara yang
dapat diubah setelah mitra login ke sistem mitra.
Data Admin
Admin dapat melihat data seluruh admin kecuali password.
Admin juga dapat menghapus akun admin lain yang sudah
tidak terpakai.
Data Mitra
Admin dapat melihat data seluruh mitra kecuali password.
Admin juga dapat menghapus akun mitra yang sudah tidak
aktif.
Logout Menu keluar dari sistem admin.
23
User merupakan aktor pengguna yang ditujukan untuk masyarakat umum. Sistem
ini diharapkan dapat membantu user dalam mendeteksi malware. Sistem user harus
terbuka dan mudah diakses oleh semua orang, sehingga tidak memerlukan sistem
login. Fitur dan hak akses user sepenuhnya ditunjukkan pada Tabel III. 2.
Tabel III. 2 Fitur dan Hak Akses User
AKTOR: USER
FITUR HAK AKSES
Halaman Menu User Pengguna dapat melihat fitur-fitur web dan fungsinya sesuai hak
akses pengguna.
Deteksi Pengguna dapat mengunggah berkas untuk mendeteksi status
berkas tersebut apakah mengandung malware atau tidak.
Riwayat User Pengguna dapat melihat catatan aktivitas dan status hasil deteksi
dari berkas yang pernah di unggah oleh semua pengguna.
Mitra merupakan aktor pengguna yang memiliki hak akses istimewa. Sistem mitra
ditujukan untuk rekan mitra yang diharapkan dapat berkontribusi dan saling berbagi
informasi terkait malware. Sasaran aktor ini yaitu pengelola antivirus,
instansi/badan yang mengelola data atau menangani kasus malware, dan peneliti
malware. Tabel III. 3 menunjukkan fitur dan hak akses mitra.
Tabel III. 3 Fitur dan Hak Akses Mitra
AKTOR: MITRA
FITUR HAK AKSES
Login Mitra Mitra harus memasukkan username dan password akun untuk
dapat mengakses sistem.
Halaman Menu Mitra Mitra dapat melihat fitur-fitur web dan fungsinya.
Profil Mitra dapat mengelola akun miliknya, mengubah data dan foto
profil serta mengganti password.
Deteksi Mitra dapat mengunggah berkas untuk mendeteksi status
berkas tersebut apakah mengandung malware atau tidak.
Lab Malware
Mitra dapat mengunduh sampel malware dan melihat
informasi detail dari hasil analisa admin, baik itu metadata,
analisa statik, cara penanganan, dan informasi lainnya terkait
malware tersebut.
Riwayat Mitra Mitra dapat melihat catatan aktivitas miliknya, mulai dari
aktivitas deteksi hingga mengunduh sampel malware.
Logout Menu keluar dari sistem mitra.
24
III.4.2. Diagram Use Case
Diagram use case digunakan untuk memberikan gambaran singkat tentang
hubungan antara use case, aktor dan sistem. Selain itu juga untuk menjelaskan
fungsi-fungsi apa saja yang berada pada sistem yang dibangun. Gambar III. 6
menunjukkan diagram use case admin.
Gambar III. 6 Diagram Use Case Admin
Admin harus login untuk dapat mengakses sistem admin. Setelah login, admin
dapat melakukan pengelolaan basis data pada data malware, benign, sampel baru,
akun admin, dan akun mitra. Admin juga dapat melihat catatan aktivitas admin.
25
Gambar III. 7 Diagram Use Case User
Gambar III. 7 merupakan use case user, dimana user dapat masuk ke sistem tanpa
memerlukan login. User dapat melihat catatan aktivitasnya dan melakukan deteksi
malware pada suatu berkas dengan menggunakan metode Default atau Virus Total.
Sedangkan diagram use case mitra ditujukkan pada Gambar III. 8. Mitra harus
melakukan login terlebih dahulu untuk dapat mengakses sistem. Mitra memiliki
akun yang dapat dikelola olehnya, baik itu untuk mengubah password, foto profil,
maupun data akun lainnya. Sama seperti user, mitra juga dapat mendeteksi malware
pada suatu berkas menggunakan metode Default maupun Virus Total. Selain itu,
mitra juga dapat mengakses data malware, seperti melihat detail informasi terkait
analisa dan metadata malware serta dapat mengunduh sampel malware.
Gambar III. 8 Diagram Use Case Mitra
26
III.4.3. Diagram Alir
Diagram alir memperlihatkan urutan dan hubungan antar proses beserta dengan
instruksinya. Gambar III. 9 menunjukkan proses yang terjadi dalam sistem user.
Gambar III. 9 Diagram Alir Sistem User
Gambar III. 10 Diagram Alir Deteksi (Virus Total)
27
Sistem user memiliki dua menu, yaitu deteksi dan riwayat. Terdapat dua metode
pada menu deteksi, yaitu Virus Total dan Default. Deteksi Virus Total ditunjukkan
pada Gambar III. 10. Pada deteksi ini, sistem akan mengirimkan berkas ke Virus
Total melalui REST API Publik. Respon dari Virus Total kemudian diolah menjadi
laporan dengan tiga kategori status, yaitu Detected (berkas terinfeksi malware),
Undetected, dan Queue (berkas tidak ada dalam dataset). Pada status Queue, sistem
mengirimkan scan ID untuk memantau hasil analisa pada web resmi Virus Total.
Deteksi Default ditunjukkan pada Gambar III. 11 dimana hash berkas akan
dicocokkan dengan hash yang ada dalam basis data. Hasil deteksi Default terbagi
menjadi empat kategori, yaitu “Terdeteksi” (malware), “File Aman” (tidak
terdeteksi), “Proses Analisa” (sampel baru), dan “Perlu Analisa” (hash tidak ada
dalam basis data sistem). Pada status “Perlu Analisa”, sistem akan meminta user
menginputkan email (melaporkan sampel) untuk mengirimkan tiket sampel.
Gambar III. 11 Diagram Alir Deteksi (Metode Default)
28
Diagram alir sistem mitra ditunjukkan pada Gambar III. 12 dan Gambar III. 13.
Menu utama sistem mitra terdiri dari menu profil, deteksi, lab dan riwayat.
Gambar III. 12 Diagram Alir Sistem Mitra (Login - Profil)
29
Sebelum masuk ke menu utama, mitra harus login dengan akun miliknya. Akun
didapatkan dari admin dengan mengirimkan permintaan melalui email. Admin akan
mengirimkan username dan password sementara, kemudian mitra dapat mengganti
password dan mengubah data akun miliknya menggunakan menu profil. Sistem
mitra juga menyediakan menu lab untuk mengunduh dan melihat data malware.
Gambar III. 13 Diagram Alir Mitra (Deteksi - Logout)
30
Gambar III. 14 Diagram Alir Sistem Admin (Login - DB Malware)
Sistem admin memiliki delapan menu utama, yaitu menu DB Malware, DB Benign,
Analisa File, Tambah File, Registrasi, Data Admin, Data Mitra, dan Menu Recent.
Gambar III. 14 menunjukkan diagram alir untuk menu DB Malware. Pada menu
ini, admin dapat mengelola basis data malware. Pengelolaan meliputi melihat
metadata dan hasil analisa, merubah metadata, menghapus, dan mengunduh sampel.
31
Gambar III. 15 Diagram Alir Sistem Admin (DB Benign)
Gambar III. 16 Diagram Alir Sistem Admin (Analisa File)
32
Gambar III. 15 adalah diagram alir menu DB Benign. Pada menu ini, admin dapat
melihat, menghapus, dan mengunduh sampel benign. Selain mengelola benign dan
malware, admin juga mengelola sampel baru yang dicurigai sebagai malware.
Sampel baru ini didapatkan dari laporan user dan mitra saat proses deteksi
menggunakan metode Default. Sampel baru sini dikelola melalui menu Analisa
File, seperti yang ditunjukkan pada Gambar III. 16. Sampel diunduh untuk dianalisa
lebih lanjut dan dihapus ketika hasil analisa sudah selesai. Hasil analisa akan
menentukan apakah sampel baru merupakan benign atau malware. Selanjutnya,
sampel ini akan ditambahkan ke database menggunakan menu Tambah File, seperti
yang ditunjukkan pada Gambar III. 17.
Gambar III. 17 Diagram Alir Sistem Admin (Tambah File)
Gambar III. 18 menjelaskan alur dari menu registrasi, dimana admin dapat
mendaftarkan dan membuat akun untuk mitra dan admin baru. Selanjutnya akun
dapat dikelola dengan menu Data Admin dan Data Mitra.
33
Gambar III. 18 Diagram Alir Sistem Admin (Registrasi - Logout)
34
III.5. Desain Database
Desain database disesuaikan dengan kebutuhan pada perancangan fitur sitem.
Relasi antar tabel dalam database ditunjukkan pada Gambar III. 19.
Gambar III. 19 Relasi Database
35
Bab IV Implementasi & Pengujian
IV.1. Implementasi Sistem
Pada penelitian ini, telah berhasil diimplementasikan sebuah Sistem Database
Malware dalam bentuk prototipe. Sistem ini berupa aplikasi berbasis web yang
berfungsi untuk mendeteksi dan mengoleksi data malware. Penjelasan mengenai
implementasi Sistem Database Malware dibagi berdasarkan fungsi-fungsi yang
berjalan pada sistem. Informasi yang disajikan dalam bagian implementasi ini berisi
tampilan dari aplikasi web, penjelasan fungsi dan cara kerjanya, potongan program
dan keterangan lain terkait fungsi tersebut.
IV.1.1. Halaman Utama Menu
Gambar IV. 1 Halaman Utama User & Mitra
Tampilan utama dari aplikasi web sistem ditunjukkan pada Gambar IV. 1. Halaman
ini merupakan halaman menu user, dimana terdapat fitur-fitur user yaitu deteksi
dan riwayat. Selain itu, terdapat pula fitur mitra yang berfungsi untuk mengakses
halaman login mitra. Ketika mitra login ke akunnya melalui apilikasi web sistem
maka akan muncul halaman utama mitra seperti pada Gambar IV. 2. Halaman ini
berisi daftar menu mitra seperti menu profil, deteksi, lab dan riwayat mitra.
36
Gambar IV. 2 Halaman Menu Mitra
Tampilan utama aplikasi web admin adalah halaman login admin. Setelah login,
maka admin akan masuk ke halaman menu admin seperti pada Gambar IV. 3.
Gambar IV. 3 Halaman Menu Admin
37
IV.1.2. Fungsi Login
Sebelum masuk ke halaman utama menu mitra dan admin, maka harus melalui
halaman login terlebih dahulu, seperti yang ditunjukkan pada Gambar IV. 4.
Gambar IV. 4 Halaman Login
Pada halaman ini, admin dan mitra harus memasukkan username dan password
akun untuk dapat mengakses sistem. Potongan program untuk fungsi login admin
ditunjukkan pada Algoritma IV. 1, sedangkan fungsi login mitra menggunakan
konsep program yang sama, hanya saja basis data yang diakses berbeda.
Algoritma IV. 1 Login (Admin)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if(isset($_POST["login"])) {
$username = addslashes(trim($_POST['username']));
$password = addslashes(trim($_POST['password']));
$row = getAdminByUsername($username);
if ($row) {
if(password_verify($password, $row["password"])) {
$_SESSION["login"] = true;
if( isset($_POST["remember"])){
setcookie('id', $row['id_admin'], time()+3600);
setcookie('key',hash('sha256',$row['username']),time()+3600);
}
$ida = $row["id_admin"];
header("Location: home.php?ida=$ida");
exit;
}
}
$error = true;
}
38
Dalam program terlihat bahwa sistem akan mencari username dalam basis data
sesuai input dari admin. Ketika username terdaftar dalam basis data, maka
password akan di verifikasi. Jika akun valid maka sesi akan dibangun dan halaman
menu admin akan ditampilkan. Namun, jika username atau password salah maka
notifikasi kesalahan akan ditampilkan, seperti pada Gambar IV. 5.
Gambar IV. 5 Login – Username atau Password Salah
IV.1.3. Fungsi Deteksi
Gambar IV. 6 Deteksi User & Mitra
39
Deteksi merupakan salah satu fungsi terpenting dalam sistem ini. Fungsi deteksi
terdapat pada aplikasi web sistem yang digunakan oleh user dan mitra untuk
mendeteksi malware pada suatu berkas. Tampilan menu deteksi untuk user dan
mitra dapat dilihat pada Gambar IV. 6. Terdapat dua metode deteksi pada menu ini,
yaitu Virus Total dan Default. Pada saat user atau mitra memilih metode deteksi
Default, maka sistem akan menjalankan program untuk mencocokkan hash berkas
dengan hash yang berada pada basis data. Algoritma IV. 2 adalah potongan
program untuk mencocokkan hash berkas dengan hash benign pada basis data.
Algoritma IV. 2 Deteksi Default – File Aman
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$rowb = getBenignByHash($sha256_user);
if($rowb) {
$id = $rowb["id_benign"];
header("Location: deteksi_aman.php?id=$id");
$data = [
'file_user' => $rowb["file_benign"],
'sha256_user' => $rowb["sha256_benign"],
'status' => "File Aman",
'metode' => "Default"
];
createRiwayat($data);
}
Jika hash cocok dengan benign, maka program akan menjalankan file
deteksi_aman.php dan menjalankan fungsi createRiwayat untuk mencacat aktivitas
aktor. Program tersebut akan menampilkan laporan hasil deteksi seperti pada
Gambar IV. 7. ID benign juga dikirimkan ke program untuk menampilkan detail
informasi mengenai benign.
Gambar IV. 7 Deteksi Default - File Aman
40
Selanjutnya jika hash berkas tidak cocok dengan hash benign maka sistem akan
menjalankan program Algoritma IV. 3. Pada program ini, sistem akan
mencocokkan hash berkas dengan hash malware pada basis data. Jika hash cocok,
maka program akan menjalankan file deteksi_terdeteksi.php dan mengirimkan ID
malware. ID malware ini pada program selanjutnya digunakan untuk mencari detail
informasi malware pada basis data. Selain itu, program juga akan mencatat aktivitas
ini pada basis data menggunakan fungsi createRiwayat.
Algoritma IV. 3 Deteksi Default – Terdeteksi Malware
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$rowm = getMalwareByHash($sha256_user);
if($rowm) {
$data = $rowm["id_malware"];
header("Location: deteksi_terdeteksi.php?id=$data");
$data = [
'file_user' => $rowm["file_malware"],
'sha256_user' => $rowm["sha256_malware"],
'status' => "Terdeteksi",
'metode' => "Default"
];
createRiwayat($data);
}
Laporan hasil deteksi untuk berkas yang terinfeksi malware (Terdeteksi) berisi
status hasil deteksi, analisa statik, metadata malware, dan cara penganan serangan
malware. Selain itu, khusus untuk malware berjenis ransomware, laporan juga
berisi data-data khusus terkait ransomware. Informasi status deteksi ditunjukkan
pada Gambar IV. 8. Bagian ini berisi data rangkuman malware seperti signature
malware (SHA-256), nama file, ukuran file, tipe file, waktu submit saat user atau
mitra mendeteksi file, waktu input malware, dan status hasil deteksi.
Gambar IV. 8 Deteksi Default - Terdeteksi Malware (Status)
41
Data terkait analisa statik dan metadata malware juga ditampilkan dalam laporan
ini, seperti pada Gambar IV. 9. Analisa statik berisi informasi mengenai berkas file
seperti nama file, tipe file, ukuran file, hash MD5, SHA-1, SHA-256, SSDEEP, dan
Vhash. Data-data tersebut dihasilkan secara otomatis oleh sistem sesuai dengan
berkas file yang diunggah. Sedangkan metadata diinputkan oleh admin dan berisi
informasi malware seperti nama malware, jenis, karakteristik, cara kerja dan
operasi malware, cara penyebaran, tingkat bahaya, target, dan keterangan lain.
Gambar IV. 9 Deteksi Default - Terdeteksi Malware (Analisa dan Metadata)
42
Selain itu, informasi terkait cara penanganan dan data khusus ransomeware juga
ditampilkan dalam laporan ini, seperti pada Gambar IV. 10.
Gambar IV. 10 Deteksi Default - Terdeteksi Malware (Analisa)
Jika hash berkas tidak cocok dengan hash malware, maka sistem akan menjalankan
Algoritma IV. 4. Pada program ini, hash akan dicocoknya dengan hash sampel baru
dalam basis data. Jika hash cocok maka program deteksi_perlu_analisa.php akan
dijalankan untuk menampilkan laporan hasil deteksi.
Algoritma IV. 4 Deteksi Default – Proses Analisa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$rowbaru = getBaruByHash($sha256_user);
if($rowbaru){
$id = $rowbaru["id_baru"];
header("Location: deteksi_proses.php?id=$id");
$data = [
'file_user' => $rowbaru["file_baru"],
'sha256_user' => $rowbaru["sha256_baru"],
'status' => "Proses Analisa",
'metode' => "Default"
];
createRiwayat($data);
}
43
Laporan berisi status dan Tiket Sampel seperti pada Gambar IV. 11. Tiket Sampel
ini seharusnya diambil dari Ticketing System, namun pada penelitian ini Tiket
Sampel adalah ID Sampel baru dalam basis data. Status “Proses Analisa”
menunjukkan berkas sudah pernah diunggah. Berkas tersebut kemudian sudah
tersimpan dalam basis data sebagai sampel baru dan sedang dalam proses analisa.
Gambar IV. 11 Deteksi Default - Proses Analisa
Algoritma IV. 5 Deteksi Default– Perlu Analisa
1
2
3
4
5
6
7
8
9
10
11
12
13
else {
header("Location: deteksi_perlu_analisa.php?file=$file_user &size=
$ukuran_file_user &tipe=$tipe_file_user &sha256=$sha256_user");
uploadBaru($file, $file_user);
$data = [
'file_user' => $file_user,
'sha256_user' => $sha256_user,
'status' => "Perlu Analisa",
'metode' => "Default"
];
createRiwayat($data);
}
Jika hash tidak cocok dengan hash manapun dalam basis data, maka program
Algoritma IV. 5 akan dijalankan. Program ini akan menyimpan file dalam basis
data sebagai sampel baru menggunakan fungsi uploadBaru dan menjalankan
deteksi_perlu_analisa.php untuk menampilkan laporan berisi status “Perlu Analisa”
seperti pada Gambar IV. 12.
44
Gambar IV. 12 Deteksi Default - Perlu Analisa
Program juga akan meminta user untuk menginputkan email, sedangkan pada menu
deteksi mitra program akan otomatis menuliskan email mitra. Setelah user
menginputkan email maka program Algoritma IV. 6 akan dijalankan.
Algoritma IV. 6 Deteksi Default – Simpan Sampel Baru 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function createBaru($data){
global $client;
$file = explode(".", $data['file_baru']);
$file_baru = $file[0]. ".zip";
$data = [
'file_baru' => $file_baru,
'waktu_input' => date("d-m-Y"),
'tipe_file_baru' => "zip",
'ukuran_file_baru' => $data['ukuran_file_baru'],
'sha256_baru' => $data['sha256_baru'],
'pengirim' => $data['pengirim'],
'email' => htmlspecialchars($data['email']),
'status' => "Perlu Analisa"
];
$response = $client->request('POST', 'baru', [
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(),true);
if(($result['status']) === 0 ){
return 0;
} else {
return 1;
}
}
Pada program ini, sampel baru disimpan dalam basis data melalui REST API.
Kemudian sistem akan menampilkan laporan kembali berisi Tiket Sampel agar
45
klien dapat memantau proses analisa sudah sampai tahap mana. Pada penelitian ini,
nomor tiket yang digunakan merupakan ID sampel baru dalam basis data.
Gambar IV. 13 Deteksi Default - Ticketing System
Sementara untuk deteksi Virus Total, sistem akan menjalankan program Algoritma
IV. 7. Program akan mengirimkan hash berkas yang diunggah ke API Publik Virus
Total. Respon dari Virus Total berupa kode status dan hasil analisa yaitu terinfeksi
malware (Detected), tidak terdeteksi (Undetected), atau perlu dianalisa (Queue).
Algoritma IV. 7 Deteksi Virus Total
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function virusTotal($hash){
$headers = array('x-apikey:
e4f0c6fc1643f7fb301d1e19d3ab6720fcfd3a2e7a625d909e2082647920906b');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.virustotal.com/api/v3/
files/$hash");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_USERAGENT, "gzip, My php curl client");
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,true);
curl_setopt($ch, CURLOPT_HTTPGET, true);
$result=curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status_code == 200) {
$js = json_decode($result, true);
return $js;
} else {
return 0;
}
curl_close ($ch);
}
46
Respon akan diolah menjadi sebuah laporan. Gambar IV. 14 merupakan tampilan
laporan berisi rangkuman hasil deteksi saat berkas dinyatakan aman (Undetected).
Gambar IV. 14 Deteksi Virus Total – Undetected (hasil deteksi)
Sedangkan Gambar IV. 15 menunjukkan rincian hasil scanning dari berbagai
antivirus, dimana semua antivirus tidak mendeteksi adanya malware pada berkas.
Gambar IV. 15 Deteksi Virus Total - Undetected (scan antivirus)
dst…
47
Gambar IV. 16 Deteksi Virus Total - Undetected (informasi detail)
48
Selain itu, laporan juga berisi informasi detail berkas seperti pada Gambar IV. 16.
Laporan untuk berkas yang terinfeksi malware (Detected) juga dibagi menjadi tiga
bagian yaitu, rangkuman hasil deteksi pada Gambar IV. 17, rincian hasil scanning
antivirus pada Gambar IV. 18, dan informasi detail berkas pada Gambar IV. 19.
Gambar IV. 17 Deteksi Virus Total - Detected (hasil deteksi)
Gambar IV. 18 Deteksi Virus Total - Detected (scan antivirus)
dst…
49
Dari laporan ini dapat diketahui bahwa dari 72 antivirus yang melakukan scanning,
terdapat 17 antivirus yang menyatakan adanya malicious pada bekas tersebut. Hal
tersebut berarti bahwa signature malware pada berkas ini sudah tercatat pada
dataset antivirus tersebut. Sedangkan antivirus lainnya belum memiliki data tentang
malware tersebut, sehingga tidak dapat mendeteksi malware ini.
Gambar IV. 19 Deteksi Virus Total - Detected (informasi detail)
Pada laporan ini juga terdapat data mengenai berkas seperti hash berkas pada Basic
Properties diantaranya MD5, SHA-1, SHA-256, Vhash, SSDEEP, dan data
pendukung lainnya. Terdapat pula catatan waktu pada bagian History, nama file
pada bagian Names, dan data berkas lainnya pada bagian ExifTool File Metadata.
50
Respon lain yang dikirimkan oleh Virus Total yaitu Queue. Respon ini diberikan
ketika hash berkas tidak terdaftar dalam dataset Virus Total. Ketika itu, sistem akan
menjalankan program yang berfungsi mengirimkan berkas ke Virus Total untuk
dianalisa lebih lanjut. Tampilan laporan Queue dapat dilihat pada Gambar IV. 20.
Gambar IV. 20 Deteksi Virus Total – Queue
Laporan ini berisi scan-ID dan hash file yang nantinya digunakan untuk memantau
hasil analisa pada web Virus Total di http://www.virustotal.com/home/search.
Hasil analisa hanya dapat diakses jika proses analisa telah selesai.
IV.1.4. Fungsi Penampil Data
Fungsi penampil data berfungsi untuk menampilkan data-data dalam basis data
maupun informasi yang diperlukan oleh aktor, baik berupa pelaporan, perintah,
peringatan, dan lainnya. Fungsi ini sebenarnya dibutuhkan oleh hampir semua
program dalam sistem, namun pada bagian ini fungsi penampil data yang akan
dibahas hanya pada menu DB Malware, menu Analisa File, menu Data Admin,
Data Mitra, menu Recent, menu Riwayat User dan Riwayat Mitra. Potongan
program penampil data ditunjukkan pada Algoritma IV. 8. Program ini digunakan
untuk menampilkan data pada menu DB Benign, namun konsep program juga dapat
diterapkan untuk seluruh program penampil data lainnya. Program ini akan
mengambil data dari basis data melalui REST API dan kemudian menampilkannya
dalam bentuk tabel.
51
Algoritma IV. 8 Penampil Data (DB Benign)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<table class="table table-responsive-lg table-bordered">
<thead>
<tr class="table-primary">
<th scope="col" class="align-middle">No</th>
<th scope="col" class="align-middle">Nama File</th>
<th scope="col" class="align-middle">Ukuran File</th>
<th scope="col" class="align-middle">Signature (SHA256)</th>
<th scope="col" colspan="3" class="align-middle">Opsi</th>
</tr>
</thead>
<tbody>
<?php $no = ($halamanAktif>1)? ($awalData+1) :1;?>
<?php foreach($benign as $row): ?>
<tr>
<th scope="row"><?= $no++; ?></th>
<td><?= $row["file_benign"]; ?></td>
<td><?= $row["ukuran_file_benign"]; ?></td>
<td><?= $row["sha256_benign"]; ?></td>
<td><a href="benign_unduh.php?id=<?=$row["id_benign"];?> &ida=<?
=$ida;?>">unduh</a></td>
<td><a href="benign_detail.php?id=<?=$row["id_benign"];?>
&ida=<?=$ida;?>">detail</a></td>
<td><a href="benign_hapus.php?id=<?=$row["id_benign"];?> &ida=<?
=$ida;?>" onclick= "return confirm('Apakah anda yakin akan
menghapus data ini?'">hapus</a></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
Tampilan menu DB Benign pada fitur admin dapat lihat pada Gambar IV. 21. Pada
menu ini, admin dapat melihat daftar benign yang tersimpan dalam basis data.
Selain itu, admin juga dapat mengelola data menggunakan button pada kolom Opsi,
seperti melihat detail, mengunduh, dan menghapus data.
Gambar IV. 21 Database Benign – Fitur Admin
52
Sama seperti pada menu DB Benign, admin juga dapat mengelola data pada menu
DB Malware. Pengelolaan meliputi, melihat detail malware, mengunduh sampel,
menghapus data, dan melakukan perubahan data pada hasil analisa malware.
Tampilan menu DB Malware dapat dilihat pada Gambar IV. 22.
Gambar IV. 22 Database Malware - Fitur Admin
Menu admin lainnya yang menggunakan program penampil data yaitu menu
Analisa File. Pada menu ini, program menampilkan daftar sampel baru yang harus
dianalisa oleh admin/analis, seperti pada Gambar IV. 23. Pada program ini, sampel
baru dapat diunduh untuk dilakukan proses analisa lebih lanjut. Sementara fungsi
untuk menghapus data digunakan saat sampel telah selesai dianalisa.
Gambar IV. 23 Analisa File (Sampel Baru) – Fitur Admin
53
Menu Data Admin dan Data Mitra juga menggunakan program penampil data untuk
menampilkan data akun. Tampilan ditujukkan pada Gambar IV. 24 dan Gambar IV.
25. Pada menu ini, admin memiliki kewenangan untuk menghapus akun admin
maupun akun mitra yang sudah tidak terpakai.
Gambar IV. 24 Data Admin – Fitur Admin
Data yang ditampilkan pada kedua menu ini diambil dari basis data sistem pada
tabel admin dan tabel mitra. Data meliputi nama lengkap, username, email, dan
khusus untuk mitra terdapat data tambahan yaitu asal instansi. Sedangkan data yang
bersifat rahasia seperti password, tidak ditampilkan dalam halaman menu.
Gambar IV. 25 Data Mitra – Fitur Admin
Sistem akan mencatatan aktivitas setiap aktor secara otomatis. Menu pencatat ini
juga menggunakan program penampil data, diantaranya menu Recent admin, menu
Riwayat mitra dan Riwayat user.
54
Gambar IV. 26 Recent – Fitur Admin
Catatan aktivitas setiap aktor berisi informasi yang berbeda. Menu Recent
menyimpan catatan aktivitas admin, seperti yang ditunjukkan pada Gambar IV. 26.
Data admin yang disimpan yaitu keterangan waktu, nama file yang dieksekusi,
signature (hash SHA-256) berkas, status berkas (malware, benign atau sampel
baru), aksi yang dilakukan dan username yang bertanggung jawab atas aksi
tersebut. Aksi yang tercatat diantaranya saat mengunduh sampel, menambahkan
data baru, mengubah data dan menghapus data.
Gambar IV. 27 Riwayat – Fitur Mitra
Tampilan menu Riwayat user ditunjukkan pada Gambar IV. 27, sedangkan menu
Riwayat mitra pada Gambar IV. 28. Kedua menu ini berisi informasi waktu input,
nama file, signature (SHA-256), metode deteksi, dan status hasil deteksi.
55
Gambar IV. 28 Riwayat – Fitur User
Mitra dapat mengelola akun pribadi miliknya melalui menu profil seperti pada
Gambar IV. 29. Program penampil data juga digunakan untuk menampilkan data
akun, namun tidak dalam format tabel. Data tersebut meliputi nama lengkap,
username, email, instansi, dan foto profil. Pada menu ini juga disediakan fasilitas
untuk mengubah data akun, mengganti foto profil dan mengganti password.
Gambar IV. 29 Profil – Fitur Mitra
Selain itu, pada sistem mitra terdapat menu lab yang juga menggunakan program
penampil data. Tampilan menu lab ditunjukkan pada Gambar IV. 30. Menu ini
berisi daftar malware yang tersimpan didalam basis data. Mitra dapat mengunduh
sampel malware dan melihat metadata malware melalui menu ini.
56
Gambar IV. 30 Lab Malware – Fitur Mitra
IV.1.5. Fungsi Tambah Data
Admin memiliki kewenangan untuk menambahkan data benign, data malware, dan
akun baru. Algoritma IV. 11 merupakan potongan program REST Client yang
berfungsi untuk mengirimkan Request POST (untuk menambah data pada basis
data) ke REST Server. Pada program ini, data yang ditambahkan adalah data
benign, namun secara konsep program ini dapat diterapkan untuk menambahkan
data lain seperti malware dan akun baru.
Algoritma IV. 9 Tambah Data (Benign) – REST Client
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function createBenign($dataMal){
global $client;
$contents = $_FILES['file_benign']['tmp_name'];
$name = $_FILES['file_benign']['name'];
$data = [
'contents' => $contents,
'file_benign' => $name,
'tipe_file_benign' => "zip",
'ukuran_file_benign'=>formatBytes($_FILES['file_benign']['size']),
'md5_benign' => $md5 = hash_file('md5', $contents),
'sha1_benign' => $sha1 = hash_file('sha1', $contents),
'sha256_benign' => $sha256_benign = hash_file('sha256', $contents)
];
$response = $client->request('POST', 'benign', [
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result["status"];
}
57
Pada saat REST Server menerima Request dari REST Client, maka program pada
Algoritma IV. 10 akan dijalankan. Pada program ini, hash berkas akan dicek
menggunakan fungsi getBenignByHash, dimana program mencari hash yang sama
dengan hash benign pada basis data. Jika data belum ada dalam basis data, maka
program akan menyimpan sampel benign ke directory dengan menggunakan fungsi
uploadBenign dan menjalankan fungsi createBenign untuk menambahkan data
kedalam basis data. Program ini dapat dilihat pada Algoritma IV. 11.
Algoritma IV. 10 Tambah Data (Benign) – REST Server controllers
1
2
3
4
5
6
7
8
9
10
11
12
13
11
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public function index_post(){
$sha256 = $this->post('sha256_benign');
$fileName = $this->post('file_benign');
$contents = $this->post('contents');
$benign = $this->benign->getBenignByHash($sha256);
if($benign){
$this->response([
'status' => 2,
'message' => 'Sampel yang sama sudah tersimpan dlm DB Benign'
]);
} else {
$file_benign =$this->benign->uploadBenign($contents, $fileName);
$data = [
'file_benign' => $file_benign,
'tipe_file_benign' => $this->post('tipe_file_benign'),
'ukuran_file_benign' => $this->post('ukuran_file_benign'),
'md5_benign' => $this->post('md5_benign'),
'sha1_benign' => $this->post('sha1_benign'),
'sha256_benign' => $this->post('sha256_benign')
];
if($this->benign->createBenign($data) > 0){
$this->response([
'status' => 1,
'message' => 'file baru berhasil ditambahkan'
], REST_Controller::HTTP_CREATED);
} else {
$this->response([
'status' => 0,
'message' => 'gagal menambahkan data'
]);
}
}
}
Algoritma IV. 11 Tambah Data (Benign) – REST Server models
1
2
3
4
5
public function createBenign($data) {
$this->db->insert('benign', $data);
return $this->db->affected_rows();
}
58
Menu Tambah File pada sistem admin digunakan untuk menambahkan benign dan
malware baru berdasarkan hasil analisa. Tampilan menu tambah benign
ditunjukkan pada Gambar IV. 31. Pada menu ini, admin diminta untuk
memasukkan berkas benign sebagai sampel untuk disimpan dalam directory
benign. Setelah admin menekan button “Tambah” maka sistem akan menjalankan
program untuk pengecekan ekstensi dan ukuran berkas, jika lolos dari pengecekan
barulah sistem menjalankan program Algoritma IV. 9. Data terkait sampel benign
dihasilkan secara otomatis oleh sistem, sehingga admin tidak perlu menginputkan
data, cukup dengan mengupload sampel saja.
Gambar IV. 31 Tambah Benign – Fitur Admin
Menu tambah malware digunakan untuk menambahkan malware baru kedalam
basis data. Sampel malware baru dapat diunggah pada menu ini, seperti pada
Gambar IV. 32. Sampel ini nantinya akan disimpan dalam directory malware dan
digunakan untuk menghasilkan data analisa statik secara otomatis oleh sistem.
Gambar IV. 32 Tambah Malware (Upload File) – Fitur Admin
59
Berbeda dengan menu tambah benign, pada menu tambah malware admin harus
mengisi form data diantaranya metadata malware, cara penanganan, dan data
khusus ransomeware. Metadata malware berisi informasi nama malware, nama
lain, jenis malware, karakteristik, cara kerja dan operasi, cara penyebaran, tingkat
bahaya, sistem operasi target atau negara target, dan keterangan lain. Tampilan
form pengisian metadata malware ditunjukkan pada Gambar IV. 33.
Gambar IV. 33 Tambah Malware (Metadata) – Fitur Admin
Data mengenai cara penanganan malware dapat dilihat pada Gambar IV. 34. Pada
form ini, admin dapat menginputkan informasi mengenai cara pencegahan, cara
penanganan, serta cara pemulihan, dan perbaikan sistem dari serangan malware.
60
Gambar IV. 34 Tambah Malware (Penanganan) – Fitur Admin
Form isian terakhir yaitu data khusus untuk malware berjenis ransomware, seperti
pada Gambar IV. 35. Data ini tidak diisi untuk jenis malware lain.
Gambar IV. 35 Tambah Malware (Data Ransome) – Fitur Admin
Pembuatan akun baru untuk admin dan mitra dapat dilakukan pada menu Registrasi,
dengan menggunakan program penambah data. Menu registrasi admin ditunjukkan
pada Gambar IV. 36. Pada menu ini, admin dapat menambahkan akun admin baru,
dengan mengisi data terkait akun, seperti nama, username, password, dan email.
Setelah admin menekan tombol Register, maka sistem akan menyimpan data yang
diinputkan pada form kedalam basis data pada tabel admin.
61
Gambar IV. 36 Registrasi Admin
Tampilan registrasi mitra ditunjukkan pada Gambar IV. 37. Pada menu ini, admin
dapat mendaftarkan akun baru untuk mitra. Sebelum mendapatkan akun, calon
mitra harus mengirimkan permintaan bergabung terlebih dahulu melalui email
admin yang tertera pada halaman login mitra. Admin kemudian akan membuatkan
akun menggunakan username dan password sementara sesuai dengan identitas pada
email mitra. Data akun akan dikirimkan kembali oleh admin ke email mitra.
Gambar IV. 37 Registrasi Mitra
62
IV.1.6. Fungsi Hapus Data
Beberapa menu pada sistem admin menyediakan opsi untuk menghapus data. Saat
button hapus ditekan oleh admin, maka akan muncul sebuah notifikasi berisi
konfirmasi seperti pada Gambar IV. 38. Selanjutnya, setelah aktor mengkonfirmasi
penghapusan data, maka akan muncul notifikasi bahwa data berhasil dihapus,
seperti pada Gambar IV. 39.
Gambar IV. 38 Konfirmasi Hapus
Gambar IV. 39 Hapus Berhasil
Ketika admin menghapus data, maka REST Client akan mengirimkan request
DELETE dan ID data ke REST Server seperti pada Algoritma IV. 12. Kemudian
REST Server akan mengapus data dalam basis data sesuai dengan ID yang
dikirimkan menggunakan fungsi deleteMalware seperti pada Algoritma IV. 13.
Algoritma IV. 12 Hapus Data (Malware) – REST Client
1
2
3
4
5
6
7
8
9
function deleteMalware($id){
global $client;
$response = $client->request('DELETE', "malware", [
'form_params' => ['id_malware' => $id]
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result;
}
Algoritma IV. 13 Hapus Data (Malware) – REST Server
1
2
3
4
public function deleteMalware($id)
{ $this->db->delete('malware', ['id_malware' => $id]);
return $this->db->affected_rows();
}
63
IV.1.7. Fungsi Unduh Sampel
Menu admin dan mitra memiliki opsi unduh yang berfungsi untuk mengunduh
sampel pada basis data. Algoritma IV. 14 adalah potongan program untuk
melakukan fungsi unduh. Pada program ini, sampel akan di copy dari Directory
Server ke Directory Client.
Algoritma IV. 14 Unduh Sampel (Malware)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$file = ("../../../rest-server/directory/file_malware/$filename");
if(file_exists($file)){
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-
Disposition: attachment; filename='.basename($file));
header('Expires:0');
header('Cache-Control: private');
header('Pragma: private');
header('Content-Length:'.filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
Ketika itu, aktor dapat memilih tempat penyimpanan sampel pada directory-nya
seperti yang ditunjukkan pada Gambar IV. 40. Sampel malware akan tersimpan
dalam bentuk ZIP ber-password untuk menjaga agar sistem tidak terinfeksi.
Gambar IV. 40 Unduh Sampel (Malware)
64
IV.1.8. Fungsi Ubah Data
Admin dapat mengubah data hasil analisa malware seperti metadata malware, cara
penanganan, dan data lainnya menggunakan Opsi Edit. Gambar IV. 41
menunjukkan tampilan untuk mengubah data pada DB Malware.
Gambar IV. 41 Edit Database Malware – Admin
dst…
65
Algoritma IV. 16 merupakan potongan program pada REST Client untuk mengubah
data malware di basis data. Pada program ini, Request PUT (untuk mengubah data)
beserta data perubahan pada $data akan dikirimkan ke REST Server.
Algoritma IV. 15 Ubah Data (Malware) – REST Client
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function updateMalware($dataMal){
global $client;
$data = [
'id_malware' => $dataMal["id_malware"],
'waktu' => $dataMal["waktu"],
'file_malware' => $dataMal["file_malware"],
'tipe_file_malware' => $dataMal["tipe_file_malware"],
'ukuran_file_malware' => $dataMal["ukuran_file_malware"],
'md5_malware' => $dataMal["md5_malware"],
'sha1_malware' => $dataMal["sha1_malware"],
'sha256_malware' => $dataMal["sha256_malware"],
'ssdeep' => htmlspecialchars($dataMal["ssdeep"]),
'vhash' => htmlspecialchars($dataMal["vhash"]),
'nama' => htmlspecialchars($dataMal["nama"]),
'nama_lain' => htmlspecialchars($dataMal["nama_lain"]),
'jenis' => htmlspecialchars($dataMal["jenis"]),
'karakteristik' => htmlspecialchars($dataMal["karakteristik"])
'cara_kerja' => htmlspecialchars($dataMal["cara_kerja"]),
'penyebaran' => htmlspecialchars($dataMal["penyebaran"]),
'bahaya' => htmlspecialchars($dataMal["bahaya"]),
'target' => htmlspecialchars($dataMal["target"]),
'ket' => htmlspecialchars($dataMal["ket"]),
'pencegahan' => htmlspecialchars($dataMal["pencegahan"]),
'penanganan' => htmlspecialchars($dataMal["penanganan"]),
'pemulihan' => htmlspecialchars($dataMal["pemulihan"]),
'pembuat_file' => htmlspecialchars($dataMal["pembuat_file"]),
'note' => htmlspecialchars($dataMal["note"]),
'kontak' => htmlspecialchars($dataMal["kontak"]),
'enkripsi' => htmlspecialchars($dataMal["enkripsi"]),
'tebusan' => htmlspecialchars($dataMal["tebusan"])
];
$response = $client->request('PUT', 'malware',[
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(), true);
return $result;
}
Di REST Server, data lama pada basis data akan diganti dengan data baru yang
diterima dengan menggunakan fungsi updateMalware pada Algoritma IV. 16
Algoritma IV. 16 Ubah Data (Malware) – REST Server
1
2
3
4
public function updateMalware($data, $id){
$this->db->update('malware', $data, ['id_malware' => $id]);
return $this->db->affected_rows();
}
66
Gambar IV. 42 Profil – Edit Akun Mitra
Program ubah data juga dapat diterapkan untuk Opsi Edit Akun dan Ubah Password
pada menu mitra. Tampilan Opsi Edit Akun pada menu mitra ditunjukkan pada
Gambar IV. 42. Pada menu ini, mitra dapat mengubah data akun seperti nama,
username, email, dan instansi, serta mengganti foto profil. Sedangkan Opsi Ubah
Password dapat dilihat pada Gambar IV. 43. Menu ini digunakan untuk mengubah
password lama / password sementara dari admin dengan password baru.
Gambar IV. 43 Profil – Edit Password Mitra
67
IV.1.9. Fungsi Logout
Mitra dan admin memiliki akun private yang hanya dapat diakses melalui halaman
login, oleh karena itu kedua sistem ini memiliki fungsi logout untuk keluar dari
akunnya. Algoritma IV. 17 adalah program untuk menjalankan fungsi logout. Pada
program ini, session dan cookie yang dibangun saat login akan diakhiri. Kemudian
sistem akan kembali ke halaman login.
Algoritma IV. 17 Logout (Mitra)
1
2
3
4
5
6
7
8
9
10
session_start();
$_SESSION = [];
session_unset();
session_destroy();
setcookie('id', '', time() - 3600);
setcookie('key', '', time() - 3600);
header("Location: m.login.php");
exit;
Sebelum program dijalankan, sistem akan menampilkan notifikasi konfirmasi
terlebih dahulu, seperti yang ditunjukkan pada Gambar IV. 44. Ketika aktor
memilih Keluar maka sistem akan kembali ke halaman login admin, sedangkan jika
aktor memilih Batal maka sistem akan kembali ke halaman sebelumnya.
Gambar IV. 44 Logout
68
IV.2. Implementasi Database
Database pada sistem ini terdiri dari delapan tabel, yaitu tabel admin, baru, benign,
malware, mitra, m_riwayat, recent, dan riwayat seperti pada Gambar IV. 45. Semua
tabel dalam basis data dapat diakses dan dikelola oleh admin kecuali tabel riwayat
yang berisi catatan aktivitas user dan mitra. Selain itu, tabel mitra dan admin yang
digunakan untuk menyimpan data akun juga dapat dilihat dan dikelola oleh admin
kecuali password akun.
Gambar IV. 45 Database Sistem
IV.2.1. Koneksi Database
Algoritma IV. 18 Koneksi Database 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
defined('BASEPATH') OR exit('No direct script access allowed');
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'tesisrela',
'database' => 'db_sistem',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
69
Pada Sistem Database Malware, sistem dapat mengakses basis data melalui REST
API Server. Konfigurasi koneksi untuk menghubungkan REST API dengan basis
data ditunjukkan pada Algoritma IV. 18. Dari program ini dapat dilihat bahwa nama
basis data yang digunakan yaitu db_sistem dengan hostname: localhost, username:
root, dan password: tesisrela.
IV.2.2. Tabel Malware
Gambar IV. 46 Tabel Malware
Tabel Malware ditunjukkan pada Gambar IV. 46. Tabel ini menyimpan data-data
terkait malware, salah satunya yaitu analisa statik malware seperti hasil hash SHA-
256, SHA-1, MD5, SSDEEP, Vhash, tipe berkas, dan ukuran berkas. Tabel
malware juga menyimpan metadata malware seperti nama malware, nama lain,
jenis, karakteristik, cara kerja dan operasi, teknik penyebaran, tingkat bahaya,
negara atau sistem operasi target, dan keterangan lain terkait malware. Selain itu,
informasi mengenai cara penanganan, pencegahan, dan permulihan serangan
malware juga dapat disimpan dalam basis data.
70
Khusus ransomware, terdapat kolom data ransom seperti file maker, ransom note,
kontak email pelaku, metode enkripsi yang digunakan, serta biaya tebusan.
Sementara sampel malware disimpan dalam directory khusus pada server.
IV.2.3. Tabel Benign
Gambar IV. 47 merupakan tabel benign yang berisi informasi benign seperti nama
berkas, tipe berkas, ukuran berkas, hash SHA-256, SHA-1, dan MD5. Sementara
sampel benign akan disimpan pada directory khusus pada server. Dari tabel dapat
dilihat bahwa semua data bertipe varchar, kecuali id_benign yang merupakan
primary key dari tabel ini.
Gambar IV. 47 Tabel Benign
IV.2.4. Tabel Baru
Tabel baru berisi data-data terkait sampel baru yang dicurigai sebagai malware dan
membutuhkan analisa lebih lanjut. Gambar IV. 48 adalah tampilan dari tabel baru
yang berisi nama berkas, tipe berkas, ukuran berkas, hash SHA-256, waktu input,
nama dan email pengirim, serta status analisa. Status analisa ini nantinya akan
digunakan untuk memantau sejauh mana proses analisa sampel. Sementara sampel
akan disimpan pada directory server.
Gambar IV. 48 Tabel Baru
71
IV.2.5. Tabel Akun
Tabel admin dan mitra berisi data-data akun, seperti nama, username, password,
dan email, serta nama instansi dan foto profil khusus untuk mitra. Gambar IV. 49
adalah tampilan dari tabel admin, sedangkan tabel mitra ditunjukkan pada Gambar
IV. 50. Kedua tabel ini menyimpan password dalam bentuk terenkripsi.
Gambar IV. 49 Tabel Admin
Gambar IV. 50 Tabel Mitra
IV.2.6. Tabel Riwayat
Seluruh catatan akvitivas aktor akan disimpan dalam tabel riwayat dan tabel recent
(khusus admin). Gambar IV. 51 merupakan tabel recent yang mencatatan aktivitas
admin. Tabel ini berisi catatan waktu input, nama berkas yang dikelola, hash SHA-
256, status sampel, aksi/aktivitas yang dilakukan (tambah/edit/hapus/unduh), dan
username akun admin yang bertanggung jawab atas aksi tersebut.
Gambar IV. 51 Tabel Recent Admin
72
Tabel catatan aktivitas lainnya yaitu tabel riwayat untuk user pada Gambar IV. 52
dan tabel m_riwayat untuk mitra pada Gambar IV. 53. Kedua tabel ini berisi catatan
waktu input, nama berkas yang dikelola, hash SHA-256, metode deteksi (secara
default atau melalui virus total), dan status hasil analisa berkas.
Gambar IV. 52 Tabel Riwayat User
Gambar IV. 53 Tabel Riwayat Mitra
73
IV.3. Pengujian Fungsionalitas
Pengujian fungsionalitas dilakukan untuk menguji berjalannya setiap fungsi pada
sistem. Pengujian ini dibagi menjadi sembilan bagian berdasarkan fungsi sistem,
yaitu pengujian fungsi login, deteksi, tambah data, hapus data, ubah data, unduh
sampel, penampil data, dan fungsi logout. Pengujian dilakukan secara manual
dengan menggunakan metode black box [23].
IV.3.1. Fungsi Login
Admin dan mitra dapat mengakses sistem melalui halaman login menggunakan
username dan password akun yang telah terdaftar dalam basis data. Halaman login
mitra terdapat pada web sistem, sedangkan login admin pada web admin (Gambar
IV. 4). Kedua halaman login tersebut memiliki fungsi login yang sama, yang
membedakan adalah tempat penyimpanan data akun pada basis data. Pada
pengujian ini, login admin dan login mitra diuji secara terpisah dengan parameter
pengujian yang sama. Hasil pengujian fungsi login ditunjukkan pada Tabel IV. 1.
Tabel IV. 1 Pengujian Login
NO PENGUJIAN KELUARAN YANG
DIHARAPKAN
HASIL
Login
Admin
Login
Mitra
1 Username dan
Password benar
Login berhasil, sistem menampilkan
halaman utama sistem. Berhasil Berhasil
2
Username dan
Password
kosong
Login gagal, sistem akan menolak akses
login dan menampilkan notifikasi untuk
mengisi kolom username dan password
(Please fill out this filed)
Berhasil Berhasil
3 Username
kosong
Login gagal, sistem menolak akses dan
menampilkan notifikasi untuk mengisi
username (Please fill out this filed)
Berhasil Berhasil
4 Password
kosong
Login gagal, sistem menolak akses dan
menampilkan notifikasi untuk mengisi
password (Please fill out this filed)
Berhasil Berhasil
5 Username dan
Password salah
Login gagal, sistem menampilkan pesan
kesalahan (username/password salah!) Berhasil Berhasil
6 Username salah,
Password benar
Login gagal, sistem menampilkan pesan
kesalahan (username/password salah!) Berhasil Berhasil
7 Session Session dibangun saat login berhasil Berhasil Berhasil
8 Cookies Cookies dibuat saat login berhasil Berhasil Berhasil
74
Dari hasil pengujian dapat disimpulkan bahwa fungsi login sudah berjalan dengan
baik dan sesuai yang diharapkan. Admin maupun mitra hanya dapat masuk jika
username dan password yang dimasukkan pada halaman login benar (sesuai akun
yang terdaftar dalam basis data). Pesan kesalahan akan diberikan ketika login gagal
dilakukan. Selain itu, session dan cookies juga berhasil dibuat saat login berhasil.
IV.3.2. Fungsi Deteksi
Pengujian ini dilakukan pada halaman menu deteksi user dan mitra. Pada menu ini,
user atau mitra dapat mendeteksi adanya malware pada berkas yang mereka
unggah. Tampilan menu deteksi dapat dilihat pada Gambar IV. 6. Pengujian fungsi
deteksi dibagi menjadi beberapa bagian, yaitu berdasarkan ukuran maksimum
berkas, tipe berkas, dan hasil deteksi. Pengujian hasil deteksi dibagi berdasarkan
metode deteksi yang digunakan yaitu pengujian untuk deteksi Virus Total dan
pengujian untuk deteksi Default. Hasil pengujian deteksi berdasarkan ukuran
berkas dapat dilihat pada Tabel IV. 2.
Tabel IV. 2 Pengujian Deteksi Berdasarkan Ukuran Berkas
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Berkas ≤ 10 MB Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
2 Berkas 10 – 50 MB Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
3 Berkas 50 – 100 MB Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
4 Berkas 100 – 150 MB Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
5 Berkas ≤ 200 MB Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
6 Berkas > 200 MB Sistem menampilkan pesan peringatan
“Ukuran file terlalu besar!” Berhasil
Pengujian ini dilakukan dengan cara mengunggah berbagai ukuran berkas, mulai
dari 10 MB hingga lebih dari 200 MB. Hasil pengujian didapatkan bahwa ukuran
maksimal berkas yang dapat dideteksi oleh sistem yaitu 200 MB. Hal tersebut
disesuaikan dengan ukuran berkas maksimum yang dapat diterima oleh Virus Total.
75
Pengujian selanjutnya yaitu berdasarkan tipe berkas yang dapat dideteksi oleh
sistem. Hasil pengujian disajikan dalam bentuk tabel pada Tabel IV. 3.
Tabel IV. 3 Pengujian Deteksi Berdasarkan Tipe Berkas
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Berkas doc/docx Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
2 Berkas ppt/pptx Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
3 Berkas xlx/xlsx Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
4 Berkas pdf Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
5 Berkas zip Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
6 Berkas rar Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
7 Berkas exe Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
8 Berkas txt Sistem dapat mendeteksi berkas baik
menggunakan Virus Total maupun Default. Berhasil
9 Tipe berkas lain
(jar, sql, dll.)
Sistem menampilkan pesan peringatan
“Maaf, tipe file ini tidak dapat dideteksi” Berhasil
Hasil pengujian deteksi menunjukkan bahwa sistem dapat mendeteksi berkas
dengan tipe doc/docx, xls/xlsx, ppt/pptx, pdf, zip, rar, exe, dan txt. Sedangkan untuk
tipe berkas lain yang diunggah, sistem akan memberikan pesan peringatan bahwa
tipe berkas tersebut tidak dapat dideteksi.
Selanjutnya yaitu menguji hasil deteksi dari sistem dengan menggunakan metode
Virus Total dan Default. Pengujian dilakukan secara terpisah dengan cara
mengunggah berbagai berkas benign dan malware terhadap kedua metode deteksi.
Hasil pengujian deteksi Virus Total ditunjukkan pada Tabel IV. 4. Dari hasil
pengujian, dapat diketahui bahwa metode Virus Total dapat mendeteksi semua jenis
malware yang diuji yaitu Trojan Horse, Ransomware, Backdoor, Keylogger, Virus,
Worm, dan Rootkit. Jenis malware yang dapat dideteksi menggunakan Virus Total
ini sesuai dengan malware yang ada dalam dataset Virus Total.
76
Tabel IV. 4 Pengujian Deteksi Virus Total
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Berkas malware Hasil deteksi berstatus: Detected. Berhasil
2 Berkas benign Hasil deteksi berstatus: Undetected. Berhasil
3 Berkas yang belum ada
di dataset Virus Total Hasil deteksi berstatus: Queue. Berhasil
4 Trojan Horse Terdeteksi Berhasil
5 Ransomware Terdeteksi Berhasil
6 Backdoor Terdeteksi Berhasil
7 Keylogger Terdeteksi Berhasil
8 Virus Terdeteksi Berhasil
9 Worm Terdeteksi Berhasil
10 Rootkit Terdeteksi Berhasil
Hasil pengujian deteksi menggunakan metode Default sistem ditunjukkan pada
Tabel IV. 5. Hasil pengujian menunjukkan bahwa jenis malware yang dapat
dideteksi menggunakan metode Default bergantung pada sampel malware yang
tersimpan dalam basis data. Pada penelitian ini, jenis malware yang tersimpan
dalam basis data saat ini yaitu Trojan Horse, Ransomware, Backdoor, Keylogger,
dan Virus. Sedangkan jenis virus selain itu, seperti Worm dan Rootkit belum
terdapat dalam basis data. Oleh karena itu hasil deteksi menunjukkan bahwa Worm
dan Rootkit merupakan sampel baru yang perlu dianalisa lebih lanjut.
Tabel IV. 5 Pengujian Deteksi Default
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Berkas malware Hasil deteksi: Terdeteksi Malware Berhasil
2 Berkas benign Hasil deteksi: File Aman Berhasil
3 Berkas sampel baru
yang sedang dianalisa Hasil deteksi: Proses analisa Berhasil
4 Berkas yang belum ada
dalam basis data sistem Hasil deteksi: Perlu analisa lebih lanjut Berhasil
5 Trojan Horse Terdeteksi Berhasil
6 Ransomware Terdeteksi Berhasil
7 Backdoor Terdeteksi Berhasil
8 Keylogger Terdeteksi Berhasil
9 Virus Terdeteksi Berhasil
10 Worm Disimpan sebagai sampel baru Berhasil
11 Rootkit Disimpan sebagai sampel baru Berhasil
77
Secara keseluruhan, dari hasil pengujian deteksi dapat disimpulkan bahwa fungsi
deteksi pada Sistem Database Malware sudah berjalan dengan baik, sesuai dengan
keluaran yang diharapkan. Batas ukuran maksimum berkas yang dapat dideteksi
yaitu 200MB dengan tipe doc/docx, xls/xlsx, ppt/pptx, pdf, zip, rar, exe, dan txt.
Jenis malware yang dapat dideteksi menggunakan Virus Total bergantung pada
dataset Virus Total. Sedangkan jenis malware yang dapat dideteksi oleh sistem
secara Default bergantung pada malware yang tersimpan dalam basis data.
IV.3.3. Fungsi Penampil Data
Semua tampilan pada web sistem menggunakan fungsi penampil data. Pada
penelitian ini, pengujian fungsi penampil data dilakukan terhadap menu DB
Malware, DB Benign, Analisa File, Data Admin, Data Mitra, Recent, Riwayat User,
Riwayat Mitra, Profil Mitra, dan menu Lab. Setiap halaman menu yang diuji
menampilkan data yang berbeda sesuai dengan kebutuhan dan fungsinya. Beberapa
halaman menu menyediakan opsi untuk dapat melakukan aksi baik berupa
perubahan, penghapusan, pengunduhan, maupun sekedar melihat detail dari data.
Namun, ada juga menu yang berfungsi hanya sebagai penampil data, seperti menu
Recent, Riwayat User, dan Riwayat Mitra. Ketiga menu ini tidak menyediakan opsi
untuk melakukan aksi. Oleh karena itu, pengujian dilakukan secara terpisah pada
masing-masing halaman menu. Pengujian dilakukan secara manual dengan cara
menguji fungsi setiap opsi, tautan, dan kesesuaian data keluaran (yang ditampilkan
pada web) dengan data dalam basis data.
Menu DB Malware merupakan salah satu menu utama dalam sistem admin. Menu
ini digunakan untuk mengelola sampel dan data malware pada basis data. Tampilan
menu DB Malware dapat dilihat pada Gambar IV. 22. Halaman ini menampilkan
semua daftar sampel malware yang ada dalam basis data. Menu DB Malware
menyediakan opsi edit, detail, unduh, dan hapus. Opsi edit digunakan untuk
mengubah data, dalam hal ini data berupa detail informasi mengenai malware,
seperti metadata malware, cara penanganan serangan malware, dan data lainnya.
Selain itu, terdapat opsi detail untuk melihat informasi terkait, opsi unduh untuk
mengunduh sampel, dan hapus untuk menghapus data sampel pada basis data.
78
Hasil pengujian untuk DB Malware dapat dilihat pada Tabel IV. 6. Dari hasil
pengujian dapat dilihat bahwa semua fungsi penampil data pada menu DB Malware
telah sesuai dengan yang diharapkan.
Tabel IV. 6 Pengujian Penampil Data - DB Malware
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Tampilan halaman
menu DB Malware
Daftar semua malware ditampilkan dalam
bentuk tabel. Berhasil
2 Opsi Unduh Sampel malware terunduh. Berhasil
3 Opsi Detail Ke halaman detail, menampilkan informasi
metadata dan analisa malware. Berhasil
4 Opsi Edit Ke halaman edit, data dapat diubah. Berhasil
5 Opsi Hapus Sampel malware terhapus dari daftar tabel. Berhasil
6 Tautan Kembali
pada opsi Detail Kembali ke halaman menu DB Malware. Berhasil
7 Tautan Kembali
pada opsi Edit Kembali ke halaman menu DB Malware. Berhasil
8 Klik Ubah pada opsi
Edit Data perubahan tersimpan. Berhasil
9 Tautan Home Ke halaman home. Berhasil
10 Tautan DB Benign Ke halaman db benign. Berhasil
11 Tautan Analisa File Ke halaman analisa file. Berhasil
12 Tautan Tambah File Ke halaman tambah file. Berhasil
13 Tautan Recent Ke halaman recent. Berhasil
14 Tautan Registrasi Ke halaman registrasi. Berhasil
15 Tautan Data Admin Ke halaman data admin. Berhasil
16 Tautan Data Mitra Ke halaman data mitra. Berhasil
17 Tautan Logout Keluar dari halaman admin. Berhasil
18
Pagination (halaman
sebelumnya dan
selanjutnya)
Tampilan daftar malware sesuai dengan
nomor halaman pada pagination, dalam satu
halaman menampilkan 10 sampel malware.
Berhasil
Menu DB Benign merupakan menu admin yang berfungsi untuk pengelolaan data
benign. Halaman ini menampilkan semua daftar sampel benign yang ada pada basis
data. Terdapat beberapa opsi yang dapat digunakan untuk mengelola menu benign
diantaranya, opsi detail, unduh, dan hapus. Tampilan halaman menu DB Benign
dapat dilihat pada Gambar IV. 21. Hasil pengujian pada Tabel IV. 7 menunjukkan
bahwa fungsi penampil data untuk menu DB Benign sudah berjalan dengan baik
dan sesuai dengan yang diharapkan.
79
Tabel IV. 7 Pengujian Penampil Data – DB Benign
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Tampilan halaman
menu DB Benign
Daftar semua benign ditampilkan dalam
bentuk tabel. Berhasil
2 Opsi Unduh Sampel benign terunduh. Berhasil
3 Opsi Detail Ke halaman detail, menampilkan informasi
terkait benign. Berhasil
4 Opsi Hapus Sampel benign terhapus dari daftar tabel. Berhasil
5 Tautan Kembali pada
opsi Detail Kembali ke halaman menu DB Benign. Berhasil
6 Tautan Home Ke halaman home. Berhasil
7 Tautan DB Malware Ke halaman db malware. Berhasil
8 Tautan Analisa File Ke halaman analisa file. Berhasil
9 Tautan Tambah File Ke halaman tambah file. Berhasil
10 Tautan Recent Ke halaman recent. Berhasil
11 Tautan Registrasi Ke halaman registrasi. Berhasil
12 Tautan Data Admin Ke halaman data admin. Berhasil
13 Tautan Data Mitra Ke halaman data mitra. Berhasil
14 Tautan Logout Keluar dari halaman admin. Berhasil
15
Pagination (halaman
sebelumnya dan
selanjutnya)
Tampilan daftar benign sesuai dengan
nomor halaman pada pagination, dalam satu
halaman menampilkan 10 sampel benign.
Berhasil
Tabel IV. 8 Pengujian Penampil Data - Analisa File
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Tampilan halaman
menu Analisa File
Daftar semua sampel baru ditampilkan dalam
bentuk tabel. Berhasil
2 Opsi Unduh Sampel baru terunduh. Berhasil
3 Opsi Hapus Sampel baru terhapus dari daftar tabel. Berhasil
4 Tautan Home Ke halaman home. Berhasil
5 Tautan DB Benign Ke halaman db benign. Berhasil
6 Tautan DB Malware Ke halaman db malware. Berhasil
7 Tautan Tambah File Ke halaman tambah file. Berhasil
8 Tautan Recent Ke halaman recent. Berhasil
9 Tautan Registrasi Ke halaman registrasi. Berhasil
10 Tautan Data Admin Ke halaman data admin. Berhasil
11 Tautan Data Mitra Ke halaman data mitra. Berhasil
12 Tautan Logout Keluar dari halaman admin. Berhasil
13
Pagination (halaman
sebelumnya dan
selanjutnya)
Tampilan daftar sampel baru sesuai dengan
nomor halaman pada pagination, dalam satu
halaman menampilkan 10 sampe baru.
Berhasil
80
Halaman menu Analisa File menampilkan daftar sampel baru yang disimpan dalam
basis data. Pada menu ini, admin dapat mengelola sampel-sampel baru yang
dilaporkan oleh user ataupun mitra. Menu ini menyediakan opsi unduh dan hapus,
dimana sampel baru akan diunduh untuk dianalisa lebih lanjut, dan ketika proses
analisa selesai maka sampel akan dihapus. Hasil pengujian pada Tabel IV. 8
menunjukkan bahwa fungsi penampil data pada menu Analisa File telah berjalan
dengan baik dan sesuai.
Tabel IV. 9 Pengujian Penampil Data Admin dan Mitra
NO PENGUJIAN KELUARAN YANG
DIHARAPKAN
HASIL
Data
Admin
Data
Mitra
1 Tampilan halaman
menu data
Daftar semua akun ditampilkan
dalam bentuk tabel. Berhasil Berhasil
2 Opsi Hapus Data akun terhapus dari daftar
tabel. Berhasil Berhasil
3 Tautan Home Ke halaman home. Berhasil Berhasil
4 Tautan DB Benign Ke halaman db benign. Berhasil Berhasil
5 Tautan DB Malware Ke halaman db malware. Berhasil Berhasil
6 Tautan Analisa File Ke halaman analisa file. Berhasil Berhasil
7 Tautan Tambah File Ke halaman tambah file. Berhasil Berhasil
8 Tautan Recent Ke halaman recent. Berhasil Berhasil
9 Tautan Registrasi Ke halaman registrasi. Berhasil Berhasil
10 Tautan Data Admin Ke halaman data admin. Berhasil Berhasil
11 Tautan Data Mitra Ke halaman data mitra. Berhasil Berhasil
12 Tautan Logout Keluar dari halaman admin. Berhasil Berhasil
13
Pagination (halaman
sebelumnya dan
selanjutnya)
Tampilan daftar akun sesuai
dengan nomor halaman pada
pagination, dalam satu halaman
menampilkan 10 data akun.
Berhasil Berhasil
Menu Recent, Riwayat User, dan Riwayat Mitra merupakan menu yang berisi
catatan aktivitas setiap aktor. Catatan tersebut secara otomatis ditambahkan ketika
aktor melakukan suatu aksi. Data-data yang ditampilkan pada menu ini tidak dapat
diubah, ditambahkan maupun dihapus, sehingga menu ini tidak menyediakan opsi
apapun. Ketiga menu ini menggunakan fungsi penampil data yang disajikan dalam
bentuk tabel.
81
Menu Recent menampilkan catatan aktivitas admin, seperti menambahkan data,
mengubah, menghapus, dan mengunduh sampel. Catatan berisi keterangan waktu,
nama berkas, signature, status, aksi, dan username admin (seperti pada Gambar IV.
26). Hasil pengujian pada Tabel IV. 10 menunjukkan bahwa fungsi penampil data
pada menu recent telah berjalan dengan baik.
Tabel IV. 10 Pengujian Penampil Data – Recent
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Tampilan halaman
menu Recent
Daftar semua aktivitas admin ditampilkan
dalam bentuk tabel. Berhasil
2 Tautan Home Ke halaman home. Berhasil
3 Tautan DB Benign Ke halaman db benign. Berhasil
4 Tautan DB Malware Ke halaman db malware. Berhasil
5 Tautan Analisa File Ke halaman analisa file. Berhasil
6 Tautan Tambah File Ke halaman tambah file. Berhasil
7 Tautan Registrasi Ke halaman registrasi. Berhasil
8 Tautan Data Admin Ke halaman data admin. Berhasil
9 Tautan Data Mitra Ke halaman data mitra. Berhasil
10 Tautan Logout Keluar dari halaman admin. Berhasil
11
Pagination (halaman
sebelumnya dan
selanjutnya)
Tampilan daftar aktivitas admin sesuai dengan
nomor halaman pada pagination, dalam satu
halaman menampilkan 10 aktivitas.
Berhasil
Menu Riwayat Mitra menampilkan catatan aktivitas mitra yaitu mendeteksi dan
mengunduh sampel malware. Tampilan menu ini dapat dilihat pada Gambar IV. 27.
Hasil pengujian pada Tabel IV. 11 menunjukkan bahwa menu ini telah sesuai.
Tabel IV. 11 Pengujian Penampil Data - Riwayat Mitra
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Tampilan halaman
menu Riwayat mitra
Daftar aktivitas semua user ditampilkan dalam
bentuk tabel. Berhasil
2 Tautan Profil Ke halaman profil mitra. Berhasil
3 Tautan Menu Ke halaman home. Berhasil
4 Tautan Deteksi Ke halaman deteksi. Berhasil
5 Tautan Lab Ke halaman login mitra. Berhasil
6 Tautan Logout Keluar dari halaman mitra. Berhasil
7
Pagination (halaman
sebelumnya dan
selanjutnya)
Tampilan daftar aktivitas mitra sesuai dengan
nomor halaman pada pagination, dalam satu
halaman menampilkan 10 aktivitas.
Berhasil
82
Menu Riwayat User menampilkan catatan aktivitas user ketika melakukan deteksi
berkas. Tampilan menu ini dapat dilihat pada Gambar IV. 28. Hasil pengujian pada
Tabel IV. 12 menunjukkan bahwa menu ini telah berjalan dengan baik dan sesuai
yang diharapkan.
Tabel IV. 12 Pengujian Penampil Data - Riwayat User
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Tampilan halaman
menu Riwayat user
Daftar aktivitas semua user ditampilkan dalam
bentuk tabel. Berhasil
2 Tautan Home Ke halaman home. Berhasil
3 Tautan Deteksi Ke halaman deteksi. Berhasil
4 Tautan Mitra Ke halaman login mitra. Berhasil
5
Pagination (halaman
sebelumnya dan
selanjutnya)
Tampilan daftar aktivitas user sesuai dengan
nomor halaman pada pagination, dalam satu
halaman menampilkan 10 aktivitas.
Berhasil
Tabel IV. 13 Pengujian Penampil Data - Profil Mitra
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Tampilan halaman
menu Profil Data akun dan foto profil mitra. Berhasil
2 Opsi Edit Akun Ke halaman edit akun, data akun dan foto
profil mitra dapat diubah. Berhasil
3 Opsi Ubah Password Ke halaman ubah password, password dapat
diganti dengan yang baru. Berhasil
4 Tautan Kembali pada
opsi Edit Akun Kembali ke halaman menu profil. Berhasil
5 Klik Simpan pada
opsi Edit Akun
Menyimpan perubahan data akun dan foto
profil pada basis data. Berhasil
6 Tautan Kembali pada
opsi Ubah Password Kembali ke halaman menu profil. Berhasil
7 Klik Ubah pada opsi
Ubah Password Menyimpan perubahan password. Berhasil
8 Tautan Menu Ke halaman home. Berhasil
9 Tautan Deteksi Ke halaman deteksi. Berhasil
10 Tautan Lab Ke halaman login mitra. Berhasil
11 Tautan Riwayat Ke halaman riwayat mitra. Berhasil
12 Tautan Logout Keluar dari halaman mitra. Berhasil
13
Pagination (halaman
sebelumnya dan
selanjutnya)
Tampilan daftar aktivitas mitra sesuai dengan
nomor halaman pada pagination, dalam satu
halaman menampilkan 10 aktivitas.
Berhasil
83
Mitra memiliki menu profil dan menu lab yang hanya dapat diakses oleh mitra.
Menu Profil berfungsi untuk mengelola akun pribadi milik mitra. Menu ini
menampilkan informasi mengenai data akun seperti username, email, instansi, dan
foto profil (seperti pada Gambar IV. 29). Tabel IV. 13 merupakan hasil pengujian
fungsi penampil data pada menu profil yang telah berjalan dengan baik. Sedangkan
menu Lab digunakan untuk mengunduh dan melihat informasi terkait malware.
Gambar IV. 30 merupakan tampilan dari halaman menu lab. Dari hasil pengujian
pada Tabel IV. 14 dapat disimpulkan bahwa fungsi penampil data pada menu lab
telah berjalan dengan baik dan sesuai dengan yang diharapkan.
Tabel IV. 14 Pengujian Penampil Data - Lab Malware
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Tampilan halaman
menu lab
Daftar malware ditampilkan dalam bentuk
tabel. Berhasil
2 Opsi Unduh Sampel malware terunduh. Berhasil
3 Opsi Detail Ke halaman detail, menampilkan informasi
terkait malware. Berhasil
4 Tautan Kembali pada
opsi Detail Kembali ke halaman menu lab. Berhasil
5 Tautan Profil Ke halaman profil mitra. Berhasil
6 Tautan Menu Ke halaman home. Berhasil
7 Tautan Deteksi Ke halaman deteksi. Berhasil
8 Tautan Riwayat Ke halaman riwayat mitra. Berhasil
9 Tautan Logout Keluar dari halaman mitra. Berhasil
10
Pagination (halaman
sebelumnya dan
selanjutnya)
Tampilan daftar aktivitas mitra sesuai
dengan nomor halaman pada pagination,
dalam satu halaman menampilkan 10
aktivitas.
Berhasil
IV.3.4. Fungsi Tambah Data
Pengujian ini dilakukan pada Menu Tambah File dan Registrasi, dimana admin
dapat menambahkan data benign, malware, dan akun baru kedalam basis data.
Pengujian dimaksudkan untuk menguji kesesuaian fungsi penambah data.
Tampilan halaman Tambah File malware ditunjukkan pada Gambar IV. 32. Hasil
pengujian pada Tabel IV. 15 menunjukkan bahwa menu tambah file untuk
menambahkan malware baru telah berjalan dengan baik.
84
Tabel IV. 15 Pengujian Tambah Data - Tambah File (Malware)
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Berkas tidak dipilih pada
tambah malware
Pesan peringatan untuk mengisi kolom
“Choose File” (Please select a file!) Berhasil
2 SSDEEP dikosongkan Pesan peringatan untuk mengisi kolom
ssdeep (Please field out this field!) Berhasil
3 Vhash dikosongkan Pesan peringatan untuk mengisi kolom
vhash (Please field out this field!) Berhasil
4 Nama Malware
dikosongkan
Pesan peringatan untuk mengisi kolom
nama malware (Please field out this
field!)
Berhasil
5 Jenis Malware
dikosongkan
Pesan peringatan untuk mengisi kolom
jenis malware (Please field out this
field!)
Berhasil
6 Data lainnya dikosongkan
Sistem menerima input kosong pada
kolom data lainnya (selain ssdeep, vhash,
nama, dan jenis malware).
Berhasil
7 Data input berupa
karakter angka Sistem menerima input. Berhasil
8 Data input berupa
karakter huruf Sistem menerima input. Berhasil
9 Data input berupa
karakter simbol Sistem menerima input. Berhasil
10 Data input berupa kode
html
Sistem menerima input dengan
mengubah kode tag html menjadi
karakter biasa.
Berhasil
11 Tipe berkas zip Sistem menerima input. Berhasil
12 Tipe berkas selain zip
(pdf, exe, jar, dll.)
Sistem menampilkan pesan peringatan
“Maaf, tipe file ini tidak dapat dideteksi” Berhasil
13 Ukuran berkas ≤ 200 MB Sistem menerima input. Berhasil
14 Ukuran berkas > 200 MB Sistem menampilkan pesan peringatan
“Ukuran file terlalu besar!” Berhasil
15 Berkas malware
ditambahkan
Berkas disimpan dalam bentuk zip ber-
password pada directory server (folder
malware) secara otomatis.
Berhasil
Sistem mengisi data analisa statik secara
otomatis ke dalam basis data malware,
diantaranya nama berkas, ukuran, tipe,
hash SHA-256, SHA-1, dan MD5.
Berhasil
Sistem menyimpan metadata dan data
lainnya yang diinputkan oleh admin
kedalam basis data malware.
Berhasil
16 Klik Reset Semua kolom dikosongkan. Berhasil
17 Klik Tambah Data tersimpan. Berhasil
85
Tampilan halaman tambah file untuk benign ditunjukkan pada Gambar IV. 31,
sedangkan hasil pengujiannya disajikan dalam bentuk tabel pada Tabel IV. 16.
Hasil pengujian menunjukkan bahwa menu ini sudah sesuai dengan desain sistem.
Tabel IV. 16 Pengujian Tambah Data – Tambah File (Benign)
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Berkas tidak dipilih pada
tambah benign
Pesan peringatan untuk mengisi kolom
“Choose File” (Please select a file!) Berhasil
2 Berkas benign
ditambahkan
Berkas disimpan dalam bentuk zip ber-
password pada directory server (folder
benign) secara otomatis.
Berhasil
Sistem mengisi detail data secara
otomatis ke dalam basis data benign,
diantaranya nama berkas, ukuran, tipe,
hash SHA-256, SHA-1, dan MD5.
Berhasil
3 Tipe berkas doc/docx Sistem menerima input. Berhasil
4 Tipe berkas xls/xlsx Sistem menerima input. Berhasil
5 Tipe berkas ppt/pptx Sistem menerima input. Berhasil
6 Tipe berkas pdf Sistem menerima input. Berhasil
7 Tipe berkas zip Sistem menerima input. Berhasil
8 Tipe berkas rar Sistem menerima input. Berhasil
9 Tipe berkas exe Sistem menerima input. Berhasil
10 Tipe berkas txt Sistem menerima input. Berhasil
11 Tipe berkas lainnya
(jar, sql, dll.)
Sistem menampilkan pesan peringatan
“Maaf, tipe file ini tidak dapat dideteksi” Berhasil
12 Ukuran berkas ≤ 200 MB Sistem menerima input. Berhasil
13 Ukuran berkas > 200 MB Sistem menampilkan pesan peringatan
“Ukuran file terlalu besar!” Berhasil
14 Klik Tambah Data tersimpan dalam tabel benign. Berhasil
Menu Registrasi digunakan untuk menambahkan akun baru bagi admin dan mitra.
Tampilan registrasi admin ditunjukkan pada Gambar IV. 36, sedangkan tampilan
registrasi mitra ditunjukkan pada Gambar IV. 37. Tabel IV. 17 menunjukkan bahwa
sistem tidak memberikan pesan peringatan saat kolom nama diinputkan karakter
simbol. Namun, fungsi lainnya berjalan dengan baik. Data admin maupun mitra
dapat ditambahkan dalam basis data sesuai dengan data yang diinputkan, password
yang disimpan sudah terenkripsi dalam basis data secara otomatis, dan data akun
yang sudah didaftarkan sudah dapat digunakan untuk melakukan login.
86
Tabel IV. 17 Pengujian Tambah Data - Registrasi
NO PENGUJIAN KELUARAN YANG
DIHARAPKAN
HASIL
Reg.
Admin
Reg.
Mitra
1 Nama
dikosongkan
Pesan peringatan untuk mengisi kolom
nama (Please field out this field!) Berhasil Berhasil
2 Nama berisi
karakter huruf Sistem menerima input. Berhasil Berhasil
3 Nama berisi
karakter angka Sistem menampilkan pesan peringatan. Gagal Gagal
4 Nama berisi
karakter simbol Sistem menampilkan pesan peringatan. Gagal Gagal
5 Username
dikosongkan
Pesan peringatan untuk mengisi kolom
username (Please field out this field!) Berhasil Berhasil
6 Username berisi
karakter huruf Sistem menerima input. Berhasil Berhasil
7 Username berisi
karakter angka Sistem menerima input. Berhasil Berhasil
8 Username berisi
karakter simbol Sistem menerima input. Berhasil Berhasil
9 Password
dikosongkan
Pesan peringatan untuk mengisi kolom
password (Please field out this field!) Berhasil Berhasil
10 Password berisi
karakter huruf
Sistem menerima input, password
disimpan dalam bentuk terenkripsi. Berhasil Berhasil
11 Password berisi
karakter angka
Sistem menerima input, password
disimpan dalam bentuk terenkripsi. Berhasil Berhasil
12 Password berisi
karakter simbol
Sistem menerima input, password
disimpan dalam bentuk terenkripsi. Berhasil Berhasil
13
Konfirmasi
Password
dikosongkan
Pesan peringatan untuk mengisi kolom
konfirmasi password (Please field out
this field!)
Berhasil Berhasil
14 Konfirmasi Pass
tidak sesuai
Sistem menampilkan pesan peringatan
(Konfirmasi password tidak sesuai!) Berhasil Berhasil
15 Email
dikosongkan
Pesan peringatan untuk mengisi kolom
email (Please field out this field!) Berhasil Berhasil
16
Email tidak
berisi karakter
“@”
Pesan peringatan (Please include an
‘@’ in the email address. ‘input-email’
is missing an ‘@’)
Berhasil Berhasil
17
Email yang
diinputkan tidak
lengkap
Pesan peringatan (Please enter a part
following ‘@’. ‘input-email@’ is
incomplete)
Berhasil Berhasil
18 Instansi (mitra)
dikosongkan Sistem menerima input kosong. - Berhasil
19 Klik Register Sistem menambahkan akun baru pada
basis data. Berhasil Berhasil
87
IV.3.5. Fungsi Hapus Data
Terdapat beberapa menu pada sistem admin yang menyediakan fungsi hapus data, diantaranya menu DB Benign, DB Malware, Analisa File,
Data Admin, dan Data Mitra. Fungsi ini digunakan oleh admin untuk menghapus data pada basis data. Ketika fungsi ini dipilih, maka sistem
akan memberikan notifikasi yang berisi konfirmasi data yang dihapus seperti pada Gambar IV. 38. Pengujian dilakukan untuk menguji
kesesuaian dalam menghapus data pada basis data. Tabel IV. 18 menunjukkan hasil pengujian fungsi hapus data untuk masing-masing menu.
Dari hasil pengujian dapat disimpulkan bahwa opsi hapus data sudah dapat menghapus data pada basis data sesuai dengan data yang dipilih
admin. Sistem juga sudah memberikan notifikasi berupa konfirmasi penghapusan data saat admin akan menghapus data. Namun, terdapat
kekurangan dari fungsi ini, yaitu belum dapat menghapus sampel dari directory server.
Tabel IV. 18 Pengujian Hapus Data
NO PENGUJIAN KELUARAN YANG DIHARAPKAN
HASIL
DB
Malware
DB
Benign
Analisa
File
Data
Admin
Data
Mitra
1 Klik Hapus
Sistem menampilkan notifikasi berisi
konfirmasi penghapusan data (Apakah anda
yakin akan menghapus data ini?)
Berhasil Berhasil Berhasil Berhasil Berhasil
2 Klik Hapus dan pilih OK
Data yang dipilih terhapus dari basis data. Berhasil Berhasil Berhasil Berhasil Berhasil
Sampel yang dipilih terhapus dari directory
server. Gagal Gagal Gagal Gagal Gagal
Sistem menampilkan pesan bahwa data telah
terhapus (Data berhasil dihapus!). Berhasil Berhasil Berhasil Berhasil Berhasil
3 Klik Hapus dan pilih Cancel Kembali ke halaman menu sebelumnya. Berhasil Berhasil Berhasil Berhasil Berhasil
88
IV.3.6. Fungsi Unduh Sampel
Fungsi unduh sampel terdapat pada menu admin dan mitra. Admin dapat mengunduh sampel benign pada menu DB Benign, sampel malware
pada menu DB Malware, dan sampel baru pada menu Analisa File. Pengujian fungsi unduh dilakukan dengan cara mengunduh sampel pada
masing-masing menu dan membuka file yang telah diunduh untuk memastikan bahwa file diunduh secara utuh sesuai yang tersimpan dalam
directory server. Contoh tampilan unduh dapat dilihat pada Gambar IV. 40. Hasil pengujian ditunjukkan pada Tabel IV. 19. Dari hasil
pengujian dapat disimpulkan bahwa fungsi unduh sampel sudah berjalan dengan baik pada semua menu yang diuji. Sistem berhasil
menyimpan sampel sesuai dengan folder yang dipilih oleh admin/mitra. Sampel yang terunduh sudah dalam bentuk zip ber-password untuk
menghindari infeksi sistem oleh sampel malware dan telah berhasil diekstrak menggunakan password default.
Tabel IV. 19 Pengujian Unduh Sampel
NO PENGUJIAN KELUARAN YANG DIHARAPKAN
HASIL
DB
Malware
DB
Benign
Analisa
File
Lab
Mitra
1 Klik Unduh Sistem menampilkan kotak dialog dan membuka folder untuk
menyimpan sampel yang akan diunduh. Berhasil Berhasil Berhasil Berhasil
2 Klik Unduh dan pilih Save Sampel tersimpan dalam folder yang dipilih. Berhasil Berhasil Berhasil Berhasil
3 Klik Unduh dan pilih Close
pada kotak dialog Kembali ke halaman menu sebelumnya. Berhasil Berhasil Berhasil Berhasil
4 Melihat sampel yang sudah
terunduh
Sampel tersimpan pada folder dalam bentuk zip ber-
password Berhasil Berhasil Berhasil Berhasil
5 Membuka zip sampel yang
sudah terunduh
Sampel dapat diekstrak menggunakan password default:
Rahasia100% Berhasil Berhasil Berhasil Berhasil
89
IV.3.7. Fungsi Ubah Data
Fungsi ubah data terdapat pada menu admin (DB Malware) dan menu mitra (Edit
Akun dan Ubah Password). Pada menu DB Malware, terdapat opsi Edit Malware
yang dapat digunakan oleh admin untuk mengubah sampel, metadata dan informasi
terkait malware yang tersimpan dalam basis data. Tabel IV. 20 merupakan hasil
pengujian fungsi ubah data (Edit Malware) pada menu DB Malware.
Tabel IV. 20 Pengujian Ubah Data – Edit Malware
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Berkas sampel baru
dipilih
Sampel baru disimpan ke directory server. Berhasil
Sampel lama terhapus dari directory. Gagal
2 Berkas tidak diubah Sampel dalam directory tidak berubah. Berhasil
3 Berkas sampel zip Sistem menerima input. Berhasil
4 Berkas sampel selain
zip (pdf, exe, jar, dll.)
Sistem menampilkan pesan peringatan
“Maaf, tipe file ini tidak dapat dideteksi” Berhasil
5 Berkas sampel
berukuran ≤ 200 MB Sistem menerima input. Berhasil
6 Berkas sampel
berukuran > 200 MB
Sistem menampilkan pesan peringatan
“Ukuran file terlalu besar!” Berhasil
7 SSDEEP diganti
dengan data kosong
Pesan peringatan untuk mengisi kolom
ssdeep (Please field out this field!) Berhasil
8 Vhash diganti dengan
data kosong
Pesan peringatan untuk mengisi kolom
vhash (Please field out this field!) Berhasil
9 Nama Malware diganti
dengan data kosong
Pesan peringatan untuk mengisi kolom
nama malware (Please field out this field!) Berhasil
10 Jenis Malware diganti
dengan data kosong
Pesan peringatan untuk mengisi kolom jenis
malware (Please field out this field!) Berhasil
11 Data lainnya diganti
dengan data kosong
Sistem menerima input kosong pada kolom
data lainnya (selain ssdeep, vhash, nama, dan
jenis malware).
Berhasil
12 Data perubahan berupa
karakter angka Sistem menerima input. Berhasil
13 Data perubahan berupa
karakter huruf Sistem menerima input. Berhasil
14 Data perubahan berupa
karakter simbol Sistem menerima input. Berhasil
15 Data perubahan berupa
kode html
Sistem menerima input dengan mengubah
kode tag html menjadi karakter biasa. Berhasil
16 Klik Kembali Kembali ke halaman menu db malware. Berhasil
17 Klik Ubah Data perubahan tersimpan dalam basis data. Berhasil
90
Dari hasil pengujian fungsi ubah data pada menu DB Malware didapatkan bahwa
sistem sudah dapat menyimpan data perubahan pada basis data dengan sesuai.
Sistem juga sudah dapat menyimpan sampel baru yang dipilih dalam directory
server. Namun, sistem belum dapat menghapus sampel lama yang tersimpan dalam
directory secara otomatis ketika admin menggantinya dengan sampel baru.
Tampilan halaman fungsi ini dapat dilihat pada Gambar IV. 41.
Tabel IV. 21 Pengujian Ubah Data - Edit Akun
NO PENGUJIAN KELUARAN YANG DIHARAPKAN HASIL
1 Foto baru dipilih Foto baru disimpan ke directory server. Berhasil
Foto lama terhapus dari directory. Gagal
Foto tidak diganti Foto dalam directory tidak diubah. Berhasil
3 Foto bertipe PNG Sistem menerima input. Berhasil
4 Foto bertipe JPG Sistem menerima input. Berhasil
5 Foto bertipe JPEG Sistem menerima input. Berhasil
6 Berkas bertipe lain
dipilih (gif, dll.)
Pesan peringatan (Maaf, tipe file ini tidak
dapat ditambahkan) Berhasil
7 Foto berukuran ≤ 10 MB Sistem menerima input. Berhasil
8 Foto berukuran >10 MB Peringatan (Ukuran foto terlalu besar!) Berhasil
9 Nama diubah menjadi
data kosong
Pesan peringatan untuk mengisi kolom
nama (Please field out this field!) Berhasil
10 Username diubah
menjadi data kosong
Pesan peringatan untuk mengisi kolom
nama (Please field out this field!) Berhasil
11 Email diubah menjadi
data kosong
Pesan peringatan untuk mengisi kolom
nama (Please field out this field!) Berhasil
12 Email tidak berisi
karakter “@”
Pesan peringatan (Please include an ‘@’ in
the email address. ‘input-email’ is missing
an ‘@’)
Berhasil
13 Email yang diinputkan
tidak lengkap
Pesan peringatan (Please enter a part
following ‘@’. ‘input-email@’ is
incomplete)
Berhasil
14 Instansi tidak diisi atau
dikosongkan
Pesan peringatan untuk mengisi kolom
nama (Please field out this field!) Berhasil
15 Data perubahan angka Sistem menerima input. Berhasil
16 Data perubahan huruf Sistem menerima input. Berhasil
17 Data perubahan simbol Sistem menerima input. Berhasil
18 Data perubahan berupa
kode html
Sistem menerima input dengan mengubah
kode tag html menjadi karakter biasa. Berhasil
19 Klik Kembali Kembali ke halaman menu profil. Berhasil
20 Klik Simpan Data perubahan akun tersimpan dalam
basis data. Berhasil
91
Fungsi ubah data pada menu Profil digunakan oleh mitra untuk mengubah data akun
dan foto profil (Edit Akun), serta mengganti password (Ubah Password). Tampilan
halaman Edit Akun ditunjukkan pada Gambar IV. 42, sedangkan Ubah Password
pada Gambar IV. 43. Hasil pengujian fungsi ubah data pada keduanya menunjukkan
bahwa fungsi telah berjalan dengan baik dan sesuai. Hasilnya dapat dilihat pada
Tabel IV. 21 untuk pengujian Edit Akun dan Tabel IV. 22 untuk pengujian Ubah
Password.
Tabel IV. 22 Pengujian Ubah Data - Ubah Password
NO PENGUJIAN KELUARAN YANG
DIHARAPKAN HASIL
1 Password lama kosong Peringatan (Please fill out this field). Berhasil
2 Password lama salah Sistem menampilkan pesan
peringatan (Password lama salah!) Berhasil
3 Password lama benar Perubahan diterima. Berhasil
4 Password baru kosong Peringatan (Please fill out this field). Berhasil
5 Password baru diisi huruf Sistem menerima input. Berhasil
6 Password baru diisi angka Sistem menerima input. Berhasil
7 Password baru diisi simbol Sistem menerima input. Berhasil
8 Password baru diisi huruf Sistem menerima input. Berhasil
9 Konfirmasi Password kosong Peringatan (Please fill out this field). Berhasil
10 Konfirmasi Password sesuai
dengan Password baru
Password baru disimpan dalam
bentuk terenkripsi pada basis data. Berhasil
11 Konfirmasi Password tidak
sesuai dengan Password baru
Pesan peringatan (Konfirmasi
password tidak sesuai!) Berhasil
12 Klik Ubah Perubahan password tersimpan dalam
basis data dalam bentuk terenkripsi. Berhasil
13 Klik Kembali Kembali ke halaman menu profil. Berhasil
IV.3.8. Fungsi Logout
Fungsi logout digunakan untuk keluar dari halaman utama menu pada sistem admin
dan mitra. Ketika fungsi ini dipilih maka sistem akan menampilkan notifikasi
sebagai konfirmasi keluar dari halaman utama, seperti yang ditunjukkan pada
Gambar IV. 44. Fungsi ini akan mengakhiri session dan cookie, serta
mengembalikan menu ke halaman login. Pengujian dilakukan terhadap fungsi
logout pada menu admin dan mitra, yang hasilnya ditunjukkan pada Tabel IV. 23.
Hasil menunjukkan bahwa fungsi logout sudah berjalan dengan baik.
92
Tabel IV. 23 Pengujian Logout
NO PENGUJIAN KELUARAN YANG
DIHARAPKAN
HASIL
Logout
Admin
Logout
Mitra
1 Klik Logout
Notifikasi konfirmasi logout
(Apakah anda yakin akan keluar
dari menu?).
Berhasil Berhasil
2 Klik Logout dan
Pilih Keluar Kembali ke halaman login. Berhasil Berhasil
3 Klik Logout dan
Pilih Batal Kembali ke halaman sebelumnya. Berhasil Berhasil
4 Session saat logout Session diakhiri. Berhasil Berhasil
5 Cookie saat logout Cookie diakhiri. Berhasil Berhasil
IV.4. Pengujian Kinerja
Pengujian kinerja bertujuan untuk mengevaluasi kinerja sistem dari segi kecepatan
dan keandalan sistem dalam merespon suatu request. Pada penelitian ini, pengujian
dilakukan terhadap website dan REST API dengan menggunakan LoadImpact
sebagai alat bantu pengujian kinerja sistem. LoadImpact adalah sebuah layanan
pengujian beban server atau website (load testing) yang hasilnya dapat dijadikan
sebagai tolak ukur seberapa banyak jumlah pengunjung situs web yang dapat
ditangani dan mengukur waktu respon dari sistem terhadap permintaan pengguna.
IV.4.1. Website
Pengujian ini dilakukan untuk mengetahui jumlah request dari pengunjung situs
web yang dapat ditangani sistem dalam waktu tertentu. Pengujian dilakukan dengan
mengatur jumlah pengunjung menggunakan Virtual User (VU) pada LoadImpact
yaitu sebanyak 0 hingga 50 VU dan dijalankan dalam waktu 10 menit menggunakan
teknik ramp up. Pada teknik ini, VU akan dijalankan dari 0 dan terus bertambah
hingga 50 VU pada 1 menit pertama, kemudian dalam waktu 10 menit akan
dijalankan 50 VU secara bersamaan, dan pada 1 menit terakhir akan dilakukan
proses shutdown testing. Jumlah VU yang digunakan sesuai dengan batas limit dari
LoadImpact dengan mode gratis yaitu 50VU. Seting pengujian diatas diatur dalam
sebuah script pengujian yang dijalankan melalui command line dan hasilnya dapat
dilihat pada Gambar IV. 54.
93
Gambar IV. 54 Hasil Pengujian Kinerja Website
Hasil pengujian kinerja situs web menunjukkan bahwa waktu respon rata-rata dari
sistem yang diuji adalah 3ms, jumlah permintaan yang dapat ditangani sistem yaitu
sebanyak 65.610 dalam waktu 10 menit dan dilakukan pada tingkat permintaan
rata-rata 91 permintaan / detik. Semua permintaan dari pengunjung (VU) berhasil
ditangani dengan baik, hal tersebut dapat dilihat dari status kode 200 (OK).
Gambar IV. 55 Grafik Pengujian Kinerja Website
Hasil pengujian ini kemudian direpresentasikan dalam bentuk grafik pada cloud
loadimpact, seperti yang ditunjukkan pada Gambar IV. 55. Pada cloud ini, sistem
loadimpact menyatakan bahwa belum ditemukan masalah kinerja pada sistem web.
Pada grafik juga dapat dilihat bahwa kondisi web cenderung stabil saat proses load
testing berjalan dengan jumlah pengunjung hingga 50VU.
94
IV.4.2. REST API
Pengujian ini dilakukan untuk mengukur kecepatan respon dari REST API ketika
user atau mitra mendeteksi malware menggunakan menu deteksi. Terdapat dua
metode deteksi dalam sistem ini, yaitu menggunakan Virus Total dan metode
Default. Masing-masing metode ini terkoneksi ke REST API yang berbeda, dimana
sistem Virus Total tidak menggunakan REST API sistem database malware,
melainkan terkoneksi dengan API Publik Virus Total. Pengujian ini dilakukan
menggunakan LoadImpact yang diseting untuk mengirimkan request sebanyak
mungkin dan terus menerus dalam waktu 30s oleh 10VU. Hasil pengujian berupa
waktu respon dari API Publik Virus Total dan waktu respon dari REST API sistem
(saat menggunakan metode Default). Hasil pengujian keduanya kemudian kan
dibandingkan.
Pengujian REST API Virus Total dilakukan pada satu titik endpoint. Pada endpoint
ini, status hasil deteksi berkas diperoleh baik itu Detected, Undetected, maupun
Queue. Proses deteksi dilakukan sepenuhnya oleh endpoint tersebut. Gambar IV.
56 adalah hasil pengujian kinerja dari API Publik Virus Total.
Gambar IV. 56 Hasil Pengujian Kinerja API Publik Virus Total
Dari hasil pengujian dapat diketahui bahwa waktu respon rata-rata dari API Publik
Virus Total adalah 466ms.
95
Sementara jumlah permintaan yang dapat ditangani dalam waktu 30s yaitu
sebanyak 205 permintaan dengan tingkat permintaan rata-rata yaitu 6
permintaan/detik. Data tersebut kemudian direpresentasikan dalam bentuk grafik
seperti pada Gambar IV. 57.
Gambar IV. 57 Grafik Pengujian Kinerja REST API Virus Total
Pengujian selanjutnya yaitu menguji kinerja dari REST API Server pada Sistem
Database Malware. Pengujian ini bertujuan untuk mengatahui waktu respon rata-
rata yang dibutuhkan API Server saat melakukan proses deteksi Default. Berbeda
dengan pengujian API Virus Total yang hanya mengakses satu endpoint, pada
pengujian ini terdapat beberapa case dengan akses ke endpoint yang berbeda.
Skenario pengujian ini dapat dilihat pada Tabel IV. 24.
Tabel IV. 24 Skenario Pengujian REST API Sistem
No Case Status Deteksi Endpoint Durasi Virtual User
1 case1:
Malware
Terdeteksi
Malware - getMalware 30s 10VU
2 case2:
Benign File Aman
- getmalware
- getBenign 30s 10VU
3 case3:
Sampel Baru Proses Analisa
- getMalware
- getBenign
- getBaru
30s 10VU
4
case4:
Belum ada
dalam basis
data
Perlu Analisa
- getMalware
- getBenign
- getBaru
- postBaru
30s 10VU
96
Skenario pengujian ini dibuat berdasarkan proses deteksi yang terjadi dalam sistem
REST Client, dimana program yang dijalankan menggunakan fungsi if – else. Pada
program ini, request akan dikirimkan secara bertahap ke REST Server dan proses
akan dihentikan apabila hasil deteksi sudah ditemukan.
Case1 merupakan keadaan dimana berkas yang diunggah oleh pengguna
merupakan berkas terinfeksi malware. Pada saat itu, program REST Client akan
mengirimkan request ke endpoint getMalware pada REST API Server untuk
mencari data hash yang sesuai dalam basisdata malware. Pengujian ini dilakukan
dengan mengirimkan request ke endpoint getMalware dengan 10VU selama 30
detik. Hasil pengujian menunjukkan bahwa waktu respon rata-rata dari endpoint
getMalware yaitu 134ms, seperti pada Gambar IV. 58.
Gambar IV. 58 Hasil Pengujian Kinerja REST API Default – Case1
Dari hasil pengujian juga dapat diketahui bahwa dalam waktu 30 detik, endpoint
getMalware pada REST API Sistem mampu menangani 270 permintaan dengan
tingkat permintaan rata-rata yaitu 8,66 permintaan/detik. Pada hasil pengujian ini
tidak ditemukan adanya masalah pada kinerja REST API, semua request dapat
tertangani dengan baik dengan kode status 200. Hasil pengujian ini dapat dilihat
dalam bentuk grafik pada Gambar IV. 59.
97
Gambar IV. 59 Grafik Pengujian Kinerja REST API Default – Case1
Case2 adalah kondisi dimana berkas yang diunggah merupakan berkas benign.
Pada saat ini, sistem akan mengirimkan request ke dua buah endpoint yaitu
getMalware dan getBenign. Pertama, sistem akan mengirimkan request ke endpoint
getmalware. Respon tentunya menyatakan bahwa hash tidak terdapat pada
basisdata malware, sehingga proses kedua dijalankan yaitu mengirimkan request
ke endpoint getBenign pada REST API Server. Pada proses ini, hash akan cocok
dengan basisdata benign sehingga program if-else lain tidak dijalankan. pengujian
dapat dilihat pada Gambar IV. 60.
Gambar IV. 60 Hasil Pengujian Kinerja REST API Default – Case2
Dari hasil pengujian diketahui dalam waktu 30 detik, REST API dapat menangani
480 permintaan dengan tingkat permintaan rata-rata yaitu 15,99 permintaan/detik.
Hasil tersebut merupakan perolehan dari dua endpoint dalam satu request yaitu
98
getMalware dan getBenign, sehingga untuk melihat waktu respon per-request, hasil
tersebut harus dibagi dua. Hasil terakhir didapatkan bahwa REST API dapat
menangani kurang lebih 8 permintaan/detik.
Gambar IV. 61 Tabel Hasil Pengujian Kinerja REST API Default – Case2
Gambar IV. 61 merupakan tabel hasil pengujian pada cloud loadimpact. Pada tabel
ini dapat dilihat bahwa waktu respon rata-rata (AVG) untuk endpoint getBenign
yaitu 249ms, sedangkan untuk getMalware yaitu 246ms. Sehingga waktu respon
rata-rata yang diperoleh pada case2 ini yaitu 247ms. Hasil pengujian dapat dilihat
dalam bentuk grafik pada Gambar IV. 62.
Gambar IV. 62 Grafik Pengujian Kinerja REST API Default - Case2
Case3 memiliki kondisi dimana berkas yang diunggah merupakan sampel baru
yang terdapat pada basis data. Pada saat ini, sistem akan mengirimkan request ke
tiga buah endpoint yaitu getMalware, getBenign, dan getBaru. Seperti pada case
sebelumnya, program akan mengirimkan request ke endpoint getmalware dan
getBenign secara bertahap. Tentunya kedua endpoint tersebut akan mengirimkan
respon bahwa hash tidak terdapat pada basisdata, sehingga kemugkinan if-else
selanjutnya akan dijalankan. Request akan dikirimkan ke endpoint getBaru pada
REST API Server. Hasil pengujian ditunjukkan pada Gambar IV. 63.
99
Gambar IV. 63 Hasil Pengujian Kinerja REST API Default – Case3
Dari Gambar IV. 63 dapat dilihat bahwa dalam waktu 30 detik, REST API dapat
menangani 684 permintaan dengan tingkat permintaan rata-rata yaitu 22,77
permintaan/detik. Hasil tersebut merupakan perolehan dari tiga endpoint, sehingga
waktu respon per-request didapatkan bahwa REST API dapat menangani kurang
lebih 7,59 permintaan/detik.
Gambar IV. 64 Tabel Pengujian Kinerja REST API Default – Case3
Gambar IV. 64 berisi rincian dari masing-masing respon endpoint. Pada tabel
terlihat bahwa waktu respon rata-rata dari endpoint getMalware yaitu 244ms,
endpoint getBenign yaitu 246ms, dan endpoint getBaru yaitu 281ms. Sehingga
secara keseluruhan, waktu respon rata-rata yang diperoleh pada case3 yaitu 257ms.
Hasil pengujian dapat dilihat dalam bentuk grafik pada Gambar IV. 65.
100
Gambar IV. 65 Grafik Pengujian Kinerja REST API Default – Case3
Case4 merupakan kasus terakhir, dimana berkas yang diunggah oleh pengguna
tidak terdapat dalam basis data manapun dalam sistem. Sehingga request yang
dikirimkan ke endpoint getMalware, getBenign, dan getBaru mendapat respon
negatif. Pada saat ini, sistem akan mengirimkan request dan data berkas ke endpoint
postBaru untuk menambahkan berkas tersebut kedalam basis data sampel baru.
Hasil pengujian kinerja REST API pada case4 ini ditunjukkan pada Gambar IV. 66.
Gambar IV. 66 Hasil Pengujian Kinerja REST API Default – Case4
Dari hasil pengujian didapatkan bahwa REST API dapat menangani 820
permintaan pada tingkat permintaan rata-rata 27,26 permintaan/detik. Hasil tersebut
merupakan perolehan dari empat endpoint, sehingga waktu respon per-request jika
101
dirata-ratakan yaitu 6,82 permintaan/detik. Sementara waktu respon rata-rata REST
API adalah 365,25ms, dengan rincian AVG seperti pada Gambar IV. 67.
Gambar IV. 67 Tabel Pengujian Kinerja REST API Default – Case4
Loadimpact telah menganalisis hasil pengujian dan sampai tahap ini belum
menemukan masalah kinerja pada REST API. Pada Gambar IV. 67 juga dapat
dilihat kode status dari setiap endpoint. Semua request GET dapat ditangani dengan
baik oleh masing-masing endpoint dengan kode status 200 (OK). Request POST
juga dapat ditangani dengan baik oleh endpoint postBaru dengan kode status 201
(Created). Hasil pengujian dapat dilihat dalam bentuk grafik pada Gambar IV. 68.
Gambar IV. 68 Grafik Pengujian Kinerja REST API Default – Case4
Hasil akhir dari pengujian kinerja REST API disajikan dalam bentuk tabel pada
Tabel IV. 25. Dari hasil pengujian dapat diambil kesimpulan bahwa berdasarkan
permintaan rata-rata yang dapat ditangani, API Server dapat mengimbangi kinerja
dari API Virus Total, dengan jumlah respon rata-rata yaitu 6 sampai 8
permintaan/detik. Hasil akhir ini menunjukkan bahwa REST API Sistem Database
Malware dapat bekerja dengan baik seperti API Publik milik Virus Total.
102
Tabel IV. 25 Perbandingan Hasil Pengujian Kinerja REST API
Endpoint
Hasil Pengujian
Waktu
Respon
rata-rata
Jumlah
Permintaan
dalam 30s
Respon
Permintaan
rata-rata
API Publik Virus Total 466 ms 205 request 6 request/s
API Server
Sistem
Database
Malware
case1: 134 ms 270 request 8,66 request/s
- getMalware
case2:
247 ms
480 request
8 request/s - getMalware - 240 request
- getBenign - 240 request
case3:
257 ms
684 request
7,59 request/s - getMalware - 228 request
- getBenign - 229 request
- getBaru - 227 request
case4:
365,25 ms
820 request
6,82 request/s
- getMalware - 205 request
- getBenign - 205 request
- getBaru - 205 request
- postBaru - 205 request
Berdasarkan waktu respon rata-rata, menurut Scott Barber terdapat lima tipe
koneksi yang sering ditemui pengguna, yaitu:
1. Cepat atau tidak delay yaitu berkisar dibawah 3 detik;
2. Sedang yaitu kecepatan rata-rata berkisar 3 hingga 5 detik;
3. Lambat yaitu berkisar 5 hingga 8 detik;
4. Frustrating yaitu berkisar 8 hingga 15 detik;
5. Unacceptable yaitu lebih dari 15 detik.
Dari hasil pengujian dapat disimpulkan bahwa API Server pada case1 adalah yang
tercepat dengan waktu 134 ms, sedangkan waktu respon rata-rata terlama yaitu API
Publik Virus Total dengan waktu 466 ms. Hal tersebut terjadi, karna koneksi ke
API Publik Virus Total membutuhkan jaringan internet, sementara API Server
terdapat pada jaringan lokal. Waktu respon rata-rata yang berkisar antara 134 ms
hingga 466 ms ini menunjukkan bahwa kinerja dari REST API berada pada kategori
cepat dengan orde millisecond.
103
IV.5. Pengujian Keamanan
Tiga aspek utama dalam keamanan informasi yaitu Confidentiality, Integrity, dan
Availability atau umumnya disebut dengan CIA Triad [24]. Pada penelitian ini,
pengujian keamanan web sistem akan dilakukan terhadap ketiga aspek tersebut.
Masing-masing aspek akan diuji menggunakan serangan yang sesuai dengan
sasaran pengujian yaitu serangan Sniffing untuk confidentiality (kerahasiaan data),
SQL Injection untuk integrity (keaslian data), dan Syn Flood (DoS) untuk aspek
availability (ketersediaan data). Pengujian dilakukan menggunakan Wireshark,
Acunetix dan Hping3.
IV.5.1. Confidentiality
Confidentiality (kerahasiaan) yaitu aspek yang menjamin kerahasiaan data atau
informasi, memastikan bahwa informasi hanya dapat diakses oleh orang yang
berwenang dan menjamin kerahasiaan data yang dikirim, diterima dan disimpan
[24]. Salah satu serangan yang berkaitan dengan confidentiality yaitu serangan
Sniffing. Sniffing merupakan kegiatan penyadapan pada lalu lintas data paket di
suatu jaringan. Setelah data ditangkap, penyerang dapat membaca data sensitif
seperti kata sandi atau identitas pengguna. Sniffing dapat dilakukan dengan mudah
jika lalu lintas jaringan tidak dienkripsi [25]. Skenario pengujian confidentiality
terhadap serangan Sniffing ditunjukkan pada Gambar IV. 69.
Gambar IV. 69 Skenario Serangan Sniffing
Mitra
Attacker
Server
Mitra mengirim Request POST dan data
(username dan password) untuk login
Sniffing data paket
104
Pada pengujian ini, serangan Sniffing dilakukan untuk menyadap informasi terkait
username dan password akun mitra dengan menggunakan Wireshark [26].
Wireshark adalah program Network Protocol Analyzer alias penganalisa protokol
jaringan yang lengkap. Program ini dapat merekam semua paket yang lewat serta
menyeleksi dan menampilkan data tersebut sedetail mungkin [27]. Target dari
pengujian ini yaitu halaman login mitra pada url https://localhost/tesisrela/rest-
client/sistem/mitra/m.login.php. Penyadapan dilakukan oleh attacker saat seorang
mitra mencoba melakukan login pada halaman login mitra, dimana mitra akan
memasukkan username dan password akunnya dan mengirimkannya ke server
untuk proses validasi. Pada saat ini, data paket yang dikirimkan akan disadap oleh
attacker menggunakan Wireshark. Hasil pengujian keamanan terhadap serangan
Sniffing mengunakan Wireshark dapat dilihat pada Gambar IV. 70.
Gambar IV. 70 Hasil Pengujian Confidentiality – Sniffing
105
Data paket yang tertangkap oleh Wireshark ini kemudian difilter berdasarkan
protokol pembawanya, dalam penelitian ini menggunakan protokol SSL. Data
kemudian dibuka menggunakan Follow TCP Stream untuk melihat detail data hasil
penyadapan. Hasil Follow TCP Stream menggunakan Wireshark dapat dilihat pada
Gambar IV. 71.
Gambar IV. 71 Hasil Follow TCP Stream pada protokol HTTP POST
Hasil Follow TCP Stream menunjukkan bahwa data paket dikirimkan dalam bentuk
terenkripsi, sehingga informasi sensitif seperti username dan password tidak dapat
diketahui oleh attacker. Secara keseluruhan dapat disimpulkan bahwa Web Sistem
aman terhadap serangan Sniffing. Hal tersebut dikarenakan web sistem
menggunakan protokol HTTPS (Hypertext Transfer Protocol Secure), dimana data
paket yang dikirimkan telah diamankan dengan cara mengenkripsi data melalui
protokol SSL (Secure Socket layer) atau protokol TLS (Transport Layer Security).
106
IV.5.2. Integrity
Integrity (keaslian) yaitu aspek yang menjamin bahwa data tidak dapat diubah tanpa
ada ijin dari pihak yang berwenang (authorized), menjaga keakuratan dan keutuhan
informasi serta metode prosesnya untuk menjamin aspek integrity [24]. Salah satu
serangan yang menyerang integrity yaitu SQL Injection, dimana serangan ini
memiliki kemampuan untuk mempengaruhi Structured Query Language (SQL)
yang melewati aplikasi ke database back-end [29]. Kasus SQL Injection terjadi
ketika seorang penyerang dapat memasukkan serangkaian pernyataan SQL ke
query dengan memanipulasi data input ke aplikasi. Berdasarkan definisi tersebut,
dapat dikatakan bahwa serangan SQL Injection sangat berbahaya karena penyerang
yang telah berhasil memasuki database sistem dapat melakukan manipulasi data
yang ada pada database sistem. Proses manipulasi data yang tidak semestinya oleh
penyerang dapat menimbulkan kerugian, seperti pemalsuan data, kerusakan data,
maupun kehilangan data. Pengujian keamanan terhadap aspek integrity dilakukan
dengan menggunakan software website vulnerability scanner yaitu Acunetix untuk
mengukur tingkat kerentanan sistem terhadap serangan SQL Injection. Skenario
pengujian ini ditunjukkkan pada Gambar IV. 72.
Gambar IV. 72 Skenario Serangan SQL Injection
Berdasarkan skenario pengujian pada Gambar IV. 72 dapat dilihat bahwa attacker
menyerang sistem dengan cara menginputkan perintah (script) SQL Injection
melalui form input data, dalam hal ini yaitu form login pada halaman login mitra.
Attacker Form Login
(Web Sistem Mitra)
Menjalankan perintah SQL Injection, dapat berupa kode query
penambahan data, perubahan data, maupun penghapusan data.
Menginputkan
perintah
SQL Injection
Mengirimkan
perintah
SQL Injection
Data
Database
107
Setelah melakukan submit data, maka perintah SQL Injection ini akan dikirimkan
ke database melalui REST Server. Perintah SQL Injection dapat berupa kode query
penambahan data, perubahan data, maupun penghapusan data. Serangan ini
dilakukan dan dianalisa langsung oleh Acunetix. Hasil pengujian sistem terhadap
serangan SQL Injection menggunakan Acunetix ditunjukkan pada Gambar IV. 73
Gambar IV. 73 Hasil Pengujian Integrity - SQL Injection
Pengujian dilakukan selama 23 menit 50 detik terhadap halaman login mitra pada
url https://localhost/tesisrela/rest-client/sistem/mitra/m.login.php. Hasil pengujian
menunjukkan bahwa web sistem tidak memiliki kerentanan terhadap serangan SQL
Injection, baik pada tingkat high, medium, low, maupun informational. Hal tersebut
karena halaman login telah diamankan dari SQL Injection dengan menambahkan
fungsi addslashes() dan digabungkan dengan fungsi trim() pada program login,
seperti pada Algoritma IV. 19.
Algoritma IV. 19 Fungsi anti SQL Injection 1
2
$username = addslashes(trim($_POST['username']));
$password = addslashes(trim($_POST['password']));
108
Fungsi tersebut digunakan untuk mengembalikan nilai sebuah string dengan
memberikan atau menambahkan simbol tanda backslash dalam bentuk garis miring
terbalik sebelum karakter single quote, double quote, dan null. Penggunaan fungsi
addslashes() ini dapat mencegah attacker memasukan script atau kode khusus yang
mengandung tanda kutip (SQL Injection) pada sebuah form di web. Secara
keseluruhan dapat disimpulkan bahwa sistem aman (“Safe”) terhadap serangan SQL
Injection dengan hasil Threat Level 0, seperti pada Gambar IV. 74.
Gambar IV. 74 Tingkat Ancaman SQL Injection terhadap Web Sistem
IV.5.3. Availability
Availability (ketersediaan) yaitu aspek yang menjamin bahwa data akan tersedia
saat dibutuhkan, memastikan pengguna yang berhak dapat mengakses sistem dan
menggunakan informasi [24]. Salah satu serangan yang menyerang aspek
availability yaitu Denial of Service attack (DoS), dimana pengerang akan
mengirimkan permintaan yang bertubi-tubi atau permintaan yang diluar perkiraan
ke server, sehingga server tidak dapat melayani permintaan lain atau bahkan sampai
down, hang, dan crash. Serangan DoS memiliki beberapa varian, salah satunya
yaitu serangan SYN Flooding. Serangan ini memanfaatkan kelemahan protokol
TCP pada saat proses handshake terjadi [30].
109
Pada serangan ini, penyerang akan mengirimkan banyak SYN request kepada server
korban dengan tujuan untuk mengkonsumsi sumber daya dari server dan membuat
server tidak dapat melayani request dari pengguna yang sah (klien) [31].
Gambar IV. 75 Skenario Pengujian Availability – Serangan SYN Flooding
Pada Gambar IV. 75 dapat dilihat bahwa attacker berpura-pura menjadi klien dan
meminta koneksi ke server dengan mengirimkan kode SYN (Synchronize). Server
akan mengenali/mengakui (Acknowledges) request ini dengan mengirimkan kode
SYN-ACK kembali ke klien (yang sebenarnya adalah attacker). Pada kondisi ini
seharusnya klien yang sah merespon kembali dengan mengirimkan kode ACK agar
koneksi terjalin antara klien dan server. Namun, attacker sengaja tidak membalas
respon paket ACK ke server dan bahkan terus mengirimkan SYN request sehingga
server dipenuhi dengan koneksi setengah terbuka (menunggu respon ACK dari
klien). Hal tersebut menyebabkan klien yang sah tidak dapat terkoneksi dengan
server dan menyebabkan masalah pada aspek availability (ketersediaan) sistem ini.
SYN
Attacker Open Port: menunggu ACK
Open Port: menunggu ACK Open Port: menunggu ACK Open Port: menunggu ACK
Server Korban
Klien
Koneksi Penuh
110
Pada penelitian ini, pengujian dilakukan didalam sebuah Virtual Box. Target web
sistem dijalankan pada sistem operasi Windows 10. Hasil pengujian dipantau
menggunakan Wireshark untuk menganalisa kinerja jaringan dan Task Manager
untuk memantau kinerja komputer seperti status penggunaan CPU. Kedua alat ini
dijalankan pada sistem operasi target untuk melihat efek dari serangan SYN
Flooding terhadap sistem target. Kondisi performance sistem sebelum dilakukan
penyerangan dapat dilihat pada Gambar IV. 76. Pada kondisi ini, penggunaan CPU
(utilitization) hanya terpakai sekitar 9% dengan beberapa program yang berjalan
yaitu wireshark, xampp, google chrome, dan snipping tools.
Gambar IV. 76 Performance Sistem Sebelum Serangan SYN Flooding
Sementara itu, serangan SYN Flooding dilakukan menggunakan Hping3 yang ada
pada sistem operasi Kali Linux. Hping3 adalah sebuah tool jaringan yang dapat
mengirimkan paket-paket TCP/IP ke alamat tujuan dan dapat digunakan untuk
memanipulasi paket, seperti membuat lalu lintas jaringan tersebut menjadi padat.
Gambar IV. 77 merupakan konfigurasi serangan SYN Flood. Attacker dengan IP
192.168.56.30 menyerang target dengan alamat IP 192.168.56.20 pada port 443
dimana web sistem dijalankan. Serangan dilakukan selama kurang lebih 5 menit
dengan jumlah paket terkirim yaitu 2.267.335 paket.
111
Gambar IV. 77 Serangan SYN Flooding menggunakan Hping3
Ketika serangan dilakukan, kinerja CPU pada sistem target mulai meningkat,
seperti yang ditunjukkan pada Gambar IV. 78. Dapat dilihat bahwa grafik yang
semula berada pada titik 9% meningkat hingga ke titik 100%. Saat itu, server
dipenuhi oleh paket-paket yang dikirim oleh attacker.
Gambar IV. 78 Peningkatan Utilitas CPU Saat Serangan SYN Flooding
Sementara itu pada gambar Gambar IV. 79 terlihat respon dari sistem saat sebelum
serangan SYN Flooding dan ketika serangan sedang berlangsung. Dapat dilihat
bahwa klien tetap dapat mengakses sistem pada port 443 di IP 192.168.56.20.
112
Gambar IV. 79 Akses Klien Saat Serangan SYN Flooding
Selama serangan dilakukan, lalu lintas jaringan dipantau menggunakan Wireshark,
seperti pada Gambar IV. 80. Hasil penyadapan terlihat bahwa terdapat banyak paket
yang dikirimkan dari IP 192.168.56.30 menuju port 443 pada IP 192.168.56.20.
Gambar IV. 80 Trafik Jaringan Saat Serangan SYN Flooding
113
Sementara pada server sistem, utilitas CPU terus menerus mencapai 100% dan
mulai menurun saat serangan dihentikan, seperti pada Gambar IV. 81, dimana
penggunaan CPU mulai turun ke 81% dan terus menurun hingga kembali stabil.
Gambar IV. 81 Performance Sistem Saat Serangan SYN Flooding
Dari hasil pengujian dapat disimpulkan bahwa sistem masih bisa menyediakan
akses bagi klien yang sah saat serangan SYN Flooding sedang berlangsung. Namun,
serangan ini sangat berdampak terhadap kinerja server terutama dalam penggunaan
CPU. Hasil pengujian ini dipengaruhi oleh banyak faktor terutama sistem operasi
yang digunakan dan pengaturan keamanan sistem seperti firewall dan lainnya.
114
Bab V Kesimpulan dan Saran
V.1. Kesimpulan
Penelitian ini menghasilkan sebuah Sistem Database Malware yang diharapkan
dapat membantu mengembangkan penelitian terkait malware di Indonesia. Fungsi
utama dari sistem ini yaitu menyimpan dan mengelola sampel malware, metadata,
serta hasil analisa malware untuk kebutuhan penelitian dan operasional. Selain itu,
sistem ini juga menyediakan fitur deteksi bagi pengguna dan rekan mitra untuk
mendeteksi adanya malware pada sustu berkas. Sistem Database Malware telah
diuji secara fungsional, kinerja dan keamanan. Hasil pengujian menunjukkan
bahwa sistem ini layak digunakan untuk mengelola dan mendeteksi malware.
V.2. Saran
Berdasarkan hasil penelitian, maka peneliti menyarankan beberapa pengembangan
dan perbaikan untuk penelitian selanjutnya yaitu:
1. Merealisasikan Request Tracker for Incident Response (RTIR) pada
Ticketing System, dimana pengguna maupun mitra dapat memantau proses
analisa lebih lanjut pada berkas yang diunggah sebagai sampel baru.
2. Merealisasikan Reporting System pada sistem admin, dimana sistem ini
bekerja secara otomatis untuk membuat laporan secara berkala (perbulan
dan pertahun).
3. Merealisasikan suatu container atau environment untuk proses ZIP –
UNZIP sampel malware dengan aman dan tidak menginfeksi sistem
database malware. Proses ini dibutuhkan saat penggantian password ZIP
(antara admin dan mitra) pada sampel malware yang diunduh mitra.
4. Menyediakan server khusus terpisah untuk sampel malware, metadata, dan
penyimpanan berbagai sistem operasi yang menjadi target setiap malware.
Sistem operasi harus disediakan untuk dapat menjalankan malware dan
melakukan analisa secara dinamis.
115
DAFTAR PUSTAKA
[1] Michael Sikorski and Andrew Honig, Practical Malware Analysis: The
Hands-on Guide to Dissecting Malicious Software, 1st ed. San Francisco: No
Starch Press, 2012.
[2] G. Cabau, M. Buhu, and C. Oprisa, “Malware classification using filesystem
footprints,” in 2016 IEEE International Conference on Automation, Quality
and Testing, Robotics (AQTR), Cluj-Napoca, Romania, 2016, pp. 1–6, doi:
10.1109/AQTR.2016.7501294.
[3] AV-TEST, “Malware Statistics & Trends Report | AV-TEST,” Malware,
2019. [Online]. Available: https://www.av-test.org/en/statistics/malware/.
[Accessed: 12-Dec-2019].
[4] ID-CERT, “Laporan Dwi Bulan II 2018 ID-CERT,” Indonesia, 2018. [5] ID-CERT, “Laporan Dwi Bulan III 2018 ID-CERT,” Indonesia, 2018.
[6] Alexander Kossiakoff, William N. Sweet, Samuel J. Seymour, and Steven
M. Biemer, Systems Engineering Principles And Practice - Second Edition,
2nd ed. Canada: A John Wiley & Sons, Inc., 2011.
[7] John Love, “A Brief History of Malware — Its Evolution and Impact |
Lastline,” 2018. [Online]. Available: https://www.lastline.com/blog/history-
of-malware-its-evolution-and-impact/. [Accessed: 12-Dec-2019].
[8] “What is malware? - Computer Business Review,” 2019. [Online].
Available: https://www.cbronline.com/what-is/what-is-malware-4924141/.
[Accessed: 12-Dec-2019].
[9] S. Sen, E. Aydogan, and A. I. Aysan, “Coevolution of Mobile Malware and
Anti-Malware,” IEEE Trans. Inf. Forensics Secur., vol. 13, no. 10, pp. 2563–
2574, Oct. 2018, doi: 10.1109/TIFS.2018.2824250.
[10] F. L. Sang, V. Nicomette, and Y. Deswarte, “A Tool to Analyze Potential
I/O Attacks against PCs,” IEEE Secur. Priv., vol. 12, no. 2, pp. 60–66, Mar.
2014, doi: 10.1109/MSP.2013.79.
[11] “A Malware Classification -Kaspersky Daily | Kaspersky official blog.”
[Online]. Available: https://www.kaspersky.com/blog/a-malware-
classification/3037/. [Accessed: 12-Dec-2019].
[12] E. F. Codd, “A relational model of data for large shared data banks,”
Commun. ACM, vol. 13, no. 6, pp. 377–387, Jun. 1970, doi:
10.1145/362384.362685.
[13] G. Jaiswal, “Comparative analysis of Relational and Graph databases,” IOSR
J. Eng., vol. 03, no. 08, pp. 25–27, Aug. 2013, doi: 10.9790/3021-03822527.
[14] C. Vicknair, M. Macias, Z. Zhao, X. Nan, Y. Chen, and D. Wilkins, “A
comparison of a graph database and a relational database: a data provenance
perspective,” in Proceedings of the 48th Annual Southeast Regional
Conference on - ACM SE ’10, Oxford, Mississippi, 2010, p. 1, doi:
10.1145/1900008.1900067.
[15] J. Kumar and V. Garg, “Security analysis of unstructured data in NOSQL
MongoDB database,” in 2017 International Conference on Computing and
Communication Technologies for Smart Nation (IC3TSN), Gurgaon, 2017,
pp. 300–305, doi: 10.1109/IC3TSN.2017.8284495.
116
[16] H. A. Khan, A. Syed, A. Mohammad, and M. N. Halgamuge, “Computer
virus and protection methods using lab analysis,” in 2017 IEEE 2nd
International Conference on Big Data Analysis (ICBDA)(, Beijing, China,
2017, pp. 882–886, doi: 10.1109/ICBDA.2017.8078765.
[17] “VirusTotal.” [Online]. Available:
https://www.virustotal.com/gui/home/upload. [Accessed: 12-Dec-2019].
[18] P. Shahegh, T. Dietz, M. Cukier, A. Algaith, A. Brozik, and I. Gashi,
“AVAMAT: AntiVirus and malware analysis tool,” in 2017 IEEE 16th
International Symposium on Network Computing and Applications (NCA),
Cambridge, MA, 2017, pp. 1–4, doi: 10.1109/NCA.2017.8171379.
[19] “VirusTotal.” [Online]. Available: https://www.virustotal.com/gui/sign-in.
[Accessed: 13-Mar-2020].
[20] “API Virus Total,” VirusTotal. [Online]. Available:
https://developers.virustotal.com/v3.0/reference#files-scan. [Accessed: 13-
Mar-2020].
[21] “Free Malware Sample Sources for Researchers.” [Online]. Available:
https://zeltser.com/malware-sample-sources/. [Accessed: 12-Dec-2019].
[22] R. S. Pressman, Software Engineering : Practicioner’s Approach, 7th ed.
New York: McGraw-Hill Higher Education, 2012.
[23] Boris Beizer and John Wiley, “Black Box Testing: Techniques for
Functional Testing of Software and Systems - IEEE Journals & Magazine,”
IEEE Softw., vol. 13, no. 5, p. 98, Sep. 1996, doi: 10.1109/MS.1996.536464.
[24] P. Lan, “Andress, Jason Basics of Information Security, Second Edition.”
[25] “Types of Network Attacks against Confidentiality, Integrity and
Avilability.” [Online]. Available: https://www.omnisecu.com/ccna-
security/types-of-network-attacks.php. [Accessed: 13-Mar-2020].
[26] Kompasiana.com, “Sniffing Username dan Password dengan menggunakan
Wireshark,” KOMPASIANA. [Online]. Available:
https://www.kompasiana.com/www.lutfinurniswati.com/55186a50a333114c
07b665d5/sniffing-username-dan-password-dengan-menggunakan-
wireshark. [Accessed: 13-Mar-2020].
[27] Muchlis, “Pengertian dan Fungsi Wireshark, sisi Hacker vs Administrator
Jaringan,” Meretas DC, 23-Dec-2017. [Online]. Available:
https://meretas.com/wireshark-adalah/. [Accessed: 13-Mar-2020].
[28] “Pengertian Brute Force Attack - Teknik Hacking,” Link Pengetahuan.
[Online]. Available:
https://linkpengetahuan.blogspot.com/2019/03/pengertian-brute-force-attack-
teknik-hacking.html. [Accessed: 12-Mar-2020].
[29] M. Dahlan, A. Latubessy, M. Nurkamid, and L. H. Anggraini, “Pengujian
Dan Analisa Keamanan Website Terhadap Serangan SQL Injection (Studi
Kasus : Website UMK),” vol. 7, p. 7, 2015.
[30] M. S. Hasibuan, “Ancaman SYN Flooding dalam Jaringan.”
[31] Kompasiana.com, “Memahami Syn Flood Attack,” KOMPASIANA.
[Online]. Available:
https://www.kompasiana.com/edysusanto74/55777f2e2f977396119dc8ea/me
mahami-syn-flood-attack. [Accessed: 14-Mar-2020].
117
LAMPIRAN
A-1
Lampiran A List Program
Program Sistem Database Malware dibagi menjadi Client dan Server. Daftar
program dari sisi client ditunjukkan pada tabel A1. List Program Client. Program
ini berfungsi untuk menerima request dan input data dari pengguna dan
meneruskannya ke server. Sedangkan daftar program untuk server ditunjukkan
pada tabel A2. List Program Server. Program ini digunakan untuk mengolah request
yang diterima, menghubungkan sistem dengan database, dan memberikan response
ke sistem client.
A1. List Program Client
Sistem Admin
admin.php malware.php
admin_hapus.php malware_hapus.php
analisa.php malware_unduh.php
analisa_hapus.php malware_detail.php
analisa_unduh.php malware_edit.php
benign.php mitra.php
benign_hapus.php mitra_hapus.php
benign_unduh.php recent.php
benign_detail.php reg_admin.php
home.php reg_mitra.php
login.php tambah_benign.php
logout.php tambah_malware.php
Sistem User
deteksi.php deteksi_tiket.php
deteksi_aman.php deteksi_vt.php
deteksi_perlu_analisa.php deteksi_vtmsg.php
deteksi_proses.php index.php
deteksi_terdeteksi.php riwayat.php
Sistem Mitra
m.akun.php m.deteksi_vt.php
m.akun_edit.php m.deteksi_vtmsg.php
m.akun_pass.php m.index.php
m.deteksi.php m.lab.php
m.deteksi_aman.php m.lab_detail.php
m.deteksi_perlu_analisa.php m.lab_unduh.php
m.deteksi_proses.php m.login.php
m.deteksi_terdeteksi.php m.logout.php
m.deteksi_tiket.php m.riwayat.php
API
api_benign.php api_admin.php
api_malware.php api_mitra.php
api_baru.php api_recent.php
Function
function.php function_benign.php
function_deteksi.php function_malware.php
function_vt.php
A-2
A2. List Program Server
Controller API
Malware.php Mitra.php
Benign.php Recent.php
Baru.php Riwayat.php
Admin.php M_Riwayat.php
Models Malware_model.php Mitra_model.php
Benign_model.php Recent_model.php
Baru_model.php Riwayat_model.php
Admin_model.php m_Riwayat_model.php
Pada laporan penelitian ini, tidak semua kode program dilampirkan. Kode program
yang terlampir yaitu program deteksi Default dan Virus Total seperti padaLampiran
B, program API client pada Lampiran C, program controller server seperti pada
Lampiran D, dan program models server pada Lampiran E. Seluruh program sistem
database malware dapat dilihat dan diunduh di github pada:
https://github.com/relacamilia/dbmalware.
B-1
Lampiran B Kode Program Deteksi
B1. deteksi.php (Default) 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
require '../function/functions.php';
require '../function/functions_deteksi.php';
require '../function/functions_vt.php';
require '../api/api_malware.php';
require '../api/api_benign.php';
require '../api/api_baru.php';
require '../api/api_recent.php';
if (isset($_POST["submit"])) {
if(cekFileUser() < 1){
exit;
}
$file_user = $_FILES['file_user']['name'];
$ukuran_file_user = formatBytes($_FILES['file_user']['size']);
$explode = explode('.',$file_user);
$tipe_file_user = $explode[1];
$file = $_FILES['file_user']['tmp_name'];
$sha256_user = hash_file('sha256', $file);
if($_POST["scan"] === 'virustotal'){
header("location: deteksi_vt.php?file=$file &name=$file_user &sha
256=$sha256_user");
exit;
} else {
$rowm = getMalwareByHash($sha256_user);
if($rowm === 0) {
$rowb = getBenignByHash($sha256_user);
if($rowb === 0) {
$rowbaru = getBaruByHash($sha256_user);
if($rowbaru === 0){
header("Location:deteksi_perlu_analisa.php?file=$file_use
r&size=$ukuran_file_user&tipe=$tipe_file_user&sha256=$sha256_user");
uploadBaru($file, $file_user);
$data = [
'file_user' => $file_user,
'sha256_user' => $sha256_user,
'status' => "Perlu Analisa",
'metode' => "Default"
];
createRiwayat($data);
} else {
$id = $rowbaru["id_baru"];
header("Location: deteksi_proses.php?id=$id");
$data = [
'file_user' => $rowbaru["file_baru"],
'sha256_user' => $rowbaru["sha256_baru"],
'status' => "Proses Analisa",
'metode' => "Default"
];
createRiwayat($data);
}
} else {
$id = $rowb["id_benign"];
header("Location: deteksi_aman.php?id=$id");
$data = [
'file_user' => $rowb["file_benign"],
'sha256_user' => $rowb["sha256_benign"],
B-2
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
'status' => "File Aman",
'metode' => "Default"
];
createRiwayat($data);
}
} else {
$data = $rowm["id_malware"];
header("Location: deteksi_terdeteksi.php?id=$data");
$data = [
'file_user' => $rowm["file_malware"],
'sha256_user' => $rowm["sha256_malware"],
'status' => "Terdeteksi",
'metode' => "Default"
];
createRiwayat($data);
}
}
}
?>
B2. deteksi_vt.php (Virus Total) 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
require '../function/functions.php';
require '../function/functions_vt.php';
require '../api/api_recent.php';
$hash = $_GET['sha256'];
$file = $_GET['file'];
$name= $_GET['name'];
$js = virusTotal($hash);
if($js === 0){
$isi = [
'file_user' => $name,
'sha256_user' => $hash,
'status' => "Queue",
'metode' => "Virus Total"
];
createRiwayat($isi);
$result = scanVtUser($file, $hash);
if(is_array($result)){
$js = $result;
}
}
$data = $js['data']['attributes'];
$stats = $data['last_analysis_stats'];
$detec = $data['last_analysis_results'];
$exif = $data['exiftool'];
if(($stats['malicious']) == 0) {
$result = "UNDETECTED";
$img = "19.png";
$color ="success";
$isi = [
'file_user' => $name,
'sha256_user' => $hash,
'status' => "Undetected",
'metode' => "Virus Total"
];
createRiwayat($isi);
} else {
$result = "DETECTED";
B-3
43
44
45
46
47
48
49
50
51
52
53
$img = "21.png";
$color ="danger";
$isi = [
'file_user' => $name,
'sha256_user' => $hash,
'status' => "Detected",
'metode' => "Virus Total"
];
createRiwayat($isi);
}
?>
B3. functions_vt.php (Virus Total) 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
function virusTotal($hash){
$headers = array('x-apikey:e4f0c6fc1643f7fb301d1e19d3ab6720fcf
d3a2e7a625d909e2082647920906b');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.virustotal.com/api/v3/
files/$hash");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_USERAGENT, "gzip, My php curl client");
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,true);
curl_setopt($ch, CURLOPT_HTTPGET, true);
$result=curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status_code == 200) {
$js = json_decode($result, true);
return $js;
} else {
return 0;
}
curl_close ($ch);
}
function scanVtUser($file, $hash){
header("Content-Type: text/plain");
$apikey = "e4f0c6fc1643f7fb301d1e19d3ab6720fcfd3a2e7a625d909e
2082647920906b";
$report = 'https://www.virustotal.com/vtapi/v2/file/report?apikey='
.$apikey."&resource=".$hash;
$api_reply = file_get_contents($report);
$api_reply_array = json_decode($api_reply, true);
if($api_reply_array['response_code']==-2){
$msg = $api_reply_array['verbose_msg'];
header("Location: deteksi_vtmsg.php?msg=$msg");
exit;
}
if($api_reply_array['response_code']==1){
$result = $api_reply_array;
return $result;
}
if ($api_reply_array['response_code']=='0'){
$post_url = 'https://www.virustotal.com/vtapi/v2/file/scan';
if($size >= 32){
$api_reply = @file_get_contents('https://www.virustotal.com/vta
pi/v2/file/scan/upload_url?apikey='.$apikey);
$api_reply_array = json_decode($api_reply, true);
if(isset($api_reply_array['upload_url']) and $api_reply_array['
B-4
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
upload_url']!=''){
$post_url = $api_reply_array['upload_url'];
}
}
$post['apikey'] = $apikey;
$post['file'] = '@'.$file;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$post_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$api_reply = curl_exec ($ch);
curl_close ($ch);
$api_reply_array = json_decode($api_reply, true);
if($api_reply_array['response_code']==1){
$scanID = $api_reply_array['scan_id'];
header("Location: deteksi_vtmsg.php?scanID=$scanID");
exit;
}
}
}
function scanVtMitra($idm, $file, $hash){
header("Content-Type: text/plain");
$apikey = "e4f0c6fc1643f7fb301d1e19d3ab6720fcfd3a2e7a625d909e2082
647920906b";
$report = 'https://www.virustotal.com/vtapi/v2/file/report?apikey='
.$apikey."&resource=".$hash;
$api_reply = file_get_contents($report);
$api_reply_array = json_decode($api_reply, true);
if($api_reply_array['response_code']==-2){
$msg = $api_reply_array['verbose_msg'];
header("Location: m.deteksi_vtmsg.php?idm=$idm &msg=$msg");
exit;
}
if($api_reply_array['response_code']==1){
$result = $api_reply_array;
return $result;
}
if($api_reply_array['response_code']=='0'){
$post_url = 'https://www.virustotal.com/vtapi/v2/file/scan';
$post['apikey'] = $apikey;
$post['file'] = '@'.$file;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$post_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$api_reply = curl_exec ($ch);
curl_close ($ch);
$api_reply_array = json_decode($api_reply, true);
if($api_reply_array['response_code']==1){
$scanID = $api_reply_array['scan_id'];
header("Location:m.deteksi_vtmsg.php?idm=$idm&scanID=$scanID");
exit;
}
}
}
?>
C-1
Lampiran C Kode Program REST API Client
Program ini digunakan untuk mengirimkan request ke REST API Server.
C1. api_malware.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
require '../../guzzle/vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'http://localhost/tesisrela/rest-server/api/'
]);
function getAllMalware(){
global $client;
$response = $client->request('GET', "malware", []);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'];
}
function getMalwareById($id){
global $client;
$response = $client->request('GET', "malware", [
'query' => ['id_malware' => $id]
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'][0];
}
function getMalwareByHash($sha256_user){
global $client;
$response = $client->request('GET', "malware", [
'query' => ['sha256' => $sha256_user]
]);
$result = json_decode($response->getBody()->getContents(),true);
if (($result["status"]) === 0 ) {
return 0;
} else {
return $result['data'][0];
}
}
function deleteMalware($id){
global $client;
$response = $client->request('DELETE', "malware", [
'form_params' => ['id_malware' => $id]
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result;
}
function createMalware($dataMal){
global $client;
$contents = $_FILES['file_malware']['tmp_name'];
$name = $_FILES['file_malware']['name'];
$data = [
'contents' => $contents,
'waktu' => date("d-m-Y h:i:s"),
'file_malware' => $name,
'tipe_file_malware' => "zip",
'ukuran_file_malware' => formatBytes($_FILES['file_malware']
['size']),
'md5_malware' => hash_file('md5', $contents),
'sha1_malware' => hash_file('sha1', $contents),
'sha256_malware' => hash_file('sha256', $contents),
'ssdeep' => htmlspecialchars($dataMal["ssdeep"]),
'vhash' => htmlspecialchars($dataMal["vhash"]),
'nama' => htmlspecialchars($dataMal["nama"]),
'nama_lain' => htmlspecialchars($dataMal["nama_lain"]),
'jenis' => htmlspecialchars($dataMal["jenis"]),
C-2
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
'karakteristik' =>htmlspecialchars($dataMal["karakteristik"])
'cara_kerja' => htmlspecialchars($dataMal["cara_kerja"]),
'penyebaran' => htmlspecialchars($dataMal["penyebaran"]),
'bahaya' => htmlspecialchars($dataMal["bahaya"]),
'target' => htmlspecialchars($dataMal["target"]),
'ket' => htmlspecialchars($dataMal["ket"]),
'pencegahan' => htmlspecialchars($dataMal["pencegahan"]),
'penanganan' => htmlspecialchars($dataMal["penanganan"]),
'pemulihan' => htmlspecialchars($dataMal["pemulihan"]),
'pembuat_file' => htmlspecialchars($dataMal["pembuat_file"]),
'note' => htmlspecialchars($dataMal["note"]),
'kontak' => htmlspecialchars($dataMal["kontak"]),
'enkripsi' => htmlspecialchars($dataMal["enkripsi"]),
'tebusan' => htmlspecialchars($dataMal["tebusan"])
];
$response = $client->request('POST', 'malware', [
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result["status"];
}
function updateMalware($dataMal){
global $client;
$data = [
'id_malware' => $dataMal["id_malware"],
'waktu' => $dataMal["waktu"],
'file_malware' => $dataMal["file_malware"],
'tipe_file_malware' => $dataMal["tipe_file_malware"],
'ukuran_file_malware' => $dataMal["ukuran_file_malware"],
'md5_malware' => $dataMal["md5_malware"],
'sha1_malware' => $dataMal["sha1_malware"],
'sha256_malware' => $dataMal["sha256_malware"],
'ssdeep' => htmlspecialchars($dataMal["ssdeep"]),
'vhash' => htmlspecialchars($dataMal["vhash"]),
'nama' => htmlspecialchars($dataMal["nama"]),
'nama_lain' => htmlspecialchars($dataMal["nama_lain"]),
'jenis' => htmlspecialchars($dataMal["jenis"]),
'karakteristik'=>htmlspecialchars($dataMal["karakteristik"]),
'cara_kerja' => htmlspecialchars($dataMal["cara_kerja"]),
'penyebaran' => htmlspecialchars($dataMal["penyebaran"]),
'bahaya' => htmlspecialchars($dataMal["bahaya"]),
'target' => htmlspecialchars($dataMal["target"]),
'ket' => htmlspecialchars($dataMal["ket"]),
'pencegahan' => htmlspecialchars($dataMal["pencegahan"]),
'penanganan' => htmlspecialchars($dataMal["penanganan"]),
'pemulihan' => htmlspecialchars($dataMal["pemulihan"]),
'pembuat_file' => htmlspecialchars($dataMal["pembuat_file"]),
'note' => htmlspecialchars($dataMal["note"]),
'kontak' => htmlspecialchars($dataMal["kontak"]),
'enkripsi' => htmlspecialchars($dataMal["enkripsi"]),
'tebusan' => htmlspecialchars($dataMal["tebusan"])
];
$response = $client->request('PUT', 'malware',[
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(), true);
return $result;
}
function updateMalwareFile($dataMal){
global $client;
$contents = $_FILES['file_malware_baru']['tmp_name'];
$name = $_FILES['file_malware_baru']['name'];
$data = [
'id_malware' => $dataMal["id_malware"],
'waktu' => $dataMal["waktu"],
C-3
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
'file_malware' => $name,
'tipe_file_malware' => "zip",
'ukuran_file_malware'=>formatBytes($_FILES['file_malware_baru
']['size']),
'md5_malware' => hash_file('md5', $contents),
'sha1_malware' => hash_file('sha1', $contents),
'sha256_malware' => hash_file('sha256', $contents),
'ssdeep' => htmlspecialchars($dataMal["ssdeep"]),
'vhash' => htmlspecialchars($dataMal["vhash"]),
'nama' => htmlspecialchars($dataMal["nama"]),
'nama_lain' => htmlspecialchars($dataMal["nama_lain"]),
'jenis' => htmlspecialchars($dataMal["jenis"]),
'karakteristik'=>htmlspecialchars($dataMal["karakteristik"]),
'cara_kerja' => htmlspecialchars($dataMal["cara_kerja"]),
'penyebaran' => htmlspecialchars($dataMal["penyebaran"]),
'bahaya' => htmlspecialchars($dataMal["bahaya"]),
'target' => htmlspecialchars($dataMal["target"]),
'ket' => htmlspecialchars($dataMal["ket"]),
'pencegahan' => htmlspecialchars($dataMal["pencegahan"]),
'penanganan' => htmlspecialchars($dataMal["penanganan"]),
'pemulihan' => htmlspecialchars($dataMal["pemulihan"]),
'pembuat_file' => htmlspecialchars($dataMal["pembuat_file"]),
'note' => htmlspecialchars($dataMal["note"]),
'kontak' => htmlspecialchars($dataMal["kontak"]),
'enkripsi' => htmlspecialchars($dataMal["enkripsi"]),
'tebusan' => htmlspecialchars($dataMal["tebusan"]),
'contents' => $contents
];
$response = $client->request('PUT', 'malware',[
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(), true);
return $result;
}
?>
C2. api_benign.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
require '../../guzzle/vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'http://localhost/tesisrela/rest-server/api/'
]);
function getAllBenign(){
global $client;
$response = $client->request('GET', "benign", []);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'];
}
function getBenignById($id){
global $client;
$response = $client->request('GET', "benign", [
'query' => ['id_benign' => $id]
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'][0];
}
function getBenignByHash($sha256_user){
global $client;
$response = $client->request('GET', "benign", [
'query' => ['sha256' => $sha256_user]
]);
$result = json_decode($response->getBody()->getContents(),true);
if (($result["status"]) === 0 ) {
C-4
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
return 0;
} else {
return $result['data'][0];
}
}
function deleteBenign($id){
global $client;
$response = $client->request('DELETE', "benign", [
'form_params' => ['id_benign' => $id]
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result;
}
function createBenign($dataMal){
global $client;
$contents = $_FILES['file_benign']['tmp_name'];
$name = $_FILES['file_benign']['name'];
$data = [
'contents' => $contents,
'file_benign' => $name,
'tipe_file_benign' => "zip",
'ukuran_file_benign'=>formatBytes($_FILES['file_benign']['siz
e']),
'md5_benign' => $md5 = hash_file('md5', $contents),
'sha1_benign' => $sha1 = hash_file('sha1', $contents),
'sha256_benign'=>$sha256_benign=hash_file('sha256',$contents)
];
$response = $client->request('POST', 'benign', [
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result["status"];
}
?>
C3. api_baru.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
require '../../guzzle/vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'http://localhost/tesisrela/rest-server/api/'
]);
function getAllBaru(){
global $client;
$response = $client->request('GET', "baru", []);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'];
}
function getBaruById($id){
global $client;
$response = $client->request('GET', "baru", [
'query' => ['id_baru' => $id]
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'][0];
}
function getBaruByHash($sha256_user){
global $client;
$response = $client->request('GET', "baru", [
'query' => ['sha256' => $sha256_user]
]);
$result = json_decode($response->getBody()->getContents(),true);
if (($result["status"]) === 0 ) {
C-5
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
return 0;
} else {
return $result['data'][0];
}
}
function deleteBaru($id){
global $client;
$response = $client->request('DELETE', "baru", [
'form_params' => ['id_baru' => $id]
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result;
}
function createBaru($data){
global $client;
$file = explode(".", $data['file_baru']);
$file_baru = $file[0]. ".zip";
$data = [
'file_baru' => $file_baru,
'waktu_input' => date("d-m-Y"),
'tipe_file_baru' => "zip",
'ukuran_file_baru' => $data['ukuran_file_baru'],
'sha256_baru' => $data['sha256_baru'],
'pengirim' => $data['pengirim'],
'email' => htmlspecialchars($data['email']),
'status' => "Perlu Analisa"
];
$response = $client->request('POST', 'baru', [
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(),true);
if(($result['status']) === 0 ){
return 0;
} else {
return 1;
}
}
function uploadBaru($file, $file_user){
global $client;
$data = [
'contents' => $file,
'file_baru' => $file_user
];
$response = $client->request('POST', 'baru', [
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(),true);
if(($result['status']) === 0 ){
return 0;
} else {
return 1;
}
}
?>
C4. api_admin.php
1
2
3
4
5
6
7
8
<?php
use Restserver\Libraries\REST_Controller;
defined('BASEPATH') or exit ('No direct script access allowed');
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';
class Admin extends REST_Controller {
public function __construct(){
parent::__construct();
C-6
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
$this->load->model('Admin_model', 'admin')
}
public function index_get(){
$id = $this->get('id_admin');
$username = $this->get('username');
if (($id && $username) === null) {
$admin = $this->admin->getAdmin();
} else if ($username === null){
$admin = $this->admin->getAdmin($id);
} else if ($id === null){
$admin = $this->admin->getAdminByUsername($username);
}
if($admin){
$this->response([
'status' => 1,
'data' => $admin
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'data' => 'id admin tidak ditemukan'
]);
}
}
public function index_get_admin(){
$username = $this->get('username');
$admin = $this->admin->getAdminByUsername($username);
if($admin){
$this->response([
'status' => 1,
'data' => $admin
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'Username tidak ditemukan'
]);
}
}
public function index_delete(){
$id = $this->delete('id_admin');
if ($id === null){
$this->response([
'status' => 0,
'message' => 'masukkan id admin yang ingin dihapus'
], REST_Controller::HTTP_BAD_REQUEST);
} else {
if( $this->admin->deleteAdmin($id) > 0){
$this->response([
'status' => 1,
'id' => $id,
'message' => 'terhapus'
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'id admin tidak ditemukan'
]);
}
}
}
public function index_post(){
$data = [
'nama' => $this->post('nama'),
'username' => $this->post('username'),
C-7
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
'password' => $this->post('password'),
'email' => $this->post('email')
];
$username = $data['username'];
$admin = $this->admin->getAdminByUsername($username);
if($admin){
$this->response([
'status' => 2,
'message' => 'Username sudah ada dalam DB admin!'
]);
} else {
if( $this->admin->createAdmin($data) > 0){
$this->response([
'status' => 1,
'message' => 'file baru berhasil ditambahkan'
], REST_Controller::HTTP_CREATED);
} else {
$this->response([
'status' => 0,
'message' => 'gagal menambahkan data'
]);
}
}
}
public function index_put(){
$id = $this->put('id_admin');
$data = [
'nama' => $this->put('nama'),
'username' => $this->put('username'),
'password' => $this->put('password'),
'email' => $this->put('email')
];
if( $this->admin->updateAdmin($data, $id) > 0){
$this->response([
'status' => 1,
'message' => 'data berhasil diubah'
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'gagal mengubah data'
]);
}
}
}
?>
C5. api_mitra.php 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
require '../../guzzle/vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'http://localhost/tesisrela/rest-server/api/'
]);
function getAllMitra(){
global $client;
$response = $client->request('GET', "mitra", []);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'];
}
function getMitraById($idm){
global $client;
$response = $client->request('GET', "mitra", [
'query' => ['id_mitra' => $idm]
C-8
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'][0];
}
function getMitraByUsername($username){
global $client;
$response = $client->request('GET', "mitra", [
'query' => ['username' => $username]
]);
$result = json_decode($response->getBody()->getContents(),true);
if (($result["status"]) === 0 ) {
return 0;
} else {
return $result["data"][0];
}
}
function deleteMitra($id){
global $client;
$response = $client->request('DELETE', "mitra", [
'form_params' => ['id_mitra' => $id]
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result;
}
function createMitra($dataMal){
global $client;
$password= htmlspecialchars($dataMal["password"]);
$password = password_hash($password, PASSWORD_DEFAULT);
$data = [
'nama' => htmlspecialchars($dataMal["nama"]),
'username' => strtolower(stripslashes($dataMal["username"])),
'password' => $password,
'email' => htmlspecialchars($dataMal["email"]),
'instansi' => htmlspecialchars($dataMal["instansi"]),
'foto' => "default.png"
];
$response = $client->request('POST', 'mitra', [
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result['status'];
}
function updateMitraFoto($dataMit){
global $client;
$contents = $_FILES['foto']['tmp_name'];
$namaFoto = $_FILES['foto']['name'];
$data = [
'id_mitra' => $dataMit["id_mitra"],
'nama' => htmlspecialchars($dataMit["nama"]),
'username' => htmlspecialchars($dataMit["username"]),
'password' => $dataMit["password"],
'email' => htmlspecialchars($dataMit["email"]),
'instansi' => htmlspecialchars($dataMit["instansi"]),
'foto' => htmlspecialchars($namaFoto),
'contents' => $contents
];
$response = $client->request('PUT', 'mitra',[
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(), true);
return $result['status'];
}
function updateMitra($dataMit){
global $client;
$data = [
C-9
82
83
84
85
86
87
88
89
90
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
'id_mitra' => $dataMit["id_mitra"],
'nama' => htmlspecialchars($dataMit["nama"]),
'username' => htmlspecialchars($dataMit["username"]),
'password' => $dataMit["password"],
'email' => htmlspecialchars($dataMit["email"]),
'instansi' => htmlspecialchars($dataMit["instansi"]),
'foto' => $dataMit["foto_lama"]
];
$response = $client->request('PUT', 'mitra',[
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(), true);
return $result['status'];
}
function updateMitraPass($dataMit){
global $client;
$pass_baru = htmlspecialchars($dataMit["password"]);
$password = password_hash($pass_baru, PASSWORD_DEFAULT);
$data = [
'id_mitra' => $dataMit["idm"],
'nama' => htmlspecialchars($dataMit["nama"]),
'username' => htmlspecialchars($dataMit["username"]),
'password' => $password,
'email' => htmlspecialchars($dataMit["email"]),
'instansi' => htmlspecialchars($dataMit["instansi"]),
'foto' => htmlspecialchars($dataMit["foto"])
];
$response = $client->request('PUT', 'mitra',[
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(), true);
return $result['status'];
}
?>
C6. api_recent.php 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
require '../../guzzle/vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'http://localhost/tesisrela/rest-server/api/'
]);
function getAllRecent(){
global $client;
$response = $client->request('GET', "recent", []);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'];
}
function createRecent($dataRec){
global $client;
$data = [
'waktu_input' => date("d-m-Y"),
'file' => $dataRec["file"],
'sha256' => $dataRec["sha256"],
'status' => $dataRec["status"],
'aksi' => $dataRec["aksi"],
'oleh' => $dataRec["oleh"]
];
$response = $client->request('POST', 'recent', [
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result;
C-10
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
}
function getMRiwayat($idm){
global $client;
$response = $client->request('GET', "m_riwayat", [
'query' => ['idm' => $idm]
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'];
}
function createMRiwayat($data){
global $client;
$data = [
'idm' => $data["idm"],
'waktu_input' => date("d-m-Y"),
'file_mitra' => $data["file_mitra"],
'sha256_mitra' => $data["sha256_mitra"],
'status' => $data["status"],
'aksi' => $data["aksi"],
'metode' => $data["metode"]
];
$response = $client->request('POST', 'm_riwayat', [
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result;
}
function getRiwayat(){
global $client;
$response = $client->request('GET', "riwayat", []);
$result = json_decode($response->getBody()->getContents(),true);
return $result['data'];
}
function createRiwayat($data){
global $client;
$data = [
'waktu_input' => date("d-m-Y"),
'file_user' => $data["file_user"],
'sha256_user' => $data["sha256_user"],
'status' => $data["status"],
'metode' => $data["metode"]
];
$response = $client->request('POST', 'riwayat', [
'form_params' => $data
]);
$result = json_decode($response->getBody()->getContents(),true);
return $result;
}
?>
D-1
Lampiran D Kode Program REST API Server (Controller)
Program ini digunakan untuk mengelola Request dari REST API Client dan
mengirimkan Response ke REST API Client.
D1. Malware.php 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
use Restserver\Libraries\REST_Controller;
defined('BASEPATH') or exit ('No direct script access allowed');
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';
class Malware extends REST_Controller{
public function __construct(){
parent::__construct();
$this->load->model('Malware_model', 'malware');
}
public function index_get(){
$id = $this->get('id_malware');
$sha256 = $this->get('sha256');
if (($id && $sha256) === null) {
$malware = $this->malware->getMalware();
} else if ($sha256 === null){
$malware = $this->malware->getMalware($id);
} else if ($id === null){
$malware = $this->malware->getMalwareByHash($sha256);
}
if($malware){
$this->response([
'status' => 1,
'data' => $malware
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'data' => 'tidak ada hash yang sama'
]);
}
}
public function index_delete(){
$id = $this->delete('id_malware');
if ($id === null){
$this->response([
'status' => o,
'message' => 'masukkan id malware yang ingin dihapus'
]);
} else {
if( $this->malware->deleteMalware($id) > 0){
$this->response([
'status' => 1,
'id' => $id,
'message' => 'terhapus'
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'id malware tidak ditemukan'
]);
}
}
}
public function index_post(){
$sha256 = $this->post('sha256_malware');
$fileName = $this->post('file_malware');
D-2
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
$contents = $this->post('contents');
$malware = $this->malware->getMalwareByHash($sha256);
if($malware){
$this->response([
'status' => 2,
'message' => 'Sampel yg sama sdh tersimpan di DB Malware!'
]);
} else {
$file_malware=$this->malware->uploadMalware($contents,$fileName);
$data = [
'waktu' => $this->post('waktu'),
'file_malware' => $file_malware,
'tipe_file_malware' => $this->post('tipe_file_malware'),
'ukuran_file_malware'=>$this->post('ukuran_file_malware'),
'md5_malware' => $this->post('md5_malware'),
'sha1_malware' => $this->post('sha1_malware'),
'sha256_malware' => $this->post('sha256_malware'),
'ssdeep' => $this->post('ssdeep'),
'vhash' => $this->post('vhash'),
'nama' => $this->post('nama'),
'nama_lain' => $this->post('nama_lain'),
'jenis' => $this->post('jenis'),
'karakteristik' => $this->post('karakteristik'),
'cara_kerja' => $this->post('cara_kerja'),
'penyebaran' => $this->post('penyebaran'),
'bahaya' => $this->post('bahaya'),
'target' => $this->post('target'),
'ket' => $this->post('ket'),
'pencegahan' => $this->post('pencegahan'),
'penanganan' => $this->post('penanganan'),
'pemulihan' => $this->post('pemulihan'),
'pembuat_file' => $this->post('pembuat_file'),
'note' => $this->post('note'),
'kontak' => $this->post('kontak'),
'enkripsi' => $this->post('enkripsi'),
'tebusan' => $this->post('tebusan')
];
if( $this->malware->createMalware($data) > 0){
$this->response([
'status' => 1,
'message' => 'file baru berhasil ditambahkan'
], REST_Controller::HTTP_CREATED);
} else {
$this->response([
'status' => 0,
'message' => 'gagal menambahkan data'
]);
}
}
}
public function index_put(){
$id = $this->put('id_malware');
$contents = $this->put('contents');
$fileName = $this->put('file_malware');
if($contents !== null){
$fileName=$this->malware->uploadMalware($contents,$fileName);
if($fileName === 0){
$this->response([
'status' => 2,
'message' => 'Gagal mengupload foto!'
]);
}
}
$data = [
'waktu' => $this->put('waktu'),
D-3
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
'file_malware' => $this->put('file_malware'),
'tipe_file_malware' => $this->put('tipe_file_malware'),
'ukuran_file_malware' => $this->put('ukuran_file_malware'),
'md5_malware' => $this->put('md5_malware'),
'sha1_malware' => $this->put('sha1_malware'),
'sha256_malware' => $this->put('sha256_malware'),
'ssdeep' => $this->put('ssdeep'),
'vhash' => $this->put('vhash'),
'nama' => $this->put('nama'),
'nama_lain' => $this->put('nama_lain'),
'jenis' => $this->put('jenis'),
'karakteristik' => $this->put('karakteristik'),
'cara_kerja' => $this->put('cara_kerja'),
'penyebaran' => $this->put('penyebaran'),
'bahaya' => $this->put('bahaya'),
'target' => $this->put('target'),
'ket' => $this->put('ket'),
'pencegahan' => $this->put('pencegahan'),
'penanganan' => $this->put('penanganan'),
'pemulihan' => $this->put('pemulihan'),
'pembuat_file' => $this->put('pembuat_file'),
'note' => $this->put('note'),
'kontak' => $this->put('kontak'),
'enkripsi' => $this->put('enkripsi'),
'tebusan' => $this->put('tebusan'),
];
if( $this->malware->updateMalware($data, $id) > 0){
$this->response([
'status' => 1,
'message' => 'Data berhasil diubah!'
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'Gagal mengubah data!'
]);
}
}
}
?>
D2. Benign.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
use Restserver\Libraries\REST_Controller;
defined('BASEPATH') or exit ('No direct script access allowed');
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';
class Benign extends REST_Controller{
public function __construct(){
parent::__construct();
$this->load->model('Benign_model', 'benign');
}
public function index_get(){
$id = $this->get('id_benign');
$sha256 = $this->get('sha256');
if (($id && $sha256) === null) {
$benign = $this->benign->getBenign();
} else if ($sha256 === null){
$benign = $this->benign->getBenign($id);
} else if ($id === null){
$benign = $this->benign->getBenignByHash($sha256);
}
if($benign){
$this->response([
D-4
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
'status' => 1,
'data' => $benign
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'data' => 'Tidak ada hash yang sama'
]);
}
}
public function index_delete(){
$id = $this->delete('id_benign');
if ($id === null){
$this->response([
'status' => 0,
'message' => 'masukkan id benign yang ingin dihapus'
]);
} else {
if( $this->benign->deleteBenign($id) > 0){
$this->response([
'status' => 1,
'id' => $id,
'message' => 'terhapus'
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'id benign tidak ditemukan'
]);
}
}
}
public function index_post(){
$sha256 = $this->post('sha256_benign');
$fileName = $this->post('file_benign');
$contents = $this->post('contents');
$benign = $this->benign->getBenignByHash($sha256);
if($benign){
$this->response([
'status' => 2,
'message' => 'Sampel yang sama sdh ada di DB Benign!'
]);
} else {
$file_benign=$this->benign->uploadBenign($contents,$fileName);
$data = [
'file_benign' => $file_benign,
'tipe_file_benign' => $this->post('tipe_file_benign'),
'ukuran_file_benign' => $this->post('ukuran_file_benign'),
'md5_benign' => $this->post('md5_benign'),
'sha1_benign' => $this->post('sha1_benign'),
'sha256_benign' => $this->post('sha256_benign')
];
if( $this->benign->createBenign($data) > 0){
$this->response([
'status' => 1,
'message' => 'file baru berhasil ditambahkan'
], REST_Controller::HTTP_CREATED);
} else {
$this->response([
'status' => 0,
'message' => 'gagal menambahkan data'
]);
}
}
}
D-5
88
89
}
?>
D3. Baru.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
use Restserver\Libraries\REST_Controller;
defined('BASEPATH') or exit ('No direct script access allowed');
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';
class Baru extends REST_Controller {
public function __construct(){
parent::__construct();
$this->load->model('Baru_model', 'baru');
}
public function index_get(){
$id = $this->get('id_baru');
$sha256 = $this->get('sha256');
if (($id && $sha256) === null) {
$baru = $this->baru->getBaru();
} else if ($sha256 === null){
$baru = $this->baru->getBaru($id);
} else if ($id === null){
$baru = $this->baru->getBaruByHash($sha256);
}
if($baru){
$this->response([
'status' => 1,
'data' => $baru
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'data' => 'Tidak ada hash yang sama'
]);
}
}
public function index_delete(){
$id = $this->delete('id_baru');
if ($id === null){
$this->response([
'status' => 0,
'message' => 'masukkan id baru yang ingin dihapus'
]);
} else {
if( $this->baru->deleteBaru($id) > 0){
$this->response([
'status' => 1,
'id' => $id,
'message' => 'terhapus'
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'id baru tidak ditemukan'
]);
}
}
}
public function index_post(){
$contents = $this->post('contents');
$fileName = $this->post('file_baru');
if( $contents !== null){
$file_baru = $this->baru->uploadBaru($contents,$fileName);
D-6
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
} else {
$data = [
'file_baru' => $fileName,
'waktu_input' => $this->post('waktu_input'),
'tipe_file_baru' => $this->post('tipe_file_baru'),
'ukuran_file_baru' => $this->post('ukuran_file_baru'),
'sha256_baru' => $this->post('sha256_baru'),
'pengirim' => $this->post('pengirim'),
'email' => $this->post('email'),
'status' => $this->post('status')
];
if( $this->baru->createBaru($data) > 0){
$this->response([
'status' => 1,
'message' => 'file baru berhasil ditambahkan'
], REST_Controller::HTTP_CREATED);
} else {
$this->response([
'status' => 0,
'message' => 'gagal menambahkan data'
]);
}
}
}
}
?>
D4. Admin.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
use Restserver\Libraries\REST_Controller;
defined('BASEPATH') or exit ('No direct script access allowed');
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';
class Admin extends REST_Controller {
public function __construct(){
parent::__construct();
$this->load->model('Admin_model', 'admin');
}
public function index_get(){
$id = $this->get('id_admin');
$username = $this->get('username');
if (($id && $username) === null) {
$admin = $this->admin->getAdmin();
} else if ($username === null){
$admin = $this->admin->getAdmin($id);
} else if ($id === null){
$admin = $this->admin->getAdminByUsername($username);
}
if($admin){
$this->response([
'status' => 1,
'data' => $admin
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'data' => 'id admin tidak ditemukan'
]);
}
}
public function index_get_admin(){
$username = $this->get('username');
$admin = $this->admin->getAdminByUsername($username);
D-7
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
100
101
102
103
104
105
106
107
108
109
110
if($admin){
$this->response([
'status' => 1,
'data' => $admin
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'Username tidak ditemukan'
]);
}
}
public function index_delete(){
$id = $this->delete('id_admin');
if ($id === null){
$this->response([
'status' => 0,
'message' => 'masukkan id admin yang ingin dihapus'
], REST_Controller::HTTP_BAD_REQUEST);
} else {
if( $this->admin->deleteAdmin($id) > 0){
$this->response([
'status' => 1,
'id' => $id,
'message' => 'terhapus'
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'id admin tidak ditemukan'
]);
}
}
}
public function index_post(){
$data = [
'nama' => $this->post('nama'),
'username' => $this->post('username'),
'password' => $this->post('password'),
'email' => $this->post('email')
];
$username = $data['username'];
$admin = $this->admin->getAdminByUsername($username);
if($admin){
$this->response([
'status' => 2,
'message' => 'Username sudah terdaftar dlm DB admin!'
]);
} else {
if( $this->admin->createAdmin($data) > 0){
$this->response([
'status' => 1,
'message' => 'file baru berhasil ditambahkan'
], REST_Controller::HTTP_CREATED);
} else {
$this->response([
'status' => 0,
'message' => 'gagal menambahkan data'
]);
}
}
}
public function index_put(){
$id = $this->put('id_admin');
$data = [
D-8
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
'nama' => $this->put('nama'),
'username' => $this->put('username'),
'password' => $this->put('password'),
'email' => $this->put('email')
];
if( $this->admin->updateAdmin($data, $id) > 0){
$this->response([
'status' => 1,
'message' => 'data berhasil diubah'
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'gagal mengubah data'
]);
}
}
}
?>
D5. Mitra.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
use Restserver\Libraries\REST_Controller;
defined('BASEPATH') or exit ('No direct script access allowed');
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';
class Mitra extends REST_Controller{
public function __construct(){
parent::__construct();
$this->load->model('Mitra_model', 'mitra');
}
public function index_get(){
$id = $this->get('id_mitra');
$username = $this->get('username');
if (($id && $username) === null) {
$mitra = $this->mitra->getMitra();
} else if ($username === null){
$mitra = $this->mitra->getMitra($id);
} else if ($id === null){
$mitra = $this->mitra->getMitraByUsername($username);
}
if($mitra){
$this->response([
'status' => 1,
'data' => $mitra
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'data' => 'id mitra tidak ditemukan'
]);
}
}
public function index_delete(){
$id = $this->delete('id_mitra');
if ($id === null){
$this->response([
'status' => 0,
'message' => 'masukkan id mitra yang ingin dihapus'
]);
} else {
if( $this->mitra->deleteMitra($id) > 0){
$this->response([
D-9
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
'status' => 1,
'id' => $id,
'message' => 'terhapus'
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'id mitra tidak ditemukan'
]);
}
}
}
public function index_post(){
$data = [
'nama' => $this->post('nama'),
'username' => $this->post('username'),
'password' => $this->post('password'),
'email' => $this->post('email'),
'instansi' => $this->post('instansi'),
'foto' => $this->post('foto')
];
$username = $data['username'];
$mitra= $this->mitra->getMitraByUsername($username);
if($mitra){
$this->response([
'status' => 2,
'message' => 'Username sudah terdaftar di DB Mitra!'
]);
} else {
if( $this->mitra->createMitra($data) > 0){
$this->response([
'status' => 1,
'message' => 'file baru berhasil ditambahkan'
], REST_Controller::HTTP_CREATED);
} else {
$this->response([
'status' => 0,
'message' => 'gagal menambahkan data'
]);
}
}
}
public function index_put(){
$id = $this->put('id_mitra');
$contents = $this->put('contents');
$namaFoto = $this->put('foto');
if($contents !== null){
$foto = $this->mitra->uploadFoto($contents, $namaFoto);
if($foto === 0){
$this->response([
'status' => 2,
'message' => 'Gagal mengupload foto!'
]);
}
}
$data = [
'nama' => $this->put('nama'),
'username' => $this->put('username'),
'password' => $this->put('password'),
'email' => $this->put('email'),
'instansi' => $this->put('instansi'),
'foto' => $this->put('foto')
];
if( $this->mitra->updateMitra($data, $id) > 0){
$this->response([
D-10
118
119
120
121
122
123
124
125
126
127
128
129
'status' => 1,
'message' => 'Data berhasil diubah'
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'Gagal mengubah data'
]);
}
}
}
?>
D6. Recent.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
use Restserver\Libraries\REST_Controller;
defined('BASEPATH') or exit ('No direct script access allowed');
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';
class Recent extends REST_Controller{
public function __construct(){
parent::__construct();
$this->load->model('Recent_model', 'recent');
}
public function index_get(){
$recent = $this->recent->getRecent();
if($recent){
$this->response([
'status' => 1,
'data' => $recent
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'Gagal menampilkan recent!'
]);
}
}
public function index_post(){
$data = [
'waktu_input' => $this->post('waktu_input'),
'file' => $this->post('file'),
'sha256' => $this->post('sha256'),
'status' => $this->post('status'),
'aksi' => $this->post('aksi'),
'oleh' => $this->post('oleh')
];
if( $this->recent->createRecent($data) > 0){
$this->response([
'status' => 1,
'message' => 'File baru berhasil ditambahkan!'
], REST_Controller::HTTP_CREATED);
} else {
$this->response([
'status' => 0,
'message' => 'Gagal menambahkan data!'
]);
}
}
}
?>
D-11
D7. Riwayat.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
use Restserver\Libraries\REST_Controller;
defined('BASEPATH') or exit ('No direct script access allowed');
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';
class Riwayat extends REST_Controller{
public function __construct(){
parent::__construct();
$this->load->model('Riwayat_model', 'riwayat');
}
public function index_get(){
$riwayat = $this->riwayat->getRiwayat();
if($riwayat){
$this->response([
'status' => 1,
'data' => $riwayat
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'Gagal menampilkan riwayat!'
]);
}
}
public function index_post(){
$data = [
'waktu_input' => $this->post('waktu_input'),
'file_user' => $this->post('file_user'),
'sha256_user' => $this->post('sha256_user'),
'status' => $this->post('status'),
'metode' => $this->post('metode')
];
if( $this->riwayat->createRiwayat($data) > 0){
$this->response([
'status' => 1,
'message' => 'File baru berhasil ditambahkan!'
], REST_Controller::HTTP_CREATED);
} else {
$this->response([
'status' => 0,
'message' => 'Gagal menambahkan data!'
]);
}
}
}
?>
D8. m_Riwayat.php 1
2
3
4
5
6
7
8
9
10
<?php
use Restserver\Libraries\REST_Controller;
defined('BASEPATH') or exit ('No direct script access allowed');
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';
class m_Riwayat extends REST_Controller{
public function __construct(){
parent::__construct();
$this->load->model('m_Riwayat_model', 'm_riwayat');
}
D-12
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public function index_get(){
$idm = $this->get('idm');
$m_riwayat = $this->m_riwayat->getMRiwayat($idm);
if($m_riwayat){
$this->response([
'status' => 1,
'data' => $m_riwayat
], REST_Controller::HTTP_OK);
} else {
$this->response([
'status' => 0,
'message' => 'id m_riwayat tidak ditemukan'
]);
}
}
public function index_post(){
$data = [
'idm' => $this->post('idm'),
'waktu_input' => $this->post('waktu_input'),
'file_mitra' => $this->post('file_mitra'),
'sha256_mitra' => $this->post('sha256_mitra'),
'status' => $this->post('status'),
'aksi' => $this->post('aksi'),
'metode' => $this->post('metode')
];
if( $this->m_riwayat->createMRiwayat($data) > 0){
$this->response([
'status' => 1,
'message' => 'file baru berhasil ditambahkan'
], REST_Controller::HTTP_CREATED);
} else {
$this->response([
'status' => 0,
'message' => 'gagal menambahkan data'
]);
}
}
}
?>
E-1
Lampiran E Kode Program REST API Server (Models)
E1. Malware_model.php 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
class Malware_model extends CI_Model{
public function getMalware($id = null){
if($id === null){
return $this->db->get('malware')->result_array();
} else {
return $this->db->get_where('malware',['id_malware'=>
$id])->result_array();
}
}
public function getMalwareByHash($sha256){
return $this->db->get_where('malware', ['sha256_malware' =>
$sha256])->result_array();
}
public function uploadMalware($contents, $fileName){
$password = "Rahasia100%";
$explode = explode('.', $fileName);
$namaFile = $explode[0];
$zip = new ZipArchive();
$fileKompresi = "directory/file_malware/".$namaFile.".zip";
$zip->open($fileKompresi, ZIPARCHIVE::CREATE);
$zip->addEmptyDir('newDirectory');
$zip->setPassword($password);
$isi = file_get_contents($contents);
$zip->addFromString($fileName, $isi);
$zip->setEncryptionName($fileName, ZipArchive::EM_AES_256);
$zip->close();
$file_malware = $namaFile.".zip";
return $file_malware;
}
public function createMalware($data){
$this->db->insert('malware', $data);
return $this->db->affected_rows();
}
public function deleteMalware($id) {
$this->db->delete('malware', ['id_malware' => $id]);
return $this->db->affected_rows();
}
public function updateMalware($data, $id) {
$this->db->update('malware', $data, ['id_malware' => $id]);
return $this->db->affected_rows();
}
}
?>
E2. Benign_model.php
1
2
3
4
5
6
7
8
9
10
11
<?php
class Benign_model extends CI_Model {
public function getBenign($id = null){
if($id === null){
return $this->db->get(‘benign’)->result_array();
} else {
return $this->db->get_where(‘benign’, [‘id_benign’ =>
$id])->result_array();
}
}
public function getBenignByHash($sha256){
return $this->db->get_where(‘benign’, [‘sha256_benign’ =>
$sha256])->result_array();
E-2
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
}
public function uploadBenign($contents, $fileName){
$password = “Rahasia100%”;
$explode = explode(‘.’, $fileName);
$namaFile = $explode[0];
$zip = new ZipArchive();
$fileKompresi = “directory/file_benign/”.$namaFile.”.zip”;
$zip->open($fileKompresi, ZIPARCHIVE::CREATE);
$zip->addEmptyDir(‘newDirectory’);
$zip->setPassword($password);
$isi = file_get_contents($contents);
$zip->addFromString($fileName, $isi);
$zip->setEncryptionName($fileName, ZipArchive::EM_AES_256);
$zip->close();
$file_benign = $namaFile.”.zip”;
return $file_benign;
}
public function deleteBenign($id){
$this->db->delete(‘benign’, [‘id_benign’ => $id]);
return $this->db->affected_rows();
}
public function createBenign($data){
$this->db->insert(‘benign’, $data);
return $this->db->affected_rows();
}
public function updateBenign($data, $id){
$this->db->update(‘benign’, $data, [‘id_benign’ => $id]);
return $this->db->affected_rows();
}
}
?>
E3. Baru_model.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
class Baru_model extends CI_Model{
public function getBaru($id = null){
if($id === null){
return $this->db->get('baru')->result_array();
} else {
return $this->db->get_where('baru',['id_baru'=>$id])
->result_array();
}
}
public function getBaruByHash($sha256){
return $this->db->get_where('baru', ['sha256_baru' =>
$sha256])->result_array();
}
public function deleteBaru($id){
$this->db->delete('baru', ['id_baru' => $id]);
return $this->db->affected_rows();
}
public function uploadBaru($contents, $fileName){
$password = "Rahasia100%";
$explode = explode('.', $fileName);
$namaFile = $explode[0];
$zip = new ZipArchive();
$fileKompresi = "directory/file_baru/".$namaFile.".zip";
$zip->open($fileKompresi, ZIPARCHIVE::CREATE);
$zip->addEmptyDir('newDirectory');
$zip->setPassword($password);
$isi = file_get_contents($contents);
$zip->addFromString($fileName, $isi);
$zip->setEncryptionName($fileName, ZipArchive::EM_AES_256);
E-3
29
30
31
32
33
34
35
36
37
38
$zip->close();
$file_baru = $namaFile.".zip";
return $file_baru;
}
public function createBaru($data){
$this->db->insert('baru', $data);
return $this->db->affected_rows();
}
}
?>
E4. Admin_model.php 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
class Admin_model extends CI_Model{
public function getAdmin($id = null){
if($id === null){
return $this->db->get('admin')->result_array();
} else {
return $this->db->get_where('admin', ['id_admin' => $id])
->result_array();
}
}
public function deleteAdmin($id){
$this->db->delete('admin', ['id_admin' => $id]);
return $this->db->affected_rows();
}
public function getAdminByUsername($username){
return $this->db->get_where('admin', ['username' =>
$username])->result_array();
}
public function createAdmin($data){
$this->db->insert('admin', $data);
return $this->db->affected_rows();
}
public function updateAdmin($data, $id){
$this->db->update('admin', $data, ['id_admin' => $id]);
return $this->db->affected_rows();
}
}
?>
E5. Mitra_model.php 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class Mitra_model extends CI_Model{
public function getMitra($id = null){
if($id === null){
return $this->db->get('mitra')->result_array();
} else {
return $this->db->get_where('mitra', ['id_mitra' => $id])
->result_array();
}
}
public function deleteMitra($id){
$this->db->delete('mitra', ['id_mitra' => $id]);
return $this->db->affected_rows();
}
public function getMitraByUsername($username){
return $this->db->get_where('mitra',['username'=>$username])
->result_array();
}
public function createMitra($data){
$this->db->insert('mitra', $data);
E-4
19
20
21
22
23
24
25
26
27
28
29
30
return $this->db->affected_rows();
}
public function updateMitra($data, $id){
$this->db->update('mitra', $data, ['id_mitra' => $id]);
return $this->db->affected_rows();
}
public function uploadFoto($contents,$namaFoto){
$result=move_uploaded_file($contents,'directory/foto/'.$namaFoto);
return $result;
}
}
?>
E6. Recent_model.php 1
2
3
4
5
6
7
8
9
10
11
<?php
class Recent_model extends CI_Model {
public function getRecent(){
return $this->db->get('recent')->result_array();
}
public function createRecent($data){
$this->db->insert('recent', $data);
return $this->db->affected_rows();
}
}
?>
E7. Riwayat_model.php 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class Riwayat_model extends CI_Model{
public function getRiwayat($id = null){
if($id === null){
return $this->db->get('riwayat')->result_array();
} else {
return $this->db->get_where('riwayat', ['id_riwayat' =>
$id])->result_array();
}
}
public function deleteRiwayat($id){
$this->db->delete('riwayat', ['id_riwayat' => $id]);
return $this->db->affected_rows();
}
public function createRiwayat($data){
$this->db->insert('riwayat', $data);
return $this->db->affected_rows();
}
public function updateRiwayat($data, $id){
$this->db->update('riwayat', $data, ['id_riwayat' => $id]);
return $this->db->affected_rows();
}
}
?>
E8. m_Riwayat_model.php
1
2
3
4
5
6
<?php
class m_Riwayat_model extends CI_Model{
public function getMRiwayat($idm){
return $this->db->get_where('m_riwayat', ['idm' => $idm])
->result_array();
}
public function createMRiwayat($data){
E-5
7
8
9
10
11
$this->db->insert('m_riwayat', $data);
return $this->db->affected_rows();
}
}
?>