Penjelasan Penetration Testing

Penjelasan Penetration Testing 
Merupakan metode yang digunakan untuk mengevaluasi keamanan sistem atau jaringan komputer dengan melakukan sebuah simulasi penyerangan. Pada metodologi OWASP Web Application Security Testing difokuskan hanya pada keamanan aplikasi web, dimana prosesnya melibatkan analisis secara aktif terhadap aplikasi web, untuk menemukan kelemahan, kecacatan teknis, dan kelemahan. Masalah-masalah keamanan yang telah ditemukan akan diberikan kepada pemilik sistem, yang disertakan dengan laporan yang berisi informasi tentang perkiraan dampak yang timbul dan juga solusi-solusi teknik untuk masalah-masalah tersebut.

Selain itu penetration testing juga merupakan teknik yang telah umum digunakan untuk menguji keamanan suatu jaringan. Penetration testing dikenal juga sebagai black box testing atau ethical hacking. Penetration testing merupakan seni dari pengujian sistem aplikasi web yang sedang berjalan, tanpa mengetahui apa yang dikerjakan di dalam (inner workings) aplikasi web itu sendiri. Seorang penguji berperan sebagai penyerang (attacker) dan berusaha untuk menemukan dan mengeksploitasi bagian dari aplikasi web yang memiliki sifat mudah diserang (vulnerabilities). 

Selama ini penetration testing telah terbukti efektif dalam membantu menangani masalah keamanan pada jaringan. Teknik penetration testing tidak hanya ditujukan pada aplikasi, tetapi juga dapat diterapkan pada jaringan, dan sistem operasi, dimana tujuan utama-nya adalah mencari dan kemudian berusaha untuk mengeksploitasi vulnerabilities yang telah diketahui atau terdeteksi pada evaluasi sebelumnya yang terdapat dalam teknologi tertentu.

Selain itu terdapat kelebihan dan kekurangan yang dimiliki oleh pengujian aplikasi web dengan menggunakan teknik penetration testing, adalah sebagai berikut:

A. Kelebihan 
a. Dapat dilakukan secara cepat, cukup sedikit waktu yang dibutuhkan (oleh karena itu relatif murah).
b. Relatif dibutuhkan keterampilan yang lebih rendah bila dibandingkan dengan teknik pengujian yang dilakukan dengan cara pemeriksaan source code (code reviews).
c. Pengujian dilakukan pada kode yang sebenarnya sedang digunakan (exposed).

B. Kekurangan 
a. Terlalu terlambat dilakukan dalam SDLC 
b. Hanya menguji dampak depan saja 

Penetration Testing Work Flow
Untuk melakukan penetrasi testing aplikasi web, OWASP menggunakan suatu metode (workflow) yang digunakan untuk mengatasi kemungkinan situasi yang terjadi pada saat proses penetrasi testing berlangsung, Gambar 12 menunjukkan workflow diagram yang digunakan untuk membantu melakukan penetrasi testing pada suatu aplikasi web, yang terdiri dari beberapa tahap, diantaranya:
1. Penetrasi testing dimulai dengan mengumpulkan informasi yang mungkin mengenai infrastruktur dan aplikasi yang terlibat. Tahap ini sangat penting, karena jika tidak paham mengenai dasar teknologi yang terlibat, maka kemungkinan gagal akan terjadi selama tahap pengujian berlangsung. 
2. Proses pengujian harus mengikuti semua tahap yang berbeda yang ditunjukkan pada Gambar 12.
3. Penguji harus berusaha untuk mengeksploitasi semua kelemahan yang ditemukan. Bahkan jika eksploitasi gagal dilakukan, penguji akan memperoleh pemahaman lebih mengenai resiko kelemahan yang ditemukan.
4. Semua informasi yang diperoleh dengan cara memeriksa kelemahan aplikasi web (seperti, kesalahan pemrograman atau pencurian informasi internal) harus digunakan kembali untuk mengukur semua pemahaman tentang aplikasi dan bagaimana aplikasi tersebut bekerja.
5. Jika selama proses pengujian berlangsung, kelemahan berhasil ditemukan pada aplikasi web, seperti penyingkapan informasi yang kritis bagi bisnis, maka perusahaan yang berhubungan harus segera dihubungi untuk memberitahu tentang situasi dan resiko yang terlibat. 

