Sistem Pendeteksi dan Pencegah Serangan SQL Injection dengan Penghapusan Nilai Atribut Query SQL dan Honeypot Satrio Gita Nugraha 5109100097 Dosen Pembimbing: Prof. Ir. Supeno Djanali, M.Sc., Ph.D. Baskoro Adi Pratomo, S.Kom., M.Kom.
Latar Belakang | Banyak layanan bisnis berbasis web
Latar Belakang | Aplikasi web rentan akan serangan keamanan
SQL Injection SELECT * FROM user WHERE id=‘1111’ AND password=‘1234’ AND CONVERT(char, no)-- ’;
SELECT * FROM user WHERE id=‘111’ UNION SELECT * FROM member WHERE id=‘admin’--’ AND password=‘1234’;
SELECT * FROM user WHERE id=‘admin’ AND password=‘1234’; DROP TABLE user; --’;
Rumusan Masalah | Bagaimana mendeteksi serangan SQL Injection? | Bagaimana cara menyembunyikan lokasi web server yang sesungguhnya dari penyerang? | Bagaimana membelokkan request yang terdeteksi sebagai serangan SQL injection ke Honeypot?
Solusi
Web Server (AYODHYA)
Private Network Switch
Sistem Pendeteksi dan Pencegah Serangan SQL Injection dengan Penghapusan Nilai Atribut Query SQL dan Honeypot.
Honeypot (ALENGKA)
SQL Injection Proxy (KOSALA)
Public Network
Client
Client
Client
Deskripsi Aplikasi
| Sistem untuk mendeteksi dan mencegah serangan SQL injection secara real-time dengan metode penghapusan atribut query SQL dan honeypot sebagai penyedia fasilitas untuk kebutuhan analisis serangan.
Kegunaan Aplikasi | Sistem mampu berperilaku seperti sebuah web server dihadapan penyerang. | Sistem dapat mendeteksi dan mencegah serangan SQL injection pada web server secara real-time. | Sistem dapat menyediakan fasilitas pencatatan data serangan untuk kebutuhan analisis dan pembelajaran pola serangan dalam bentuk honeypot.
Kebutuhan Fungsional
Menerima HTTP Request
Client
Mendeteksi Serangan SQL Injection
Menerima HTTP Response
SQL Injection Proxy
Menyediakan Log Pengaksesan
Honeypot
Menyediakan Analysis Tool
Web Server
Penanganan HTTP Request ID Referensi Use Case Nama Tujuan Uji Coba Kondisi awal Skenario 1 Masukan Keluaran yang diharapkan Hasil Uji Coba Skenario 2 Masukan Keluaran yang diharapkan Hasil Uji Coba
UJ-01 UC-001 Uji Coba Menerima HTTP request Menguji fungsi penerimaan HTTP request berjalan Aplikasi berjalan dengan kondisi listening port 80 Client mengirimkan HTTP request dengan GET method HTTP request dari client HTTP header dari request client BERHASIL
Client mengirimkan HTTP request dengan POST method HTTP request dari client HTTP header dan body dari request client BERHASIL
Pendeteksian SQL Injection ID Referensi Use Case Nama Tujuan Uji Coba Kondisi awal Skenario 1 Masukan Keluaran yang diharapkan Hasil Uji Coba Skenario 2 Masukan Keluaran yang diharapkan Hasil Uji Coba
UJ-02 UC-002 Uji Coba Pendeteksian SQL Injection Mengetahui kemampuan sistem dalam mengenali serangan SQL injection Aplikasi berjalan dengan kondisi listening port 80 Client mengirimkan HTTP request tanpa SQL injection HTTP request tidak mengandung SQL injection dari client Sistem mendeteksi request sebagai request normal BERHASIL Client mengirimkan HTTP request dengan SQL injection HTTP request mengandung SQL injection dari client Sistem mendeteksi request sebagai request SQL injection BERHASIL
Penanganan HTTP Response ID Referensi Use Case Nama Tujuan Uji Coba Kondisi awal Skenario 1 Masukan Keluaran yang diharapkan Hasil Uji Coba Skenario 2 Masukan Keluaran yang diharapkan Hasil Uji Coba
UJ-03 UC-003 Uji Coba Penerimaan HTTP Response Mengetahui kemampuan sistem untuk mengambil HTTP response yang tepat untuk kemudian dikirimkan ke client Aplikasi berjalan dengan kondisi sudah menerima HTTP request dari client Menggunakan HTTP request normal HTTP request normal HTTP response dari web server BERHASIL Menggunakan HTTP request SQL injection HTTP request SQL injection HTTP response dari honeypot BERHASIL
Ketersediaan Data Serangan
ID Referensi Use Case Nama
UJ-04 UC-004
Tujuan Uji Coba Kondisi awal Skenario 1
Dapat melihat log pengaksesan SQL honeypot Honeypot berjalan, HTTP request sudah diterima oleh honeypot HTTP request merupakan SQL injection dan dikirimkan kepada honeypot. HTTP request mengandung SQL injection Log pengaksesan honeypot pada basis data
Masukan Keluaran yang diharapkan Hasil Uji Coba
Uji Coba Ketersediaan Log
Pengaksesan Pada Honeypot
BERHASIL
Ketersediaan Analysis Tool
ID Referensi Use Case Nama Tujuan Uji Coba Kondisi awal Skenario 1 Masukan Keluaran yang diharapkan Hasil Uji Coba
UJ-05 UC-005 Uji Coba Ketersediaan Analysis Tool Dapat menggunakan analysis tool untuk mengakses log pada honeypot Honeypot telah memiliki log pengaksesan Melihat data-data serangan pada sistem Basis data log pengaksesan Data-data log pengaksesan berdasarkan klasifikasi tertentu. BERHASIL
Uji Coba Serangan SQLMap
Uji Coba Serangan SQLMap Deteksi SQLMap 1000 900
Jumlah Request
800 700 600 500 400 300 200 100 0 1,1
1,2
1,3
1,4
1,5
2,1
2,2
2,3
2,4
2,5
3,1
3,2
3,3
3,4
3,5
4,1
4,2
4,3
4,4
Risk, Level Total Request Masuk
Terdeteksi Sebagai Serangan
Tidak Terdeteksi Sebagai Serangan
4,5
Performa Penangan Request Response Time (ms) 5600
Response Time (ms)
5500 5400 5300 5200 5100 5000 4900 4800 4700
Request Method
Performa Deteksi SQL Injection Detection Time (ms)
Detection Time (ms)
8 7 6 5 4
3 2 1 0 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
Request Ke
Kesimpulan | Semua fungsionalitas sistem berjalan dengan baik. | Sistem mampu berperan selayaknya web server sesungguhnya.
| Sistem mampu mendeteksi serangan SQL injection yang dikirimkan melalui POST method. | Sistem mampu mengatasi serangan automated SQL injection dari SQLMap. | Rata-rata waktu yang dibutuhkan untuk mendeteksi SQL injection adalah 2 millisecond sehingga tidak terlalu memberatkan sistem.
Saran | Untuk meningkatkan performa sistem, perlu digunakan library yang mampu menangani socket dan stream secara lebih baik dan optimal.
| Untuk memudahkan pemasangan sistem pada lingkungan baru serta kehandalan sistem, perlu digunakan bahasa pemrograman yang lebih ringan dan mampu menangani socket dengan lebih baik. | Perlu dilakukan modifikasi terhadap sistem dan metode pendeteksian agar juga mampu menangani SQL injection yang menggunakan GET method.
Terima Kasih
Sistem Pendeteksi dan Pencegah Serangan SQL Injection dengan Penghapusan Nilai Atribut Query SQL dan Honeypot Dosen Pembimbing:
Satrio Gita Nugraha 5109100097
Prof. Ir. Supeno Djanali, M.SC., Ph.D. Baskoro Adi Pratomo S.Kom., M.Kom.