Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
Penetration tool berbasis sistem terdistribusi untuk analisa vulnerability pada web application
1. Penetration Tool Berbasis Sistem Terdistribusi untuk
Analisa Vulnerability Pada Web Application
Aryya Dwisatya Widigdha 135120431
Program Studi Teknik Informatika
Sekolah Teknik Elektro dan Informatika
Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia
1
13512043@std.stei.itb.ac.id
Abstrak— Dalam melakukan aksi taking-over website,
attacker diharuskan untuk mengetahui vulnerability yang
ada. Di sisi lain, seorang administrator pun harus
mengetahui vulnerability yang ada agar tidak ada attacker
yang dapat masuk ke dalam website tersebut. Salah satu
cara untuk mengetahui vulnerability tersebut adalah dengan
melakukan penetration testing. Sayangnya, penetration tool
yang ada sekarang bertumpu pada resource tester sehingga
untuk beban kerja yang berat, penetration testing menjadi
terkendala. Oleh karenanya diperlukan pendekatan sistem
terdistribusi.
Tulisan ini membahas konsep penetration
testing dan sistem terdistribusi secara umum sebagai
pendekatan pembangunan penetration tool serta
rancangan solusi berupa gambaran konseptual
terhadap perangkat lunak yang akan dikembangkan.
Kata kunci— Distributed System, Penetration testing,
Penetration tool.
I. PENDAHULUAN
Saat ini, website bukan lagi menjadi sebuah barang
mewah yang hanya dimiliki oleh kalangan dengan strata
sosial tertentu melainkan sudah dapat dimiliki oleh
berbagai kalangan baik perorangan, komunitas,
organisasi, maupun institusi. Kemurahan dan kemudahan
dalam memiliki dan membuat website ini menjadikan
jumlah website menjadi semakin banyak dan tidak dapat
terkendali.
Namun sayangnya, tidak semua pemilik website sadar
akan security dari website tersebut. Pada umumnya,
pemilik website tidak memedulikan urusan security karena
ketidaktahuan terhadap dampak dari lemahnya security
dan kurangnya kemampuan teknis untuk meningkatkan
kualitas security dari website yang dimilikinya.
Akibatnya, banyak dijumpai website yang dapat diakses,
tapi memiliki celah keamanan yang dapat digunakan oleh
attacker untuk melakukan take over.
Walaupun ketidaktahuan terhadap teknis cukup teratasi
dengan adanya beberapa tools untuk melakukan
penetration testing seperti Nikto, Acunetix, dan lain
sebagainya, tapi tetap saja dibutuhkan langkah-langkah
yang cukup panjang dan membingungkan bagi kalangan
non-IT untuk melakukan penetration testing. Selain itu,
keterbatasan resource dari pengguna dalam melakukan
penetration testing seperti koneksi internet dan waktu
menjadi kendala tersendiri. Hal inilah yang seringkali
membuat security tidak menjadi fokus utama hingga
sebuah insiden terjadi. Oleh karena hal tersebut maka
penulis merasa perlu adanya sebuah sistem yang mampu
memberikan laporan hasil penetration testing terhadap
website yang sederhana untuk pengguna non-IT.
Selain itu, penetration tools yang ada sekarang masih
bergantung pada resource yang dimiliki oleh pengguna
seperti koneksi internet dan hardware yang terpasang
sehingga tidak langsung membatasi pengguna dengan
resource yang tidak mencukupi. Oleh karena itu pula
diperlukan pendekatan lain dalam pembuatan penetration
tool yakni dengan pendekatan sistem terdistribusi.
II. KONSEP DASAR SISTEM TERDISTRIBUSI
Definisi Sistem Terdistribusi
Sistem terdistribusi atau distributed system merupakan
sebuah sistem yang terdiri atas komponen independen
namun menyediakan kesatuan layanan kepada
penggunanya. Seperti yang diungkapkan oleh Leslie
Lamport, “A distributed system is one in which the failure
of a computer you did not even know existed can render
your own computer unusable.” (IF3230-07-IntroSister-
2015 hal.2).
Karakteristik Sistem Terdistribusi
Suatu sistem disebut sistem terdistribusi ketika
memiliki beberapa karakteristik berikut:
1.Scalability
Scalability dapat diartikan sebagai kemampuan
sistem untuk tumbuh. Dalam hal ini, tumbuh
dimaksud sebagai kemampuan sistem untuk
menangani masalah yang terus bertambah.
2.Availability
Availability diartikan sebagai prosentase sistem
berada dalam kondisi yang berfungsi sebagai mana
mestinya. Dalam availability, terdapat beberapa
variasi prosentase availability terkait downtime per
tahun yakni:
90% : downtime lebih dari satu bulan
99% : downtime kurang dari 4 hari
2. 99.9% : downtime kurang dari 9 jam
99.99% : downtime kurang dari 1 jam
99.999% : downtime sekitar 5 menit
99.9999% : downtime sekitar 31 detik
3.Transparency
Sistem terlihat tunggal oleh pengguna walaupun di
dalamnya terdapat banyak komponen yang saling
berhubungan.
4.Openness
Sistem dapat berfungsi sebagaimana mestinya dan
mudah untuk dilakukan penambahan perangkat
ketika dibutuhkan.
Hybrid Network Model
Dalam menyusun sebuah terdistribusi harus
dipertimbangkan model jaringan yang akan digunakan.
Salah satu model jaringan yang diperuntukkan untuk
sistem terdistribusi adalah Hybrid Model yang mana
setiap peer terhubung ke peer lain serta satu server pusat
yang berperan sebagai seorang koordinator. Adapun
semua beban pekerjaan dibebankan kepada peer
sedangkan pembagian resource diberikan oleh server
pusat. Arsitektur jaringan dapat dilihat pada Gambar 0-I
Hybrid Network Model.
Gambar I Hybird Network Model
Pada Hybrid Network Model, setiap server berperan
sebagai endpoint yang menyediakan service yang dapat
digunakan oleh pengguna. Setiap server dapat berdiri
sendiri dan membuat sistem berfungsi walaupun hanya
terdapat satu server. Perubahan jumlah server atau
endpoint dilakukan dalam langka meningkatkan
scalability dari sistem.
III. KONSEP DASAR PENETRATION TESTING
Definisi Penetration testing
Dalam bidang keamanan, dikenal istilah penetration
testing dengan penetration tester sebagai sebutan untuk
orang yang melakukannya. Penetration testing dapat
diartikan sebagai sebuah upaya untuk mendapatkan akses
ke resource tanpa memiliki pengetahuan terhadap
username, password, atau akses legal pada umumnya.
Biasanya, hasil akhir dari penetration testing adalah data-
data rahasia atau informasi yang tidak diperuntukkan
publik.
Berbeda dengan vulnerability assessment, penetration
testing mengedepankan tujuan untuk mendapatkan akses
sedangkan vulnerability assessment hanya berfokus
kepada pencarian vulnerability dari sebuah sistem.
Dengan kata lain dapat dikatakan bahwa penetration
testing adalah langkah lanjut dari vulnerability
assessment.
Mengapa Harus Melakukan Penetration testing
Ada banyak alasan mengapa penetration testing perlu
dilakukan. Namun, pada dasarnya penetration testing
dilakukan untuk menemukan celah keamanan sebelum
attacker menggunakan celah keamanan tersebut untuk
melakukan take over. Selain itu, alasan lain yang sering
ditemui terkait pelaksanaan penetration testing antara
lain:
1.Memverifikasi konfigurasi dari suatu sistem
2.Melakukan training
3.Melakukan uji coba terhadap teknologi baru
yang diterapkan pada suatu sistem.
Web Application Penetration testing
Dalam melakukan web application penetration testing
ada beberapa tahapan yang biasanya dilakukan. Tidak
hanya melakukan testing melainkan juga information
gathering. Berikut adalah tahapan yang biasa dilakukan
berdasarkan OWASP.
1. Information Gathering
2. Configuration Management Testing
3. Authentication Testing
4. Session Management Testing
5. Authorization Testing
6. Business Logic Testing
7. Data Validation Testing
8. Denial of Service Testing
9. Web Service Testing
10. Ajax Testing
IV. PEMBAHASAN
Rancangan Solusi
Adapun rancangan perangkat lunak yang diajukan
adalah sebagai berikut:
System Requirements
1. Sistem mampu melakukan pengecekan port yang
terbuka pada host target
2. Sistem mampu melakukan pengecekan
vulnerability terkait versi web application yang
digunakan
3. Sistem mampu melakukan pengecekan celah
keamanan RFI pada host target
4. Sistem mampu melakukan pengecekan celah
keamanan SQLi pada host target
5. Sistem mampu melakukan pengecekan celah
keamanan LFI pada host target
3. 6. Sistem mampu membuat laporan hasil
pengecekan
7. Sistem mampu membuat rekomendasi terkait
celah keamanan yang ditemukan
8. Sistem mampu membuat laporan tren
vulnerability yang ada
9. Sistem menyediakan mekanisme penambahan
server
Arsitektur Jaringan
Gambar II Rancangan Arsitektur Jaringan
Jaringan yang diajukan sebagai solusi dari
permasalahan yang ada terdiri dari empat komponen
utama yakni tracker, server, end user, dan database.
Dalam hal ini, tracker akan menjadi koordinator dari
semua server dan menerima permintaan penetrasi dari
user dan mengalokasikan server tertentu untuk
melaksanakannya. Dengan demikian, akan terjadi load
balancing pada server yang ada. Selain itu, setiap server
memiliki fungsionalitas yang sama dan independen.
Perubahan jumlah server dilakukan guna meningkatkan
scalability dan availability dari sistem.
Dalam rancangan jaringan ini, digunakan dua buah
database yakni database lokal yang ada di setiap server
dan database global yang menyimpan semua data
kombinasi dari database local. Database dibagi menjadi
dua tipe dengan maksud agar terdapat database global
yang mencakup semua database yang ada sehingga dapat
dilihat tren vulnerable yang ada dengan lebih mudah
dengan cara memotong cost fetch data dari database lokal
tiap server serta sebagai antisipasi server mengalami
failure.
Fungsionalitas Komponen Jaringan
Tracker
1. Tracker mampu mendata semua server yang aktif
2. Tracker mampu melakukan logging terkait semua
request ke server
3. Tracker mampu berkomunikasi dengan semua
server yang terdaftar
4. Tracker mampu membuat laporan tren
vulnerability
Server
1. Server mampu berkomunikasi dengan
tracker
2. Server mampu berkomunikasi dengan server
lain
3. Server mampu mendaftarkan diri pada
tracker
4. Server mampu menghasilkan laporan
5.
6. Server mampu melakukan port scanning
7. Server mampu melakukan pengecekan
vulnerability terkait versi web application
yang digunakan
8. Server mampu melakukan pengecekan celah
keamanan SQLi pada host target
9. Server mampu melakukan pengecekan celah
keamanan LFI pada host target
10. Server mampu membuat rekomendasi terkait
celah keamanan yang ditemukan
Arsitektur Database
Table Server.Orders
Primary key: nomor
Keterangan: tabel Orders berisikan daftar pekerjaan yang
diberikan oleh tracker kepada server. Berupa antrian yang
harus dikerjakan oleh server.
No Nama Type Keterangan
1 Nomor Integer Autoincrement
2 Requester Varchar(15) Berisikan IP address
dari client
3 Type Int(2) Merepresentasikan
service yang diminta
oleh pengguna seperti
port scanning, lfi
scanning, sqli
scanning, dan lain nya
4 Email Varchar(64) Email address
pengguna sebagai
tujuan pengiriman
laporan.
5 Status Int(1) Merepresentasikan
status dari pekerjaan
yang masuk dalam
antrian yakni:
0 berarti belum
dikerjakan
1 berarti sedang
dikerjakan
9 sudah dikerjakan
dan dikirim
laporannya
6 Arrive_time Timestamp Tanda waktu order
diterima
4. 7 Done_time Timestamp Tanda waktu order
selesai dikerjakan
Table Server.tracker_info
Primary key: ip
Keterangan : informasi tracker
No Nama Type Keterangan
1 No Integer Autoincrement
2 Ip Varchar(15) Berisikan IP address dari
client
3 Port Int Merepresentasikan service
yang diminta oleh pengguna
seperti port scanning, lfi
scanning, sqli scanning, dan
lain nya
Table Tracker.Orders
Primary key: nomor
Keterangan: tabel Order berisikan daftar pekerjaan yang
diterima oleh tracker dan alokasinya pada server
No Nama Type Keterangan
1 Nomor Int Autoincrement
2 Requester Varchar(15) Berisikan IP address
dari client
3 Type Int(2) Merepresentasikan
service yang diminta
oleh pengguna seperti
port scanning, lfi
scanning, sqli
scanning, dan lain nya
4 Email Varchar(64) Email address
pengguna sebagai
tujuan pengiriman
laporan.
5 Status Int(1) Merepresentasikan
status dari pekerjaan
yang masuk dalam
antrian yakni:
0 berarti belum
dikerjakan
1 berarti sedang
dikerjakan
9 sudah dikerjakan
dan dikirim
laporannya
6 Arrive_time Timestamp Tanda waktu order
diterima
7 Done_time Timestamp Tanda waktu order
selesai dikerjakan
8 Handler Int Berisikan id (prime
key) dari server yang
mengerjakan order
Table Tracker.Server
Primary key: nomor
Keterangan: tabel server berisikan informasi server yang
terdaftar pada tracker
No Nama Type Keterangan
1 Nomor Int Autoincrement
2 ip Varchar(15) Berisikan IP
address dari client
3 port Int(2) Berisikan port
yang digunakan
oleh server
4 status Int(1) Merepresentasikan
status dari server:
0 berarti tidak
aktif
1 berarti aktif
5 Registered_timestamp timestamp Berisikan waktu
awal server
terdaftar pada
tracker
Table Tracker.Logs
Primary key: id
Keterangan: tabel logs berisikan aksi-aksi yang dilakukan
oleh tracker seperti menerima request, meneruskan
request, CRUD database, dan lain-lain.
No Nama Type Keterangan
1 id Int Autoincrement
2 action Varchar(64) Berisikan aksi yang
dilakukan oleh tracker
3 Description Text Berisikan deskripsi
aksi yang dilakukan
seperti source dan
tujuan
4 timestamp Timestamp Merepresentasikan
waktu awal aksi
dilakukan
Protokol Komunikasi
Agar setiap komponen dapat berkomunikasi antara satu
dengan yang lain maka diperlukan sebuah aturan atau
yang biasa dikenal dengan protokol komunikasi. Dalam
hal ini, format JSON digunakan dalam protokol
komunikasi antara server dan tracker serta antar server.
Table 0-1 Spread Server List
Caller -
Format
pesan
{
“method”: “serverList”,
“list” :
[
{“ip” :
“192.168.0.32”,”port”:1337},
{“ip” :
5. “192.168.0.33”,”port”:1337}
]
}
Table 0-2 Format Join
Caller Server
Format
request
{
“method” : “join”,
“ip” : “192.168.0.32”,
“port” : 1337,
“key” : “123456789”
}
Format
respon sukses
{
“status” : “ok”,
“value” :
[
{“ip” :
“192.168.0.32”,”port”:1337},
{“ip” :
“192.168.0.33”,”port”:1337}
]
}
Format
respon gagal
{
“status” : “error”,
“description” : “error
description”
}
Table 0-3 Port Scanning
Caller Tracker
Format request {
“method” : “portscan”,
“target” : “www.bangsatya.com”,
}
Format respon
sukses
{
“status” : “ok”,
“method” : “portscan”,
“target” : “www.bangsatya.com”,
“value” :
[
{“port” :
80,”status”:”on”},
{“port” :
3306,”status”:”off”},
{“port” : 8080,
“status”: “off}
]
}
Format respon
gagal
{
“status” : “error”,
“description” : “error
description”
}
Table 0-4 CMS Scan
Caller Tracker
Format
request
{
“method” : “cmsscan”,
“target” : “www.bangsatya.com”,
}
Format
respon
sukses
{
“status” : “ok”,
“method” : “cmsscan”,
“target” : “www.bangsatya.com”,
“cms” : “wordpress”,
“vuln” :
[
{“plugin” : “Complete
Gallery Manager
3.3.3”,”status”:”safe”,”desc”:”-”},
{“plugin” : “Traffic
Analyzer”,”status”:”vuln”,”desc”:”
https://www.exploit-
db.com/exploits/36677/”},
]
}
Format
respon
gagal
{
“status” : “error”,
“description” : “error description”
}
Table 0-5 Web Server Scan
Caller Tracker
Format
request
{
“method” : “webserverscan”,
“target” : “www.bangsatya.com”,
}
Format
respon
sukses
{
“status” : “ok”,
“method” : “webserverscan”,
“target” : “www.bangsatya.com”,
“webserver” : “Apache 0.8.x”,
“vuln” :
[
{“name” : “test-cgi
Directory Listing Vulnerability”,”desc”:”
https://www.exploit-
db.com/exploits/36562/”}
]
}
Format
respon
gagal
{
“status” : “error”,
“description” : “error description”
}
Table 0-6 RFI Scan
Caller Tracker
Format
request
{
“method” : “rfiscan”,
“target” : “www.bangsatya.com”,
}
Format
respon
{
“status” : “ok”,
6. sukses “method” : “rfiscan”,
“target” : “www.bangsatya.com”,
“url” :
[
“www.bangsatya.com/page.php?open=”,
”www.bangsatya.com/file.php?open=”
]
}
Format
respon
gagal
{
“status” : “error”,
“description” : “error description”
}
Table 0-7 LFI Scan
Caller Tracker
Format
request
{
“method” : “lfiscan”,
“target” : “www.bangsatya.com”,
}
Format
respon
sukses
{
“status” : “ok”,
“method” : “lfiscan”,
“target” : “www.bangsatya.com”,
“url” :
[
“www.bangsatya.com/page.php?open=”,
”www.bangsatya.com/file.php?open=”
]
}
Format
respon
gagal
{
“status” : “error”,
“description” : “error description”
}
Table 0-8 SQL Injection Scan
Caller Tracker
Format
request
{
“method” : “sqliscan”,
“target” : “www.bangsatya.com”,
}
Format
respon
sukses
{
“status” : “ok”,
“method” : “sqliscan”,
“target” : “www.bangsatya.com”,
“url” :
[
“www.bangsatya.com/news.php?id=”,
”www.bangsatya.com/member.php?mid=”
]
}
Format
respon
gagal
{
“status” : “error”,
“description” : “error description”
}
V. KESIMPULAN
Dengan adanya penetration tool berbasis sistem
terdistribusi diharapkan keterbatasan penetration testing
menggunakan single komputer dapat diatasi terlebih
dengan adanya kemudahan penambahan host sehingga
scalability dari sistem terjamin. Dengan kata lain, jumlah
beban yang dapat ditangani berbanding lurus dengan
jumlah mesin yang dialokasikan. Selain itu, penetration
testing dapat semakin mudah dengan dapat dilakukan
secara remote dan konkuren.
REFERENSI
[1] OWASP Foundation.“OWASP TESTING GUIDE”.2008.
[2] Stephen Northcutt, Jerry Shenk, Dace Shackleford, Tim
Rosenberg, Raul Siles,, Steve Mancini.“Penetration Testing:
Assessing Your Overall Security Before Attackers Do”. 2006.
[3] Achmad Imam Kistijantoro, Afwarman Manaf. “IF3230 Sistem
Paralel dan Terdistribusi Intro Sistem Terdistribusi”. 2014.
PERNYATAAN
Dengan ini saya menyatakan bahwa makalah yang saya
tulis ini adalah tulisan saya sendiri, bukan saduran, atau
terjemahan dari makalah orang lain, dan bukan plagiasi.
Bandung, 7 Juli 2015
Aryya Dwisatya W