Crypto CTF Toolbox

Panduan penggunaan, instalasi offline, dan skenario CTF internasional untuk setiap tool kriptografi esensial.

Kategori: All-in-One & Auto-Decoder

Ringkasan: "The Cyber Swiss Army Knife". Aplikasi web untuk encoding, decoding, hashing, dan analisis data.


Instalasi Offline:

Sangat mudah. Buka halaman rilis GitHub GCHQ, unduh file CyberChef_vX.X.X.html. Simpan di hard drive Anda. Cukup klik dua kali untuk membukanya di browser kapan saja, 100% offline.


Skenario CTF Internasional (Tata Cara Penggunaan):

Ini adalah langkah pertama Anda untuk challenge "dump" data apa pun.

  1. "Magic" Awal: Anda diberi file teks acak. Salin isinya ke "Input". Gunakan recipe "Magic" dengan "Intensive Mode" dicentang. Seringkali ini akan langsung mendeteksi tumpukan encoding (misal: Base64 -> Hex -> ASCII).
  2. XOR Brute-force: Gunakan recipe "XOR Brute Force". Ini akan mencoba semua 1-byte key (0-255) dan menunjukkan hasil yang paling "printable" (skor entropi tertinggi). Sangat cepat untuk simple XOR.
  3. Membuat Recipe Kompleks: Soal seringkali berupa encoding berlapis. Recipe klasik adalah: From Base64 -> From Hex -> XOR (key: 'rahasia') -> Gunzip. CyberChef memungkinkan Anda merangkai ini secara visual.

Ringkasan: Tool decoding otomatis yang menggunakan AI dan analisis frekuensi untuk mencari tahu encoding apa yang digunakan (termasuk classical ciphers). Ini seperti "Magic" di CyberChef, tapi di command line dan lebih kuat.


Instalasi Offline:

Gunakan metode pip download ciphey seperti yang dijelaskan di catatan atas. Ciphey memiliki banyak dependensi, jadi pastikan untuk mengunduh semuanya.


Skenario CTF Internasional (Tata Cara Penggunaan):

Anda mendapatkan ciphertext pendek dan aneh, dan Anda malas mencoba 20 decoders berbeda di CyberChef.

# Skenario 1: Input langsung sebagai teks # Ciphertext-nya adalah "Z29vZCBqb2Ih" (Base64 dari "good job!") $ ciphey -t "Z29vZCBqb2Ih" # Skenario 2: Input dari file $ cat file.txt VGhpcyBpcyBhIGxvdCBvZiB0ZXh0Li4u (dan seterusnya) $ ciphey -f file.txt

Ciphey akan mencoba Base64, Hex, Caesar, Vigenere, dan puluhan lainnya secara otomatis dan memberi Anda jawabannya jika berhasil.

Kategori: Asymmetric (RSA, ECC, Factoring)

Ringkasan: Lingkungan matematika super lengkap. Ini adalah tool utama untuk semua soal kripto modern yang membutuhkan matematika tingkat tinggi (RSA kompleks, ECC, Lattice).


Instalasi Offline:

Ini adalah instalasi terbesar. Buka website SageMath, unduh binary installer (bisa beberapa GB) untuk OS Anda. Instal seperti aplikasi biasa. Ini adalah definisi arsenal offline.


Skenario CTF Internasional (Tata Cara Penggunaan):

Kapanpun RsaCtfTool gagal, Sage adalah jawabannya.

  • Serangan Coppersmith (Lattice): Skenario paling umum. Anda diberi tahu sebagian dari plaintext (misal: "flag{...}" atau "admin_pass=..."). Anda bisa menggunakan serangan Coppersmith untuk menemukan sisa plaintext jika e kecil atau d kecil. Sage memiliki fungsi bawaan untuk ini (misal: small_roots).
  • Elliptic Curve (ECC): Soal memberi Anda parameter kurva (a, b, p) dan sebuah titik P. Sage dapat melakukan aritmatika ECC dengan mudah (penjumlahan titik, perkalian skalar).
  • Chinese Remainder Theorem (CRT): Anda memiliki beberapa c dan n (misal: c1, n1, c2, n2). Anda bisa menggunakan fungsi crt() di Sage untuk menyelesaikannya.

