Pentesting with Abnormal Targets (2 of 2) Final

Ok. Setelah Anda membaca artikel bagian pertama selanjutnya bagian kedua ini kita akan melakukan proof of concept. Dalam proof of concept ini membahas mengenai kasus yang telah saya lakukan.

Studi Kasus
Sebuah perusahaan Switcher di Indonesia memiliki aplikasi server ISO 8583. Aplikasi ini digunakan sebagai perantara bagi pihak pertama dan pihak kedua untuk melakukan transaksi finansial. Kedua pihak ini disebut dengan Mitra. Mitra adalah lembaga yang telah bekerjasama dengan perusahaan switcher sebagai pihak untuk meneruskan informasi data transaksi. Contoh mitra seperti Bank, PLN, dan lain sebagainya.
Untuk terhubung dengan aplikasi ini,mitra harus mempunyai aplikasi tersendiri yang telah memenuhi spesifikasi sesuai dengan kesepakatan antara mitra dengan switcher. Aplikasi ini disebut dengan aplikasi klien. Aplikasi inilah yang nantinya akan menjadi kurir informasi transaksi keuangan menuju aplikasi server.

Penetration Testing
Penetration testing dilakukan pada aplikasi server. Untuk diketahui,aplikasi server tidak memiliki   Graphical User Interface   yang baik karena ia hanya berfungsi sebagai jembatan antara pihak pertama dan pihak kedua. Masalah muncul ketika saya ingin melakukan penetrasi. Saya cukup sering berhadapan dengan aplikasi, jaringan,serta infrastruktur. Namun pada kesempatan kali ini saya berhadapan dengan aplikasi yang tidak memiliki GUI sehingga saya hanya bisa mengira-ngira dan membayangkan bentuk aplikasi ini seperti apa. Secara umum, gambaran sistem adalah sebagai berikut.

1a

Pada tahap awal,saya mengumpulkan informasi (information gathering) sebanyak mungkin baik secara teknikal maupun logikal seperti wawancara kepada admin jaringan,tim pengembangan,serta IT manager. Setelah data dirasa cukup, akhirnya saya dapat menyimpulkan bahwa aplikasi ini memang tidak mempunyai GUI. Aplikasi ini hanya menjalankan service di atas port yang telah ditentukan. Kemudian aplikasi menunggu (listen) paket data yang dikirimkan dari aplikasi klien. Ketika klien melakukan transaksi,saat itu pula paket data dikirimkan ke aplikasi server. Paket data yang masuk ke aplikasi server selanjutnya dicek dan diteruskan ke aplikasi pihak tujuan.

 Berikut adalah skenario   serangan yang saya buat berdasarkan informasi yang saya dapatkan:

2a

Dari skenario di atas,posisi saya sebagai   intruder   dianalogikan sebagai mitra. Mitra memliki jaringan khusus (private) untuk terhubung ke switcher sehingga posisi saya dianalogikan telah terhubung ke jaringan switcher. Kemudian skenarionya   intruder melakukan penetrasi melalui jaringan yang melewati:

Firewall – Load Balancer – Application – Database.

Langkah selanjutnya adalah saya melakukan scanning terhadap network infrastruktur, apakah ada celah atau tidak. Pertama saya mencoba untuk mengirimkan paket   icmp   (ping) untuk melihat apakah server tersebut aktif atau tidak. Ketika saya melakukan ping ternyata tidak ada respon dari server. Saya berpikir bahwa saya salah segmentasi jaringan,karena pada saat itu ip address yang saya gunakan berbeda segmen dengan ip address server. Tetapi saya coba telaah kembali, ternyata meskipun saya memiliki ip address yang berbeda,tetapi rute (route) yang saya lewati masih sama,jadi logikanya saya masih bisa mengakses server tersebut. Setelah ditelisik lebih dalam,ternyata saya mengetahui bahwa paket icmp telah diblok oleh firewall sehingga ketika saya melakukan ping tidak ada respon. Tindakan yang baik sebagai langkah preventif dari orang yang tidak bertanggungjawab. Untuk melihat informasi server, seperti active port kemudian saya mencoba menggunakan nmap. Lagi-lagi nmap tidak bisa memeriksa server karena diblok tadi. Saya mencoba menambahkan beberapa parameter pada nmap dan ternyata berhasil.

3a

Sejauh yang saya temui,network infrastrukturnya cukup baik. Sehingga saya belum menemukan isu keamanan yang krusial. Selanjutnya saya mencoba melakukan scanning pada bagian aplikasi. Pada bagian ini saya membutuhkan cukup banyak waktu untuk bisa terhubung ke aplikasi.

Pertama saya mencoba dengan melakukan scanning seperti biasa saya lakukan, yaitu menggunakan tools scanning web aplikasi, network, dan lain sebagainya. Semua tools yang saya gunakan ternyata tidak memberikan hasil yang memuaskan. Bahkan, toolsnya sendiri pun tidak bisa terhubung dengan aplikasi server. Setelah saya cari tau, ternyata aplikasi ini hanya membuka port tertentu untuk melakukan koneksi ke klien. Jadi aplikasi ini tidak membuka port umum lain (seperti port 80, 21, 22 dsb). Pantas saja tools yang saya gunakan tidak bisa terkoneksi. Berikut ini adalah asumsi server yang menjadi target:

