[SECCON 2016] – Anti-Debugging

File : https://drive.google.com/open?id=1mYYtqL1cIJTCQOubMdMR0boo6RYVFCHL

Original WriteUp : https://0xd13a.github.io/ctfs/seccon2016/anti-debugging/

Disini seperti biasa kita akan mulai dengan melihat informasi dari jenis file tersebut

setelah dilihat kita dapat berasumsi bahwa disini dia adalah executable file di windows

kemudian, setelah dijalankan program ini memberikan exe berupa

kemudian untuk melanjutkan proses analisisnya saya melanjutkan dengan membuka file ini dengan strings di linux untuk melihat semua printable strings yang ada

kemudian saya yang mengasumsikan bahwa itu adalah password yang akan dicompare melalui sebuah function yang berkaitan dengan compare string kemudian saya coba masukan password lagi dan ternyata.

Dan ternyata berhasil namun belum menunjukkan apa-apa sehingga saya melanjutkan analysisnya lanjut lebih dalam menggunakkan IDA pro

Seperti judul soalnya bahwa program ini memiliki cara untuk mendetect proses debugger itu dapat dilihat di proses validasi setelah kita mendapatkan password yang benar

Terlihat sekali bahwa disini kita harus memperhatikan beberapa hal yang akan dilanjutkan disini saya melihat bahwa adanya validasi untuk program yang berupa debugger, kemudian agar dapat menyelesaikan soal ini pertama kita harus membuat debugger kita yang tadinya dari suspend to program menjadi pass to application, caranya dengan membuka menu debugger kemudian cek debugger options > edit > CTRL+e > kemudian centang pass to program dan uncheck yang suspend to program apa yang sedang kita lakukan disini adalah kita mendisable semua debuggernya. Nanti akan keliatan seperti

Nah berikutnya lihat lagi ke code yang ada disini kita perlu memerhatikan dimana saat “input password” disaat program ini berjalan dia memanggil satu function

Disini kita memasang break point

Kita memulai process debuggingnya lalu

Disini dapat kita lihat bahwa memang passwordnya terlihat di bagian hexviewnya yaitu “I have a pen.”

Setelah itu kita enter dan terlihat bahwa kita akan masuk ke dalam validasi dimana kita akan disuguhkan dulu dengan “your password is correct” tapi dibawahnya ternyata masih ada process lagi untuk mengecek apakah kita sedang melakukan debugging

Pertama kita akan sampai ke validasi pertama yaitu VM dan reverse engenerring tools, untuk melewati bagian ini kita perlu melakukan set IP ke bagian .text 004013D3. Jadi disini kita tetap membiarkan program tersebut untuk melakukan checknya untuk selanjutnya kita akan melakukan trick yang sama yaitu dengan sengaja memasukkan flow programnya ke bagian dimana kita akan terkena validasinya. Tapi untuk apa bagian set IP ini disini set ip ini tadi kita membuatnya di .text 004013D3 sehingga nantinya current ip kita akan berada di 4013E9, kita akan melakukan process set IP terus menerus jika kita ketemu dengan process yang melakukan validasi untuk mengecek apakah kita menggunakkan debugger atau tidak.

Tapi dengan kita melakukan process ini secara tidak sengaja kita membuat lokasi yang dilewati akan membuat program ini melakukan divide with zero exception, untuk menghindari ini kita dapat dengan mudah untuk melakukan command “Set Ip” di bagian idiv

Kemudian kita akan sampai di .text:0040165D

Disini kita dapat melihat bahwa ada sesuatu yang terlihat seperti encoded text dibagian gambar 15 lalu jika kita telusuri lebih bawah lagi program ini akan masuk ke dalam

Yah disini dapat terlihat bahwa program ini akan mengeluar sebuah message box oleh karena sudah tidak ada validasi dari anti debuggingnya maka kita akan set breakpoint di push , 0

 

Nantinya program tersebut akan memanggil bagian dari box yang berisi flagnya

Flag = SECCON{check_Ascii85}

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *