Не важно, как медленно ты продвигаешься, главное, что ты не останавливаешься.


Tuesday 16 June 2015

Top Hat Sec : Reversing Mini Series Part 4

Crackme4 (link) merupakan lanjutan dari top hat sec reversing mini series yang sama seperti edisi sebelumnya, tebak-tebakan angka masih menjadi tema seri ke-4 ini.

Gambar 1 : Crackme4
Dari 2 percobaan diatas, crackme4 meminta 4 input user secara berurutan, kemuadian diakhir program terdapat tulisan fail. Berbeda dengan seri sebelumnya, salah menebak angka pada urutan pertama tidak membuat program ini berhenti, untuk memastikan apa kondisi "SUCCESS" dari keempat bilangan yang ditebak, mari kita coba lihat menggunakan debugger.

Gambar 2 : Reference text
Setelah di-run dengan immunity debugger, pada references string terlihat text dari crackme4 yang dijalankan diawal. Perhatikan tanda panah merah pada gambar 2, ada text [FAIL] dan [SUCCESS], yang menarik disini adalah text "SUCCESS" yang dimunculkan, apa kira-kira kondisi yang akan mencetak text success?. Follow alamat string, dan mulai analisa kembali.

Gambar 3 : Analisis Crackme4

Perhatikan lingkaran merah pada gambar 3, terdapat nilai yang disimpan ke EBP-1C = 91EC78 yang akan dicompare dengan nilai EAX pada lingkaran yang kedua. Lalu berapa atau apa operasi yang dilakukan sebelum mendapatkan nilai EAX. Kita lihat lebih dekat.

Gambar 4 : Operasi
MOV EDX, ..[EBP-20] jika anda perhatikan pada gambar 3 saya memberi angka merah pada gambar, [EBP-20] merupakan angka yang diinput pertama kali.

MOV EAX, ..[EBP-24] merupakan input kedua.

IMUL EDX, EAX : operasi perkalian antara input 1 dan 2 yang disimpan di EDX.

MOV EAX, ..[EBP-28] merupakan input ketiga

IMUL EDX, EAX : operasi perkalian hasil kali input 1 dan 2 dengan input 3

MOV EAX, ..[EBP-2C] merupakan input keempat

IMUL EAX, EDX : operasi perkalian antara input 4 dengan hasil kali bilangan input sebelumnya.

CMP EAX, ..[EBP-1C], ini bagian yang menarik, ternyata hasil perkalian keempat bilangan tersebut akan di compare dengan nilai yang ada di [EBP-1C] yang diketahui bernilai 91EC78 yang dalam desimal bernilai 9563256.

Maka dari analisa kode diatas, dapat diduga kondisinya adalah:

x = input1 * input2 * input3 * input4
if (x == 9563256) print "SUCCESS";
else print "FAIL"

Masalah selanjutnya adalah berapa nilai masing-masing input yang jika dikalikan bernilai 9563256?.


Gambar 5 : Factorial
2*2*2*3*3*317*419 bisa disederhanakan menjadi 8*9*317*419

Gambar 6 : Hasil input factorial
dan hasilnya "SUCCESS", namun ada cara yang lebih mudah,tidak perlu cara memfaktorkan bilangan seperti diatas, karena sejak awal kita sudah tau jawabannya 9563256 yaitu dengan cara :

Gambar 7 : Problem?
Ya, demikian rangkaian pembahasan Top Hat Sec : Reversing Mini Series semoga bermanfaat.



  
5 λ .: June 2015 Crackme4 ( link ) merupakan lanjutan dari top hat sec reversing mini series yang sama seperti edisi sebelumnya, tebak-tebakan angka masih me...

Monday 15 June 2015

Top Hat Sec : Reversing Mini Series Part 3

Kembali lagi dengan Top Hat Sec reversing mini series, yang kali ini aplikasi yang diupload sedikit berbeda dengan crackme2, yang ditambahkan pada crackme3 ialah input dari magic number. Ya, lagi-lagi tebakan magic number, namun sepertinya ada beberapa magic number yang perlu ditebak dengan benar. (Crackme3 dapat diunduh melalui lin ini : Crackme3)

Gambar 1 : Crackme 3
Terlihat di gambar 1, crackme3 meminta urutan bilangan yang pertama, artinya akan ada bilangan selanjutnya yang harus ditebak. Jika angka yang ditebak pada urutan pertama salah, maka crackme3 akan langsung menutup dengan memberi pesan [NOT ACCEPTED].

Langsung saja saya analisis melalui immunity debugger, untuk mempercepat proses pencarian address dimana kondisi tersebut dijalankan, cukup dengan mencari text "top-hat" pada text string references yang ada pada crackme3. Klik Play kemudian cari semua references text strings.

Gambar 2 : Text String References
Pada text string references, cari text yang menjadi ciri khas crackme3, maka didapat header [*] Top-Hat-Sec pada alamat 0x0046A8AA, follow alamat (Tekan Enter) tersebut diassembly.

Gambar 3 : Search for Text String References
Jika dilihat dari gambar 3, maka akan ada tiga magic number yang harus ditebak, dan jika salah satu dari urutan magic number salah maka crackme akan mencetak [NOT ACCEPTED] kemudian exit, sebaliknya jika berhasil maka di masing-masing step akan muncul pesan [ xxx NUMBER ACCEPTED].

Gambar 4 : Alamat 046A88AA
Pada gambar 4, dapat dilihat terdapat beberapa CMP operation dimana nilai input x dibandingkan dengan bilangan pasti dalam bentuk hex. berikut CMP operation yang ada pada gambar 4:

CMP x,539
CMP y,7CF
CMP z,421
(x,y,z merupakan input user)

Gambar 5 : CMP operation
Setelah bilangan dicompare, terdapat string bertuliskan x number accepted. Maka ada kemungkinan bilangan yang dicompare merupakan kondisi yang 'true', jika bilangan yang ada pada CMP dikonversi menjadi bilangan desimal, maka hasilnya:

CMP x,539  = 1337
CMP y,7CF = 1999
CMP z,421  = 1057

Setelah saya coba memasukkan bilangan tersebut secara berurutan maka hasilnya :

Gambar 6 : hasil uji coba
[NUMBERS ACCEPTED, GOOD JOB!]

Demikian artikel sederhana ini saya sajikan, semoga bermanfaat.

5 λ .: June 2015 Kembali lagi dengan Top Hat Sec reversing mini series, yang kali ini aplikasi yang diupload sedikit berbeda dengan crackme2, yang ditambahka...
< >