Metode Penetration Testing
Metode penetration testing aplikasi web pada metodologi OWASP dilakukan berdasarkan pada dua pendekatan yaitu black box testing dan gray box testing. Pengujian Black box berarti penguji tidak memiliki banyak informasi mengenai struktur, komponen dan bagian internal aplikasi web yang akan diuji. Sedangkan pengujian white box berarti penguji memiliki sebagian informasi tentang bagian internal aplikasi, seperti penyedia perangkat lunak (platform vendor), sessionID dan algoritma yang digunakan. Gambar 11 merupakan gambar yang dihasilkan dari pemodelan metodologi OWASP yang menunjukkan model yang terdapat pada metodologi OWASP untuk melakukan penetrasi testing pada suatu aplikasi web, yang terdiri dari:
a. Tester: Seseorang yang melakukan aktifitas pengujian
b. Tools and metodologi: Inti dari panduan yang diberikan oleh OWASP
c. Application: Aplikasi web yang akan diuji.

Gambar OWASP Penetration Testing Model

Tahap Pengujian Penetrasi Aplikasi Web
OWASP membagi uji penetrasi aplikasi web ke dalam tiga tahap yaitu, sebelum pengujian (pre-attack phase), saat pengujian (attack phase) dan setelah pengujian (post-attack phase).

Pre-Attack Phase
Pre-Attack Phase merupakan tahap yang dilakukan sebelum penyerangan atau disebut juga dengan pengujian yang dilakukan dengan cara pasif, dimana penguji berusaha untuk mengumpulkan informasi yang berhubungan dengan aplikasi dan memahami mekanisme aplikasi web yang akan diuji.

Gambar Penetration Testing Workflow

Attack Phase
Attack phase adalah tahap inti dari pengujian aplikasi web yang dilakukan secara aktif, dimana tahap ini bermanfaat untuk menemukan kelemahan yang terdapat pada aplikasi web, yang dilakukan dengan cara melakukan simulasi penyerangan pada aplikasi web. Berikut merupakan keterangan-keterangan yang dibutuhkan selama proses pengujian:

a. Kategori 
Merupakan kategori pengujian yang telah didefinisikan oleh OWASP, yang dikenal dengan istilah OWASP Top 10, yang merupakan sepuluh besar kelemahan yang sering terjadi pada aplikasi web.

b. Nomor Referensi
Digunakan untuk lebih memudahkan proses identifikasi, yang diklasifikasikan berdasarkan pada kategori pengujian.

c. Nama Kebutuhan
Nama kebutuhan (requirement) yang diperlukan untuk dilakukan pengujian. Setiap kebutuhan diidentifikasi berdasarkan nomor referensi.

d. Kelemahan Aplikasi Web (Vulnerability)
Deskripsi kelemahan aplikasi web yang telah didefinisikan sebelumnya oleh OWASP, dengan mengetahui kelemahan dapat membantu menentukan bagian mana dari aplikasi web yang perlu dilakukan perbaikan. 

Gambar Tahap Penetration Testing

Post-Attack Phase
Pada tahap ini dilakukan penilaian terhadap dampak resiko yang ditimbulkan setelah kelemahan ditemukan pada aplikasi web. Gambar merupakan gambar yang dihasilkan dari pemodelan metodologi OWASP yang menunjukkan tahap-tahap yang dilakukan selama proses penetrasi testing. Tahap yang dilakukan setelah tahap pengujian selesai dilakukan, diantaranya adalah sebagai berikut:

A. Penilaian Resiko 
Penilaian resiko merupakan tahap yang dilakukan setelah proses pengujian aplikasi web berhasil dilakukan. Metode yang digunakan untuk memperkirakan resiko bisnis adalah dengan menggunakan metodologi OWASP, dimana dengan metode tersebut dapat diputuskan apa saja yang harus dilakukan terhadap resiko-resiko tersebut. Dengan mengetahui resiko yang akan terjadi maka banyak manfaat yang akan diperoleh diantaranya, menghemat waktu dan mengurangi terjadinya resiko yang lebih serius. Perkiraan resiko pada metodologi OWASP dimulai dengan model:
Likelihood merupakan kemungkinan penyebab yang digunakan untuk memprediksi akibat yang terjadi pada suatu aplikasi web. Sedangkan impact adalah dampak atau konsekuensi yang ditimbulkan akibat serangan yang ditujukan terhadap aplikasi web. Menurut OWASP terdapat beberapa tahap untuk menentukan dan mengkombinasikan besarnya resiko yang ditimbulkan akibat eksploitasi kelemahan yang terdapat pada suatu aplikasi web, tahap-tahap tersebut diantaranya: 
a. Tahap 1: Identifying a Risk
b. Tahap 2: Factors for Estimating Likelihood
c. Tahap 3: Factors for Estimating Business Impact
d. Tahap 4: Determining Severity of the Risk
e. Tahap 5: Deciding What to Fix

Tahap 1: Identifying a Risk
Tahap pertama untuk mengetahui resiko yang terjadi pada sistem keamanan adalah dengan mendapatkan informasi yang berhubungan dengan Threat agent yang terlibat, serangan yang digunakan, kelemahan yang diperoleh dan dampak yang terjadi apabila kelemahan tersebut berhasil di eksploitasi.

