Lompat ke konten Lompat ke sidebar Lompat ke footer

Mencegah Brute Force

 1. Pengertian Brute Force

Brute force adalah teknik serangan dalam dunia keamanan siber yang melibatkan percobaan setiap kemungkinan kombinasi untuk mendapatkan akses ke sistem atau data yang dilindungi. Ini sering digunakan dalam konteks serangan password, di mana penyerang mencoba berbagai kombinasi kata sandi hingga menemukan yang benar. Teknik ini juga dapat diterapkan pada enkripsi atau kode-kode lain yang memerlukan pemecahan.

2. Sejarah Brute Force

  • Awal Mula: Konsep brute force telah ada sejak awal perkembangan komputer dan kriptografi. Pada awalnya, serangan ini dilakukan secara manual oleh individu yang mencoba kombinasi secara satu per satu.
  • Perkembangan Teknologi: Dengan kemajuan teknologi komputer, brute force menjadi lebih cepat dan efisien. Penggunaan komputer modern dan perangkat keras khusus seperti GPU memungkinkan penyerang untuk mencoba miliaran kombinasi per detik.
  • Keamanan Kontemporer: Saat ini, brute force sering dikombinasikan dengan teknik lain dalam serangan multi-faceted, seperti phishing atau exploit software, untuk meningkatkan peluang keberhasilan.

3. Dampak Brute Force

  • Kompromi Data: Jika berhasil, serangan brute force dapat menyebabkan kebocoran data pribadi atau sensitif, yang dapat berdampak pada privasi individu dan keamanan organisasi.
  • Kerugian Finansial: Organisasi yang terkena dampak mungkin menghadapi kerugian finansial akibat pencurian identitas, penipuan, atau biaya pemulihan dari serangan.
  • Kerusakan Reputasi: Kegagalan dalam melindungi sistem dapat merusak reputasi perusahaan dan mengurangi kepercayaan pelanggan atau mitra bisnis.
  • Gangguan Operasional: Serangan brute force yang intens dapat membebani sistem dan jaringan, menyebabkan gangguan dalam operasi normal.

4. Pencegahan Brute Force

  • Penggunaan Password Kuat: Menggunakan password yang panjang dan kompleks (menggabungkan huruf besar, huruf kecil, angka, dan simbol) dapat memperlambat proses brute force.
  • Lockout dan Pembatasan: Menerapkan mekanisme lockout setelah sejumlah percobaan login yang gagal dapat mengurangi kemungkinan serangan brute force. Misalnya, akun bisa dikunci untuk periode waktu tertentu setelah beberapa kali percobaan gagal.
  • Verifikasi Multi-Faktor (MFA): Menggunakan MFA menambah lapisan keamanan tambahan yang membuat serangan brute force menjadi jauh lebih sulit, karena penyerang harus melewati lebih dari sekadar password.
  • Pemantauan dan Peringatan: Memantau aktivitas login dan mengatur peringatan untuk percobaan login yang tidak biasa dapat membantu mendeteksi dan merespons serangan secara lebih cepat.
  • Penggunaan Captcha: Captcha pada halaman login dapat mencegah otomatisasi dari upaya login berulang kali, mempersulit penyerang untuk melanjutkan serangan brute force.


Demo:

  • Buat folder brute_force di disk:C
  • Buat file index.php dan isikan kode berikut:
  • <?php
    session_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 hashlib
    import httpx

    url = "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}")
            break
        else:
            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:

  • <?php
    session_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
  1. Gunakan Captcha: Menambahkan Captcha pada formulir login dapat membantu memverifikasi bahwa pengguna adalah manusia dan bukan skrip otomatis.
  2. Menggunakan Rate Limiting: Implementasikan rate limiting untuk membatasi jumlah permintaan yang dapat dilakukan oleh alamat IP tertentu dalam jangka waktu tertentu.
  3. Tingkatkan Keamanan dengan IP Blocking: Blokir alamat IP yang mencurigakan atau yang melakukan terlalu banyak percobaan login gagal.

Posting Komentar untuk "Mencegah Brute Force"