Salah satu cara terbaik untuk menemukan kekurangan dalam aplikasi web Anda adalah dengan melakukan Penetration Testing (dikenal juga dengan istilah Pen test atau Pen testing). Cara ini adalah strategi pengujian keamanan yang paling banyak digunakan oleh sebagian besar aplikasi web.
Penetration Testing untuk aplikasi web dilakukan dengan memulai simulasi, baik secara internal maupun eksternal, untuk mendapatkan akses ke data yang sensitif. Pengujian ini memungkinkan end user untuk menentukan kelemahan dari keamanan seluruh aplikasi web beserta komponennya, termasuk di dalamnya basis data atau database, source code, dan jaringan back-end. Hal ini membantu developer dalam memprioritaskan kerentanan dan ancaman yang akan terjadi dan menghasilkan strategi yang tepat untuk menguranginya
Daftar Isi
- Pentingnya Penetration Testing
- Metode Dalam Penetration Testing
- Internal Pen testing
- External Pen testing
- Langkah-Langkah Yang Dilakukan Dalam Penetration Testing
- Langkah 1: Pengintaian Yang Aktif dan Pasif
- Langkah 2: Fase Eksekusi
- Langkah 3: Laporan dan Rekomendasi
- Kesimpulan
Pentingnya Penetration Testing
Saat ini hampir semua aktivitas keseharian kita lakukan melalui internet. Mulai dari berbelanja sampai urusan perbankan keuangan bahkan transaksi sehari-hari, sebagian besar dapat dilakukan secara digital. Berbagai aktivitas yang dapat dilakukan secara digital tersebut juga didukung dengan adanya beberapa aplikasi web yang dapat digunakan.
Seiring dengan meningkatnya popularitas aplikasi web, muncul serangan-serangan yang dilakukan oleh pihak ketiga dengan motif tindak kejahatan terhadap sistem aplikasi web yang ada. Mereka menyasar jaringan-jaringan basis data yang ada di dalam aplikasi web karena biasanya basis data ini adalah tempat menyimpan atau mengirimkan data yang sensitif. Oleh karena itu, menjadi hal yang tak kalah penting untuk menjaga keamanan aplikasi web setiap saat, terutama jika aplikasi web ini terbuka secara publik melalui World Wide Web (www).
Dampak yang dihasilkan oleh serangan di sistem aplikasi web terhadap suatu bisnis sangatlah fatal. Contohnya kasus tahun 2014 lalu saat para hacker menyerang jaringan komputer Sony Pictures, salah satu studio film besar di Hollywood. Para hacker ini mengambil banyak sekali data mengenai dokumen rahasia perusahaan, baik itu mengenai industri perfilman maupun urusan internal perusahaan seperti gaji dan data pribadi karyawan. Butuh waktu beberapa hari untuk Sony Pictures mengembalikan sistem jaringan mereka ke dalam kondisi normal. Bahkan, para karyawan terpaksa menggunakan papan tulis untuk bekerja dan berkomunikasi dengan karyawan lainnya karena komputer mereka tidak bisa digunakan.
Secara singkat, Penetration Testing adalah tindakan pencegahan yang memungkinkan Anda menganalisis status keseluruhan dari lapisan keamanan sistem yang ada.
Tujuan dilakukannya Penetration Testing secara umum adalah sebagai berikut:
- Identifikasi kerentanan dan ancaman yang tidak diketahui oleh sistem;
- Mengecek efektivitas kebijakan keamanan (security policies) yang telah dibuat;
- Menguji komponen yang terbuka untuk publik seperti firewall, router, dan DNS;
- Menentukan arah yang paling rentan mendapatkan serangan pihak ketiga
- Mencari celah yang dapat menyebabkan pencurian data
Jika Anda melihat penggunaan internet saat ini, Anda akan mengetahui bahwa penggunaan internet seluler melalui perangkat seperti telepon genggam atau handphone mengalami peningkatan tajam. Ini artinya penyerangan terhadap aplikasi web di jaringan seluler juga berpotensi meningkat secara drastis. Ketika pengguna mengakses situs web atau aplikasi menggunakan perangkat seluler, mereka menjadi lebih rentan terhadap serangan dengan motif tindak kejahatan. Oleh karena itu, Penetration Testing memiliki peran penting dalam siklus pengembangan software dan juga dalam membangun sistem yang aman yang dapat digunakan para penggunanya tanpa harus merasa khawatir tentang peretasan atau pencurian data.
Metode Dalam Penetration Testing
Pen testing untuk sistem aplikasi web dapat dilakukan dengan dua cara yakni melalui simulasi serangan di dalam atau di luar sistem. Perbedaan kedua metode tersebut dapat dilihat dalam penjelasan berikut ini:
a. Metode 1: Pen testing Internal
Sesuai dengan namanya, pen testing internal dilakukan dalam jaringan yang ada di dalam sistem melalui LAN, termasuk juga pengujian aplikasi web yang host melalui intranet. Metode ini memfasilitasi untuk identifikasi setiap kerentanan yang mungkin ada di dalam firewall perusahaan. Salah satu kesalahpahaman terbesar adalah anggapan bahwa serangan hanya dapat terjadi dari luar perusahaan sehingga pengembang software sering mengabaikan atau tidak terlalu mementingkan pen testing internal. Beberapa serangan dari internal yang dapat terjadi antara lain:
- Serangan dari karyawan, kontraktor atau pihak lain yang merasa dirugikan dan telah mengundurkan diri tetapi masih memiliki akses ke kebijakan keamanan internal
- Serangan yang berasal dari rekayasa sosial (social engineering)
- Simulasi serangan phishing yang berkelanjutan
- Serangan dari penggunaan User Privileges
Pen test dengan metode ini dilakukan dengan mengakses lingkungan tanpa kredensial yang valid dan menentukan kemungkinan arah atau rute serangan yang akan terjadi.
b. Metode 2: Pen testing Eksternal
Tidak seperti pentest dengan metode internal, metode eksternal ini berfokus pada serangan dari luar untuk menguji aplikasi web yang dihosting di internet. Penguji (tester atau disebut juga ethical hacker tidak memiliki informasi mengenai sistem internal dan lapisan keamanan yang diterapkan oleh perusahaan. Mereka hanya diberi IP Address dari sistem target untuk simulasi serangan eksternal. Tidak ada informasi lain yang diberikan dan diserahkan kepada pihak yang menguji untuk mencari halaman web publik supaya bisa mendapatkan informasi tentang host yang menjadi target untuk kemudian menyusup dan membobolnya.
Pen testing dengan metode ini mencakup pengujian firewall, server, dan sistem pendeteksi gangguan (IDS).
Langkah-Langkah Yang Dilakukan Dalam Penetration Testing
Pen testing pada aplikasi web menitikberatkan pada lingkungan dan proses setup dari aplikasi, bukan aplikasi itu yang melakukannya sendiri. Pengujian ini melakukan pengumpulan informasi mengenai aplikasi web yang menjadi target, memetakan jaringan hosting, dan menyelidiki kemungkinan arah serangan yang dapat terjadi. Langkah-langkah yang dilakukan dalam pengujian ini bisa disampaikan sebagai berikut:
Langkah 1: Pengintaian Yang Aktif dan Pasif
Langkah pertama dalam pen testing adalah fase pengintaian atau pengumpulan informasi. Langkah ini memberikan informasi kepada tester yang dapat digunakan untuk mengidentifikasi dan mengeksploitasi bagian yang rentan diserang dalam aplikasi web. Pengintaian pasif artinya Anda melakukan pengumpulan informasi yang ada di internet tanpa terlibat langsung dengan sistem yang menjadi target sasaran serangan. Hal ini sebagian besar dilakukan menggunakan platform Google, mulai dari subdomain, tautan, versi sistem sebelumnya, dan lain-lain.
Sedangkan pengintaian aktif adalah penyelidikan sistem target secara langsung untuk mendapatkan hasil berupa kemungkinan arah serangan. Beberapa contoh metode yang dilakukan untuk pengintaian aktif adalah sebagai berikut:
Nmap Fingerprinting
Anda dapat menggunakan pemindai jaringan untuk mendapatkan informasi mengenai bahasa pemrograman dalam aplikasi, OS Server, Software Server, Open Port, dan layanan yang sedang berjalan dalam sistem aplikasi web
Shodan Network Scanner
Tools ini dapat membantu Anda untuk mendapatkan informasi tambahan yang tersedia untuk umum mengenai aplikasi web, termasuk geolokasi, software server yang digunakan, open port, dan masih banyak lagi yang lainnya.
DNS Forward and Reverse Lookup
Metode ini memungkinkan Anda mengaitkan subdomain yang baru ditemukan dengan alamat IP masing-masing sistem. Anda juga dapat menggunakan Burp Suite untuk membuat proses ini menjadi otomatis.
DNS Zone Transfer
Anda dapat melakukan ini dengan menggunakan perintah (command) nslookup untuk mengetahui server DNS yang digunakan. Pilihan lain adalah menggunakan situs web identifikasi server DNS kemudian menggunakan perintah untuk mencoba transfer zona DNS yang digunakan.
Identifikasi Website Eksternal Yang Terkait
Bagian dari fase pengintaian ini cukup penting karena adanya interaksi antara website eksternal dengan website yang menjadi sasaran. Identifikasi ini dapat dengan mudah dilakukan dengan Burp Suite.
Menganalisis Head and Option Requests
Respon yang dihasilkan saat melakukan request Head and Option HTTP akan menunjukkan software server dan versinya ditambah dengan data lain yang juga berharga untuk analisis Anda. Gunakan fitur Burp Suite Intercept saat mengunjungi website target untuk mendapatkan informasi-informasi ini.
Data dari Error Pages
Seringkali halaman yang error justru memberikan informasi lebih dari yang Anda perkirakan. Dengan mengubah URL website target dan memaksakan dalam kondisi ‘404 Not Found’, Anda akan mengetahui server dan versi yang menjalankan web tersebut.
Memeriksa Source Code
Bagian ini membantu Anda menemukan informasi yang berguna dan dapat digunakan untuk menunjukkan beberapa bagian yang rentan terhadap serangan. Hal ini membantu Anda menentukan lingkungan tempat aplikasi Anda berjalan dan informasi relevan lainnya.
Mendokumentasikan Seluruh Data
Setelah mendapatkan semua informasi yang berguna dan Anda butuhkan, penting untuk mendokumentasikan dan mengatur hal-hal yang Anda temukan dalam analisis-analisis sebelumnya. Hal ini dapat digunakan sebagai dasar untuk analisis lebih lanjut atau untuk menemukan kerentanan yang dapat dieksploitasi.
Langkah 2: Fase Eksekusi
Fase berikutnya bisa dikatakan sebagai fase yang penuh dengan serangan. Dalam fase kedua ini, Anda menerapkan strategi berdasarkan informasi yang telah Anda kumpulkan pada fase sebelumnya. Inilah momen yang tepat untuk mengatakan bahwa pengumpulan data memainkan peran yang cukup penting. Data yang dikumpulkan akan membantu Anda menentukan alat yang lebih spesifik lagi dari beberapa pilihan yang ada untuk menyesuaikan dengan kebutuhan penelitian Anda. Beberapa pilihan alat atau tools yang dapat Anda gunakan dalam fase ini dapat disampaikan sebagai berikut:
Nmap
Nmap atau Network Mapping lebih dari sekadar alat pemindaian dan pengintaian dalam pen testing. Alat ini digunakan untuk menemukan jaringan dan mengecek keamanannya. Selain memberikan informasi dasar tentang website yang dituju, Nmap juga mencakup kegunaan untuk mendeteksi kerentanan.
Wireshark
Wireshark adalah salah satu alat untuk menganalisis protokol jaringan paling populer saat ini. Alat ini memfasilitasi pemeriksaan protokol secara mendalam serta pengambilan live traffic dan analisis offline dari data yang diambil. Data yang diekspor menggunakan XML, PostScript, CSV, atau format teks biasa untuk dokumentasi dan analisis lebih lanjut.
Metasploit
Alat pentesting ini sebenarnya adalah sebuah kerangka kerja, bukan sebuah aplikasi khusus. Anda dapat menggunakan Metasploit untuk membuat aplikasi khusus dengan tugas atau perintah tertentu. Diantara tugas atau perintah yang dapat dibuat dalam Metasploit adalah sebagai berikut:
- Memilih dan melakukan konfigurasi dari jaringan yang ditargetkan
- Memilih dan melakukan konfigurasi payload yang akan digunakan
- Memilih dan melakukan konfigurasi skema
Nessus
Alat pemindai kerentanan ini membantu tester mengidentifikasi kerentanan, masalah konfigurasi, dan bahkan keberadaan malware di dalam aplikasi web. Alat ini tidak dirancang untuk mengeksekusi, tetapi menawarkan bantuan yang besar saat melakukan pengintaian.
Burp Suite
Alat ini sudah disinggung beberapa kali sebelumnya. Hal ini disebabkan lengkapnya alat ini dalam menguji keamanan aplikasi web. Alat ini memiliki beberapa alat lain yang digunakan untuk setiap fase pengujian, seperti Proxy Intercepting, Application-aware spider, Advanced Web Application scanner, Intruder, Repeater, dan Sequencer tool.
Langkah 3: Laporan dan Rekomendasi
Setelah Anda mengumpulkan data lalu mengeksekusi strategi berdasarkan data tersebut, sekarang saatnya Anda menulis laporan pentesting yang Anda lakukan pada sistem aplikasi web. Buatlah struktur yang ringkas untuk laporan Anda dan pastikan semua temuan Anda didukung oleh data. Anda harus berpegang pada metode apa yang berhasil dan jelaskan prosesnya dengan detail.
Selain menuliskan eksekusi yang berhasil, Anda perlu mengkategorikannya sesuai dengan tingkat kekritisan dari serangan yang mungkin terjadi. Hal ini untuk membantu developer fokus dalam menangani serangan yang lebih serius terlebih dahulu.
Kesimpulan
Aplikasi web menawarkan banyak kemudahan bagi end user, tetapi ada biaya yang juga tidak sedikit untuk dikeluarkan. Sebagian besar sistem terbuka untuk publik di internet dan datanya tersedia untuk orang-orang yang ingin melakukan sedikit riset lebih dalam dari sistemnya. Penggunaan yang terus meningkat dan teknologi yang terus berkembang dalam aplikasi web berdampak pada kerentanan terhadap serangan yang dapat sewaktu-waktu dilakukan oleh hacker. Oleh karena itu, pen testing dalam aplikasi web harus menjadi prioritas utama, terlebih lagi jika sistem tersebut berisikan informasi yang cukup sensitif.
Badr Interactive sebagai software house yang sudah berpengalaman lebih dari 10 tahun di industri software, memiliki 8 standar kualitas pengembangan sistem dimana salah satunya adalah aspek security atau keamanan. Melalui standar security engineering yang sudah kami terapkan kepada ratusan klien kami, kami berkomitmen untuk menjaga keamanan sistem yang sedang dikembangkan. Kami juga dapat membantu klien menerapkan penetration testing jika dibutuhkan.