Brute Force

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:
  • <?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.

 

Komentar