β€œSaya dengar ada insiden keamanan yang sedang mewabah pada jaringan internet dunia disebabkan oleh malware yang disebut WannaCry. Bagaimana dampaknya terhadap negara kita? Berapa banyak sistem di negara kita yang beresiko terkena malware tersebut? Bagaimana cara penanggulangan-nya secara cepat dan tepat?β€β€Šβ€”β€ŠPresiden Negara Antah Berantah

Demikian kira-kira pertanyaan dari seorang kepala negara, ataupun pucuk pimpinan sebuah perusahaan dengan kantor cabang tersebar di berbagai kota bahkan berbagai negara. Pertanyaan sejenis tentu sering diterima oleh tim IT Security baik perusahaan ataupun institusi negara dimana jawaban atas pertanyaan sederhana tersebut harus dapat di-respon sesegera mungkin.

Ada beragam metode yang bisa dilakukan. Salah satunya akan saya coba sampaikan melalui tulisan ini.

Kita akan pakai analogi dengan contoh target salah satu negara di kawasan Afrika sehingga semua contoh yang digunakan tulisan ini pada dasarnya adalah nyata sesuai fakta dilapangan, namun detail negaranya akan disamarkan.

Nah, untuk menjawab pertanyaan diatas maka tim IT Security perlu memetakan aset-aset mana saja yang rentan (vulnerable) terhadap malware tersebut melalui vulnerability scanning.

Vulnerability Scanning

Vulnerability scanning merupakan aktivitas penting dalam memetakan kerentanan aset terutama yang berkaitan dengan infrastruktur seperti sistem operasi.

Dalam ranah IT Security aktivitas vulnerability scanning berkaitan erat dengan kemampuan melakukan network scanning secara efektif. Network scanning merupakan sebuah seni tersendiri. Seni tersebut pada dasarnya berakar pada tehnik-tehnik yang diimplementasikan oleh beberapa aplikasi lawas seperti NMap. Pehamanan mendalam terhadap protokol seperti TCP/IP, serta pengetahuan mengenai bagaimana sistem operasi bekerja terutama kaitannya dengan jaringan komputer mutlak dibutuhkan.

Sebelum melangkah pada network scanning setidaknya ada dua langkah awal yang perlu dilakukan terlebih dahulu.

1) Memahami Jenis Kerentanan

Fase ini jika dibahas secara mendetail akan panjang sekali. Pada dasarnya, suatu malware ketika menyebar akan memanfaatkan suatu vulnerability baik yang sifatnya 0-day (belum diketahui sama sekali) ataupun N-day (sudah diketahui dan didokumentasikan).

Keduanya bisa jadi melibatkan proses seperti reverse engineering untuk membongkar malware yang dimaksud, ataupun dengan melakukan investigasi / forensik terhadap mesin-mesin yang sudah menjadi korban sebelumnya sehingga bisa diformulasikan jenis kerentanan yang digunakan oleh malware tersebut untuk masuk kedalam mesin target. Setelah memahami jenis kerentanan yang digunakan maka selanjutnya bisa dibuat skenario untuk mengidentifikasi mesin-mesin yang sekiranya dapat dieksploitasi oleh malware dengan memanfaatkan kerentanan tersebut.

Proses tersebut tidak akan dibahas kali ini. Asumsinya, kita sudah mendapatkan informasi detail terkait bug EternalBlue sebagaimana dibahas pada link berikut ini, dan malware yang disebut WannaCry memanfaatkan kerentanan EternalBlue dalam proses eksploitasinya.

Formula untuk mengidentifikasi kerentanan tersebut juga sudah dimasukan kedalam aplikasi NMap.

NMap script untuk mengidentifikasi bug EternalBlue

2) Tentukan Network Target

Untuk mengetahui target network yang akan di-scan kita bisa mengambil dari project berikut ini,

herrbischoff/country-ip-blocks
These have a thousand and one uses but are surprisingly hard to come by in bulk. IPv4 and IPv6 ranges available…

Project tersebut me-maintain data lengkap segmen jaringan internet setiap negara di dunia dan di update setiap jam sehingga informasinya cukup valid.

Target Network in CIDR (Classless inter-domain routing)

Jika dihitung, salah satu negara yang akan di-scan memiliki lebih dari 1 juta alamat IP publik yang dialokasikan untuk negera tersebut.

3) Asset Discovery & Vulnerability Scanning

Meskipun kita sudah memiliki daftar lengkap segmen network internet yang akan di-scan, dan script untuk mengidentifikasi target yang vulnerable, kita belum bisa menjalankan aplikasi network scanner begitu saja.

