Membuat Tools Brute Force untuk File ZIP Terkunci: Panduan Praktis untuk Pemula Cyber Security

Dalam perjalanan belajar keamanan siber, memahami berbagai jenis serangan adalah hal fundamental. Salah satu konsep dasar yang sering dipelajari adalah brute force, di mana penyerang mencoba setiap kemungkinan kombinasi (biasanya password) hingga menemukan yang benar. Artikel ini akan memandu Anda melalui pengalaman praktis dalam membuat tools brute force sederhana menggunakan Python untuk membuka file ZIP yang dilindungi password. Proyek ini akan menunjukkan bagaimana serangan offline bekerja dan bagaimana library Python dapat dimanfaatkan untuk tujuan ini.

Mengapa Mempelajari Brute Force File Terkunci?

Meskipun terdengar seperti aktivitas peretasan, memahami cara kerja brute force sangat penting bagi seorang profesional keamanan siber:

  • Pemahaman Kerentanan: Membantu kita memahami betapa rentannya password yang lemah atau pendek terhadap serangan.
  • Pengujian Keamanan: Dapat digunakan untuk menguji kekuatan password pada file atau sistem yang dienkripsi secara legal (dengan izin).
  • Keterampilan Pemrograman: Mengembangkan kemampuan pemrograman Python dalam konteks keamanan.

Alat yang Digunakan:

  • Kali Linux (Guest OS di VMware)
  • Python 3 (termasuk module zipfile bawaan)
  • Terminal Linux
  • Editor teks (Nano)

Langkah-langkah Proyek: Brute Force File ZIP

Proyek ini dibagi menjadi beberapa fase, dimulai dari persiapan target hingga eksekusi tools brute force.

Fase 1: Persiapan File ZIP Target dan Wordlist

Untuk memastikan keamanan dan kontrol penuh atas proses pengujian, kita akan membuat sendiri file ZIP yang terkunci.

  1. Membuat File Teks Rahasia: Pertama, kita membuat dua file teks sederhana yang akan dimasukkan ke dalam arsip ZIP. Ini berfungsi sebagai “data rahasia” yang ingin kita akses. Bashecho "Ini adalah file rahasia pertama untuk tugas saya." > file_rahasia1.txt echo "Password untuk file ini akan di-brute force." > file_rahasia2.txt
  2. Membuat File ZIP Terkunci dengan Password: Selanjutnya, kita menggunakan perintah zip untuk mengkompres kedua file teks tersebut ke dalam satu arsip ZIP, sambil melindunginya dengan password yang kita ketahui (misalnya, "qwerty") untuk tujuan pengujian. Bashzip --password "qwerty" tugas_zip_terkunci.zip file_rahasia1.txt file_rahasia2.txt Output adding: file_rahasia1.txt (stored 0%) dan adding: file_rahasia2.txt (stored 0%) mengkonfirmasi bahwa file ZIP berhasil dibuat.
  3. Memverifikasi Kunci File ZIP (Manual): Untuk memastikan file ZIP benar-benar terkunci dan memerlukan password, kita mencoba membukanya secara manual menggunakan perintah unzip. Bashunzip tugas_zip_terkunci.zip Percobaan ini akan menampilkan incorrect password dan skipping: file_rahasia1.txt jika password tidak dimasukkan, menunjukkan file terkunci dengan benar.
  4. Membuat File Wordlist: Kita membuat file teks bernama wordlist.txt yang berisi daftar password yang akan dicoba oleh tools brute force. Penting untuk memastikan password yang benar (dalam kasus ini, "qwerty") ada di dalam wordlist ini. Bashnano wordlist.txt Contoh isi wordlist.txt: testing 12345 password qwerty admin123

Fase 2: Pembuatan Tools Brute Force dengan Python

Dengan persiapan target selesai, kita beralih ke pembuatan script Python.

  1. Menulis Kode Python (zip_brute.py): Kita membuat script Python yang memanfaatkan module zipfile bawaan untuk berinteraksi dengan file ZIP. Kode ini akan membaca password dari wordlist satu per satu dan mencoba mengekstrak file ZIP.
#!/usr/bin/env python3

import zipfile
import sys
import os

