Pengertian Brute Force
Serangan brute force adalah teknik serangan siber di
mana penyerang mencoba semua kemungkinan kombinasi untuk mendapatkan akses ke
suatu sistem atau akun. Teknik ini dapat digunakan untuk mencoba mendekripsi
kata sandi atau mengakses informasi rahasia dengan mencoba sebanyak mungkin
kombinasi yang mungkin.
Nama "brute force" berasal dari penyerang
yang menggunakan upaya yang sangat kuat untuk mendapatkan akses ke akun
pengguna. Meskipun merupakan metode serangan siber lama, serangan brute force
telah dicoba dan diuji serta tetap menjadi taktik yang populer di kalangan
peretas.
Brute force attack dilakukan dengan cara memanfaatkan
suatu kelemahan dari keamanan yang dimiliki oleh akun atau sistem agar
penyerang bisa masuk. Adapun cara kerja brute force attack terdiri dari
beberapa tahap, yakni:
Pemilihan Target
Hacker atau penyerang akan memilih target yang mau
mereka jadikan sasaran, seperti akun pengguna, sistem, ataupun jaringan yang
dilindungi dengan kata sandi.
Pembentukan Kombinasi
Penyerang membuat daftar kemungkinan-kemungkinan
kombinasi kata sandi yang mungkin. Kombinasi dari password-password ini terdiri
dari huruf, angka, karakter khusus atau gabungan dari ketiganya.
Percobaan Kombinasi
Penyerang akan mencoba semua kombinasi dari daftar
yang telah mereka buat. Penyerang tidak terlalu ahli akan melakukan percobaan
dengan manual, tetapi bagi orang-orang yang sudah ahli di serangan ini, mereka
akan menggunakan perangkat lunak agar tidak capek memasukkan
kombinasi-kombinasi password yang telah ada.
Pengecekan Keberhasilan
Penyerang akan melakukan semua kombinasi-kombinasi
sampai berhasil, jika berhasil maka penyerang akan memperoleh akses ke sistem
atau data yang dilindungi.
Dampak Brute Force Attack
Berikut beberapa dampak brute force attack yang tidak
diinginkan terhadap akun yang berhasil diserang:
Pencurian Data
Penyerang akan mencuri data-data seperti informasi
pribadi termasuk seluruh kata sandi yang Anda miliki, kemudian menjualnya
kepada pihak ketiga atau meminta penebusan jika sistem yang berhasil ditebus
adalah perusahaan besar dengan ancaman jika mereka tidak mau membayar maka
data-data yang telah dicuri akan dijual ke pihak ketiga.
Melakukan Penipuan atas nama Korban
Setelah penyerang berhasil masuk ke suatu akun seperti
social media korban, mereka bisa melakukan pemalsuan seperti meminta uang
kepada teman-teman korban dengan mengatakan bahwa korban sedang masuk rumah
sakit dan butuh uang untuk membayar biayanya. Korban segera dioperasi, padahal
korban sedang baik-baik saja dan tidak butuh uang.
Penghancuran atau Memanipulasi data
Jika yang diserang adalah suatu perusahaan besar, maka
penyerang biasanya melakukan penghancuran atau memanipulasi data-data dari
perusahaan tersebut. Bahkan ada yang mengancam untuk membayar supaya tidak
dilakukan penghancuran.
Memasukkan Malware
Penyerang juga bisa memasukkan malware atau virus
terhadap sistem ketika mereka berhasil masuk, yang nantinya bisa merusak sistem
yang dimasuki.
Kerugian Finansial
Kerugian finansial merupakan dampak yang paling terasa
karena ada wujudnya. Banyak berita yang mengatakan suatu bank pernah diserang
oleh hacker, sehingga bank tersebut harus membayar tuntutan dari penyerang
dengan membayar sejumlah uang agar data yang dicuri berhasil diambil kembali
oleh bank.
Dari brute force attack ini juga ada jenis kerugian
finansial lainnya, seperti biaya untuk memulihkan sistem, biaya untuk menambah
keamanan sistem supaya tidak terjadi hal-hal seperti ini.
Hilangnya Reputasi
Dengan terjadinya brute force attack akan berdampak
pada reputasi perusahaan-perusahaan besar. Contoh jika sebuah bank besar
terkena serangan maka banyak nasabah yang kecewa karena mereka khawatir data
mereka diambil oleh pencuri, sehingga banyak dari mereka yang bisa menutup akun
mereka di bank tersebut karena tidak percaya dengan keamanan bank.
Gangguan Operasional
Dari serangan terhadap sistem-sistem, maka akan
terjadi gangguan operasional, seperti pada bank, maka nasabah-nasabah tidak
bisa melakukan transaksi. Jika terjadi pada social media seperti Twitter, maka
pengguna tidak bisa mengakses Twitter dan sebagainya.
Tips Menghindari
Supaya tidak terkena serangan brute force attack, maka
Anda perlu melakukan hal-hal yang dapat menghindarinya. Berikut tips cara
menghindari brute force attack:
Menggunakan Kata Sandi yang Kuat
Gunakanlah kata sandi yang kuat, jangan sampai
menggunakan kata sandi yang simple seperti pass123, tetapi gunakanlah kata
sandi yang menggabungkan antara huruf, angka dan karakter khusus.
Mengaktifkan Autentifikasi Dua Faktor
(2FA)
Aktifkan 2FA yang akan berfungsi sebagai keamanan
tambahan dalam suatu akun. Dengan mengaktifkan ini maka walaupun penyerang
berhasil masuk ke akun Anda, jika Anda mengatakan bahwa itu bukan Anda di 2FA,
maka pengguna tidak masuk. Anda bisa mengganti akun sebelum mereka mencoba
masuk lagi.
Membatasi Percobaan Masuk
Jika terjadi kesalahan password saat mau masuk ke
suatu akun, batasi kesalahannya seperti hanya 10 kali batasan saja. Jika
setelah 10 kali salah password maka tidak bisa masuk lagi setelah satu hari dan
perlu 2FA untuk mencobanya di kemudian hari.
Brute force attack adalah serangan yang terlihat
simple, tetapi cukup berbahaya apabila serangan tersebut berhasil. Itulah
beberapa penjelasan tentang brute force attack dari pengertian, cara kerja,
dampak serta tips menghindarinya.
_________________________________________________________
DEMO :
- Buat folder brute_force di disk:C
- Buat file index.php dan isikan kode berikut:
- <?phpsession_start();$users = ['admin' => 'password123','user' => 'userpass'];if ($_SERVER['REQUEST_METHOD'] == 'POST') {$username = $_POST['username'];$password = $_POST['password'];if (isset($users[$username]) && $users[$username] == $password) {$_SESSION['username'] = $username;echo "Login berhasil!";} else {echo "Login gagal!";}}?><!DOCTYPE html><html><head><title>Login</title></head><body><form method="post" action="">Username: <input type="text" name="username"><br>Password: <input type="password" name="password"><br><input type="submit" value="Login"></form></body></html>
- Simulasi serangan brute force dengan python
- Buat file brute_force.py dan isikan kode berikut(untuk httpx, dapat melakukan installasi dengan mengetikan pip install httpx):
- import hashlibimport httpxurl = "http://localhost/brute_force/index.php"username = "admin"passwords = ["password", "123456", "password123", "admin", "userpass"]for password in passwords:# hashed_password = hashlib.md5(password.encode()).hexdigest()data = {"username": username,"password": password}response = httpx.post(url, data=data)if "Login berhasil" in response.text:print(f"Password ditemukan: {password}")breakelse:print(f"Percobaan gagal: {password}")
- Buka browser dan login dengan user admin/password123 pada url http://localhost/brute_force/index.php
- Jalankan serangan brute force pada terminal/cmd (pastikan terinstall python) dengan mengetikkan python brute_force.py
- Tambahkan script untuk mencegah serangan brute force
Untuk mencegah serangan brute force pada file PHP Anda, Anda dapat menambahkan beberapa mekanisme untuk membatasi jumlah percobaan login yang dapat dilakukan dalam jangka waktu tertentu. Salah satu cara untuk melakukannya adalah dengan menyimpan informasi tentang percobaan login di sesi atau basis data, dan memblokir atau menunda permintaan setelah sejumlah percobaan yang gagal.
Berikut adalah contoh implementasi sederhana menggunakan sesi PHP untuk membatasi jumlah percobaan login:
- <?phpsession_start();// Inisialisasi pengguna dan kata sandi$users = ['admin' => 'password123','user' => 'userpass'];// Maksimal percobaan login$max_attempts = 5;// Waktu penguncian dalam detik (misalnya 15 menit)$lockout_time = 15 * 60;if (!isset($_SESSION['attempts'])) {$_SESSION['attempts'] = 0;}if (!isset($_SESSION['lockout_time'])) {$_SESSION['lockout_time'] = 0;}if ($_SERVER['REQUEST_METHOD'] == 'POST') {$current_time = time();if ($_SESSION['attempts'] >= $max_attempts && $current_time < $_SESSION['lockout_time']) {echo "Terlalu banyak percobaan login. Coba lagi nanti.";} else {$username = $_POST['username'];$password = $_POST['password'];if (isset($users[$username]) && $users[$username] == $password) {$_SESSION['username'] = $username;$_SESSION['attempts'] = 0;$_SESSION['lockout_time'] = 0;echo "Login berhasil!";} else {$_SESSION['attempts'] += 1;if ($_SESSION['attempts'] >= $max_attempts) {$_SESSION['lockout_time'] = $current_time + $lockout_time;echo "Terlalu banyak percobaan login. Coba lagi nanti.";} else {echo "Login gagal!";}}}}?><!DOCTYPE html><html><head><title>Login</title></head><body><form method="post" action="">Username: <input type="text" name="username"><br>Password: <input type="password" name="password"><br><input type="submit" value="Login"></form></body></html>
- Meski begitu tetap masih perlu keamanan tambahan, seperti menambahkan
- Gunakan Captcha: Menambahkan Captcha pada formulir login dapat membantu memverifikasi bahwa pengguna adalah manusia dan bukan skrip otomatis.
- Menggunakan Rate Limiting: Implementasikan rate limiting untuk membatasi jumlah permintaan yang dapat dilakukan oleh alamat IP tertentu dalam jangka waktu tertentu.
- Tingkatkan Keamanan dengan IP Blocking: Blokir alamat IP yang mencurigakan atau yang melakukan terlalu banyak percobaan login gagal.