Audit Keamanan Sistem: Eksploitasi Binari & Celah Logika Linux
Studi Kasus: OverTheWire Wargames (Bandit & Leviathan)
Author: rwx4m Role: Blue Team / Digital Forensic and Incident Response (DFIR)
Classification: Technical Writeup
Proof of Execution (Penyelesaian Wargame)
Dokumentasi teknis ini didasarkan pada simulasi serangan dan pertahanan di lingkungan isolasi Capture The Flag (CTF) yang disediakan oleh platform OverTheWire.
Sebagai bukti pemahaman komprehensif terhadap eskalasi hak akses Linux dan keamanan binari, seluruh rangkaian tantangan fondasional telah diselesaikan dengan sukses.
1. OverTheWire: Bandit (Selesai)
Fokus: Fondasi Linux, Izin Akses, dan Manipulasi Teks.
2. OverTheWire: Leviathan (Selesai)
Fokus: Analisis Dinamis Binari, Race Conditions, dan Keamanan Logika C.
Ringkasan Eksekutif
Laporan ini mendokumentasikan analisis kerentanan spesifik dari seri Leviathan. Pendekatan yang digunakan menggabungkan teknik eksploitasi ofensif (Red Team) untuk mengidentifikasi kelemahan eskalasi hak akses, dan analisis defensif (Blue Team) untuk merumuskan perbaikan di tingkat kode (Secure Coding).
Setiap vektor serangan telah dipetakan ke dalam kerangka kerja MITRE ATT&CK guna menstandardisasi pelaporan ancaman.
Fase 1: Kecerobohan Penyimpanan Data (Level 0 → 1)
MITRE ATT&CK Mapping: * T1552.001 - Unsecured Credentials: Credentials In Files
Konteks & Skenario: Dalam lingkungan server, kredensial akses tidak diamankan dan terekspos di direktori pengguna akibat kelalaian manajemen file.
Eksekusi:
Inspeksi terhadap direktori non-standar (.backup) mengungkap adanya file konfigurasi peramban web (bookmarks.html). Analis menggunakan ekstraksi teks untuk menemukan anomali.
# Mengekstraksi baris yang memuat kredensial dari file artefak
grep "leviathan" ~/.backup/bookmarks.html
Hasil: Kredensial teks terbuka (plaintext) berhasil diekstrak.
Perbaikan Keamanan (Mitigasi):
- Terapkan prinsip Least Privilege secara ketat pada direktori cadangan (
chmod 700). - Dilarang keras menyimpan kata sandi dalam konfigurasi sistem pihak ketiga.
Fase 2: Kredensial Teks Terbuka di Memori (Level 1 → 2 & Level 3 → 4)
MITRE ATT&CK Mapping: * T1106 - Native API Execution
- T1552 - Unsecured Credentials (Hardcoded)
Konteks & Skenario: Autentikasi yang memverifikasi input secara langsung terhadap string yang tertanam kaku (hardcoded) di dalam binari sangat rentan terhadap teknik Dynamic Tracing.
Eksekusi: Melakukan pencegatan (hooking) terhadap panggilan pustaka standar C di memori menggunakan alat pelacak saat program dijalankan.
# Mencegat panggilan fungsi memori
ltrace ./check
Hasil: Terlihat fungsi perbandingan membaca sandi mentah: strcmp("input_user", "[REDACTED]").
Analisis Tingkat Kode (Source Code Review):
Vulnerable Code (C):
char password[] = "rahasia123"; // Terbaca jelas di memori
if (strcmp(input, password) == 0) { grant_access(); }
Secure Code Patch (C):
// Validasi harus membandingkan hasil Hashing, bukan teks mentah
char target_hash[] = "$argon2id$v=19$m=16...$";
if (verify_argon2_hash(input, target_hash) == 0) { grant_access(); }
Fase 3: Eksploitasi Celah Waktu & Manipulasi Spasi (Level 2 → 3)
MITRE ATT&CK Mapping:
- T1068 - Exploitation for Privilege Escalation (Race Condition/TOCTOU)
Konteks & Skenario: Kerentanan Time-of-Check to Time-of-Use (TOCTOU) terjadi ketika program memisahkan fase pengecekan izin dan fase eksekusi. Spasi pada input juga memicu pemisahan argumen yang tidak disengaja oleh shell.
Eksekusi: Program gagal menangani argumen berspasi. Analis mengeksekusi peilot berupa jalan pintas (symlink) ke lokasi kredensial terlarang.
# Menyiapkan peilot symlink
ln -s /etc/leviathan_pass/leviathan3 /tmp/rwx4m_link
# Mengeksploitasi parsing argumen shell
./printfile "/tmp/rwx4m_link dummy_file"
Analisis Tingkat Kode (Source Code Review): Vulnerable Code (C):
if (access(argv, R_OK) == 0) {
// Spasi memecah argv menjadi dua argumen terpisah saat dieksekusi shell
snprintf(command, sizeof(command), "/bin/cat %s", argv);
system(command);
}
Secure Code Patch (C):
// Gunakan execve() agar argumen tidak dipecah oleh shell
char *args[] = {"/bin/cat", argv, NULL};
execve("/bin/cat", args, NULL);
Fase 4: Penyamaran Data vs Kriptografi Sejati (Level 4 → 5)
MITRE ATT&CK Mapping:
- T1140 - Deobfuscate/Decode Files or Information
Konteks & Skenario: Penyamaran (Obfuscation) teks menjadi kode biner bukanlah kontrol keamanan. Kriptografi sejati memerlukan kunci, sedangkan penyamaran hanya menyembunyikan algoritma sementara waktu.
Eksekusi: Binari mengekspos deretan biner. Analis mengembangkan instruksi dekode one-liner untuk mengonversi data bahasa mesin kembali ke ASCII.
# Menangkap output dan menerjemahkannya
./bin | perl -lape '$_=pack"(B8)*",@F'
Perbaikan Keamanan (Mitigasi):
- Implementasikan standar enkripsi (seperti AES-256) jika penyimpanan data rahasia sangat dibutuhkan, bukan sekadar mengubah representasi visualnya.
Fase 5: Pembajakan Izin Binari SUID (Level 5 → 6)
MITRE ATT&CK Mapping:
- T1574 - Hijack Execution Flow
- T1068 - Exploitation for Privilege Escalation
Konteks & Skenario:
Binari berhak istimewa tinggi (SUID) yang bergantung pada file di direktori tak terlindungi (/tmp) membuka pintu bagi serangan pembelokan jalur file (Redirection).
Eksekusi:
Analis mendeteksi bahwa program mencari /tmp/file.log. Sebuah symlink ditanam untuk menghubungkan lokasi tersebut ke penyimpanan rahasia.
# Membelokkan sasaran pembacaan file aplikasi
ln -s /etc/leviathan_pass/leviathan6 /tmp/file.log
./leviathan5
Analisis Tingkat Kode (Source Code Review): Vulnerable Code (C):
// Mengakses lokasi publik yang bisa dimanipulasi
FILE *f = fopen("/tmp/file.log", "r");
Secure Code Patch (C):
// Gunakan mekanisme pembuatan file sementara yang aman (mengembalikan file descriptor)
char template[] = "/tmp/app_log_XXXXXX";
int fd = mkstemp(template);
Fase 6: Eksploitasi Ruang Autentikasi Sempit (Level 6 → 7)
MITRE ATT&CK Mapping:
- T1110 - Brute Force: Password Guessing
Konteks & Skenario: Kontrol keamanan tanpa mekanisme jeda memfasilitasi serangan otomatis pada kumpulan kombinasi PIN bervolume rendah (10.000 kombinasi).
Eksekusi: Otomatisasi skrip Bash dieksekusi untuk melakukan iterasi pencarian hingga kombinasi yang tepat ditemukan dalam hitungan detik.
# Otomatisasi dengan filter respon negatif
for pin in {0000..9999}; do ./leviathan6 $pin; done | grep -v "Wrong"
Perbaikan Keamanan (Mitigasi):
- Terapkan Rate Limiting atau mekanisme penguncian akun sementara setelah beberapa kali kegagalan input.
- Tingkatkan kompleksitas batas minimal pengaman autentikasi.
Kesimpulan Analisis
Kerentanan tingkat sistem file sering kali bersumber dari asumsi keliru pengembang bahwa environment Linux berstatus sepenuhnya aman (trusted). Praktik penulisan kode yang presisi, digabungkan dengan desain sistem yang mematuhi prinsip keistimewaan minimum (Least Privilege), adalah langkah krusial yang harus diimplementasikan oleh tim arsitektur keamanan dan dievaluasi terus-menerus oleh analis digital forensik dan insiden rispon.

