BAB 4. IMPLEMENTASI DAN PENGUJIAN SISTEM 4.1
Konfigurasi Sistem Operasi pada Server Dalam tahap ini tidak dibahas proses installasi sistem operasi secara mendalam, sistem operasi yang digunakan adalah Debian 8.7 dengan codename Jessie yang telah dijelaskan pada tahap analisis dan perancangan sistem. Tahap ini menjelaskan konfigurasi dasar setelah proses installasi sistem operasi.
Gambar 22. Sistem Operasi yang Diinstal
4.1.1 Persiapan Sistem (Prerequisites) Agar pada saat membangun dan
konfigurasi sistem
identifikasi malware berjalan dengan lancar, maka diperlukan beberapa persiapan sebagai berikut: 1. Instalasi GIT 2. Instalasi Nano 3. Instalasi Kontrol Panel (Optional) 4. Instalasi LAMP 5. Setup SSH Keys 6. Instalasi YARA 7. Instalasi YARA-PYTHON
40 http://digilib.mercubuana.ac.id/z
4.2
Konfigurasi Sistem Identifikasi Malware YARA Dalam tahap konfigurasi ini dijelaskan mengenai kompilasi sistem dalam bentuk source code, installasi dan konfigurasi sistem. Sistem tidak memerlukan installasi dengan cara standar seperti halnya instalasi paket linux lainnya yang menggunakan “make install” agar aplikasi tersebut dapat terinstal. Namun cukup dengan download dan langsung mulai pengaturan (portable). Langkah ini dilakukan pada seluruh server yang digunakan.
4.2.1 Kompilasi Sistem Dalam tahap kompilasi kode program ini menggunakan bahasa bash dan python. Seluruh kode program dapat dilihat pada halaman Lampiran A Sourcecode Program .
4.2.2 Konfigurasi Pemasangan Sistem Langkah selanjutnya adalah melakukan instalasi sistem tersebut. Sebelum instalasi, perlu dilakukan tahap update dan upgrade sistem. Setelah update dan upgrade sistem dilakukan, maka dilanjutkan tahap instalasi paket – paket pendukung yang telah dijelaskan sebelumnya hingga instalasi tools YARA. Berikut tahap instalasi sistem identifikasi malware berbasis signature-based YARA. 1. Tentukan path instalasi dan Download Source #cd /var/www/maldet.muliamedia.com; wget https://maldet.muliamedia.com/mmi_maldet.tar.gz 2. Ekstrak hasil download #tar –xvzf mmi_maldet.tar.gz 3. Buat symlink #cd /usr/sbin;ln –s /var/www/maldet.muliamedia.com/mmi_maldet mmi_maldet 4. Buat Executable #chmod +x /usr/sbin/mmi_maldet
41 http://digilib.mercubuana.ac.id/z
4.2.3 Konfigurasi Direktori Sistem Konfigurasi sistem bertujuan untuk menyesuaikan path setting dengan kondisi server yang ingin diinstal. Tujuannya agar sistem identifikasi berjalan dengan baik. Berikut adalah tahapan untuk melakukan konfigurasi pada sistem yang sudah di install: 1. Buka file konfigurasi dan ubah konfigurasi path sesuai dengan installation path. #nano maldet
Akan tampil source code dari program, temukan baris berikut:
Gambar 23. Konfigurasi File Sistem Identifikasi Ubah baris CONFIG_PATH sesuai dengan installation path: /var/www/maldet.muliamedia.com/common.yar. 2. Lalu ubah konfigurasi folder path untuk proses update sesuai dengan installation path.
Gambar 24. Konfigurasi Folder Sistem Identifikasi 3. Pengetesan hasil instalasi dapat dilakukan dengan mengetikkan perintah “mmi_maldet”. Jika sistem berhasil diinstal dan dikonfigurasi dengan benar, maka akan menampilkan informasi penggunaan sistem. 42 http://digilib.mercubuana.ac.id/z
Gambar 25.Pengetesan Instalasi Sistem Identifikasi Konfigurasi sistem pada server controller dan server client pada prinsipnya sama yang membedakan adalah pengaturan CONFIG_PATH dan CONFIG_DIR. Kedua pengaturan tersebut disesuaikan dengan kondisi masing – masing server client.
4.3
Tampilan dan Cara Kerja Sistem Sistem identifikasi malware menggunakan signature-based YARA adalah sebuah web-shell sehingga tidak memiliki tampilan GUI (Graphic User Interface). Tampilan yang diberikan untuk saat ini masih terbatas command-line sehingga mungkin akan mengurangi user experience pengguna awam. Namun dari segi fleksibilitas dan kehandalan sistem cukup tinggi.
4.3.1 Tampilan Informasi Sistem Tampilan informasi memberikan panduan bagaimana menggunakan sistem. Berikut tampilannya:
Gambar 26.Tampilan Awal Sistem Identifikasi Malware Keterangan gambar: 1. –h, menampilkan opsi bantuan. Penggunaannya sebagai berikut: “mmi_maldet –h” 2. –u, memperbaharui rules sistem dengan server pusat. Penggunaannya sebagai berikut: “mmi_maldet –u” 43 http://digilib.mercubuana.ac.id/z
3. –q, mengidentifikasi malware lalu memindahkan file malware kedalam folder quarantine dan menonaktifkan file tersebut agar tidak dapat dieksekusi. Penggunaannya sebagai berikut: “mmi_maldet –q”. Nantinya akan ditanyakan path folder yang akan di scan. 4. –s, fungsi ini hanya mengidentifikasi malware saja dan tidak secara
langsung
memindahkan
ke
folder
quarantine.
Penggunaannya sebagai berikut: “mmi_maldet –s”. Nantinya akan ditanyakan path folder yang akan di scan.
4.3.2 Tampilan Rules Penambahan rules untuk data malware bertujuan agar sistem identifikasi malware selalu up-to date. Fitur ini cukup dilakukan oleh controller node saja. Karena client node akan update dari sistem yang sudah terinstal.
Gambar 27.Tampilan Rules Keterangan gambar: 1. Dari gambar terlihat rules yang dapat dipakai untuk proses identifikasi malware. Rules tersebut didapat dari komunitas YARA di: https://github.com/Yara-Rules/rules 2. Proses penambahan rules sebagai berikut: “echo "[path to][nama rules]" >>[path to] common.yar” Misal: #echo "latest/rules/Webshells_index.yar" >> /var/www/maldet.muliamedia.com/common.yar
44 http://digilib.mercubuana.ac.id/z
4.3.3 Tampilan Librari Rules Penambahan librari untuk data malware bertujuan agar sistem identifikasi malware selalu up-to date. Fitur ini cukup dilakukan oleh controller node saja. Karena client node akan update dari sistem yang sudah terinstal.
Gambar 28.Tampilan Librari Rules Keterangan gambar: 1. Dari gambar terlihat librari yang dapat dipakai untuk proses identifikasi malware. Librari tersebut digunakan oleh sistem identifikasi malware agar dapat berjalan. 2. Proses penambahan librari sebagai berikut: #nano /var/www/maldet.muliamedia.com/maldet
Gambar 29.Tampilan Penambahan Librari Rules Pada
baris
RULES_FILES
tambahkan
librari
yang
diinginkan, misalnya wordress.yar yang berisi program CMS wordpress yang sudah di generate dalam bentuk hash.
4.3.4 Tampilan Client Penambahan klien untuk membatasi proses update sistem nantinya. Tujuannya agar update malware sistem identifikasi
45 http://digilib.mercubuana.ac.id/z
malware selalu up-to date terhadap server tertentu saja. Fitur ini hanya dilakukan oleh controller node.
Gambar 30.Tampilan Tambah Client Keterangan gambar: 1. Dari gambar terlihat yang diperbolehkan untuk proses update hanya localhost dank lien dengan IP 103.229.74.16. Selain dari IP tersebut maka proses akan ditolak. Proses penambahan rules sebagai berikut: 2. Untuk proses penambahan IP client dapat dilakukan dengan cara berikut: “echo " allow from [IP Client]" >> [path to system]/latest/.htaccess” Misal: #echo " allow from 103.229.74.165" >> /var/www/maldet.muliamedia.com/latest/.htaccess
4.3.5 Tampilan Scan Scan adalah prosedur untuk mengidentifikasi file apakah malware atau bukan. Hasil dari scan akan ditampilkan pada layar terminal dan juga tersimpan dalam log sistem.
Gambar 31.Tampilan Scan Sistem Setelah mengetikkan perintah “mmi_maldet –s” maka akan ditanyakan path folder / file yang ingin di identifikasi. Untuk pengujian dapat diunduh beberapa contoh malware yang sudah dikumpulkan. Repository malware didapat dari github dengan URL: https://github.com/ytisf/theZoo.
Sample
malware
diletakkan 46
http://digilib.mercubuana.ac.id/z
dipath:
/var/www/maldet.muliamedia.com/sample.
Berikut
tampilan proses scan saat berjalan: root@srv1:/var/www/maldet.muliamedia.com# mmi_maldet -s please input the target path to start scan Enter your path folder/file target [ENTER]: /var/www/maldet.muliamedia.com scan process is running DodgyStrings /var/www/maldet.muliamedia.com/latest/rules/Webshel ls/WShell_APT_Laudanum.yar DodgyPhp /var/www/maldet.muliamedia.com/latest/rules/malware /APT_APT29_Grizzly_Steppe.yar DodgyStrings /var/www/maldet.muliamedia.com/latest/rules/malware /MALW_Magento_backend.yar ObfuscatedPhp /var/www/maldet.muliamedia.com/latest/rules/malware /MALW_Magento_backend.yar DodgyPhp /var/www/maldet.muliamedia.com/latest/rules/malware /MALW_Magento_backend.yar DodgyPhp /var/www/maldet.muliamedia.com/samples/undetected/s mart.php SuspiciousEncoding /var/www/maldet.muliamedia.com/samples/obfuscators/ online_php_obfuscator.php ObfuscatedPhp /var/www/maldet.muliamedia.com/samples/obfuscators/ online_php_obfuscator.php DodgyPhp /var/www/maldet.muliamedia.com/samples/obfuscators/ online_php_obfuscator.php ObfuscatedPhp /var/www/maldet.muliamedia.com/samples/obfuscators/ phpencode.php DodgyPhp /var/www/maldet.muliamedia.com/samples/obfuscators/ phpencode.php DodgyPhp /var/www/maldet.muliamedia.com/samples/real/srt.php ObfuscatedPhp /var/www/maldet.muliamedia.com/samples/real/ice.php DodgyPhp /var/www/maldet.muliamedia.com/samples/real/ice.php ObfuscatedPhp /var/www/maldet.muliamedia.com/samples/obfuscators/ cipher_design.php DodgyPhp /var/www/maldet.muliamedia.com/samples/obfuscators/ cipher_design.php DodgyPhp /var/www/maldet.muliamedia.com/samples/real/sucuri_ 2014_04.php
47 http://digilib.mercubuana.ac.id/z
ObfuscatedPhp /var/www/maldet.muliamedia.com/samples/artificial/b ypasses.php DodgyPhp /var/www/maldet.muliamedia.com/samples/artificial/b ypasses.php DodgyStrings /var/www/maldet.muliamedia.com/samples/artificial/d odgy.php DodgyPhp /var/www/maldet.muliamedia.com/samples/artificial/d odgy.php DodgyStrings /var/www/maldet.muliamedia.com/samples/real/novahot .php DodgyStrings /var/www/maldet.muliamedia.com/samples/classic/sosy ete.php DodgyPhp /var/www/maldet.muliamedia.com/samples/classic/sosy ete.php DodgyStrings /var/www/maldet.muliamedia.com/samples/classic/sima ttacker.php DangerousPhp /var/www/maldet.muliamedia.com/samples/classic/sima ttacker.php Websites /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_samples_artificial_obfuscated .php.suspect ObfuscatedPhp /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_samples_artificial_obfuscated .php.suspect DodgyPhp /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_samples_artificial_obfuscated .php.suspect PasswordProtection /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_samples_freepbx.php.suspect ObfuscatedPhp /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_samples_freepbx.php.suspect DodgyPhp /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_samples_freepbx.php.suspect SuspiciousEncoding /var/www/maldet.muliamedia.com/samples/classic/ange l.php DodgyStrings /var/www/maldet.muliamedia.com/samples/classic/ange l.php ObfuscatedPhp /var/www/maldet.muliamedia.com/samples/classic/ange l.php DodgyPhp /var/www/maldet.muliamedia.com/samples/classic/ange l.php DangerousPhp 48 /var/www/maldet.muliamedia.com/samples/classic/ange l.php http://digilib.mercubuana.ac.id/z ObfuscatedPhp
/var/www/maldet.muliamedia.com/samples/cpanel.php SuspiciousEncoding /var/www/maldet.muliamedia.com/samples/classic/r57. php DodgyStrings /var/www/maldet.muliamedia.com/samples/classic/r57. php ObfuscatedPhp /var/www/maldet.muliamedia.com/samples/classic/r57. php DodgyPhp /var/www/maldet.muliamedia.com/samples/classic/r57. php DangerousPhp /var/www/maldet.muliamedia.com/samples/classic/r57. php DodgyStrings /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_latest_rules_Webshells_WShell _THOR_Webshells.yar.suspect Websites /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_latest_rules_Webshells_WShell _THOR_Webshells.yar.suspect ObfuscatedPhp /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_latest_rules_Webshells_WShell _THOR_Webshells.yar.suspect DodgyPhp /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_latest_rules_Webshells_WShell _THOR_Webshells.yar.suspect DangerousPhp /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_latest_rules_Webshells_WShell _THOR_Webshells.yar.suspect ================================================= You should take a look at the files listed below: Websites /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_samples_artificial_obfuscated .php.suspect PasswordProtection /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_samples_freepbx.php.suspect Websites /var/www/maldet.muliamedia.com/quarantine/_var_www_ maldet.muliamedia.com_latest_rules_Webshells_WShell _THOR_Webshells.yar.suspect
49 http://digilib.mercubuana.ac.id/z
Keterangan gambar: 1. Baris
“Enter
your
path
folder/file
/var/www/maldet.muliamedia.com”
target
[ENTER]:
adalah
perintah
menentukan path yang ingin diidentifikasi apakah ada keberadaan malware atau tidak. 2. Setelah
itu
proses
identifikasi
berjalan
dengan
cara
mencocokkan file scan dengan signature yang tersedia. Contoh rules nya: IsPhp, NonPrintableChars, PasswordProtection, ObfuscatedPhp, DodgyPhp, DangerousPhp, HiddenInAFile. 3. Semua hasil identifikasi harus diperhatikan, namun yang menjadi prioritas adalah hasil setelah baris “You should take a look at the files listed below:”. Hasilnya berupa path tempat malware tersebut berada. 4. Hasil dari proses scan belum dipindahkan ke folder quarantine.
4.3.6 Tampilan Karantina Karantina adalah prosedur untuk memindahkan file yang terinfeksi malware kedalam folder karantina agar malware tidak dapat berjalan.
Gambar 32.Tampilan Karantina Seluruh file yang dikarantina diletakkan dalam folder “quarantine”. File tersebut kemudian di chmod 0 dan chattr dan direname, maksudnya agar file tidak dapat diakses juga sebagai bukti atau log karantina. Berikut tampilan proses karantina: root@srv1:/var/www/maldet.muliamedia.com# mmi_maldet -q please input the target path to start scan Enter your path folder/file target [ENTER]: /var/www/blog.muliamedia.com scan process is running ObfuscatedPhp /var/www/blog.muliamedia.com/wpincludes/date.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpincludes/SimplePie/Parse/Date.php
50 http://digilib.mercubuana.ac.id/z
ObfuscatedPhp /var/www/blog.muliamedia.com/wpincludes/bookmark-template.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpincludes/js/tinymce/tinymce.min.js DodgyStrings /var/www/blog.muliamedia.com/wpincludes/post.php DodgyStrings /var/www/blog.muliamedia.com/wpincludes/class-phpmailer.php DodgyPhp /var/www/blog.muliamedia.com/wpincludes/class-phpmailer.php DodgyStrings /var/www/blog.muliamedia.com/wpincludes/class-wp-query.php DodgyStrings /var/www/blog.muliamedia.com/wpincludes/functions.php DodgyPhp /var/www/blog.muliamedia.com/wpincludes/functions.php DangerousPhp /var/www/blog.muliamedia.com/wpincludes/functions.php DodgyPhp /var/www/blog.muliamedia.com/wpincludes/class-pop3.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpincludes/class-wp-tax-query.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpincludes/post-template.php DodgyStrings /var/www/blog.muliamedia.com/wpincludes/media.php DodgyPhp /var/www/blog.muliamedia.com/wpincludes/load.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpincludes/IXR/class-IXR-date.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpincludes/class-wp-meta-query.php DodgyStrings /var/www/blog.muliamedia.com/wpincludes/formatting.php DodgyStrings /var/www/blog.muliamedia.com/wpincludes/comment.php DodgyStrings /var/www/blog.muliamedia.com/wpincludes/deprecated.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpincludes/deprecated.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/themes/knowledge-base/inc/bbpress.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/themes/wp-knowledge-base/inc/bbpress.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/themes/wp-knowledge-base/footer.php DodgyStrings /var/www/blog.muliamedia.com/wpcontent/ewww/optipng ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/uploads/2016/12/Page-Post-Event.jpg
51 http://digilib.mercubuana.ac.id/z
ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/google-analytics-dashboard-forwp/tools/gapi.php DodgyPhp /var/www/blog.muliamedia.com/wpcontent/plugins/ninjaforms/lib/StepProcessing/step-processing.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/ninjaforms/deprecated/assets/images/screenshots/ssbuilder.png HiddenInAFile /var/www/blog.muliamedia.com/wpcontent/plugins/ninjaforms/deprecated/assets/images/screenshots/ssbuilder.png DodgyPhp /var/www/blog.muliamedia.com/wpcontent/plugins/ninjaforms/deprecated/includes/functions.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/ninjaforms/deprecated/includes/fields/calc.php DodgyPhp /var/www/blog.muliamedia.com/wpcontent/plugins/ninjaforms/deprecated/includes/admin/upgrades/classupgrade-handler.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/ninjaforms/deprecated/includes/admin/ajax.php DodgyPhp /var/www/blog.muliamedia.com/wpcontent/plugins/ninjaforms/deprecated/includes/admin/upgrades/upgradefunctions.php DodgyPhp /var/www/blog.muliamedia.com/wpcontent/plugins/ninjaforms/deprecated/classes/step-processing.php DodgyPhp /var/www/blog.muliamedia.com/wpcontent/plugins/ninja-forms/includes/Helper.php DodgyPhp /var/www/blog.muliamedia.com/wpcontent/plugins/linkedin-master/includes/linkedinmaster-admin-table-support-export.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/crayon-syntaxhighlighter/crayon_formatter.class.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/crayon-syntaxhighlighter/crayon_settings_wp.class.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/crayon-syntaxhighlighter/util/crayon_util.class.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/crayon-syntaxhighlighter/util/theme-editor/theme_editor.php DodgyStrings /var/www/blog.muliamedia.com/wpcontent/plugins/broken-linkchecker/idn/idna_convert.class.php DodgyPhp /var/www/blog.muliamedia.com/wpcontent/plugins/broken-link-checker/core/core.php DodgyPhp /var/www/blog.muliamedia.com/wpcontent/plugins/broken-linkchecker/includes/utility-class.php
52 http://digilib.mercubuana.ac.id/z
DodgyPhp /var/www/blog.muliamedia.com/wpcontent/plugins/broken-linkchecker/languages/broken-link-checker-he_IL.po ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/frontend/classbreadcrumbs.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/frontend/classfrontend.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/wordpressseo/admin/google_search_console/class-gsc-platformtabs.php NonPrintableChars /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/admin/configui/factories/class-factory-post-type.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/admin/class-asset.php NonPrintableChars /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/js/dist/wp-seo-postscraper-480.min.js ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/js/dist/wp-seo-postscraper-480.min.js ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/admin/taxonomy/classtaxonomy-fields-presenter.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/admin/metabox/classmetabox.php NonPrintableChars /var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/modules/videopress/editormedia-view.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/modules/subscriptions.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/modules/shortcodes/archiveo rg.php NonPrintableChars /var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/modules/relatedposts/jetpack-related-posts.php DodgyStrings /var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/class.jetpack.php DangerousPhp /var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/class.jetpack.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpcontent/plugins/wp-user-avatar/includes/class-wpuser-avatar-functions.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpadmin/includes/class-wp-plugins-list-table.php DodgyStrings /var/www/blog.muliamedia.com/wpadmin/includes/template.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpadmin/includes/template.php
53 http://digilib.mercubuana.ac.id/z
DodgyStrings /var/www/blog.muliamedia.com/wpadmin/includes/upgrade.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpadmin/includes/media.php ObfuscatedPhp /var/www/blog.muliamedia.com/wpadmin/includes/class-ftp.php DodgyStrings /var/www/blog.muliamedia.com/wpadmin/includes/ajax-actions.php DodgyPhp /var/www/blog.muliamedia.com/wpadmin/includes/schema.php DodgyPhp /var/www/blog.muliamedia.com/samples/undetected/sma rt.php SuspiciousEncoding /var/www/blog.muliamedia.com/samples/obfuscators/on line_php_obfuscator.php ObfuscatedPhp /var/www/blog.muliamedia.com/samples/obfuscators/on line_php_obfuscator.php DodgyPhp /var/www/blog.muliamedia.com/samples/obfuscators/on line_php_obfuscator.php ObfuscatedPhp /var/www/blog.muliamedia.com/samples/obfuscators/ph pencode.php DodgyPhp /var/www/blog.muliamedia.com/samples/obfuscators/ph pencode.php DodgyPhp /var/www/blog.muliamedia.com/samples/real/srt.php ObfuscatedPhp /var/www/blog.muliamedia.com/samples/obfuscators/ci pher_design.php DodgyPhp /var/www/blog.muliamedia.com/samples/obfuscators/ci pher_design.php ObfuscatedPhp /var/www/blog.muliamedia.com/samples/real/ice.php DodgyPhp /var/www/blog.muliamedia.com/samples/real/ice.php DodgyPhp /var/www/blog.muliamedia.com/samples/real/sucuri_20 14_04.php DodgyStrings /var/www/blog.muliamedia.com/samples/artificial/dod gy.php DodgyPhp /var/www/blog.muliamedia.com/samples/artificial/dod gy.php ObfuscatedPhp /var/www/blog.muliamedia.com/samples/artificial/byp asses.php DodgyPhp /var/www/blog.muliamedia.com/samples/artificial/byp asses.php DodgyStrings /var/www/blog.muliamedia.com/samples/real/novahot.p hp
54 http://digilib.mercubuana.ac.id/z
DodgyStrings /var/www/blog.muliamedia.com/samples/classic/sosyet e.php DodgyPhp /var/www/blog.muliamedia.com/samples/classic/sosyet e.php DodgyStrings /var/www/blog.muliamedia.com/samples/classic/simatt acker.php DangerousPhp /var/www/blog.muliamedia.com/samples/classic/simatt acker.php SuspiciousEncoding /var/www/blog.muliamedia.com/samples/classic/angel. php DodgyStrings /var/www/blog.muliamedia.com/samples/classic/angel. php ObfuscatedPhp /var/www/blog.muliamedia.com/samples/classic/angel. php DodgyPhp /var/www/blog.muliamedia.com/samples/classic/angel. php DangerousPhp /var/www/blog.muliamedia.com/samples/classic/angel. php ObfuscatedPhp /var/www/blog.muliamedia.com/samples/cpanel.php SuspiciousEncoding /var/www/blog.muliamedia.com/samples/classic/r57.ph p DodgyStrings /var/www/blog.muliamedia.com/samples/classic/r57.ph p ObfuscatedPhp /var/www/blog.muliamedia.com/samples/classic/r57.ph p DodgyPhp /var/www/blog.muliamedia.com/samples/classic/r57.ph p DangerousPhp /var/www/blog.muliamedia.com/samples/classic/r57.ph p ================================================= You should take a look at the files listed below: NonPrintableChars /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/admin/configui/factories/class-factory-post-type.php NonPrintableChars /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/js/dist/wp-seo-postscraper-480.min.js NonPrintableChars /var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/modules/videopress/editormedia-view.php NonPrintableChars /var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/modules/relatedposts/jetpack-related-posts.php '/var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/admin/configui/factories/class-factory-post-type.php' -> 'quarantine/_var_www_blog.muliamedia.com_wpcontent_plugins_wordpress-seo_admin_confighttp://digilib.mercubuana.ac.id/z ui_factories_class-factory-post-type.php.suspect'
55
'/var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/js/dist/wp-seo-postscraper-480.min.js' -> 'quarantine/_var_www_blog.muliamedia.com_wpcontent_plugins_wordpress-seo_js_dist_wp-seo-postscraper-480.min.js.suspect' '/var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/modules/videopress/editormedia-view.php' -> 'quarantine/_var_www_blog.muliamedia.com_wpcontent_plugins_jetpack_modules_videopress_editormedia-view.php.suspect' '/var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/modules/relatedposts/jetpack-related-posts.php' -> 'quarantine/_var_www_blog.muliamedia.com_wpcontent_plugins_jetpack_modules_relatedposts_jetpack-related-posts.php.suspect' log quarantine save on logs/2017-05-271495858962.quarantine.logs We chmod 0 and chattr, let me not walk again on the server..DONE report quarantine save on quarantine from /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/admin/configui/factories/class-factory-post-type.php to quarantine/_var_www_blog.muliamedia.com_wpcontent_plugins_wordpress-seo_admin_configui_factories_class-factory-post-type.php.suspect quarantine from /var/www/blog.muliamedia.com/wpcontent/plugins/wordpress-seo/js/dist/wp-seo-postscraper-480.min.js to quarantine/_var_www_blog.muliamedia.com_wpcontent_plugins_wordpress-seo_js_dist_wp-seo-postscraper-480.min.js.suspect quarantine from /var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/modules/videopress/editormedia-view.php to quarantine/_var_www_blog.muliamedia.com_wpcontent_plugins_jetpack_modules_videopress_editormedia-view.php.suspect quarantine from /var/www/blog.muliamedia.com/wpcontent/plugins/jetpack/modules/relatedposts/jetpack-related-posts.php to quarantine/_var_www_blog.muliamedia.com_wpcontent_plugins_jetpack_modules_relatedposts_jetpack-related-posts.php.suspect
Keterangan: 1. Proses karantina menjalankan proses scan terlebih dahulu. Lalu, hasil scan dipindah ke folder karantina. 2. Log karantina disimpan di folder logs/*waktu*.quarantine.logs
56 http://digilib.mercubuana.ac.id/z
4.3.7 Tampilan Whitelist Whitelist adalah prosedur untuk membiarkan skrip yang dianggap sebagai malware namun aktif sebagai bagian dari website. Beberapa skrip website aktif terkadang menggunakan beberapa fungsi php yang dicurigai sebagai malware, misalnya fungsi allow_url dan sebagainya. Maka dari itu, prosedur whitelist dilakukan agar file yang berisi fungsi tersebut tidak terdeteksi sebagai malware.
Gambar 33.Tampilan Whitelist Untuk menggunakan whitelist, hal pertama yang dilakukan adalah membuat file hash untuk dimasukkan kedalam file whitelist.yar. Tahapannya sebagai berikut: root@srv1:/var/www/maldet.muliamedia.com/utils# python generate_whitelist.py plugin_googleanalytics /var/www/blog.muliamedia.com/wpcontent/plugins/google-analytics-dashboard-for-wp/ >> /var/www/maldet.muliamedia.com/whitelists/plugin_go ogleanalytics.yar import "hash" rule plugin_googleanalytics { condition: /* plugin_googleanalytics */ hash.sha1(0, filesize) == "e5735e103d59e7875dafcbf0cda71db8bc27190b" // /var/www/blog.muliamedia.com/wpcontent/plugins/google-analytics-dashboard-forwp/tools/gapi.php }
Keterangan: 1. Perintah
“python”
untuk
mengeksekusi
file
“generate_whitelist.py” lalu diikuti path folder yang ingin dibuat hash. 2. Hasilnya akan muncul hasilnya berbentuk file hash yang disimpan dalam file dipath:
57 http://digilib.mercubuana.ac.id/z
“/var/www/maldet.muliamedia.com/whitelists/plugin_googlean alytics.yar” 3. Path hash, dimasukkan kedalam file whitelist.yar seperti:
Gambar 34.Tampilan Input Whitelist
4.3.8 Tampilan Setel Direktori Penyetelan direktori dimaksudkan untuk mengarahkan proses identifikasi lebih efektif. Jadi, sistem bisa menentukan folder tertentu yang akan discan. Proses cepat atau lambatnya identifikasi tergantung dari proses ini. Semakin banyak file atau folder yang ingin diidentifikasi, maka semakin lama prosesnya.
Gambar 35.Tampilan Setel Direktori Jika salah memasukkan direktori atau direktori yang dituju tidak ada maka akan muncul error sebagai berikut untuk notifikasi agar dapat diperbaiki.
Gambar 36.Notifikasi Error Setel Direktori
58 http://digilib.mercubuana.ac.id/z
4.4
Pengujian Sistem Pengujian sistem identifikasi malware dilakukan dengan 2 (dua) aspek, yaitu: 1. Pengujian Fungsionalitas Sistem Pengujian dilakukan bertujuan untuk menguji sistem identifikasi malware apakah telah sesuai dengan kebutuhan yang diinginkan. Metode yang digunakan untuk pengujian adalah black box testing yaitu pengujian terhadap kesesuaian antara fungsionalitas sistem identifikasi malware yang dirancang berdasarkan kebutuhan pengguna dengan sistem identifikasi malware yang diimplementasikan. Pengujian dilakukan dengan cara melakukan pemeriksaan terhadap menu-menu fungsional yang ada pada sistem. Setiap menu harus sesuai keluaraannya dan tidak mendapatkan error. Pengujian dilakukan oleh 2 penguji yang masing-masing berposisi sebagai staff sysadmin, dan staff technical support. Pengujian dilakukan pada perusahaan PT Master Web Network dalam 2 waktu yang berbeda. Berikut adalah data penguji: Tabel 15. Data Penguji No
Nama Penguji
Jabatan/Posisi
Tanggal Pengujian
1
Arie Ibrahim
Sys Admin
29 Mei 2017
2
Heru Khairudin
Tech. Support
30 Mei 2017
2. Pengujian Quality Quality of service dilakukan untuk menguji kualitas sistem, pengujian dilakukan dengan cara membandingkan kualitas dari aplikasi yang tidak menggunakan dan sistem identifikasi malware dengan yang menggunakan sistem identifikasi malware. Parameter pengujian kualitas tersebut meliputi pengujian process time dan pengujian akurasi.
59 http://digilib.mercubuana.ac.id/z
4.4.1 Hasil Pengujian Fungsionalitas Hasil pengujian diawali dengan proses pengumpulan data yang diperoleh berdasaran hasil uji yang telah dilakukan oleh para penguji. Detail hasil dari pengujian sistem yang dilakukan oleh 2 orang penguji untuk mengetahui bahwa fungsi dari prosedur yang sudah dibuat berjalan sesuai dengan spesifikasi yang telah dibuat sebelumnya. Hasil uji terinci pada tabel 16. Tabel
16.
Pengujian
Fungsionalitas
Sistem
Identifikasi
Malware Status No
Fungsi
Hasil yang diharapkan
(√ / X)
P1
P2
Jika input benar maka sistem jalan, Jika salah 1
Tambah Rules
input maka muncul
√
√
√
√
√
√
√
√
√
√
error saat eksekusi sistem Jika input benar maka 2
Tambah Librari
sistem jalan, jika salah input maka muncul file tidak akan terupdate Jika benar maka klien dapat proses update,
3
Tambah Client
jika salah input maka muncul error “Forbidden” disisi klien Data rules yang
4
Hapus Rules
dihapus dapat proses tanpa ada error
5
Hapus Librari
Data librari yang
60 http://digilib.mercubuana.ac.id/z
dihapus dapat proses tanpa ada error Jika benar maka klien 6
Hapus Client
yang tidak terdaftar akan mendapatkan
√
√
√
√
√
√
√
√
√
X
√
√
error Jika berjalan, maka file 7
Scan Malware
sample malware akan terdeteksi
8
Karantina
File hasil scan dipindah ke folder karantina
9
Update Sistem
Proses update berjalan sesuai list library. Jika gagal error “Forbiddden” berarti klien belum di add
10
Setel Whitelist
Aplikasi yang sudah diwhitelist tidak akan terdeteksi malware
11
Setel Direktori
Jika benar maka sistem identifikasi akan berjalan, jika salah maka ada error
Keterangan tabel: 1. P1 adalah penguji pertama yaitu Arie Ibrahim 2. P2 adalah penguji kedua yaitu Heru Khairudin
61 http://digilib.mercubuana.ac.id/z
4.4.2 Hasil Pengujian Kualitas Hasil pengujian diawali dengan proses pengumpulan sampel signature malware yang dikelompokan dalam 3 jenis: 1. Dodgy PHP Merupakan jenis skrip PHP yang umumnya berpotensial sebagai malware. Sampel signature Dodgy PHP: 1. /extract\s*\(\s*\$_(GET|POST|REQUEST|COOKIE|S ERVER)/ 2. /curl_init\s*\(\s*["']file:\/\// nocase 3. /(eval|assert|passthru|exec|include|system|pc ntl_exec|shell_execute|base64_decode|`|array_ map|call_user_func(_array)?)\s*\(\s*(base64_d ecode|php:\$ 4. /IIS:\/\/localhost\/w3svc/ 5. /\(\)\s*{\s*:\s*;\s*}\s*;/ 6. /register_[az]+_function\s*\(\s*['"]\s*(eval|assert|passt hru|exec|include|system|shell_execute|`)/
2. Obfuscated Php Merupakan jenis skrip PHP yang terlihat tidak beraturan namun fungsi – fungsinya tetap bekerja. Sampel signature Obfuscated PHP: 1."'ev'.'al'" 1. /(\$\w+=[^;]*)*;\$\w+=@?\$\w+\(/ 2. /\$\w=\$[a-zA-Z]\('',\$\w\);\$\w\(\);/ 3. /;\$\w+\(\$\w+(,\s?\$\w+)+\);/ 4. /\/\*([^*]|\*[^\/])*\*\/\s*\(/ 5. /\$_(GET|POST|COOKIE|REQUEST|SERVER)\s*\[[^\] ]+\]\s*\(/
3. Suspicious Encoding Merupakan jenis skrip PHP yang sudah dikonversi menjadi data dari sebuah informasi namun output data dicurigai mengandung string exploit.. Sampel signature Suspicious Encoding: 1. base64 hex strrev Hpack
62 http://digilib.mercubuana.ac.id/z
Sistematika pengujian sampel: Tabel 17. Sistematika Pengujian Pengujian Jenis Uji Stand Alone
1
Keterangan 5 sampel file malware akan diletakkan diantara file – file aplikasi website
Embedded
2
5 sampel file malware akan dimasukkan diantara file – file aplikasi website
Pengujian hanya akan dilakukan satu kali karena hasil dari signature-based tidak akan berubah seperti halnya metode heuristic. Sampel Malware Sampel malware didapat dari repository github yang beralamat di: https://github.com/nikicat/web-malwarecollection/tree/master/Backdoors/PHP Tabel 18. Sampel Malware No
Nama
Jenis
1
smart.php
DodgyPhp
2
ice.php
ObfuscatedPhp
3
freepbx.php
ObfuscatedPhp
4
online_php_obfuscator.php SuspiciousEncoding
5
angel.php
ObfuscatedPhp
Sourcecode malware yang akan dicocokkan dengan signature dapat dilhat pada Lampiran B Sourcecode Malware (string signature di highlight).
63 http://digilib.mercubuana.ac.id/z
Hasil Jenis Pengujian Pertama Pengujian dilakukan dengan meletakkan sampel malware di direktori
root
website
yaitu
public_html/samples
hasil
pengujian dapat dilihat pada gambar 37.
Gambar 37. Hasil Uji Pertama Dari hasil uji dapat diketahui bahwa 1 sample malware dapat digolongkan dalam beberapa jenis tergantung dari rule yang dibuat dari signature malware. Intinya, 5 sampel terdeteksi dengan baik dan dapat langsung dipindahkan ke folder karantina. Pemindahan file malware aman karena file sampel malware terpisah dari file – file website. Hasil Jenis Pengujian Kedua Pengujian dilakukan dengan meletakkan sampel malware di dalam file website yang aktif. Daftar file website aktif yang akan di infeksi malware dapat dilihat dalam tabel 19. Tabel 19. Sampel File Yang Disisipkan Malware No
Nama File
Nama Malware
Keterangan
Yang akan Disisipkan 1
class-ftp.php
angel.php
class-ftp.php merupakan salah satu file CMS 64
http://digilib.mercubuana.ac.id/z
Wordpress yang terletak di /wpadmin/includes/cla ss-ftp.php 2
template.php
smart.php
template.php merupakan salah satu file CMS Wordpress yang terletak di /wpadmin/includes/tem plate.php
3
class-wp-
freepbx.php
class-wp-plugins-
plugins-list-
list-table.php
table.php
merupakan salah satu file CMS Wordpress yang terletak di /wpadmin/includes/cla ss-wp-plugins-listtable.php
4
media.php
ice.php
media.php merupakan salah satu file CMS Wordpress yang terletak di /wpadmin/includes/me dia.php
5
load.php
load.php merupakan
salah
satu
file
CMS
Wordpress
yang
terletak
/wp-
di
65 http://digilib.mercubuana.ac.id/z
includes/load.php Hasil dari proses identifikasi dapat dilihat dari gambar 38. Menunjukkan bahwa file asli wordpress yang disisipkan malware tetap terdeteksi sebagai malware.
Gambar 38. Hasil Uji Kedua Namun, hasil dari proses identifikasi tidak boleh langsung dikarantina karena akan menyebabkan error pada website. Harus dianalisa lebih lanjut dan dihapus bagian skrip malwarenya saja. Analisis Hasil Pengujian Dari hasil pengujian yang sudah dilakukan, dibuatkan tabel analisa yang dapat dilihat pada tabel 20. Tabel 20. Analisa Hasil Pengujian Jenis No Penguji an 1
2
Stand Alone Embedd ed
Jumlah
Sampel
Sampel Terdeteksi
% Akurasi
5
5
100%
5
5
100%
Aksi
karanti na Analisa lanjutan
66 http://digilib.mercubuana.ac.id/z