🌟 Pengenalan OverTheWire Bandit
OverTheWire Bandit adalah platform pembelajaran interaktif yang dirancang khusus untuk mempelajari konsep keamanan komputer dan jaringan. Berbeda dengan pembelajaran biasa, Bandit menggunakan pendekatan "learning by doing" di mana kamu akan berperan sebagai seorang hacker etis yang harus memecahkan berbagai tantangan untuk naik level.
🎯 Tujuan Pembelajaran
- Memahami dasar-dasar sistem operasi Linux
- Mempelajari konsep keamanan komputer praktis
- Mengasah kemampuan pemecahan masalah
- Mempersiapkan diri untuk sertifikasi keamanan IT
🚀 Memulai Petualangan Bandit
Prasyarat
1. Perangkat: Komputer/laptop dengan koneksi internet
2. Software: Terminal/Command Prompt dan SSH client
3. Akun: Tidak perlu mendaftar, langsung bisa mulai!
Cara Bermain
1. Buka terminal/command prompt di komputermu
2. Gunakan perintah SSH untuk terhubung ke server Bandit
3. Selesaikan tantangan di setiap level untuk mendapatkan password level berikutnya
4. Gunakan password tersebut untuk login ke level selanjutnya
📚 Panduan Level per Level
Level 0 → 1: Langkah Pertama
Tujuan: Belajar melakukan koneksi SSH ke server
```
ssh bandit0@bandit.labs.overthewire.org -p 2220
Password: bandit0
```
Penjelasan:
- `ssh` adalah protokol untuk terhubung ke server jarak jauh
- `bandit0` adalah username untuk level 0
- `-p 2220` menentukan port yang digunakan (standar SSH adalah 22, tapi di sini menggunakan 2220)
Tantangan:
- Setelah login, cari file bernama `readme` di direktori home
- Gunakan perintah `ls` untuk melihat isi direktori
- Gunakan `cat readme` untuk melihat isi file
isi == ZjLjTmM6FvvyRnrb2rfNWOZOTa6ip5If ====
Level 1 → 2: Mengatasi Karakter Khusus
Tantangan:
- File target bernama `-` (strip)
- Di Linux, tanda `-` memiliki arti khusus
Solusi:
```
cat ./-
```
==== 263JGJPfgU6LtdEvgfWU1XP5yac29mFx ====
Penjelasan:
- Tanda `./` memberitahu sistem bahwa ini adalah nama file, bukan parameter
- Tanpa `./`, sistem akan menganggap `-` sebagai parameter untuk perintah `cat`
Level 2 → 3: Menangani Spasi di Nama File
Tantangan:
- File bernama "spaces in this filename"
- Spasi di Linux memisahkan argumen
Solusi 1:
```
cat "spaces in this filename"
```
Solusi 2:
```
cat spaces\ in\ this\ filename
```
===== MNk8KNH3Usiio41PRUEoDFPqfxLPlSmx ======
Penjelasan:
- Tanda kutip (`"`) membuat spasi dianggap sebagai bagian dari nama file
- Backslash (`\`) adalah escape character untuk spasi
Level 3 → 4: Mencari File Tersembunyi
Tantangan:
- File target tersembunyi (hidden file)
- File tersembunyi di Linux diawali dengan titik (.)
Langkah-langkah:
1. Masuk ke direktori `inhere/`
2. Tampilkan semua file termasuk yang tersembunyi:
```
ls -a
```
====2WmrDFRmJIq3IPxneAaMGhap0pFhF3NJ ====
3. Baca file `.hidden`
```
cat .hidden
```
Level 4 → 5: Menganalisis Tipe File
Tantangan:
- Cari file yang berisi teks (bukan binary)
- Gunakan perintah `file` untuk mengecek tipe file
Langkah-langkah:
1. Masuk ke direktori `inhere/`
2. Periksa tipe semua file:
```
file ./
```
3. Cari file yang bertipe "ASCII text"
4. Baca isi file tersebut
==== 4oQYVPkxZOOEOO5pTW81FB8j8lxXGUQw ====
Level 5 → 6: Mencari File dengan Kriteria Spesifik
Tantangan:
- Cari file dengan properti:
- Ukuran 1033 bytes
- Bisa dibaca manusia (human-readable)
- Bisa dieksekusi (executable)
Solusi:
```
find -type f -size 1033c ! -executable -exec file {} \; | grep ASCII
```
Level 6 → 7: Mencari File di Seluruh Sistem
Tantangan:
- Cari file yang dimiliki oleh user bandit7 dan group bandit6
- Ukuran file 33 bytes
Solusi:
```
find / -user bandit7 -group bandit6 -size 33c 2>/dev/null
```
Level 7 → 8: Mencari Kata Kunci
Tantangan:
- Cari kata "millionth" dalam file data.txt
Solusi:
```
grep "millionth" data.txt
```
Level 8 → 9: Mencari Baris Unik
Tantangan:
- Temukan baris yang hanya muncul sekali di data.txt
Solusi:
```
sort data.txt | uniq -u
```
Level 9 → 10: Mencari String dalam File Biner
Tantangan:
- Temukan string yang diawali dengan beberapa karakter '='
- File berisi data biner
Solusi:
```
strings data.txt | grep "=="
```
Level 10 → 11: Dekode Base64
Tantangan:
- Dekode data yang dienkripsi dengan base64
Solusi:
```
base64 -d data.txt
```
Level 11 → 12: Rot13
Tantangan:
- Dekode teks yang dirotasi 13 karakter (ROT13)
Solusi:
```
cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'
```
Level 12 → 13: Dekompresi File
Tantangan:
- File hexdump yang berisi file terkompresi berulang kali
Langkah-langkah:
1. Buat direktori di /tmp
2. Salin file dan ubah permission
3. Gunakan `xxd`, `gzip`, `bzip2`, dan `tar` untuk mengekstrak
Level 13 → 14: Login dengan Kunci SSH
Tantangan:
- Login menggunakan kunci SSH pribadi
Solusi:
```
ssh -i sshkey.private bandit14@localhost
```
Level 14 → 15: Mengirim Password ke Port
Tantangan:
- Kirim password saat ini ke port 30000
Solusi:
```
echo "4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e" | nc localhost 30000
```
Level 15 → 16: Koneksi SSL
Tantangan:
- Kirim password menggunakan koneksi SSL
Solusi:
```
openssl s_client -connect localhost:30001
Kemudian ketik password level 15
```
Level 16 → 17: Port Scanning
Tantangan:
- Cari port yang terbuka antara 31000-32000
- Gunakan SSL untuk mengirim password
Solusi:
```
nmap -p 31000-32000 localhost
openssl s_client -connect localhost:31790
```
Level 17 → 18: Bandingkan Dua File
Tantangan:
- Bandingkan passwords.old dan passwords.new
- Temukan baris yang berbeda
Solusi:
```
diff passwords.old passwords.new
```
Level 18 → 19: Login Tanpa .rc
Tantangan:
- Login tanpa menjalankan .rc
Solusi:
```
ssh bandit18@bandit.labs.overthewire.org -p 2220 -t /bin/sh
```
Level 19 → 20: Setuid Binary
Tantangan:
- Gunakan binary setuid untuk membaca file password
Solusi:
```
./bandit20-do cat /etc/bandit_pass/bandit20
```
Level 20 → 21: Port Listener
Tantangan:
- Buat port listener dan kirim password ke port tersebut
Solusi:
```
Terminal 1
nc -lvnp 1234
Terminal 2
./suconnect 1234
```
Level 21 → 22: Cron Job
Tantangan:
- Temukan cron job yang dijalankan tiap menit
- Pelajari script yang dijalankan
Solusi:
```
cd /etc/cron.d/
cat cronjob_bandit22
cat /usr/bin/cronjob_bandit22.sh
cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
```
Level 22 → 23: Cron Job Lanjutan
Tantangan:
- Pahami cron job untuk user bandit23
- Eksekusi script untuk mendapatkan password
Solusi:
```
cat /etc/cron.d/cronjob_bandit23
cat /usr/bin/cronjob_bandit23.sh
```
Level 23 → 24: Script Otomatis
Tantangan:
- Buat script untuk brute force 4 digit kode
Solusi:
```
for i in {0000..9999}; do
echo "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i" | nc localhost 30002
sleep 0.1
done
```
Level 24 → 25: Bruteforce dengan Script
Tantangan:
- Buat script untuk mencoba semua kombinasi 4 digit
Solusi:
```
!/bin/
for i in {0000..9999}; do
echo "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i"
done | nc localhost 30002 | grep -v "Wrong"
```
Level 25 → 26: More Command
Tantangan:
- Gunakan more untuk mendapatkan shell
Solusi:
1. Perkecil terminal
2. Buka file dengan more
3. Tekan 'v' untuk membuka vi
4. Ketik `:set shell=/bin/`
5. Ketik `:shell`
Level 26 → 27: Shell yang Dimodifikasi
Tantangan:
- Dapatkan shell normal dari shell yang dimodifikasi
Solusi:
```
:set shell=/bin/
:shell
export TERM=xterm
```
Level 27 → 28: Git Clone
Tantangan:
- Clone repository git
Solusi:
```
mkdir /tmp/mydir
cd /tmp/mydir
git clone ssh://bandit27-git@localhost/home/bandit27-git/repo
```
Level 28 → 29: Git Log
Tantangan:
- Periksa riwayat commit
Solusi:
```
git log -p
```
Level 29 → 30: Eksplorasi Branch Git
Konsep Dasar:
- Git memungkinkan pengembangan paralel menggunakan fitur bernama "branch"
- Setiap repository bisa memiliki banyak branch yang berisi versi kode yang berbeda
- Branch `main`/`master` biasanya berisi kode utama yang stabil
Tantangan:
- Temukan branch lain yang mungkin berisi informasi penting
Solusi Langkah-demi-Langkah:
1. Lihat semua branch yang tersedia (baik lokal maupun remote):
```
git branch -a
```
- Opsi `-a` menampilkan semua branch
- Cari branch yang mencurigakan atau berbeda dari `main`/`master`
2. Beralih ke branch `dev` yang terlihat mencurigakan:
```
git checkout dev
```
- Periksa isi branch tersebut
- Cari file yang mungkin berisi password
Penjelasan:
- Developer sering menyimpan kode eksperimental atau fitur baru di branch terpisah
- Branch `dev` (development) biasanya berisi kode yang sedang dalam pengembangan
Level 30 → 31: Mencari Rahasia di Git Tag
Konsep Dasar:
- Tag di Git digunakan untuk menandai titik tertentu dalam sejarah commit
- Sering digunakan untuk versi rilis (v1.0, v2.0, dll)
- Bisa berisi pesan dan informasi tambahan
Tantangan:
- Temukan tag yang mungkin menyimpan informasi rahasia
Solusi Langkah-demi-Langkah:
1. Lihat daftar tag yang tersedia:
```
git tag
```
- Perhatikan nama-nama tag yang ada
- Cari yang terlihat mencurigakan seperti 'secret', 'password', dll
2. Periksa isi tag 'secret':
```
git show secret
```
- Periksa output untuk menemukan password
- Kadang password bisa ada di pesan commit atau isi file
Penjelasan:
- Developer kadang menyisipkan informasi sensitif di tag
- Tag bisa berisi lebih dari sekadar versi, termasuk catatan rilis dan metadata
Level 31 → 32: Memanipulasi Git Repository
Konsep Dasar:
- File `.gitignore` menentukan file/folder yang diabaikan Git
- File yang terdaftar di `.gitignore` tidak akan di-track oleh Git
- Kita bisa memanfaatkan ini untuk menyembunyikan atau mengekspos file
Tantangan:
- Push file ke repository remote meskipun ada aturan `.gitignore`
Solusi Langkah-demi-Langkah:
1. Buka file `.gitignore`:
```
nano .gitignore
```
- Perhatikan baris yang mengabaikan file `.txt`
2. Hapus baris yang mengabaikan file `.txt`:
- Cari baris `.txt` dan hapus atau beri tanda pagar (``) di depannya
- Simpan perubahan
3. Buat file `key.txt` dengan isi yang diminta:
```
echo "May I come in?" > key.txt
```
4. Tambahkan file ke staging area dan commit:
```
git add key.txt
git commit -m "Menambahkan file kunci"
```
5. Push perubahan ke repository remote:
```
git push origin main
```
Penjelasan:
- Dengan menghapus `.txt` dari `.gitignore`, kita memberitahu Git untuk melacak file `.txt`
- Server akan memeriksa isi file yang di-push untuk memberikan password
Level 32 → 33: Uppercase Shell
Tantangan:
- Keluar dari uppercase shell
Solusi:
```
$0
```
Kemudian jalankan:
```
/bin/
```
Penjelasan:
- `$0` merujuk ke nama program yang sedang dijalankan (shell)
- Ini memungkinkan kita menjalankan shell baru tanpa konversi ke uppercase
🛠️ Perintah Dasar yang Harus Dikuasai
1. Navigasi Direktori
- `pwd` - Tampilkan direktori saat ini
- `ls` - Daftar isi direktori
- `ls -l` - Tampilkan detail file
- `ls -a` - Tampilkan file tersembunyi
- `cd` - Pindah direktori
- `cd ..` - Naik ke direktori induk
- `cd ~` - Ke direktori home
- `cd /` - Ke direktori root
2. Manipulasi File
- `cat` - Tampilkan isi file
- `file` - Cek tipe file
- `find` - Cari file
- `grep` - Cari teks dalam file
3. Bantuan
- `man` - Manual book
Contoh: `man ls`
- `--help` - Bantuan singkat
Contoh: `ls --help`
💡 Tips & Trik
1. Gunakan Tab Completion
- Tekan Tab untuk melengkapi nama file/perintah
- Tekan Tab dua kali untuk melihat opsi yang tersedia
2. Sejarah Perintah
- Gunakan tombol panah atas/bawah untuk melihat perintah sebelumnya
- `history` - Lihat riwayat perintah
3. Alias
Buat perintah singkat untuk perintah yang sering digunakan:
```
alias ll='ls -la'
```
🎓 Manfaat Belajar Bandit
1. Pemahaman Linux
- Menguasai command line interface (CLI)
- Memahami struktur direktori Linux
- Bekerja dengan file dan direktori
2. Keamanan Dasar
- Memahami konsep permission
- Belajar tentang file tersembunyi
- Berlatih analisis keamanan
3. Karir IT
- Keterampilan yang dicari perusahaan
- Dasar untuk sertifikasi keamanan
- Persiapan untuk peran sysadmin/devops
🚀 Langkah Selanjutnya
1. Praktik Terus
- Coba setiap perintah yang dipelajari
- Eksperimen dengan opsi-opsi perintah
2. Gabung Komunitas
- Diskusikan tantangan di forum OverTheWire
- Bergabung dengan grup belajar IT lokal
3. Tantang Diri Sendiri
- Coba selesaikan level tanpa bantuan
- Buat catatan pribadi untuk setiap level
Selamat belajar dan selamat menjelajahi dunia keamanan IT! Ingat, setiap ahli IT profesional juga pernah menjadi pemula. Yang penting adalah konsistensi dan semangat belajar yang tinggi. 💪



Tidak ada komentar:
Posting Komentar