Ringkasan: Tool otomatis untuk menyerang public key RSA dengan berbagai serangan umum (Wiener, small e, common modulus, dll.).


Instalasi Offline:

git clone https://github.com/RsaCtfTool/RsaCtfTool.git. Lalu, siapkan dependensinya. Cara terbaik: cd RsaCtfTool lalu jalankan pip download -r requirements.txt (di mesin online) dan pindahkan. Instal dengan pip install -r requirements.txt --no-index --find-links=./downloaded_packages.


Skenario CTF Internasional (Tata Cara Penggunaan):

Ini adalah tool "tembak dan lupakan" pertama untuk soal RSA. Anda diberi public key (key.pub) dan file terenkripsi (flag.enc).

# Skenario 1: Paling lengkap (mencari private key DAN mendekripsi) $ python3 RsaCtfTool.py --publickey key.pub --uncipherfile flag.enc # Skenario 2: Hanya mencari private key $ python3 RsaCtfTool.py --publickey key.pub --private # Skenario 3: Diberi n dan e secara manual $ python3 RsaCtfTool.py --n 12345... --e 65537 --private

Ini akan secara otomatis mencoba faktorisasi (via Yafu/FactoDB), serangan Wiener, serangan small e, dan lainnya. Jika ini berhasil, Anda selesai dalam 30 detik. Jika gagal, pindah ke SageMath.

Ringkasan: Tool Python sederhana untuk mengkalkulasi parameter RSA. Berguna saat Anda SUDAH memiliki komponennya.


Instalasi Offline:

git clone https://github.com/ius/rsatool.git. Ini adalah skrip Python tunggal, tidak ada dependensi.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Anda berhasil memfaktorkan n menjadi p dan q (menggunakan Yafu), dan Anda memiliki e dan c. Sekarang Anda perlu menghitung d dan mendekripsi.

# Anda punya p, q, dan e. Cari private key (d) $ python rsatool.py -p 123... -q 456... -e 65537 # Outputnya akan memberi Anda d. # Sekarang, dekripsi c menggunakan d (biasanya pakai skrip python sendiri)

Ringkasan: Tool faktorisasi integer standalone super cepat.


Instalasi Offline:

Unduh binary yang sudah di-compile untuk OS Anda (misal: yafu-x64). Simpan di direktori /usr/local/bin Anda agar bisa dipanggil dari mana saja. RsaCtfTool akan menggunakannya secara otomatis jika menemukannya.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Anda diberi n yang "kecil" (kurang dari 100 digit). RsaCtfTool mungkin timeout atau gagal. Jalankan Yafu secara manual.

# Jalankan Yafu di terminal $ ./yafu-x64 # Di dalam shell Yafu: >> factor(123456789...[masukkan n]...987654) # Seringkali `n` yang diberikan adalah hasil Fermat's factorization (p dan q sangat berdekatan) dan Yafu akan menyelesaikannya dalam hitungan detik.
Kategori: Hashing & Brute-Force

Ringkasan: Raja password cracking offline. Esensial untuk hash dan file terproteksi.


Instalasi Offline:

git clone https://github.com/openwall/john.git. Lalu cd john/src, jalankan ./configure && make. Ini akan meng-compile binary-nya. PENTING: Unduh rockyou.txt (dan wordlist lainnya) dan simpan bersamanya.


Skenario CTF Internasional (Tata Cara Penggunaan):