Tahap 2: Factors for Estimating Likelihood
Setelah tahap pertama dilakukan dan telah digambarkan seberapa serius hal tersebut, maka tahap selanjutnya adalah melakukan perkiraan likelihood. Proses identifikasi yang dilakukan adalah dengan memperkirakan likelihood apakah berada pada tingkat rendah, sedang, atau cukup tinggi.

Di bawah ini merupakan faktor-faktor yang digunakan untuk memperkirakan seluruh likelihood diantaranya Threat agent factors dan vulnerability factor.

a. Threat Agent Factors
Tahap pertama adalah threat agent, tujuannya adalah memperkirakan kemungkinan yang akan terjadi apabila proses penyerangan berhasil dilakukan oleh para attacker. 

- Skill Level 
Bagaimana kemampuan teknis yang dimiliki oleh attacker.

- Motive 
Apakah motif attacker mencari dan memanfaatkan kelemahan yang ada.

- Opportunity 
Berapa banyak keuntungan yang dapat diperoleh oleh para attacker setelah mengeksploitasi kelemahan yang ada.

- Size
Seberapa besar kelompok attacker tersebut.

b. Vulnerability Factors
Tahap berikutnya adalah faktor kelemahan. Tujuannya adalah memperkirakan kemungkinan-kemungkinan yang terjadi pada bagian kelemahan yang telah ditemukan dan dimanfaatkan.

- Ease of discovery
Seberapa mudah attacker menemukan kelemahan yang ada.

- Ease of exploit 
Seberapa mudah para attacker mengeksploitasi kelemahan tersebut.

- Awareness 
Seberapa baik pengetahuan yang diketahui tentang kelemahan yang dimiliki oleh attacker.

- Intrusion detection
Bagaimana cara eksploitasi dapat di deteksi.

Gambar menunjukkan faktor-faktor yang digunakan untuk memperkirakan likelihood, dan disertakan pula nilai pada setiap faktor-nya, dimana nilai-nilai tersebut akan digunakan sebagai perhitungan besarnya resiko yang terjadi sebenarnya. 

Tahap 3: Factors for Estimating Impact
Terdapat dua macam dampak yang ditimbulkan apabila proses penyerangan berhasil dilakukan. Dampak pertama adalah dampak teknis yang terjadi pada sisi aplikasi, dan berakibat pada data yang digunakan dan fungsi-fungsi yang tersedia pada aplikasi web. Dampak kedua adalah dampak bisnis yang terjadi pada sisi bisnis dan operasional perusahaan. Faktor untuk memperkirakan dampak yang terjadi diantaranya technical impact factor dan business impact factor.

a. Technical Impact Factors
Dampak teknis terdiri dari confidentiality, integrity, availability, dan accountability. Tujuannya adalah untuk memperkirakan besarnya dampak yang terjadi pada sistem apabila kelemahan yang ditemukan berhasil di eksploitasi.
- Loss of confidentiality 
Seberapa banyak data yang dapat diperlihatkan dan seberapa sensitif data tersebut.

- Loss of integrity
Seberapa banyak data yang dapat di korupsi dan bagaimana tingkat kerusakan-nya.

- Loss of availability 
Seberapa besar layanan yang hilang dan seberapa vital hal tersebut terjadi.

- Loss of accountability 
Apakah aksi yang dilakukan oleh seorang attacker dapat ditelusuri.

Gambar Faktor-faktor untuk Memperkirakan Likelihood

b. Business Impact Factors
Di bawah ini merupakan faktor-faktor umum yang mungkin terjadi pada sektor bisnis apabila kelemahan yang ditemukan di eksploitasi:

- Financial damage
Berapa banyak kerugian finansial yang ditimbulkan dari hasil eksploitasi

- Reputation damage 
Apakah eksploitasi yang dilakukan akan merusak reputasi bisnis.

- Non compliance
Seberapa banyak ditemukan pelanggaran yang terjadi 

- Privacy violation
Berapa banyak identitas pribadi yang dapat diungkap.

Gambar menunjukkan faktor-faktor yang digunakan untuk memperkirakan dampak yang terjadi, dan disertakan pula nilai pada setiap faktor-nya.

Tahap Determining the Severity of the Risk
Pada tahap ini faktor likelihood dan impact dikombinasikan untuk menghitung seberapa besar resiko yang akan ditimbulkan. Hal yang dilakukan pada tahap ini adalah menentukan apakah likelihood mempunyai tingkat LOW, MEDIUM, atau HIGH, dimana ketiga kategori tersebut berada pada skala nilai 0-9.