Pertama, dari seluruh alokasi segmen network tersebut tidak semuanya terhubung dengan mesin komputer. Namanya alokasi tentu ada bagian network yang belum di-assign (alias masih kosong). Kedua, apabila telah ditemukan bahwa alamat IP tersebut terhubung dengan mesin komputer, masih harus dilakukan proses yang dikenal dengan istilah port scanning.

Jaringan internet luas sekali. Setiap saat jumlah paket yang berseliweran juga sangat banyak. Ketika seseorang melakukan proses network scanning begitu saja tanpa strategi jitu maka dampaknya adalah pada waktu yang dibutuhkan sangat lama serta tingkat akurasi hasil tidak akurat.

Mari kita ambil contoh command NMap sederhana berikut ini yang mungkin saja digunakan oleh anggota tim IT security,

Scan host dengan script smb-vuln-ms17–010

Proses diatas jika kita lihat menggunakan aplikasi network packet capture seperti Wireshark hasilnya seperti berikut ini,

NMapβ€Šβ€”β€ŠNetwork packet capture

Perhatikan bagian yang dikotakin warna biru yaitu mulai dari paket no. 527β€Šβ€”β€Šno. 603. Dengan command sederhana diatas maka langkah pertama yang dilakukan oleh NMap adalah melakukan scanning port 80 dan 443 pada target sebagai port standard dengan harapan mendapatkan feedback untuk menentukan apakah alamat IP tersebut terhubung dengan mesin komputer atau tidak (alive / not alive). Proses ini dikenal dengan istilah host discovery. Meskipun target host menjawab dengan paket TCP flag [RST, ACK] dimana artinya port 80 ataupun 443 pada host tersebut tidak terbuka (tidak ada aplikasi server seperti webserver yang berjalan) namun jawaban tersebut cukup untuk menandakan bahwa target tersebut alive.

Kenapa? Ya.., karena dia menjawab kan?

Apabila dia sama sekali tidak menjawab maka NMap akan menunggu untuk jangka waktu tertentu, kemudian akan melakukan re-transmission, dan kemudian menunggu lagi. Hal tersebut untuk memastikan bahwa target scanning memang benar-benar tidak hidup (not alive).

Ilustrasi beberapa tehnik host discovery pada proses network scanning

Setelah target ditentukan alive, barulah kemudian dilakukan proses scanning untuk port 445,

Scanning untuk menentukan port 445 dibuka menggunakan tehnik TCP [SYN/ACK]

kemudian dilanjutkan dengan melakukan service fingerprinting untuk memastikan pada port 445 berjalan aplikasi SMBv1.

Pada bagian akhir baru dilakukan formula yang diambil dari script smb-vuln-ms17–010 untuk mencari tau apakah aplikasi SMBv1 tersebut vulnerable terhadap bug EternalBlue atau tidak.

Service fingerprinting & EternalBlue scanning

Nah, bisa dibayangkan untuk proses vulnerability scanning terhadap satu alamat IP saja NMap harus menjalani proses demikian panjang dan memakan waktu cukup lama bukan? Itu baru satu alamat IP loh, bagaimana dengan total alokasi segmen seluruh alamat IP publik seperti Indonesia yang jumlahnya lebih dari 18 juta?

Saya harap pada tahap ini pembaca bisa memahami betapa pentingnya strategi network scanning yang benar dan tepat bahkan sebelum mulai melakukan vulnerability scanning itu sendiri. Tanpa memahami seni network scanning yang baik maka pihak-pihak yang diberikan tugas mengamankan jaringan internet apalagi dengan scope satu negara tentu akan sangat kesulitan.

Untuk satu jenis vulnerability saja bisa jadi memakan waktu berhari-hari.

Biasanya solusinya adalah dengan menambahkan kapasitas jaringan network scanner, padahal jika dianalisa lebih detail maka sebenarnya permasalahan bukan terletak pada kapasitas jaringan, namun lebih kepada strategi atau tehnik scanning itu sendiri.

Berdasarkan informasi diatas, kita akan coba merevisi command NMap sehingga lebih efektif dimana kita akan memisahkan antara proses vulnerability scanning dan asset discovery.

$ sudo nmap -Pn -sS -p445 --max-retries 1 -n -T5 <target> -oG <output> --open

