Brute force adalah metode kejahatan cyber di mana pelaku akan mencoba berbagai kombinasi password untuk membobol akses ke suatu sistem. Banyak kasus di mana sistem yang tidak diamankan menjadi target brute force yang berlangsung sampai berbulan-bulan atau lebih, sehingga pihak yang melancarkan brute force bisa mencoba sampai jutaan kombinasi password untuk mendapatkan password yang benar untuk masuk ke sistem tersebut.

Artikel ini membahas tentang simulasi sederhana dari brute force, dan konfigurasi firewall (Mikrotik) untuk pencegahannya.

  • Simulasi dilakukan menggunakan GNS3
  • Brute force dieksekusi dari VM Kali Linux “Penjahat” menggunakan tool Hydra
  • Target brute force adalah VM Ubuntu “Korban”

Topologi

Gambar 1. Topologi
Gambar 1. Topologi

  • Untuk mempersingkat durasi brute force, password pada VM “Korban” hanya dibuat 3 digit angka. Kemudian pada VM “Penjahat”, tool Hydra juga di-set untuk melakukan brute force menggunakan numeric 0-9, dan dibatasi kombinasi 3 digit saja
  • Sekali lagi, pada kasus nyata, brute force dapat berlangsung sangat lama tanpa disadari oleh target. Terutama target yang tidak ada pengamanan sama sekali

Hydra

Gambar 2. Penggunaan Hydra
Gambar 2. Penggunaan Hydra

Command di atas, hydra -l root -x 3:3:1 ssh://192.168.1.250 -V akan mengeksekusi brute force ke IP 192.168.1.250 (VM “Korban”).

  • hydra = tool yang digunakan
  • -l root = user yang di-brute force adalah root
  • -x 3:3:1 = menentukan jenis kombinasi password yang akan dicoba. Formatnya adalah MIN-CHAR:MAX-CHAR:CHARSET(1=numeric).

Gambar 3. Eksekusi Hydra
Gambar 3. Eksekusi Hydra

Setelah command sebelumnya dieksekusi, hydra kemudian menjalankan proses brute force dan berhasil menemukan password yang bisa digunakan untuk masuk ke target, yaitu 918.

Gambar 4. Akses SSH dengan Password yang Ditemukan
Gambar 4. Akses SSH dengan Password yang Ditemukan

Akses SSH ke VM “Korban” menggunakan password yang ditemukan hydra berhasil. Bagaimana penampakan log login attempt pada VM ini?

Gambar 5. /var/log/auth.log
Gambar 5. /var/log/auth.log

Gambar 6. Total Percobaan Login
Gambar 6. Total Percobaan Login

Tercatat 1000an kali percobaan ketika hydra melancarkan brute force ke target ini.

Firewall (Mikrotik)

Bagaimana proses TCP/IP yang terjadi ketika seseorang (client) mengakses SSH ke suatu sistem (server)? Pertama, client mengirim packet SYN ke port SSH server. Server kemudian membalas dengan SYN-ACK. Kemudian client membalas dengan ACK. Dengan begitu TCP connection menjadi established dan sesi SSH berlangsung di dalam koneksi TCP ini. Setelah itu client memasukkan password. Apabila client menginput password yang salah terlalu banyak, maka server akan men-terminate sesi SSH dan koneksi TCP dengan mengirim RST.

Gambar 7. TCP Handshake
Gambar 7. TCP Handshake

Sekarang bagaimana proses TCP/IP ketika hydra melancarkan brute force ke suatu target? Hydra membuat beberapa koneksi TCP ke port SSH target, sehingga ada banyak sesi SSH di saat yang sama, sehingga hydra bisa mencoba lebih dari 1 password sekaligus. Untuk setiap koneksi TCP di mana hydra mendeteksi password yang salah berdasarkan respon SSH/TCP dari target, hydra akan langsung menutup koneksi tersebut dan membuat koneksi baru untuk terus mencoba kombinasi password lainnya.