IP Address    : 192.168.1.14
Port               : 1337

Informasi yang saya dapatkan untuk melakukan koneksi ke aplikasi ini,saya menggunakan telnet ke server aplikasi:

root@kali:~# telnet 192.168.1.140 1337

Berhasil terkoneksi dengan telnet.

4a

Yap benar. Ternyata hanya port yang dibuka saja yang bisa melakukan koneksi. Sampai di sini saya sudah bisa terhubung dengan aplikasi server. Lalu bagaimana saya bisa menyentuhnya? Mengecek berbagai parameter yang ada di dalamnya? Sedangkan GUI nya pun tidak ada.

Setelah saya membaca mengenai ISO 8583, saya mulai memahami bahwa aplikasi ini hanya menerima paket data sesuai dengan standar yang digunakan yaitu ISO 8583. Lalu untuk mencoba apakah aplikasi ini benar hanya menerima paket data yang standar atau tidak,saya membuat aplikasi sederhana yang dapat terhubung dengan aplikasi server dan dapat mengirimkan paket. Aplikasi yang saya buat ini tidak mengirimkan paket sesuai dengan standar ISO 8583 seperti yang dijelaskan pada bagian Landasan Teori,namun sebuah aplikasi yang hanya mengirimkan paket data berbentuk teks biasa. Saya membuat aplikasi ini menggunakan PHP Socket.

5a

Aplikasi sederhana menggunakan PHP Socket yang mengirimkan paket data di luar standar ISO 8583. Kemudian saya jalankan aplikasi tersebut.

6aAplikasi berjalan dengan baik. Tetapi bagaimana dengan aplikasi servernya? Baik, mari kita lihat bagian log servernya.

7aLog server mencatat bahwa ada koneksi dari klien ke aplikasi. Sebelum saya mengirimkan paket data melalui aplikasi ini,CPU Usage yang digunakan hanya sebesar 0,3%.

8aNamun setelah beberapa kali saya mengirimkan paket data,maka CPU Usage naik secara signifikan.

9a10aTerlihat bahwa CPU Usage yang awalnya bernilai 0,3% (dalam keadaan normal) naik secara signifikan hingga 800%.

Analisa Hasil
Mengapa CPU Usage dapat naik secara signifikan?
Dari hasil analisa saya,bahwa pada aplikasi server tidak memiliki error handling terhadap paket di luar standar ISO 8583 sehingga apabila ada aplikasi yang mengirimkan paket di luar standar tersebut,maka aplikasi akan menerimanya.
Namun ketika paket sampai di aplikasi,aplikasi tersebut ‘bingung’ untuk memproses paketnya. Sehingga aplikasi menyerahkan ke parameter lain, dan parameter lain menyerahkan kembali ke parameter yang lain. Akibat terlalu banyak ‘penyerahan’ yang tidak pernah berakhir itu,sehingga menyebabkan peningkatan CPU Usage secara signifikan.

Rekomendasi
Aplikasi server harus divalidasi agar hanya membolehkan paket standar ISO 8583 saja yang masuk. Selain itu,dari sisi jaringan dapat ditambahkan rules mengenai jenis paket yang diperbolehkan melewati aplikasi.

Penutup
Pada aplikasi yang saya pentest,beberapa informasi yang saya dapatkan yaitu aplikasi ini memiliki ambang batas (threshold) CPU Usage sebesar 60%. Jadi apabila CPU Usage mencapai nilai 60% (status: warning) maka aplikasi akan mengirimkan pesan kepada admin sebagai peringatan bahwa CPU Usage telah melampaui ambang batas dan harus segera ditanggulangi. Maksimal threshold CPU Usage pada aplikasi adalah 80% (status: critical).
Pada saat peak time aplikasi ini melayani transaksi sebanyak 3 juta hits (seperti inquiry,payment,error,dsb) dalam satu hari. CPU Usage saat peaktime adalah sebesar 40%.
Berikut ini tabel perbandingan kondisi aplikasi dalam keadaan normal dan tidak normal.

11aNamun ketika saya melakukan transaksi ‘bodong’ menggunakan aplikasi saya sendiri maka hasilnya adalah:

12aSaya hanya mengirimkan sebanyak 8x pengiriman. Setiap pengiriman paket, CPU Usage naik sebesar 100%. Ketika CPU Usage naik sebesar 800% maka admin harus merestart service pada aplikasi agar kembali normal. Namun untuk merestart service pada saat CPU Usage sedang tinggi, admin agak kesulitan karena CPU Usage yang tinggi berdampak pada lambatnya server yang digunakan.

Kesimpulan
Dari hasil pembahasan tulisan ini, dapat disimpulkan beberapa hal yaitu:

  • ISO 8583 merupakan format standar yang digunakan untuk melakukan transaksi keuangan.
  • Tahap pencarian informasi (information gathering) sangat bermanfaat dan sebaiknya harus detil.
  • Aplikasi harus memiliki validasi input agar dapat menangani paket di luar standar yang telah ditetapkan.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.