BRUTE FORCE
BRUTE FORCE
Brute force adalah teknik dalam dunia keamanan siber dan kriptografi yang digunakan untuk meretas sistem atau memecahkan kata sandi dengan mencoba semua kemungkinan kombinasi secara sistematis hingga menemukan yang benar. Istilah ini berasal dari konsep "kekuatan kasar" dalam mencoba setiap opsi yang mungkin, tanpa menggunakan strategi yang lebih canggih atau pengetahuan tambahan.
Cara Kerja Brute Force:
Pencarian Sistematis: Dalam serangan brute force, penyerang mencoba semua kombinasi kemungkinan karakter, kata sandi, atau kunci hingga menemukan yang benar. Misalnya, jika kata sandi terdiri dari 4 karakter dan hanya menggunakan huruf kecil, penyerang akan mencoba semua kombinasi dari 26 huruf (a-z) dalam urutan yang berbeda.
Penggunaan Alat: Penyerang biasanya menggunakan perangkat lunak otomatis yang dapat melakukan serangan brute force dengan cepat, menggantikan metode manual yang memakan waktu dan tidak praktis.
Penyimpanan dan Analisis: Perangkat lunak brute force dapat menyimpan hasil yang sudah dicoba untuk menghindari percobaan yang sama dan meningkatkan efisiensi serangan.
Jenis Serangan Brute Force:
Brute Force Klasik: Mencoba setiap kombinasi karakter tanpa pola tertentu. Ini bisa sangat memakan waktu dan memerlukan banyak sumber daya, terutama jika kata sandi atau kunci yang digunakan sangat panjang dan kompleks.
Brute Force Terarah (Targeted): Mencoba kombinasi yang lebih mungkin berdasarkan informasi yang diketahui tentang target, seperti tanggal lahir atau nama hewan peliharaan, untuk mengurangi jumlah kemungkinan yang harus dicoba.
Brute Force Dictionary Attack: Menggunakan daftar kata-kata umum (kamus) yang sering digunakan sebagai kata sandi. Ini adalah bentuk serangan brute force yang lebih efisien jika kata sandi yang dipilih adalah kata-kata atau frasa yang umum.
Langkah-Langkah Perlindungan:
Gunakan Kata Sandi yang Kuat: Pilih kata sandi yang panjang, kompleks, dan unik. Kata sandi yang terdiri dari kombinasi huruf besar dan kecil, angka, dan simbol lebih sulit untuk dipecahkan dengan metode brute force.
Pembatasan Percobaan Login: Implementasikan kebijakan yang membatasi jumlah percobaan login yang gagal dalam waktu tertentu (misalnya, 3 percobaan gagal sebelum akun dikunci atau memerlukan CAPTCHA).
Gunakan Otentikasi Dua Faktor (2FA): Menambahkan lapisan keamanan ekstra dengan memerlukan verifikasi tambahan (seperti kode yang dikirim ke ponsel) selain kata sandi.
Perbarui Perangkat Lunak: Pastikan sistem dan aplikasi selalu diperbarui untuk menutup potensi kerentanan yang dapat dieksploitasi oleh serangan brute force.
Pantau Aktivitas Aneh: Implementasikan sistem pemantauan yang dapat mendeteksi dan memberi peringatan tentang percobaan login yang mencurigakan atau serangan brute force yang sedang berlangsung.
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.
Komentar
Posting Komentar