Pembahasan Noosc CTF 2014 - Challenge 8.3

Post ini merupakan bagian dari rangkaian pembahasan cara penyelesaian challenges ajang kompetisi Noosc CTF 2014 Election Series. Penyelesaian challenge lainnya dapat dilihat pada link berikut:

Catatan Panitia

Challenge ini ditujukan untuk mengasah dan menguji kemampuan analisa kasus para peserta terhadap keseluruhan rantai investigasi challenge 8, mulai dari 8.1 sampai 8.3. Dalam investigasi kasus sesungguhnya, bukti dan petunjuk seringkali tersebar di beberapa tempat, tidak muncul ke permukaan secara sekuensial, dan tidak langsung jelas memiliki keterkaitan antara satu dan lainnya.

Untuk mewujudkan tujuan itu, maka challenge 8.3 dirancang untuk tidak memiliki bug yang berdiri sendiri, dan penyelesaiannya harus memanfaatkan sebagian informasi dari 8.1 dan/atau 8.2. Secara singkat, alur penyelesaian challenge 8.3 ini adalah sebagai berikut:

  • Peserta memeriksa target sistem yang diberikan, dan mengetahui versi software yang berjalan di sana (openftpd versi 1.3.0)
  • Peserta mencari informasi tentang software tersebut dan menemukan informasi tentang kelemahan dan eksploit publik macam CVE-2006-5815
  • Peserta mempelajari informasi publik yang ada, dan menyadari bahwa diperlukan akses "write" lewat FTP untuk dapat melakukan eksploitasi.
  • Peserta menyadari ia telah mengantongi beberapa nama user saat menyelesaikan skenario 8.1.
  • Peserta menelusuri kembali sumber kode 8.1, dan mencoba memasukkan nama-nama user tersebut ke fungsi password generator yang ada di aplikasi tersebut.
  • Peserta berhasil masuk ke server FTP dengan nama user dan password temuannya, sehingga ia kini memiliki hak akses "write" ke server.

Dan setelah memiliki hak akses "write" tersebut, peserta dapat memilih dua alternatif berbeda untuk coba menyelesaikan challenge ini: pertama, meneruskan alur pikiran sebelumnya untuk mencoba melakukan eksploitasi terhadap openftpd 1.3.0; atau kedua, mencari petunjuk lebih lanjut dengan terlebih dahulu memeriksa isi direktori di server FTP dengan teliti.

Dari kedua alternatif tersebut, cara kedua jauh lebih mudah dari yang pertama. Alternatif kedua hanya perlu membaca petunjuk yang disembunyikan di file .profile, sedangkan alternatif pertama melibatkan modifikasi kode eksploit yang tersedia di publik saat ini akibat adanya perbedaan versi sistem operasi yang digunakan dengan challenge 8.3 (versi OS ini di-hint melalui pesan error 404 Apache yang ada di port 8080 server yang sama). Jadi sesuai tujuan di atas, diharapkan memang peserta yang lebih teliti dalam melakukan analisa dan tidak segera lompat ke kesimpulan lah, yang akan dapat menyelesaikan challenge 8.3 ini dengan lebih cepat.

Selanjutnya, di bawah ini adalah cara penyelesaian challenge 8.3 alternatif kedua. Yang ingin menguji alternatif pertama, bisa menginstall sendiri proftpd 1.3.0 di atas Ubuntu 12.04 LTS, membuat akun pengguna ftp yang memiliki hak tulis ke home direktori, lalu coba memodifikasi eksploit terkait dari Metasploit. Hanya saja mungkin perlu diketahui bahwa untuk alternatif pertama tersebut, tim internal kami sendiri belum sempat mengetes modifikasi eksploit tersebut karena keterbatasan waktu, so bagi yang berminat kami ucapkan good luck and have fun ;)

Skenario

Analisis terhadap bukti-bukti digital yang ada menunjukkan bahwa  alamat yang Anda temukan sebelumnya (IP: 182.253.226.158 Port: 45371) seringkali digunakan sebagai titik awal serangan yang dilakukan oleh tim hacker.

Challenge

Anda ditugaskan untuk menyusup ke sistem tersebut dan mencari tahu identitas sesungguhnya (flag) dari ketua tim hacker.

Solusi

Kita cek dahulu service apa yang berjalan di IP dan Port tersebut

 $ telnet 182.253.226.158 45371
Trying 182.253.226.158...
Connected to 192.168.9.145.
Escape character is '^]'.
220 ProFTPD 1.3.0 Server (ProFTPD Default Installation) [192.168.15.150]

Disini terdapat user anonymous yang diberi hak akses tetapi hanya read-only saja dan tidak ada yang penting di home directory-nya. Untuk mendapatkan username yang benar, kita harus balik lagi ke misi 8a. Source code yang sudah kita dapat sangat berguna sekali disini, yaitu fungsi Utils.b(). Dengan menyertakan input yang benar, maka kita akan mendapatkan username dan password sekaligus.

Untuk input fungsi ini bisa kita dapatkan di class FormActivity, yaitu pada bagian deklarasi variabel arrayOfByte1-arrayOfByte5.

Ketika kita konversi data byte ini ke dalam bentuk String, maka akan menghasilkan lima nama alias anggota hacker. Nama-nama alias tersebut adalah:

  • algebra
  • farabi
  • euler
  • gauss
  • Descartes

Kelima alias tersebut dapat digunakan untuk login ke server ftp dengan menggunakan password dari output keygen yang kita miliki. Jika kita mencoba semua user tersebut untuk login menggunakan password yang kita dapat, kita akan menyadari bahwa user euler akan gagal login. Clue password untuk user euler terletak pada file .profile di home directory user lainnya. Isi dari file .profile adalah sbb

 # ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

# remember guys, euler's seed is the table header of our admin forum page :p

Dijelaskan bahwa seed password untuk euler berada pada table header admin forum mereka, yaitu Target Host/IP.

Kita dapat manfaatkan lagi fungsi Utils.b() yang kita punya untuk men-generate password euler dengan input Target Host/IP.

Sekarang kita login ke server ftp mereka menggunakan user euler dan password 1dc2952eb0fbade275aaaef24e787ff8. Setelah kita berhasil login, kita download flag yang berada di file .FLAG.TXT. File ini pada dasarnya tersembunyi, sehingga harus memakai perintah ls -a untuk dapat melihatnya. Untuk men-download file ini, gunakan perintah get .FLAG.TXT

Sekarang buka file tersebut dengan text editor apapun untuk mengetahui siapa dalang dibalik penyerangan aplikasi Pemilu kemarin.

Flag yang benar untuk misi 8.3 ini adalah hartati&sunardi ;)


Comments

Blog Categories

Blog Tags

Latest Tweets

@noosc @agiant Oke baik, kita tampung dulu ya sarannya :) #NOOSC April 11, 2014, 4:52 p.m.
@noosc @ic4love Gpp, ini buat entry-level, bisa dicoba dulu. Selama sudah ada minatnya, mungkin saja cocok bisa :) April 10, 2014, 8:59 p.m.
@noosc Job Opportunity: Information Security Analyst. Right now we have an opening for entry-level position in our SOC Team http://t.co/H6mlkqW47D April 10, 2014, 2:45 p.m.
@noosc Pembahasan challenges dalam Noosc CTF 2014 sudah bisa diakses di http://t.co/7F014QoeOL ! April 8, 2014, 7:57 p.m.
@noosc Setelah melakukan proses verifikasi, kami dari Noosc Global mengucapkan selamat kepada janglapuk (abijafar) sebagai pemenang Noosc CTF 2014! April 8, 2014, 6:04 p.m.