Gambar 8. Connection Reset
Gambar 8. Connection Reset

Berdasarkan 2 poin di atas, kita bisa membuat firewall yang akan mem-filter pola trafik brute force tersebut.

/ip firewall filter 

add action=accept chain=forward connection-state=established,related 

add action=add-src-to-address-list address-list=stage3_list address-list-timeout=6h chain=forward connection-state=new dst-port=22 protocol=tcp src-address-list=stage2_list
comment="IP yang ada dalam stage2_list yang kembali membuat koneksi baru TCP ke port 22 dalam jangka waktu 30 menit akan masuk ke list ini dan akan dihapus setelah 6 jam"

add action=add-src-to-address-list address-list=stage2_list address-list-timeout=30m chain=forward connection-state=new dst-port=22 protocol=tcp src-address-list=stage1_list
comment="IP yang ada dalam stage1_list yang kembali membuat koneksi baru TCP ke port 22 dalam jangka waktu 5 menit akan masuk ke list ini dan akan dihapus setelah 30 menit"

add action=add-src-to-address-list address-list=stage1_list address-list-timeout=5m chain=forward connection-state=new dst-port=22 protocol=tcp
comment="IP yang membuat koneksi baru TCP ke port 22 akan masuk ke list ini dan akan dihapus setelah 5 menit"

add action=drop chain=forward comment="Block IP yang ada dalam stage3_list" src-address-list=stage3_list 

Bagaimana cara kerja rangkaian rule ini? Jadi ketika ada IP yang membuat koneksi SSH ke server/perangkat yang berada di belakang firewall, maka IP tersebut akan terdaftar ke address_list “stage1_list” selama 5 menit. Jika diasumsikan koneksi ini adalah koneksi normal, maka IP tersebut tidak akan membuat koneksi SSH baru lagi ke arah server dalam waktu singkat (5 menit).

Jika dalam 5 menit IP tersebut kembali membuat koneksi SSH baru ke arah server, maka selanjutnya IP tersebut akan terdaftar ke address_list “stage2_list” selama 30 menit. Sampai tahap ini koneksi dari IP tersebut sudah dicurigai sebagai abnormal. Kemudian jika dalam 30 menit IP tersebut kembali membuat koneksi SSH baru ke arah server, maka IP tersebut akan terdaftar ke address_list “stage3_list” selama 6 jam. Semua IP yang terdaftar di “stage3_list” akan diblock selama 6 jam. Dengan begini, aktor brute force hanya bisa melancarkan aksinya sebanyak 2x dalam waktu 30 menit jika tidak ingin IP nya diblock.

Pengujian Firewall

Selanjutnya VM “Penjahat” akan kembali melakukan percobaan brute force ke VM “Korban” untuk melihat cara kerja firewall yang telah dibuat.

Gambar 9. Percobaan Brute Force
Gambar 9. Percobaan Brute Force

Beberapa saat setelah command brute force dieksekusi, hydra langsung menghentikan prosesnya karena terlalu banyak connection error ke arah target. Ini karena IP host hydra langsung diblock oleh firewall sehingga tidak ada trafik yang sampai ke server.

Gambar 10. Firewall
Gambar 10. Firewall

Dari sisi firewall terlihat IP VM “Penjahat” yang melakukan brute force terdaftar di address_list stage1 sampai stage3. Jadi ketika hydra mencoba membuat koneksi SSH ke server lebih dari 2x dalam rentang waktu yang ditentukan, firewall langsung memblokir IP nya.

Penutup

Selalu ada celah keamanan di dalam sistem yang dibuat manusia. Contohnya pada firewall sederhana pada tulisan ini. Hacker dengan niat dan tekad yang kuat untuk membobol suatu sistem bisa saja menemukan cara lain untuk mencapai tujuannya. Oleh karena itu seperti kata pepatah, “kalau bisa, jangan menyerang”.