Credential Stuffing

Hari gini, siapa yang punya sosial media hanya satu saja? atau akun di internet hanya satu saja? rata-rata dari kita, setidaknya memiliki 2 atau 3 akun di internet, entah itu akun sosial media, internet banking or marketplace. Kebutuhan akan internet membuat kita mau tidak mau memiliki akun lebih dari satu.

Ada banyak hal yang bisa kita lakukan di internet, bisa bersosialisasi, belanja, mengatur hal-hal terkait financial kita,dll. Hal ini membuat identitas kita yang tadinya hanya bisa diketahui dengan berinteraksi langsung dengan kita, pindah juga ke internet. Contoh, kita dapat mengetahui seseorang hanya dengan mengetik namanya di google. Google akan memberikan kita informasi atau link-link terkait dengan nama tersebut. Jika kita  bisa memfilter informasi yang diberikan oleh google, maka dengan mudah kita akan mendapatkan informasi mengenai orang yang kita cari tadi.

Kembali ke akun-akun internet yang banyak tadi. Biasanya untuk mengakses akun kita di internet akan ada proses verifikasi untuk login ke akun tersebut. Umumnya yang dipakai adalah credential yang berupa username dan password. Jadi ketika login ke facebook, minimal kita harus memasukkan informasi username dan password. Kalau akunnya masih 1 atau 2 akun, mungkin mengatur penggunaan username dan password tadi masih mudah. Tinggal buat credential yang berbeda sedikit, namun mudah diingat. Tapi, bagaimana kalau akun yang kita miliki ada banyak? apakah kita akan membedakan credential yang digunakan untuk login ke akun-akun kita? Kebanyakan orang, akhirnya akan menggunakan credential yang sama ke semua akun-akunnya di internet. Dari penilitian yang dilakukan oleh csid.com pada tahun 2012 [1], menunjukkan bahwa 61% orang-orang yang mempunyai banyak akun di internet akan menggunkan credential yang sama pada akun-akunya tersebut.

password-habbit1

Dan kebanyakan orang juga yang mempunyai akun di internet, jarang sekali melakukan pergantian password secara berkala. Dari penelitian csid.com juga, ada sebanyak 31% pemilik akun di internet tidak pernah sama sekali merubah passwordnya.

password-habbit3

kebiasaan-kebiasaan seperti ini, menyimpan ancaman yang sangat besar. Beberapa mungkin ada yang berpendapat, password saya kuat kok. kombinasinya mumpuni, terdiri dari kombinasi angka, huruf besar, hurif kecil dan spesial karakter. Jadi dengan password seperti itu, saya yakin tidak akan bisa ditebak ataupun dibrute force. Pendapat tersebut memang benar, password dengan kombinasi tersebut adalah ciri-ciri password yang kuat, namun jika tidak pernah diganti akan terbuka satu celah untuk dimanfaatkan. Apa itu? namanya credential stuffing.

Apa credential stuffing? kalau kata owasp.org[2]

Credential stuffing is the automated injection of breached username/password pairs in order to fraudulently gain access to user accounts. This is a subset of the brute force attack category: large numbers of spilled credentials are automatically entered into websites until they are potentially matched to an existing account, which the attacker can then hijack for their own purposes.

Jadi intinya, teknik ini adalah salah satu teknik bruteforce yang memanfaatkan credential yang sebelumnya sudah bocor atau ter-compromise. Darimana data ini credential yang tercompromise tersebut didapat? data-data tersebut didapat dari website yang sudah dihack dan data-data credential dari usernya pun ikut bocor. Akhir-akhir ini kan banyak website-website ataupun sistem yang besar yang berhasil dihack. Contohnya, pada tahun Mei 2016 lalu linkedin berhasil dihack dan menyebabakan 164 juta informasi credential dari usernya juga bocor. Contoh yang lain pada agustus 2016, dropbox juga dihack dan menyebabkan 68 juta data credential usernya bocor. Masih kurang? Nih website yang agak nakal, Naughty America pada Maret 2016 juga dihack dan menyebabkan sekitar 1,3 juta- 1,4 juta credential usernya bocor. Kalau contoh website di Indonesia yang pernah dihack adalah Gojek, untuk detail mengenai gojek bisa dilihat disini. Dan masih banyak lagi kejadian-kejadian seperti itu.

Dengan bermodalkan data credential yang bocor tersebut yang biasanya dipublish hacker di internet, maka syarat untuk melakukan credential stuffing sudah cukup. Sekarang tinggal mencoba satu demi satu credential tersebut pada website-website lain. Kalau credentialnya belum cocok, tinggal coba lagi credential yang lain. Kalau ada yang cocok dan berhasil login, nah ada kemungkinan cocok ditempat yang lain juga. Jadi untuk flow dari credential stuffing kurang lebih seperti berikut:

Untitled

Nah, dengan teknik seperti itu maka sekuat apapun password yang sudah kita buat pasti akan jebol ketika ada satu sistem/website dimana kita memiliki akun disitu dihack sampai informasi mengeni credentialnya juga bocor. Hal ini adalah faktor eksternal yang sama sekali tidak bisa kita duga. Ada banyak kejadian terkait teknik yang merugikan pemilik akunnya. Bisa dibayangkan kalau akun kita yang dicompromise? apa kira-kira kerugian yang akan dialami?

 