Tahap pertama untuk mengetahui tingkatan likelihood adalah dengan cara menghitung jumlah nilai dari setiap faktor dibagi jumlah banyaknya faktor. Di bawah ini merupakan contoh bagaimana menentukan kategori likelihood apakah berada pada tingkat LOW, MEDIUM, atau HIGH. 

B. Menentukan Besarnya Resiko 
Setelah hasil perkiraan likelihood dan impact didapatkan, kemudian dilakukan kombinasi antara keduanya untuk menentukan hasil akhir, yaitu seberapa besar tingkat resiko yang sebenarnya diperoleh. Untuk menentukan hasil akhir dapat digunakan nilai yang terdapat pada dampak teknis maupun dampak bisnis. 

Tahap 5: Deciding What to Fix
Setelah mendapatkan klasifikasi resiko dari aplikasi yang diuji, maka harus diputuskan bagian apa saja yang akan diperbaiki, pada umumnya organisasi atau perusahaan harus memperbaiki bagian yang dianggap vital dan menimbulkan kerugian yang cukup besar saja

Pengujian Autentikasi
Pengujian autentikasi dapat dilakukan dari yang mudah (default password) sampai yang membutuhkan waktu untuk mendapatkan hasil (brute force). Beberapa aplikasi web sering diserang dengan menggunakan teknik Bypassing Authentication Schema, misalnya SQL Injection.

Pada umumnya, pengujian ini dilakukan dengan mengolah hasil temuan dari proses pengumpulan informasi. Bisa juga dilakukan dengan melakukan Googling. Bahkan bila menggunakan kata kunci (keyword) yang spesifik seringkali ditemukan nama pengguna atau kata kunci dalam format .doc, .xls, .pdf, dan ada pula password database yang ditemukan dalam plain text. 

a. Nomor Referensi 
OWASP-AT-001 s/d OWASP-AT-010

b. Kebutuhan (Prioritas) 
Kategori ini berhubungan dengan kebutuhan untuk memastikan bahwa informasi betul-betul asli, orang yang mengakses atau memberikan informasi adalah betul-betul orang yang dimaksud, atau server yang dihubungi adalah betul-betul server yang asli. Gambar merupakan gambar yang dihasilkan dari pemodelan pengujian fungsi Autentikasi menurut OWASP.

Gambar Kategori Pengujian Autentikasi

Pengujian Otorisasi
Otorisasi adalah konsep yang memungkinkan akses pada sumber daya hanya pada seseorang yang telah diijinkan sebelumnya. Pengujian Otorisasi berarti mengerti bagaimana proses otorisasi bekerja, dan menggunakan informasi tersebut untuk mengalahkan mekanisme otorisasi. Otorisasi adalah suatu proses yang dilakukan setelah proses autentikasi berhasil dilakukan, sehingga penguji akan memeriksa bagian ini setelah mendapatkan kepercayaan yang valid, yang berhubungan dengan peran dan hak yang telah ditetapkan. Selama proses pengukuran, harus diperiksa apakah mungkin terjadi penerobosan skema otorisasi, mencari jalur kelemahan, atau mencari cara untuk meningkatkan hak yang dilakukan oleh penguji itu sendiri. 

Kebutuhan ini digunakan untuk memastikan bahwa akses pada sumber daya (resources) atau pengaturan akses kepada informasi hanya digunakan oleh pengguna yang telah diijinkan sebelumnya. Gambar merupakan gambar yang dihasilkan dari pemodelan pengujian fungsi Otorisasi menurut OWASP.

Gambar Kategori Pengujian Otorisasi

Pengujian Manajemen Sesi
Manajemen sesi atau identik dengan Session ID digunakan untuk mengingat pengguna, menghilangkan kebutuhan pengguna untuk melakukan login ulang, dan memungkinkan server untuk menelusuri pola browsing pengguna. Session ID diperlukan untuk melakukan hal-hal tersebut. Dan dengan adanya session ID ini dapat dilakukan Session Hijacking terhadap pengguna yang sedang melakukan akses ke dalam server. Web aplikasi menggunakan Session ID untuk menyimpan parameter-parameter yang relevan terhadap pengguna. Session ID akan terus ada pada server selama pengguna masih aktif atau terhubung dengan server. Session akan otomatis dihapus jika pengguna logout atau melampaui batas waktu koneksi. 

a. Nomor Referensi 
OWASP-SM-001 s/d OWASP-SM-005

b. Kebutuhan (Prioritas) 
Kategori ini dibutuhkan untuk mengatasi semua masalah yang berhubungan dengan manajemen sesi yang digunakan pengguna mulai dari autentikasi sampai dengan pengguna meninggalkan aplikasi web. Gambar merupakan gambar yang dihasilkan dari pemodelan pengujian fungsi Manajemen Sesi menurut OWASP.

Gambar Kategori Pengujian Manajemen Sesi