def crack_zip(zip_file_path, wordlist_path):
    """
    Mencoba membuka file ZIP yang dilindungi password menggunakan wordlist.
    """
    try:
        zip_file = zipfile.ZipFile(zip_file_path)
    except zipfile.BadZipFile:
        print(f"[-] Error: File ZIP tidak valid atau rusak: {zip_file_path}")
        return False

    try:
        with open(wordlist_path, 'r', errors='ignore') as wordlist:
            for line in wordlist:
                password = line.strip() 
                if not password: 
                    continue

                try:
                    zip_file.extractall(pwd=password.encode())
                    print(f"\n[+] Password ditemukan: '{password}'")
                    return password
                except RuntimeError as e:
                    if "Bad password" in str(e):
                        sys.stdout.write(f"\r[-] Mencoba: {password}")
                        sys.stdout.flush()
                    else:
                        print(f"\n[-] Error lain saat mengekstrak: {e}")
                        return False
                except Exception as e:
                    print(f"\n[-] Terjadi kesalahan tidak terduga: {e}")
                    return False

    except FileNotFoundError:
        print(f"[-] Error: File wordlist tidak ditemukan: {wordlist_path}")
        return False
    except Exception as e:
        print(f"[-] Error saat membaca wordlist: {e}")
        return False

    print("\n[-] Password tidak ditemukan dalam wordlist ini.")
    return False

if __name__ == "__main__":
    target_zip_file = "tugas_zip_terkunci.zip"  # Pastikan nama file ZIP sesuai
    wordlist_file = "wordlist.txt"        

    if not os.path.exists(target_zip_file):
        print(f"Error: File ZIP '{target_zip_file}' tidak ditemukan.")
        sys.exit(1)

    if not os.path.exists(wordlist_file):
        print(f"Error: File wordlist '{wordlist_file}' tidak ditemukan.")
        sys.exit(1)

    print(f"[*] Memulai brute force pada '{target_zip_file}' dengan wordlist '{wordlist_file}'...")

    found_password = crack_zip(target_zip_file, wordlist_file)

    if found_password:
        print(f"\n[+] Brute force berhasil! Passwordnya adalah: '{found_password}'")
    else:
        print("\n[-] Brute force gagal menemukan password.")

Fase 3: Eksekusi dan Verifikasi

  1. Menjalankan Script: Setelah script disimpan, kita menjalankannya dari terminal. Penting untuk memastikan script berada di direktori yang sama dengan file ZIP dan wordlist, atau path file-file tersebut diatur dengan benar di dalam script. Bashpython3 zip_brute.py
  2. Mengatasi Kendala: Selama proses eksekusi, mungkin muncul error seperti Error: File ZIP 'file_terkunci.zip' tidak ditemukan.. Ini terjadi karena adanya ketidaksesuaian nama file yang dicari oleh script dengan nama file ZIP yang sebenarnya (tugas_zip_terkunci.zip). Perbaikan dilakukan dengan mengedit script (nano zip_brute.py) dan mengoreksi nama file target di dalamnya.
  3. Verifikasi Keberhasilan: Setelah koreksi, script berhasil berjalan dan menemukan password. Output seperti:
    • [+] Memulai brute force pada 'tugas_zip_terkunci.zip' dengan wordlist 'wordlist.txt' ...
    • [-] Mencoba: password
    • [+] Password ditemukan: 'qwerty'
    • [+] Brute force berhasil! Passwordnya adalah: 'qwerty' Ini secara jelas menunjukkan kesuksesan tools brute force dalam mengidentifikasi password yang benar. Verifikasi manual dengan unzip tugas_zip_terkunci.zip juga mengkonfirmasi bahwa password tersebut valid.

Kesimpulan

Proyek ini telah berhasil menunjukkan implementasi dasar dari serangan brute force pada file ZIP yang terkunci menggunakan Python. Dari proses ini, kami belajar bagaimana menyiapkan target yang aman, membuat wordlist, membangun script untuk mencoba password, dan yang terpenting, bagaimana mengatasi masalah umum seperti kesalahan path file. Pemahaman tentang brute force bukan hanya penting untuk pertahanan, tetapi juga untuk pengembangan tools yang efektif dalam menganalisis dan menguji keamanan sistem. Proyek ini memberikan dasar yang kuat dalam pemrograman keamanan siber dan analisis kerentanan password.

Leave a Reply

Your email address will not be published. Required fields are marked *