Sekarang bagaimana caranya untuk mencegah hal diatas? Pencegahan harus dilakukan dari dua sisi, dari sisi pemilik akun dan dari sisi pemilik sistem. Untuk pemilik akun harus sadar betul akan ancaman terhadap akun yang dimiliki di internet. Ingat, siapapun dapat mengakses akun kita di internet selama memiliki credentialnya dan ada banyak faktor yang menyebabkan informasi credential yang kita miliki bisa sampai bocor. Membuat password yang kuat adalah salah satu cara menjaga informasi tersebut, namun itu saja tidak cukup. Kita harus mengganti secara berkala password tersebut, sehingga jika informasi credential kita bocor karena faktor yang tidak diduga-duga, hal tersebut akan tidak berlaku ketika password kita berubah. Selain itu, sebisa mungkin memaaftakn Multifactor Authentication (jika hal ini disediakan oleh sistem/website) agar apabila password kita bocor, si hacker tidak akan bisa login karena untuk dapat login butuh kombinasi lain selain password, OTP yang dikirim ke nomor hp kita misalkan.

Intinya sih, setiap kita yang memiliki akun di internet harus selalu sadar akan acaman dunia cyber. Jangan sampai akun-akun kita sudah di take over sama orang lain, baru sadar pentignya mengganti password secara berkala atau menggunakan password yang kuat. Dan satu lagi pastinya agar credential stuffing ini gak bisa terjadi sama kita, selalu gunakan password yang berbeda antara satu akun dengan akun lainnya. Tidak usah berbeda signifikan, cukup satu atau dua huruf yang berbeda sudah cukup sih. Hal ini untuk menghindari jika salah satu akun kita di hack, maka akun yang lain tidak akan kena impactnya.

Lanjut dari sisi pemilik sistem, apa saja yang harus dilakukan untuk menghidari serangan credential stuffing. Untuk langkah-langkah preventif ini, sudah dijabarkan oleh OWASP 2017 (saat ini masih persiapan release, tapi sudah bisa dilihat kontennya). Bisa dicari referensinya dengan judul : OWASP Top 10 – 2017 RC1-English. The Open Web Application Security Project(OWASP). Disitu dijelaskan ada banyak kelemahan-kelemahan web applikasi dan bagaimana cara menanggulangi kelemahan-kelemahan tersebut. Untuk kode credential stuffing adalah OAT-008. Ciri-ciri dari serangan credential stuffing adalah sebagai berikut:

  1. Terjadi bayak proses login dengan berbeda credential, tapi bersalah dari satu client HTTP yang sama.
  2. Pasti ada banyak login yang gagal dari proses nomor 1
  3. Dan biasanya nih akan banyak komplain dari customer/user terkait akun mereka yang di take over

Kalau sudah ada gejala di atas, artinya sistem kita sedang diserang dengan teknik ini. Nah, sekarang bagaimana cara mengatasi hal tersebut? Lengkap bisa dibaca pada referensi yang sudah saya sebutkan, tapi dapat disimpulkan untuk mengatasi serangan diatas bisa lakukan hal-hal berikut:

  1. Edukasi terus user/customer agar selalu menjaga dengan baik akun mereka
  2. Membuat satu mekanisme yang dapat memastikan bahwa yang login adalah pemilik akun yang sah. Untuk hal ini biasa digunakan Multi Factor Authentication. Jadi untuk login, tidak hanya butuh password namun bututh faktor lain yang usernya punya. Contohnya penggunaan OTP (one time password)
  3. Membuat password policy yang baik untuk akun-akun user yang ada, tujuannya adalah agar user tidak sembarangan membuat password. Contoh password policy misalnya, password minimal 8 karakter, harus kombinasi huruf dan angka, tiap 3 bulan sekali ganti password, dll.
  4. Membuat limiter untuk login proses. Maksudnya, ketika ada salah login beberapa kali dari 1 source yang sama, maka sistem akan memblock sementara proses login dari source tersebut. Setelah beberapa menit, baru diizinkan kembali untuk login.
  5. Mem-blacklist source yang sudah positif sering digunakan untuk melakukan credential stuffing.
  6. Membuat monitoring based on log dari proses login. Jadi kalau ada aktifitas mencurigakan, bisa langsung diketahui.

 

So, Hacking saat ini tidak hanya melalui jalur yang legal dengan memafaatkan kelemahan teknis dari suatu sistem, tapi saat ini hacking juga sudah melalui jalur yang legal dengan memafaatkan kelemahan dari logic suatu sistem. Maka dari itu selalu peduli dengan kemanan kita di Internet, jangan sampai identitas kita di internet di take over sama orang lain sehingga menimbulkan kerugian untuk kita. Waspadalah, Waspadalah, Waspadalah.

 

Reference:

[1] CSIdentity. (2012). CONSUMER SURVEY: PASSWORD HABITS www.csid.com, (September).

[2] Williams, J., & Wichers, D. (2017). OWASP Top 10 – 2017 RC1-English. The Open Web Application Security Project(OWASP). Retrieved from https://www.owasp.org

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s