JTR memiliki "pembuka" hash (seperti zip2john, ssh2john).

  1. Crack Hash Sederhana: Anda menemukan hash (MD5, SHA1). $ echo "a0123...abc" > hash.txt $ john --wordlist=/path/to/rockyou.txt hash.txt
  2. Crack File ZIP: Soal kripto memberi Anda file ZIP ber-password. # Langkah 1: Ekstrak hash-nya $ zip2john secure.zip > zip_hash.txt # Langkah 2: Crack hash-nya $ john --wordlist=/path/to/rockyou.txt zip_hash.txt
  3. Crack Kunci SSH: Sama seperti ZIP, tapi untuk kunci privat SSH. $ ssh2john id_rsa_protected > ssh_hash.txt $ john --wordlist=/path/to/rockyou.txt ssh_hash.txt

Ringkasan: Mengidentifikasi tipe hash dari sebuah string.


Instalasi Offline:

Gunakan metode pip download hashid (lihat catatan di atas). Ini tool Python murni yang ringan.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Anda diberi hash "a0b1c2...". Ini MD5? SHA1? SHA256? Salah tebak akan buang-buang waktu cracking.

$ hashid 'a0b1c2...' Possible Hashs: [+] MD5 [+] MD4

Ini memberi Anda daftar kemungkinan untuk dicoba di JTR atau Hashcat.

Ringkasan: Melakukan serangan Hash Length Extension (kelemahan MD5, SHA1, dll.).


Instalasi Offline:

git clone https://github.com/iagox86/hash_extender.git. Lalu cd hash_extender, jalankan make.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Server menggunakan autentikasi hash(secret + data). Anda tahu data (misal: "user=guest") dan hash-nya, tapi tidak tahu secret. Anda ingin membuat hash untuk data baru (misal: "user=guest&admin=true") tanpa tahu secret.

# -f = format (md5, sha1, dll) # -s = signature (hash yang Anda tahu) # -d = data (data asli yang Anda tahu) # -a = data yang ingin ditambahkan # --secret-min/max = tebak panjang secret (ini kuncinya!) $ ./hash_extender -f md5 -s 0123...abc -d "user=guest" -a "&admin=true" --secret-min 8 --secret-max 32

Tool ini akan memberi Anda signature baru dan string data baru (yang berisi padding aneh) untuk dikirim ke server.

Kategori: Block Cipher & Padding

Ringkasan: Tool untuk melakukan serangan Padding Oracle pada CBC mode secara otomatis.


Instalasi Offline:

git clone https://github.com/KishanBagaria/padding-oracle-attacker.git. Ini adalah skrip Python murni.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Anda berinteraksi dengan server web. Anda bisa mengirim ciphertext (misal: dalam cookie atau parameter URL), dan server merespons secara berbeda jika padding-nya salah (misal: Error 500) vs jika padding-nya benar tapi dekripsinya salah (misal: Error 404). Perbedaan ini adalah oracle.

Alat ini butuh wrapper script (Anda buat sendiri) yang berkomunikasi dengan server. Tapi tool utamanya adalah:

# Ini adalah konsepnya. Anda perlu skrip 'oracle.py' # 'oracle.py' adalah skrip yang Anda tulis untuk query ke server # dan mengembalikan True/False berdasarkan respons server. $ padding-oracle-attacker --ciphertext [HEX_CIPHERTEXT] \ --block-size 16 --oracle-type "script" --oracle-script "./oracle.py"
Kategori: Classical, XOR & Stream Cipher

Ringkasan: Tool terbaik untuk menganalisis repeating-key XOR (Vigenere biner).


Instalasi Offline:

git clone https://github.com/hellman/xortool.git. Ini adalah skrip Python murni.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Anda diberi file biner besar (file.enc) yang dienkripsi dengan repeating-key XOR. Anda tidak tahu kuncinya atau panjangnya. Anda berasumsi plaintext-nya adalah teks bahasa Inggris (atau setidaknya ASCII).

# -c ' ' = Asumsikan ' ' (spasi) adalah karakter paling umum # Ini akan menebak panjang kunci (key length), menebak kuncinya, # dan menghasilkan file dekripsi untuk setiap tebakan. $ xortool -c ' ' file.enc # Outputnya akan seperti: # Key length: 11 # Key: 'mysecretkey' # Plaintext (disimpan ke 11.out): "flag{ini_adalah_flagnya...}"

