Sabtu, 11 Februari 2012

Aspek-aspek Pengujian (Test Penetrasi) Tingkat Keamanan Sistem Aplikasi (Berdasarkan Praktisi Pada Proyek TI)


A.        PENDAHULUAN
Saat ini adalah era information-based society dimana nilai informasi sangat penting dan menuntut kemampuan untuk mengakses dan menyediakan informasi secara cepat dan akurat menjadi sangat esensial bagi setiap organisasi.
Infrastruktur jaringan komputer, seperti LAN dan Internet, memungkinkan untuk menyediakan informasi secara cepat, sekaligus membuka potensi adanya lubang keamanan (security hole) atau vulnerability dari komponen-komponen yang menjaga agar nilai informasi tersebut tetap‘aman’.
Didalam tulisan ini akan dibahas item-item apa saja yang dilakukan dalam menguji (test penetrasi) tingkat keamanan sistem aplikasi komputer. Hal ini berdasarkan pengalaman penulis pada proyek-proyek TI.
Seperti diketahui bahwa teknologi serta teknik ancaman berubah sepanjang waktu, oleh sebab itu item-item kerentanan dan risiko keamanan sistem yang diuraikan ini adalah relatif yang diketahui sampai dengan saat ini. Sehingga kerentanan dan risiko dimasa datang untuk hal yang sama dapat berubah.
B.    KONFIGURASI SISTEM APLIKASI
Dalam kasus ini, pengujian (test penetrasi) tingkat keamanan adalah pada sistem aplikasi komputer yang dapat digambarkan pada diagram Use Case dibawah ini.
Gambar 1. Use Case Sistem Aplikasi
Sedangkan deployment sistem aplikasi memiliki tipikal konfigurasi seperti gambar dibawah.
Gambar 2. Konfigurasi Deployment Sistem Aplikasi
C.    ITEM PENGUJIAN (PENETRASI TEST) SISTEM APLIKASI
Pembahasan berikut adalah uraian setiap item pengujian atau penetrasi test kasus aplikasi ini untuk mengungkap kemungkinan vulnerability yang ada.
1.     Password sent in Plain Text
Password yang tidak dienkripsi pada saat proses login (pengiriman ke server untuk di otentikasi) dapat menimbulkan kerentanan terhadap serangan (penyadapan) dengan teknik MitM (Man-in-the-Middle) yang mengakibatkan hacker dapat dengan mudah melihat kerahasiaan (username & password) user yang sedang login. Apabila hacker bisa mendapatkan password untuk masuk ke dalam aplikasi maka ia dapat memperoleh akses terhadap informasi sensitif, memanipulasi data dan informasi yang ada di dalam aplikasi, serta melakukan tindakan-tindakan lain yang lebih membahayakan.
2.     Unrestricted Access (Client Page)
Biasanya pada web page setelah halaman login berhasil maka akan muncul halaman berikutnya dimana data URL akan muncul pada address bar browser. Pada titik itu pengguna dapat meng-copy data URL tersebut dan dapat menyalinnya kembali ke address bar di lain waktu sehingga tahap login untuk masuk ke aplikasi web dapat dilewati (mengakses halaman aplikasi web tanpa harus melakukan login). Apabila bisa masuk ke dalam aplikasi tanpa melakukan login maka hacker dapat memperoleh akses terhadap informasi sensitif, memanipulasi data dan informasi yang ada di dalam aplikasi, serta melakukan tindakan-tindakan lain yang lebih membahayakan.
3.     Un-expired Token
Token digunakan untuk proses aktivasi user aplikasi dan untuk mempertegas keabsahan user selain penggunaan username-password. Dalam hal token yang tidak memiliki waktu kadaluarsa (dapat menggunakan token yang telah digunakan sebelumnya) maka kegiatan transaksi tidak dapat dimonitor atau diawasi. Vulnerability ini menjadikan aplikasi tidak aman karena dapat di akses oleh siapapun selain pihak pemilik atau penanggungjawab dari pengguna aplikasi ini.
4.     URL Manipulation on file host.ini or info.ini
URL yang diisi pada file host.ini atau info.ini yang biasanya dimaksudkan untuk mempermudah user untuk dapat mengakses langsung ke situs yang dituju bila menggunakan browser dapat dimanipulasi untuk berkunjung ke situs hasil phising oleh pihak yang tidak berhak dilokasi browser tersebut. Manipulasi oleh hacker juga dapat dilakukan melalui cara Social Engineering terhadap user yang dimaksudkan untuk mendapatkan/mengganti informasi yang sensitif tersebut. Kemudian ketika hacker mendapatkan informasi-informasi sensitif maka bisa digunakan untuk melakukan serangan-serangan lebih lanjut.
5.     File Disclosure in XAMPP
XAMPP adalah paket sebuah Web Server (Apache Web server, DBMS MySQL) yang dipakai oleh kasus aplikasi ini. XAMPP memiliki celah yang dapat mengizinkan Attacker untuk men-disclosure suatu file secara remote. Hacker yang berhasil menemukan celah ini dapat melihat informasi mengenai penggunaan hal-hal yang mendukung berjalannya aplikasi dan mencari potensi celah keamanan yang bisa diexploitasi pada aplikasi yang bersangkutan. Informasi yang diperoleh bisa digunakan oleh hacker untuk melancarkan serangan yang lebih berbahaya.
6.     XSS on Client Page and on XAMPP Page
XSS (Cross-Site Scripting) adalah serangan dengan melakukan injeksi script hacker dengan mengirimkan ke web site (web server) sebagai input karakter. Kemudian script malicious tersebut diakses oleh user yang berhak yang kemudian running di mesin user, dimana akan meng-expose cookie dan mengambil informasi-informasi rahasia dari user yang bersangkutan. XSS juga dapat dilakukan dengan menginjeksi URL, dimana nanti dapat melakukan pengubahan terhadap informasi. Hacker yang berhasil menemukan celah ini dapat mengubah tampilan aplikasi (tampilan informasi penting) dan memungkinkan untuk melakukan penipuan terhadap pelanggan. Informasi-informasi rahasia dari XSS dapat digunakan untuk melakukan serangan-serangan lebih lanjut.
7.     Apache Vulnerability: mod_isapi
Adalah celah yang memanfaatkan ekstensi pada Apache yang melayani internet server (ISAPI.dll modules) untuk Host Microsoft Windows untuk mendapatkan akses administrator. Hacker yang berhasil meng-exploitasi celah ini akan mendapatkan akses Administrator dari server web aplikasi yang bersangkutan sehingga hacker dapat memegang kendali penuh terhadap aplikasi web.
8.     SQL Injections on Administrtor Page
SQL Injection adalah sebuah aksi hacking yang dilakukan di aplikasi (web page) client dengan cara memodifikasi perintah/script SQL yang ada di memori aplikasi (web page) client. Ini adalah teknik mengeksploitasi aplikasi web yang didalamnya menggunakan database untuk penyimpanan data. Yaitu dengan menyisipkan dari perintah SQL kedalam suatu parameter maupun suatu form (dgn karakter khusus). Hacker juga dapat memanfaatkan pesan-pesan error dari SQL server untuk mengetahui struktur database yang digunakan dan berpotensi untuk merusak database dari aplikasi web tersebut. Jika celah ini berhasil dieksploitasi maka hacker dapat merubah struktur dan atau data di database.
9.     Multiple Login on Client Page
Adalah Login yang menggunakan user-password yang sama tetapi dengan browser atau PC yang berbeda pada halaman client. Ketika hacker dapat mencuri user-password dengan cara social engineering maka ia dapat mengakses account yang sedang digunakan oleh seorang user tanpa diketahui oleh user bersangkutan. Maka hacker dapat leluasa mengakses informasi sensitif, memanipulasi data dan informasi serta melakukan tindakan-tindakan lain yang lebih membahayakan.
10. Unlimited Login Attemp on Client Page
Adalah percobaan Login dari user yang tidak terbatas ketika user mencoba-coba kombinasi dari username-password nya. Hal ini bisa digunakan oleh hacker untuk menebak-nebak username-password secara manual maupun dengan aplikasi brute force nya untuk mendapatkan akses illegal ke dalam aplikasi. Apabila bisa masuk kedalam aplikasi maka hacker dapat leluasa mengakses informasi sensitif, memanipulasi data dan informasi serta melakukan tindakan-tindakan lain yang lebih membahayakan
11. Non-Priviledge Account Availability on phpmyadmin
Adalah account dengan username admin tanpa password dimana merupakan default instalasi saat menginstall XAMPP (MySQL) yang merupakan fasilitas consol untuk administrator pada XAMPP (halaman web phpmyadmin). Halaman web phpmyadmin ini dapat diakses dari internet. Ketika hacker dapat mengakses halaman login aplikasi database (halaman phpmyadmin) tanpa halangan maka memungkinkannya untuk melakukan brute force terhadap otorisasi username-password pada software database. Jika hacker bisa mengakses database, wewwenangnya sangat minim. Namun walaupun hacker hanya bisa mengakses akun yang tidak memiliki wewenang terhadap aplikasi, akses terhadap direktori aplikasi database ini sendiri sudah merupakan celah yang memungkinkan hacker untuk membuat database dan melakukan input/upload ke mesin database, sehingga mendapatkan akun yang memiliki wewenang.
12. Payment Receipt can be Manipulated
Penyerang dapat mengubah atau memanipulasi data struk transaksi yang dicetak oleh sistem dimana hacker berhasil meng-intercept data dari input form maupun input data. Hacker yang dapat mencetak struk transaksi dengan data palsu (tidak sah) dapat merugikan banyak pihak.
13. Webalizer (on XAMPP) can be accessed in Public
Webalizer adalah fasilitas XAMPP untuk melihat statistik pengunjung yang dapat diakses dari IP public. Hacker yang dapat melihat informasi mengenai penggunaan hal-hal yang mendukung berjalannya aplikasi dan mencari potensi celah keamanan yang bisa dieksploitasi pada aplikasi yang bersangkutan. Informasi yang diperoleh bisa digunakan oleh hacker untuk melancarkan serangan yang lebih berbahaya.
D.    SERVER HARDENING
Pembahasan berikut adalah uraian setiap item pengujian celah keamanan sistem yang berkaitan dengan perangkat keras server dalam kaitannya dengan Sistem Operasi (Linux CENTOS) dan Aplikasi sekuriti lainnya atau disebut Server Hardening. Adapun standard Server Hardening ini mengikuti SANS (SysAdmin, Networking and Security) Institute - www.sans.org.
1.     System patches
System patches sedapat mungkin yang terpasang adalah mengikuti versi yang terbaru. System patches terbaru biasanya sudah menutup vulnerability yang ditemukan.
2.     Disable Unnecessary services
Mematikan services yang tidak diperlukan akan membuat sistem aplikasi lebih aman. Dalam kasus ini services seperti Proftpd, cupsd, sendmail, rpcstatd seharusnya tidak diperlukan dan services tersebut dapat dimanfaatkan oleh hacker dari remote.
3.     Check security on Key Files
Dalam SO Linux, Key Files digunakan sebagai pengganti password untuk otentikasi komunikasi protokol SSH. Key Files yang tidak terproteksi (dapat diakses oleh user yang tidak berhak) menyebabkan celah keamanan sistem.
4.     Default password policy
File Login.defs seharusnya diisi sesuai dengan password policy sekuriti organisasi. Misal: PASS_MAX_DAYS 60; PASS_MIN_DAYS 0; PASS_MIN_LEN 8; PASS_WARN_AGE 7.
5.     Limit root access using SUDO
Sebaiknya user root tidak digunakan (menggunakan SUDO) dimana hal ini adalah default dari Sistem Operasi Linux. Untuk mengijinkan user biasa mengeksekusi sebagai super user bisa dilakukan dengan mengedit file /etc/sudoers.
6.     Only allow root to access CRON
Hanya user root (superuser atau sekelas root) yang boleh mengakses CRON (a time-based job scheduler).
7.     Warning banners
Adalah peringatan yang muncul setelah Login (ke sistem komputer) berhasil kepada users yang sah agar tidak melakukan tindakan/ aksi yang melanggar ketentuan legalitas sehingga dirinya ataupun orang lain dapat melakukan tindakan/ aksi yang ilegal ke sistem komputer tersebut.
8.     Remote access and SSH basic settings
Pengaturan setting untuk penggunaan SSH pada server Linux hendaknya tidak minimum atau tidak default. Misalnya dapat di-setting : PermitRootLogin no; PermitEmptyPassword no; IgnoreRhost yes; RhostsRSAAuthentication no; HostBasedAuthentication no; LoginGraceTime 1m;.
9.     Host-based Firewall protection with iptables
Kejadian koneksi di Firewall sebaiknya di-Logging (dicatat). Hal ini dapat dilakukan dengan setting “-A RH-Firewall-1-INPUT –j LOG”.
10. Xinetd.conf & inetd.conf
Xinetd adalah eXtended interNET service daemon, sebuah file konfigurasi yang aman sebagai pengganti dari inetd. Dengan melakukan pengeditan pada /etc/inetd.conf (/etc/Xinetd.conf) maka dapat mematikan services yang tidak digunakan dengan menambahkan tanda komentar (#) pada awal baris. SO Linux yang hanya digunakan untuk aplikasi khusus umumnya banyak services internet yang tidak digunakan, misalnya finger, telnet, ftp, ssh, dll sehingga dapat dimatikan untuk mengurangi risiko keamanan sistem. Untuk lebih amannya komunikasi dengan jaringan luar maka Xinetd (inetd) dapat dibungkus dengan teknik TCPwrapper.
11. System logging
Syslog adalah mencatat segala kegiatan Sistem Operasi. Catatan ini digunakan untuk kebutuhan audit, yaitu memeriksa sistem jika dibutuhkan, misalnya jika terjadi kesalahan (error) maka administrator dapat lebih mudah mencari sumber kesalahan karena informasinya tercatat dengan rapi. Untuk membantu keperluan audit keamanan sistem maka Syslog sangat membantu.
12. Backups
Demi menjaga kelangsungan operasional sistem tetap berjalan seperti diharapkan maka fasilitas backup/restore sistem perlu diaktifkan. Cracker biasanya menyerang sistem dengan menambah, mengubah file, menginstall program, menghapus file atau program. Ketika pada titik dirasakan sistem mengalami serangan cracker tersebut maka sistem bisa di pulihkan (restore) ke keadaan sebelum serangan keamanan terjadi.
13. Integrity-checking software
Adalah sofware pemeriksa integritas sistem, digunakan untuk memonitor perubahan yang terjadi pada sebuah sistem. Cracker mungkin menambah, mengubah file atau hak akses file, menginstall program, menghapus file atau program. Aplikasi Integrity-checking mengecek file atau program dan membandingkannya dengan database sebelumnya yang dianggap sah oleh administrator. Beberapa Integrity-checking software misalnya Tripwire, Aide, Samhain.
14. Apache security
Beberapa hal untuk mengamankan Apache antara lain: Buang module Apache yang tidak diperlukan dengan memberi tanda # pada baris LoadModule; Samarkan identitias Apache (edit file httpd.conf dan setting [ServerSignature off, ServerTokens Prod]); Pastikan Apache di-running oleh user dan group tersendiri (edit httpd.conf dan setting misalnya [User aryonurutomo] [Group aryonurutomo]); Disable fitur seperti direktori browsing, server side includes, CGI execution, follow symbolic links, multiple options (edit httpd.conf setting [Options –ExecCGI –FollowSymLinks –Indexes –dlsb]); Pastikan hanya root yang punya akses penuh ke apache config dan binaries (chown –R root:root /usr/local/apache, chmod –R o-rwx /usr/local/apache]; Jalankan Apache di Chroot environment yang akan menempatkan proses Apache dalam lingkungan yang terbatas dalam chroot, semua library yang dibutuhkan dipindahkan ke lingkungan chroot.
15. Apache Mod_security module
Mod_security memungkinkan peningkatan keamanan secara keseluruhan pada server Apache dengan menyediakan pengaturan dan konfigurasi tambahan. Modul software mod_security dapat diperoleh di http://modsecurity.org.
16. Xwindow
Pada kasus server Linux khusus untuk menjalankan Apache dan aplikasi khusus, maka Xwindow pada server tidak diperlukan. Nonaktifkan dan atau menghapus Xwindow dapat meningkatkan keamanan dan kinerja. Edit /etc/inittab dan ubah run level ke 3 dan untuk menghapus Xwindow ‘# yum groupremove “X Window System”’.
17. LIDS (Linux Intrusion Detection System (IDS))
Fungsi utama IDS melakukan mandatory access control (MAC), a port scan detector, file protection and proses protection. Sistem sebaiknya di-install LIDS atau Snort atau yang sejenis untuk membantu menghadang serangan dan untuk keperluan audit keamanan sistem.
18. Email Security
Jika disistem terdapat layanan email, maka sebaiknya di-install aplikasi Email security.
19. File Sharing
Jika disistem terdapat layanan File Sharing, maka sebaiknya di-install aplikasi managemen File sharing.
20. Anti-Virus Protection
Sebaiknya server diinstall aplikasi anti virus guna menghindari terjadinya infeksi pada file. Jika mengikuti standart SANS untuk aplikasi anti virus adalah antara lain Clamav, F-prot, Vexira

Demikian sedikit sharing pengalaman berkaitan dengan keamanan sistem aplikasi. Mungkin masih cukup banyak terdapat vulnerability lain yang belum sempat diungkap. Tulisan berikut akan membahas bagaimana mengatasi atau menutup celah keamanan (vulnerability) tersebut dan seberapa mudah/sulit hacker menembusnya serta bagaimana dampaknya terhadap organisasi jika vulnerability tersebut dapat ditembus. Jika tidak sempat maka bisa mengikuti pada kelas kuliah. Semoga bermanfaat.

DAFTAR PUSAKA
Securing Your Network, Ido Dubrawsky, Syngress Publishing Inc, 2007.
Cryptography and Network Security Principles and Practice, Willian Stallings, Prentice HallNovember 2005.
Analisa Keamanan dan Vulnerabilitas Jaringan, Firrar Utdirartomo, Gava Media Yogyakarta, 2004.
Sumber internet.