Dengan menggunakan command diatas maka NMap akan melakukan proses asset discovery menggunakan tehnik TCP SYN/ACK dengan tujuan port 445, jumlah paket hanya satu, tidak perlu melakukan reverse domain resolution, menggunakan kecepatan aggresive, dan hasilnya ditulis ke suatu file hanya jika diketahui bahwa port 445 tersebut statusnya OPEN (bukan filtered).

Command diatas berbeda dengan sebelumnya dimana kita menginstruksikan NMap untuk melakukan asset discovery langsung pada port 445 karena kita sudah tau port itulah yang akan menjadi target uji coba kerentanan EternalBLue, sehingga tidak perlu melakukan uji coba pada port 80 atau 443 lagi dimana beberapa paket akan terbuang percuma untuk tujuan yang sama. Dalam hal ini scanning pada port 445 merupakan proses discovery sekaligus proses port scanning.

Hasil dari command tersebut akan memangkas waktu proses asset discovery sehingga jauh lebih efektif dibandingkan menggunakan command default sebelumnya.

Namun kemudian muncul pertanyaan selanjutnya, apakah NMap satu-satunya aplikasi yang mampu melakukan proses asset discovery?

Jawabannya: tidak.

Ada aplikasi lain yang dikembangkan dengan tujuan mengoptimalkan proses asset discovery sehingga bisa lebih cepat daripada NMap.

  • ZMap | Masscan

Ada beberapa perbedaan terkait mekanisme optimisasi antara ZMap dan Masscan.

Misalnya, ZMap melakukan optimisasi dengan memanfaatkan CPU core. Katakanlah suatu mesin memiliki 8 CPU core dan semuanya dimanfaatkan oleh algoritma ZMap. Core-0 digunakan sebagai controller, core-1 s/d core-6 digunakan untuk mengirim dan menerima paket data, core-7 digunakan sebagai monitor. ZMap juga melakukan optimisasi dari sisi network dengan memanfaatkan ethernet packet pada TCP/IP stack.

Informasi cukup detail terkait ZMap (dikembangkan oleh pihak-pihak yang membuat Censys.io) bisa dilihat pada paper berikut ini.

Sedangkan Masscan melakukan optimisasi diantaranya dengan mem-bypass TCP/IP sistem operasi seperti Linux sehingga Masscan dapat membaca dan menulis langsung ke driver ethernet card tanpa melibatkan read-write memory yang melibatkan kernel.

Robert Graham (pengembang masscan) mengupas beberapa hal terkait fitur-fitur dalam masscan dalam blognya yang berjudul β€œMasscan: the entire Internet in 3 minutes”.

Masscan: the entire Internet in 3 minutes
I thought I’d write up some notes about my β€œ masscan” port mapper. Masscan is the fastest port scanner, more than 10…

Ada cukup banyak hal optimisasi yang bisa menjadikan kedua aplikasi ini lebih cepat dibandingkan NMap.

Namun dari berbagai percobaan yang saya lakukan terutama dengan mempertimbangkan kondisi jaringan dimana tidak senantiasa bisa stabil mampu memberikan throughput besar, Masscan memberikan hasil lebih baik dibandingkan ZMap. Masscan lebih stabil dimana hasilnya lebih reliable. Banyak host β€˜lolos’ dari hasil ZMap namun berhasil ditemukan oleh Masscan.

Sebagai tambahan informasi, banyak sekali malware saat ini melakukan kustomisasi engine masscan untuk melakukan proses scanning secara massive di internet sehingga bisa dikatakan aplikasi tersebut memang cukup matang untuk dipergunakan dalam proses asset discovery berskala besar.

Kembali pada cerita negeri antah berantah dikawasan Afrika, kita akan menggunakan Masscan untuk melakukan proses asset discovery sehingga didapatkan daftar alamat IP yang alive dan membuka port 445.

Masscan seluruh IP negara antah-berantah untuk menemukan aset dengan port 445 terbuka
Ekstraksi informasi alamat IP
  • NMap Script

Berdasarkan output dari Masscan maka didapatkan sebanyak 56 alamat IP yang membuka port 445. Selanjutnya, sebagai tahap akhir, baru kita lakukan vulnerability scanning dengan menggunakan NMap.

$ nmap --script smb-vuln-ms17-010.nse -p445 -n -Pn -iL smb-port_ip.xyz -oX eternal-blue-xyz.xml

Perhatikan bahwa parameter scanning NMap yang digunakan secara spesifik meyebutkan tidak perlu lagi melakukan proses asset discovery (-Pn) karena kita sudah memastikan bahwa asset tersebut aktif sehingga NMap bisa langsung melakukan scanning port 445 untuk menentukan target IP address mana saja yang memiliki vulnerability Eternalblue.