Ringkasan: Melakukan serangan Known-Plaintext ("Crib Dragging") terhadap repeating-key XOR.


Instalasi Offline:

git clone https://github.com/SpiderLabs/cribdrag.git. Skrip Python.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Sama seperti xortool, tapi kali ini Anda tahu sebagian dari plaintext. Ini disebut crib. Crib yang paling umum adalah "flag{" atau "CTF{"."

# Buat file crib.txt berisi 'flag{' (atau format flag lainnya) $ echo -n "flag{" > crib.txt # Jalankan tool (asumsikan ciphertext ada di file.enc) $ python cribdrag.py file.enc crib.txt

Tool ini akan "menyeret" crib di sepanjang ciphertext dan menunjukkan di posisi mana XOR-nya menghasilkan kunci yang "masuk akal" (misal: kunci yang berulang).

Ringkasan: Tools untuk analisis dan pemecahan cipher klasik (Caesar, Vigenere, Atbash, Substitusi).


Instalasi Offline:

git clone repositori masing-masing. Mereka adalah skrip Python.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Anda diberi ciphertext yang hanya terdiri dari huruf (A-Z), tidak ada simbol atau angka. Ini hampir pasti cipher klasik.

Catatan: Saat ini, tool seperti Ciphey (disebutkan di atas) sebagian besar telah menggantikan tools ini karena Ciphey mencobanya secara otomatis. Namun, tools ini masih berguna untuk analisis manual.

# Featherduster $ ./featherduster.py ciphertext.txt # Codext $ codext "GUR ZNXR V YBIR"

Ringkasan: Memecahkan enkripsi file ZIP (metode PKZIP lama) menggunakan serangan Known-Plaintext.


Instalasi Offline:

Unduh source code dari halaman web resminya, lalu make.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Anda diberi file flag.zip yang terenkripsi. Anda juga diberi file readme.txt yang Anda YAKIN adalah salah satu file di dalam flag.zip tersebut. Ini adalah known plaintext.

# -C arsip_enkripsi.zip # -c file_di_dalam_arsip.txt (terenkripsi) # -p file_plaintext.txt (file yang sama, tapi tidak terenkripsi) $ pkcrack -C flag.zip -c readme.txt -p readme.txt

Ini akan mengekstrak kunci internal dan memungkinkan Anda mendekripsi seluruh arsip.

Kategori: Data Formats & Crossover

Ringkasan: Pisau Swiss bawaan sistem untuk semua hal kripto modern (parsing kunci, sertifikat, enkripsi/dekripsi).


Instalasi Offline:

Sudah terinstal di hampir semua distro Linux dan macOS. Untuk Windows, unduh binary dari Win32OpenSSL.


Skenario CTF Internasional (Tata Cara Penggunaan):

  1. Membaca Public Key (PEM/DER): Skenario paling umum. Anda diberi file key.pub atau cert.pem dan perlu mengekstrak n dan e. # Untuk Public Key tipe PEM (mulai dengan ---BEGIN---) $ openssl rsa -pubin -in key.pub -text -noout # Untuk Sertifikat X.509 $ openssl x509 -in cert.pem -text -noout # Outputnya akan menampilkan Modulus (n) dan Exponent (e)
  2. Enkripsi/Dekripsi Cepat: Soal memberi tahu, "didekripsi dengan AES-256-CBC, password 'secret'". $ openssl enc -aes-256-cbc -d -in flag.enc -out flag.txt -k 'secret'

Ringkasan: Tool command line untuk membaca QR Code dan barcodes dari gambar.


Instalasi Offline:

Di mesin online, sudo apt-get install zbar-tools (Debian/Ubuntu). Temukan file .deb yang diunduh di /var/cache/apt/archives/, pindahkan, dan instal di mesin offline dengan sudo dpkg -i nama_file.deb.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Soal kripto/stego memberi Anda gambar QR code. Bisa jadi gambar itu rusak, terpotong, atau ada puluhan QR code kecil.

