Panduan Lengkap Belajar Keamanan IT dengan OverTheWire Bandit

 




 ðŸŒŸ 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. 💪


IDIARSO
IDIARSO

Menulis adalah kegiatan saya disela rutinitas kerja,silahkan berkomentar dibawah ini sebagai bahan masukan

Tidak ada komentar:

Posting Komentar