Berikut ini contoh outputnya (agar mempermudah di visualisasikan dalam format non-XML).

Hasil scan bug EternalBlue pada seluruh segmen network salah satu negara kawasan Afrika

Berhubung proses asset discovery sebelumnya telah dilakukan oleh Masscan maka NMap akan langsung menuju target-target yang sudah dipastikan membuka port 445. Perhatikan pada output diatas dimana untuk memproses 58 host hanya dibutuhkan waktu sekitar 1 menit saja.

Apabila digabung dengan proses asset discovery (dimana pada percobaan kali ini memakan waktu sekitar 12 menit), maka itu artinya pertanyaan dari sang kepala negara bisa segera dijawab dalam waktu kurang dari 15 menit saja. Sangat efisien bukan?

Setelah mengidentifikasi aset-aset mana saja yang vulnerable, maka pihak terkait bisa segera menghubungi pemilik aset tersebut untuk segera melakukan patching ataupun mengaktifkan firewall sehingga resiko malware WannaCry yang memanfaatkan bug EternalBlue dapat dimitigasi sedini mungkin.

Vulnerability Management

Customised network scanning dengan kategori massive, systematic, dan targeted seperti diatas merupakan satu dari sekian banyak komponen yang dapat diotomasi.

VMSβ€Šβ€”β€ŠAnalytics Dashboard

Management adalah kata kunci dalam Vulnerability Management System dimana fungsi manajemen akan mengolah informasi yang dikumpulkan seperti pada contoh diatas, melakukan korelasi dengan sumber informasi lain, memberikan user experience yang intuitive kepada pengguna, membantu prosess remediasi, dsb.

Hal-hal sederhana seperti mekanisme asset discovery menjadi krusial ketika pemrosesan melibatkan skala besar, oleh sebab itu tidak boleh dianggap remeh karena penambahan 1 milisecond saja akan membawa dampak sangat signifikan ketika dilakukan dalam skala besar.

β€œKenapa harus bersusah payah melakukan active network scanning seperti itu? Bukahkah cukup menggunakan layanan seperti Censys.io ataupun Shodan?”

Itu adalah pertanyaan yang sangat bagus. Setidaknya ada dua alasan.

Pertama, sistem dan jaringan diseluruh dunia memiliki karakteristik yang berbeda-beda. Ada kalanya kita harus membuat kustomisasi protokol tertentu dalam melakukan proses asset discovery (hal ini cukup mudah dengan menggunakan ZMap), dimana protokol tersebut tidak umum sehingga servis-servis yang ditawarkan melalui internet tidak semuanya mampu berkomunikasi dengan target-target tersebut. Dan jangan lupa bahwa IT security sifatnya dinamis. Artinya kerentanan / bug bisa terjadi pada beragam aplikasi tertutup dimana informasi protokolnya tidak tersedia secara bebas di ruang publik. Contoh kasus dalam hal ini adalah dalam dunia telekomunikasi 3G/4G/5G, ataupun sistem SCADA.

Kedua, servis-servis dari penyedia di internet hanya fokus pada aset-aset yang reachable dari internet. Untuk contoh kasus dalam tulisan ini memang sangat memungkinkan, namun pada kenyataanya aset-aset pada lingkungan intranet jumlahnya jauh lebih besar. Ambil contoh institusi finansial seperti perbankan dengan aset mesin-mesin ATM yang tersebar luas diseluruh Indonesia. Tentu saja aset-aset tersebut tidak reachable dari internet, namun tetap beresiko dari serangan malware seperti worm dimana ketika worm berhasil masuk pada salah satu mesin melalui jaringan internet, maka worm tersebut akan berusaha mencari target pada jaringan intranet juga.

Kemampuan melakukan pemrosesan scanning berskala besar mutlak dibutuhkan pada era sekarang ini karena pertumbuhan aset-aset IT bertambah sangat pesat setiap harinya. Apalagi jika kita berbicara tentang IoT dimasa depan dimana sapi saja saat ini telah dipasangi perangkat IoT.

SmarTernak Jadi Solusi IoT untuk Optimalkan Peternakan | Dailysocial
SmarTernak Jadi Solusi IoT untuk Optimalkan Peternakan Dikembangkan DycodeX dan didukung Kementerian Pertanian…

Bayangkan jika seluruh hewan ternak yang tersebar diseluruh Indonesia perlu dipastikan keamanannya agar bisa segera di-patch, maka dibutuhkan suatu mekanisme vulnerability management yang cukup mumpuni bukan? 😊