$ zbarimg qr_code_image.png # Output: # QR-Code:flag{qr_codes_are_easy}

Ringkasan: Mendeteksi data tersembunyi (steganografi) di LSB (Least Significant Bit) pada gambar PNG dan BMP.


Instalasi Offline:

Ini adalah Ruby Gem. Di mesin online: gem fetch zsteg. Pindahkan file .gem. Di mesin offline: gem install --local zsteg-X.X.gem.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Soal kripto memberi Anda file PNG. Anda sudah periksa strings dan exiftool tapi tidak ada apa-apa. Ini adalah langkah berikutnya.

$ zsteg image.png # Outputnya akan mencoba berbagai kombinasi LSB # ... # b1,rgb,lsb,x .. text: "flag{tersembunyi_di_lsb}"
Kategori: Library Python (Untuk Solver Kustom)

Library ini bukan tools, tapi bahan baku untuk Anda membuat solver kustom saat tools otomatis gagal.

Ringkasan: Fork modern dari PyCrypto. Ini adalah library wajib untuk semua operasi kripto di Python (AES, DES, RSA, ECC, dll.).


Instalasi Offline:

Gunakan metode pip download pycryptodomex (perhatikan, paketnya pycryptodomex untuk menghindari konflik) seperti catatan di atas.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Anda perlu membuat skrip untuk berinteraksi dengan server yang menggunakan AES-CBC, tapi dengan IV atau key yang dimodifikasi setiap saat.

# skrip_solver.py from Crypto.Cipher import AES from Crypto.Util.Padding import unpad from Crypto.Util.number import long_to_bytes, bytes_to_long # Berguna untuk konversi n, c, e n = 123... c = 456... m_bytes = long_to_bytes(pow(c, d, n)) # Berguna untuk dekripsi AES manual key = b'sixteen_byte_key' iv = b'sixteen_byte_iv_' cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) print(plaintext)

Ringkasan: Library Python untuk matematika angka besar (integer) super cepat.


Instalasi Offline:

Gunakan metode pip download gmpy2. Ini mungkin perlu C compiler di mesin offline, jadi pastikan build-essential (atau setara) terinstal.


Skenario CTF Internasional (Tata Cara Penggunaan):

Skenario: Serangan RSA small e (misal: e=3). Anda perlu menghitung akar pangkat 3 dari c.

# skrip_solver.py import gmpy2 from Crypto.Util.number import long_to_bytes c = 123... e = 3 # Menghitung akar pangkat e dari c # pow(c, 1/3) di Python murni tidak akan akurat # gmpy2.iroot(c, e) sangat cepat dan akurat m, is_exact = gmpy2.iroot(c, e) if is_exact: print("Plaintext ditemukan!") print(long_to_bytes(m)) else: print("Bukan pangkat e sempurna.")
Kategori: Core Utilities (Bawaan Sistem)

Jangan lupakan tools yang sudah ada di sistem Anda!

Ringkasan: Tools dasar command line di Linux/macOS.


Instalasi Offline:

Sudah terinstal di sistem Anda.


Skenario CTF Internasional (Tata Cara Penggunaan):

Ini adalah "lem" yang menyatukan semua tool Anda, sering digunakan dengan pipes (|).

# Skenario 1: Decode file Base64 $ cat file.b64 | base64 -d > file.bin # Skenario 2: Konversi Hex dump (tanpa spasi) ke biner # Soal memberi Anda dump hex panjang di file.hex $ cat file.hex | xxd -r -p > file.bin # Skenario 3: Mencari flag di file biner besar $ strings file.bin | grep "flag{" # Skenario 4: Otomatisasi interaksi server # Anda perlu mengirim 'data' ke server untuk mendapatkan 'c' baru $ curl -s "http://server.com/encrypt?data=AA" | xxd -p