perancangan web application honeypot untuk menggali
TRANSCRIPT
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
1
Abstrak— Pertumbuhan internet yang pesat dan penggunaan
aplikasi web yang semakin populer menyebabkan aplikasi web
sering kali menjadi target utama serangan para peretas. Untuk
mengamati perilaku dan serangan yang dilakukan oleh peretas,
dibuatlah sebuah sistem yang disebut dengan Honeypot.
Honeypot adalah sebuah sistem yang dibuat untuk
menyimulasikan layanan yang berjalan di atas sebuah server
dengan tujuan sebagai umpan untuk mengalihkan atau menarik
perhatian peretas untuk menyerang sistem tersebut. Honeypot
dapat digunakan untuk kepentingan riset seperti mengumpulkan
data, maupun untuk kepentingan produksi karena honeypot dapat
berfungsi sebagai umpan untuk melindungi sistem yang
digunakan untuk kepentingan produksi.
Pada tugas akhir ini akan dibangun sebuah low-interaction web
application honeypot yang dapat menyimulasikan output untuk
serangan SQL injection dan Cross-Site Scripting. Dari hasil uji
coba, sistem ini dapat menyimulasikan output serangan reflected
Cross-Site Scripting dan serangan SQL injection yang
menggunakan teknik eksploitasi UNION-based untuk skenario
ekstraksi data. Selain itu sistem ini dapat digunakan untuk
mengumpulkan informasi mengenai peretas melalui eksekusi
kode JavaScript pada web browser.
Kata Kunci— Cross-Site Scripting, Low-interaction honeypot,
SQL Injection.
I. PENDAHULUAN
ertumbuhan internet yang pesat dan penggunaan aplikasi
web yang semakin populer menyebabkan aplikasi web
sering kali menjadi target utama serangan para peretas. Survei
yang dilakukan oleh OWASP [1] melansir beberapa serangan
yang umum ditujukan pada aplikasi web. Beberapa serangan
yang tercatat menduduki peringkat teratas antara lain XSS
(Cross-Site Scripting) dan SQL injection yang dilakukan
dengan memanfaatkan kelemahan aplikasi web yang tidak
melakukan validasi dan sanitasi pada data masukan. Serangan-
serangan terhadap aplikasi web yang dilakukan oleh peretas
membuat beberapa pihak menginisiasi pembuatan sebuah
sistem yang dirancang khusus untuk mengamati perilaku dan
serangan yang dilakukan oleh peretas. Sistem ini selanjutnya
dikenal dengan nama honeypot.
Honeypot adalah sebuah sistem yang dirancang sebagai
umpan untuk menarik perhatian peretas agar melakukan
serangan pada sistem tersebut. Data yang dikumpulkan oleh
honeypot dapat digunakan untuk mengamati pola serangan
yang dilakukan oleh peretas. Secara umum berdasarkan tingkat
interaksinya dengan peretas, honeypot dibagi menjadi dua jenis,
yakni high-interaction honeypot dan low-interaction honeypot
[2]. Low-interaction honeypot memiliki tingkat interaksi yang
terbatas, karena hanya mengemulasikan layanan tertentu pada
sebuah sistem. Sebaliknya, high-interaction honeypot memiliki
tingkat interaksi yang tinggi karena menggunakan sistem dan
layanan sebenarnya untuk diakses oleh peretas. Hal ini
menyebabkan resiko jatuhnya high-interaction honeypot ke
tangan peretas memiliki kemungkinan lebih besar jika
dibandingkan dengan low-interaction honeypot.
Karena honeypot dirancang sebagai umpan untuk menarik
perhatian peretas, honeypot juga memiliki potensi untuk
memberikan reaksi terhadap serangan yang dilakukan oleh
peretas. Salah satunya adalah untuk mengumpulkan informasi-
informasi tentang identitas peretas. Pada tugas akhir ini akan
dibangun sebuah low-interaction web application honeypot
yang dapat menyimulasikan output untuk serangan SQL
injection dan Cross-Site Scripting, dengan fitur tambahan
menggali informasi mengenai peretas dengan memanfaatkan
eksekusi kode JavaScript pada web browser.
II. URAIAN PENELITIAN
A. Honeypot
Honeypot adalah sebuah server atau sistem yang digunakan
sebagai umpan untuk mengumpulkan informasi tentang
penyerang atau penyusup yang masuk ke dalam sistem kita.
Honeypot dapat dipasang di dalam atau di luar firewall DMZ
(Demilitarized Zone), meskipun pada umumnya honeypot
dipasang di dalam DMZ untuk kemudahan akses dan kontrol.
Honeypot juga bisa disebut sebagai varian dari sebuah IDS
(Intrusion Detection System) yang fungsinya lebih difokuskan
untuk pengumpulan informasi dan umpan untuk menipu peretas
[3]. Pada tugas akhir ini akan dibangun web application
honeypot yang bersifat low-interaction.
B. JavaScript
JavaScript adalah bahasa scripting yang dikembangkan oleh
Netscape. JavaScript adalah bahasa scripting dinamis yang
mendukung pembangunan objek secara prototype based.
JavaScript dapat digunakan untuk pemrograman yang bersifat
prosedural maupun berorientasi obyek [4].
Karena JavaScript bersifat client-side, JavaScript dapat
dimanfaatkan untuk menggali informasi mengenai client ketika
Perancangan Web Application Honeypot untuk
Menggali Informasi Peretas Abdurrazak Baihaqi, Ary Mazharuddin Shiddiqi, S.Kom., M.Comp.Sc., dan Baskoro Adi Pratomo,
S.Kom., M.Kom.
Jurusan Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember
(ITS)
Jl. Arief Rahman Hakim, Surabaya 60111 Indonesia
e-mail: [email protected]
P
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
2
kode JavaScript dieksekusi pada web browser client [5]. Pada
tugas akhir ini, JavaScript akan disisipkan pada response yang
dikirim oleh honeypot.
C. Python WSGI
WSGI (Web Server Gatway Interface) adalah sebuah
spesifikasi yang mendeskripsikan bagaimana sebuah web
server berkomunikasi dengan aplikasi web, dan bagaimana
aplikasi web dapat digunakan secara berantai dan bersamaan
untuk memproses sebuah request [6]. Interface WSGI memiliki
dua sisi, yakni sisi server dan sisi aplikasi. Sisi server akan
memanggil sebuah objek yang disediakan oleh sisi aplikasi.
Bagaimana objek tersebut diproses menjadi tanggung jawab
sisi server. Pada tugas akhir ini, sisi server digunakan untuk
menangani penerimaan request dan pengiriman response
kepada client, sedangkan sisi aplikasi digunakan untuk
memproses request yang diterima melalui sisi server.
D. SQL Injection
SQL injection adalah sebuah serangan dengan cara
memasukkan sebuah kode ke dalam sebuah string yang akan
dieksekusi oleh aplikasi database server. Secara umum, proses
injeksi sintaks SQL bekerja dengan cara menutup sebagian dari
query SQL dan menambahkan perintah sintaks SQL yang baru
[7]. SQL injection terjadi apabila:
1. Data yang digunakan sebagai parameter query SQL
berasal dari sumber yang tidak terpercaya, misalnya
user-input 2. Data tersebut dapat digunakan untuk membentuk query
SQL secara dinamis Tugas akhir ini akan menyimulasikan output berupa
ekstraksi data yang dihasilkan oleh serangan SQL injection
yang mekanismenya berasal dari input pengguna dengan teknik
eksploitasi UNION query-based.
E. Cross-Site Scripting
Cross-Site Scripting adalah sebuah serangan yang terjadi
ketika peretas memanfaatkan aplikasi web untuk menjalankan
kode tertentu, umumnya dalam bentuk browser side script
untuk menyerang pengguna lainnya. Penyebab munculnya
serangan ini ialah aplikasi web yang menampilkan input dari
pengguna ke dalam output pada browser tanpa adanya proses
validasi. Peretas dapat memanfaatkan kelemahan tersebut untuk
menyisipkan sebuah kode program berbahaya yang ditujukan
untuk korban. Kemudian browser korban akan mengeksekusi
kode program yang disisipkan peretas tersebut [8].
Pada awal perkembangannya, terdapat dua tipe XSS, yakni
Stored XSS dan Reflected XSS. Pada tahun 2005, mulai dikenal
tipe XSS yang ketiga, yaitu DOM based XSS. Tugas akhir ini
akan menyimulasikan output untuk serangan reflected XSS
dengan memanfaatkan input dari peretas yang disertakan dalam
halaman web yang ditampilkan.
F. MaxMind GeoIP2 API
MaxMind GeoIP2 API adalah API yang dibuat oleh
MaxMind untuk mendeteksi lokasi geografis sebuah IP address
[9]. Informasi yang dapat diakses memanfaatkan API ini antara
lain informasi mengenai negara asal IP address, posisi lintang
dan bujur secara geografis, dan informasi ISP dari IP address
Honeypot
Klasifikasi HTTP Request
Deteksi SQL Injection & Cross-Site
Scripting
Simulasi SQL Injection & Cross-Site
Scripting
Pencatatan request HTTP
Web report
HTTP request Report
Fingerprint report
Database
Gambar 1 Arsitektur Umum Sistem
tersebut. Pada tugas akhir ini, MaxMind GeoIP2 API akan
digunakan untuk melengkapi informasi yang telah
dikumpulkan oleh eksekusi kode JavaScript pada web browser.
III. DESAIN SISTEM
A. Deskripsi Umum
Pada Tugas Akhir ini akan dibangun sebuah web application
honeypot yang menyimulasikan beberapa vulnerability pada
aplikasi web, yang dapat dieksploitasi dengan serangan SQL
injection dan Cross-Site Scripting.
Aplikasi ini bekerja layaknya sebuah aplikasi web. Apabila
honeypot menerima request HTTP yang terindikasi sebagai
sebuah serangan, honeypot akan mengirimkan response kepada
client sesuai dengan hasil identifikasi serangan yang dilakukan
oleh client.
B. Arsitektur Sistem
Dalam tugas akhir ini akan dirancang dan diaplikasikan
sebuah web application honeypot yang dapat menyimulasikan
output bagi serangan SQL injection dan Cross-Site Scripting.
Dimana secara garis besar memiliki rancangan arsitektur sistem
yang dapat dilihat pada Gambar 1.
Dari Gambar 1 di atas, dapat diketahui bahwa sistem berada
memiliki dua buah bagian, yakni honeypot dan web report.
Honeypot akan digunakan untuk mengumpulkan data dan
menyimulasikan vulnerability yang dapat dieksploitasi dengan
serangan SQL injection dan Cross-Site Scripting. Sedangkan
web report digunakan untuk melihat laporan data yang berhasil
dikumpulkan oleh honeypot. Terdapat dua fitur report yang
dapat diakses, yakni request report dan fingerprint report.
Request report adalah report mengenai request HTTP yang
dikirim oleh peretas, sedangkan fingerprint report adalah
report mengenai data-data yang berhasil dikumpulkan oleh
eksekusi kode JavaScript pada web browser peretas.
C. Alur Sistem
Alur sistem untuk sistem dimulai ketika honeypot menerima
request HTTP dari peretas. Kemudian request HTTP tersebut
diklasifikasi berdasarkan jenis serangan yang dapat
diidentifikasi. Setelah jenis serangan tersebut diidentifikasi,
selanjutnya honeypot menyimulasikan output untuk serangan
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
3
Mulai
Menerima HTTP request
Simulasi output untuk
serangan SQL injection
Simulasi output untuk
serangan XSS
Simulasi output untuk
serangan tidak dikenal
Pencatatan HTTP request
Pengiriman HTTP
response
Selesai
Identifikasi serangan
SQL injection
Klasifikasi
request_path
untuk
SQL injection
Klasifikasi
request_path
untuk
XSS
request_path menuju
halaman simulasi SQL injection
request_path menuju
halaman lain
Identifikasi serangan
XSS
request_path menuju
halaman simulasi XSS
Buat response halaman
tidak ditemukan
request_path menuju
halaman lain
Serangan XSS
dikenali
Serangan SQL injection
dikenali
Serangan XSS
tidak dikenaliSerangan SQL injection
tidak dikenali
Gambar 2 Diagram Alir Pemrosesan HTTP Request
tersebut. Honeypot kemudian mencatat request HTTP dari
peretas, dan mengirim output hasil simulasi sebagai response
HTTP menuju peretas. Alur sistem untuk lebih jelasnya dapat
dilihat pada Gambar 2.
Gambaran lebih jelas dari alur jalannya sistem honeypot
yang dibangun dapat dilihat pada Gambar 3.
IV. IMPLEMENTASI
A. Implementasi Klasifikasi Request Path dari HTTP
Request
Proses pertama dalam sistem ini adalah mengklasifikasi
atribut REQUEST_PATH yang terdapat pada request HTTP.
Implementasi dari proses ini, dimulai dari pengambilan atribut
REQUEST_PATH dari request HTTP yang dikirim oleh client.
Atribut REQUEST_PATH digunakan untuk menentukan
halaman web yang akan ditampilkan pada web browser.
Apabila pada atribut REQUEST_PATH tidak ditemukan nilai
yang sesuai dengan halaman yang diminta, maka yang akan
ditampilkan pada pengguna adalah halaman web “not found”.
B. Implementasi Pengidentifikasian Serangan SQL injection
Apabila atribut REQUEST_PATH ditujukan untuk
mengakses konten dari halaman artikel, akan dilakukan
pengecekan atribut QUERY_STRING untuk mengidentifikasi
apakah terdapat serangan SQL injection yang dikenali oleh
honeypot. Proses pengidentifikasian menggunakan sekumpulan
string regular expression yang mendefinisikan SQL injection.
Jika ditemukan adanya indikasi SQL injection yang dikenali,
atribut QUERY_STRING yang sesuai dengan definisi regular
expression akan digunakan sebagai input untuk menentukan
output yang sesuai dengan query SQL yang dikenali.
Internet
Peretas
Honeypot
Pengguna
Peretas melakukan
serangan menuju
honeypot.
Honeypot menerima serangan
dan mengirimkan respon berupa
hasil simulasi output serangan.
Serangan dicatat dalam database.
Pengguna melihat
data serangan yang
dicatat oleh honeypot
melalui web report.
Gambar 3 Diagram blok alur sistem honeypot
C. Implementasi Simulasi Output Serangan SQL injection
Untuk menyimulasikan output yang sesuai dengan serangan
SQL injection yang teridentifikasi, dilakukan pengambilan
parameter dan klausa FROM dari QUERY_STRING.
Parameter dan klausa tersebut akan dipasangkan dan digunakan
sebagai key untuk mengakses value dictionary yang
mendefinisikan output untuk parameter SQL injection tertentu.
D. Implementasi Pengidentifikasian dan Simulasi Output XSS
Proses identifikasi dan simulasi output untuk XSS dilakukan
dengan cara membandingkan nilai atribut QUERY_STRING
dengan sekumpulan nilai yang telah didefinisikan sebagai nilai
yang valid. Apabila pada atribut QUERY_STRING terdapat
nilai yang tidak sesuai dengan nilai yang telah didefinisikan,
maka nilai atribut QUERY_STRING akan kembali disisipkan
ke dalam response yang akan dikirim kembali menuju browser
peretas.
E. Implementasi Pencatatan Request HTTP
Pada proses ini, Request HTTP yang dikirim oleh peretas
akan dicatat dalam database. Request HTTP yang dikirim oleh
peretas akan dicatat dalam tabel request_log. Informasi request
HTTP yang dicatat oleh honeypot antara lain alamat IP
pengirim request, metode yang digunakan untuk mengirim
request, atribut REQUEST_PATH, atribut QUERY_STRING,
validitas request HTTP, dan waktu pencatatan request. Sebuah
request HTTP dianggap valid apabila atribut
REQUEST_PATH atau QUERY_STRING pada request
tersebut sesuai dengan nilai atribut yang dianggap valid oleh
honeypot.
Untuk request HTTP yang berisi informasi yang didapatkan
dari eksekusi kode JavaScript akan dicatat dalam tabel
fingerprint. Sebelum dicatat, request HTTP tersebut akan
melalui proses decoding untuk mendapatkan informasi yang
akan dicatat. Informasi yang dicatat antara lain alamat IP
peretas, jenis web browser dan jenis sistem operasi yang
digunakan peretas, beserta lokasi geografis dari IP peretas.
F. Implementasi Kode JavaScript untuk Menggali Informasi
Pada proses ini kode JavaScript yang disisipkan pada
response HTTP akan dieksekusi pada web browser peretas.
Melalui eksekusi kode JavaScript tersebut, diperoleh data
mengenai jenis sistem operasi dan web browser yang digunakan
oleh peretas. Data-data tersebut selanjutnya akan dikirim dalam
bentuk request HTTP.
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
4
Gambar 4 Uji coba pengiriman request HTTP dengan atribut
REQUEST_PATH menuju halaman utama
Gambar 5 Tampilan Halaman Utama honeypot
Gambar 6 Pengiriman request HTTP dengan atribut REQUEST_PATH
menuju halaman artikel
V. UJI COBA DAN EVALUASI
A. Uji Coba Klasifikasi Request HTTP
Proses pertama yang dilakukan aplikasi ketika menerima
kiriman HTTP request adalah melakukan klasifikasi terhadap
request tersebut. Proses ini bertujuan untuk menentukan
bagaimana request tersebut akan diproses oleh honeypot.
Proses klasifikasi dilakukan oleh honeypot dengan cara
memeriksa atribut REQUEST_PATH pada request HTTP yang
dikirim oleh peretas. Proses klasifikasi dilakukan untuk
menentukan halaman mana yang akan dikembalikan sebagai
output.
Pada Gambar 4 dapat dilihat proses pengiriman request
HTTP dengan berbagai atribut REQUEST_PATH beserta
tampilan output untuk masing-masing request HTTP.
Gambar 7 Tampilan Halaman Artikel
Gambar 8 Uji Coba Pengiriman Request HTTP dengan REQUEST_PATH
Menuju Halaman Kontributor
Gambar 9 Tampilan Halaman Kontributor
Gambar 10 Pengiriman Request HTTP dengan Query SQL pada Atribut
QUERY_STRING
B. Uji Coba Simulasi Output Serangan SQL Injection dan
Cross-Site Scripting
Untuk setiap request HTTP dengan atribut
REQUEST_PATH menuju halaman artikel, maka atribut
QUERY_STRING pada request HTTP akan diidentifikasi
apakah menunjukkan adanya indikasi serangan SQL injection
yang dikenali. Proses identifikasi dilakukan dengan
memanfaatkan regular expression. Jika ditemukan adanya
query SQL yang sesuai dengan regular expression yang telah
didefinisikan, output untuk query SQL tersebut akan
ditampilkan pada halaman web. Jika atribut QUERY_STRING
tidak berhasil diidentifikasi, maka pesan error akan
ditampilkan pada halaman web.
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
5
Gambar 11 Output query SQL yang disimulasikan pada tampilan halaman
artikel
Gambar 12 Request HTTP Menuju Halaman Kontributor dengan Nilai Atribut QUERY_STRING Abnormal
Gambar 13 Tampilan XSS Pada Pesan Error yang Ditampilkan Halaman
Kontributor
Gambar 14 Request HTTP Dikirim oleh Web Browser
Untuk setiap request HTTP dengan atribut
REQUEST_PATH menuju halaman kontributor, maka
parameter id pada atribut QUERY_STRING request HTTP
akan diidentifikasi apakah parameter tersebut adalah parameter
yang dikenali. Jika parameter id pada atribut QUERY_STRING
tidak dikenali, maka nilai dari parameter tersebut akan
ditampilkan kembali sebagai pesan error pada halaman web.
C. Uji Coba Pencatatan Request HTTP
Proses pencatatan request HTTP dapat dikelompokkan
menjadi dua kategori. Kategori pertama adalah pencatatan
request HTTP secara umum pada tabel request_log. Kategori
kedua adalah pencatatan informasi hasil eksekusi kode
JavaScript pada tabel fingerprint. Proses tersebut dapat dilihat
pada Gambar 14.
Gambar 15 Request HTTP Dicatat dalam Tabel Request_log
Gambar 16 Hasil Eksekusi Kode JavaScript dalam Bentuk Request HTTP
Gambar 17 Informasi Hasil Eksekusi Kode JavaScript Dicatat dalam Tabel
Fingerprint
Gambar 18 Kode JavaScript disisipkan pada halaman web
Gambar 19 Hasil Eksekusi Kode JavaScript yang Dikirim dalam Bentuk
Request HTTP
D. Uji Coba Penggalian Informasi Menggunakan Kode
JavaScript
Setiap response HTTP yang dikirim oleh honeypot akan
disisipkan kode JavaScript. Kode tersebut akan dieksekusi pada
web browser peretas ketika halaman web di load oleh web
browser.
Pada Gambar 18 di atas, dapat dilihat bahwa kode JavaScript
disisipkan pada halaman web yang sedang ditampilkan oleh
web browser dengan nama booststrap.responsive.js untuk
menghindari kecurigaan peretas. Kode JavaScript akan
mengeksekusi perintah untuk mengambil beberapa property
tertentu pada web browser. Property tersebut digunakan untuk
mengetahui jenis web browser dan system operasi yang
digunakan oleh peretas. Nilai dari property tersebut akan
dikirim menuju honeypot dalam bentuk request HTTP.
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
6
VI. KESIMPULAN
Dari hasil pengamatan selama perancangan, implementasi,
dan proses uji coba perangkat lunak yang dilakukan, penulis
mengambil kesimpulan sebagai berikut:
1) Dari hasil uji coba dapat disimpulkan bahwa honeypot yang
dibangun telah memenuhi semua kebutuhan dan
menjalankan perannya dengan baik dalam menyimulasikan
output bagi serangan SQL injection yang menggunakan
teknik ekploitasi UNION-based dengan skenario ekstraksi
data dan Reflected Cross-Site Scripting.
2) Dari hasil uji coba dapat disimpulkan bahwa honeypot yang
dibangun dapat digunakan sebagai sarana mengumpulkan
informasi tentang peretas melalui eksekusi kode JavaScript
pada web browser.
UCAPAN TERIMA KASIH
Penulis mengucapkan terima kasih kepada Tuhan Yang
Maha Esa,kedua orangtua dan keluarga penulis, kedua dosen
pembimbing, seluruh dosen dan kepala jurusan Teknik
Informatika, teman-teman Teknik Informatika angkatan 2010,
serta berbagai pihak yang telah membantu penulis dalam
menyelesaikan Tugas Akhir ini.
DAFTAR PUSTAKA
[1] "OWASP Top 10 2013-Top 10," [Online]. Available:
https://www.owasp.org/index.php/Top_10_2013-Top_10. [Accessed 23 June 2014].
[2] L. Spitzner, "tracking-hackers.com," [Online]. Available:
http://www.tracking-hackers.com/papers/honeypots.html. [Accessed 23 June 2014].
[3] L. R. Even, "SANS Security Resources," [Online]. Available:
http://www.sans.org/security-resources/idfaq/honeypot3.php. [Accessed 23 June 2014].
[4] "Mozilla Developer Network," [Online]. Available: https://developer.mozilla.org/en-
US/docs/Web/JavaScript/About_JavaScript. [Accessed 24 June 2014].
[5] J. Grossman, "Whitehat Security Blog," [Online]. Available: http://blog.whitehatsec.com/introducing-the-i-know-series/. [Accessed
24 June 2014].
[6] P. J. Eby, "PEP 333 -- Python Web Server Gateway Interface v1.0," [Online]. Available: http://legacy.python.org/dev/peps/pep-0333/.
[Accessed 24 June 2014].
[7] "Microsoft TechNet Library," [Online]. Available: http://technet.microsoft.com/en-
us/library/ms161953%28v=sql.105%29.aspx. [Accessed 24 June 2014].
[8] "OWASP," [Online]. Available:
https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29.
[Accessed 24 June 2014].
[9] "Maxmind Developer Site," [Online]. Available: http://dev.maxmind.com/geoip/. [Accessed 22 March 2014].