Searching...
November 26, 2011
Saturday, November 26, 2011

Zero-Day Attack

Belakangan ini, pengunjung Let's Kicking Ass mungkin sering membaca tutorial penetration testing dengan metode zero day. Sebenarnya, apa itu zero day? Saya akan menjelaskan secara detil mengenai serangan zero day yang pernah saya lakukan pada Minishare.

Alur serangan.

Attacker -> Port -> Victim

Pada ilustrasi di atas, attacker menyerang victim melalui port yang terbuka. Sebelum mnyerang, attacker memindai port yang terbuka melalui nmap, untuk mengetahui port milik victim yang terbuka. Dalam kasus Minishare, attacker menyerang korban melalui port 80 (HTTP).

Attacker -> Port 80 -> Minishare -> Victim

Setelah mendapatkan port yang terbuka, attacker mengirimkan signal HTTP melalui port 80. Dan direspon oleh Minishare. Signal yang dikirimkan oleh attacker ternyata bukan signal yang baik, hal ini menyebabkan Minishare mengalami crash system.

Attacker <- "maaf, minishare mengalami crash." <- minishare <- Victim

Mengetahui Minishare telah crash, attacker kembali menganalisis signal yang diberikan oleh minishare. Signal ini berupa informasi mengenai alamat EIP yang mengalami corrupt. Dengan bantuan metasploit, attacker membuat shellcode untuk mengambil alih crash. Kurang lebih seperti ini ilustrasinya.

Attacker: Hai, minishare.. Sepertinya kamu mengalami crash system, pada alamat bla-bla-ba. =)
Minishare: Iya, mohon maaf atas ketidak nyamanan ini. =(
Attacker: Tidak apa, saya akan mencoba membantu kamu dalam mengangani crash system.

Attacker kembali mengirimkan signal yang berisi shellcode. Lalu apa guna shellcode ini?
Tugas shellcode sangat sederhana, yaitu meng-overwrite alamat register EIP. EIP adalah alamat register yang selanjunya akan dieksekusi oleh system.

Ilustrasi EIP
process 1
process 2
process 3

Ketika mengalami crash system. CPU secara inisiatif akan melakukan aksi JMP ESP (Jump ESP). Yaitu melompat ke ESP tertentu untuk menangani crash system. Ketika CPU tidak menemukan ESP yang tepat, program mengalami fatal crash. CPU melompat ke alamat yang salah sehingga process akan diakhiri oleh CPU. EIP ini tidak tereksekusi, karena CPU menilai alamat register ini tidak mampu menolong system ketika mengalami crash. Untuk itu, attacker mengirimkan shellcode untuk mengover-write EIP. Lalu mengapa CPU membaca EIP ini sebagai EIP yang berguna untuk system? Jawabannya adalah offset.

Offset adalah sebuah process yang berfungsi melakukan eksesusi.

Ilustrasi

Offset (123456) -> EIP (654321)

Offset bernomor 123456 akan mengeksekusi EIP bernomor 654321. Sebelum meng-overwrite EIP, korban mencari alamat registry dimana alamat tersebut akan mengeksekusi EIP yang tidak berguna saat system mengalami crash. Setelah menemukan offset, attacker kembali mengirim signal.

Attacker: Untuk menghandle crash system, saya membutuhkan offset (123456) untuk mengeksekusi EIP (654321).

Minishare kemudian memanggil offset ini, untuk memenuhi perintah signal dari attacker. Sayangnya, ketika offset dipanggil, EIP di-over-write oleh shellcode yang mengakibatkan nilai EIP (bukan alamat) berubah menjadi shellcode. Offset kemudian mengeksekusi EIP ini. Secara tidak sadar, Minishare mengalami kegagalan kesadaran, sehingga system dikendalikan oleh shellcode. Dan shellcode ini terhubung oleh system milik attacker.

Perhatikan fatal crash di bawah ini:



Dan ini ketika attacker barhasil mengambil alih system (command prompt milik korban)



Jadi apa kesimpulannya? Pada dasarnya. Zero day attack adalah penyerangan yang memiliki tingkat keberhasilan tertinggi dan hasil terbesar. Tidak seperti Denial of Service attack yang hanya membuat system mengalami crash. Zero-day attack juga mampu mengambil alih system setiap signal dikirmkan kepada korban. Tidak ada yang mampu mencegah serangan ini. Dan tidak ada satupun server yang menutup semua port-nya. Menemukan port dan mengetahui system yang meng-handle port tersebut, berarti langkah awal dari Zero-Day attack. Ini adalah seni hacker, dimana hacker menggunakan kemampuannya untuk hasil yang besar. Bukan untuk hiburan atau guyonan yang lucu. Kebanyakan "hacker" tau cara menonaktifkan deep freeze. Namun setalah itu? Mereka hanya mengubah system dalam kapasitas yang tidak besar. Padalah celah ini bisa menjadi fatal jika "hacker" berpikir untuk:
1. Menanam backdoor
2. Merubah registry
3. Menonaktifkan firewall
4. Menghapus antivirus.

Ada banyak hal yang digunakan hacker untuk mengambil alih system, dan zero-day attack adalah metode yang paling sering digunakan oleh hacker underground untuk mengambil alih system perusahaan besar. Pada awalnya, zero-day attack digunakan oleh White-Hat Hacker untuk menguji system. Namun konsep ini berubah, setelah para Black-Hat hacker menggunakannya untuk hal-hal jahat. Sekarang, anda yang memilih. Untuk apa ilmu zero-day attack yang pernah saya berikan? Apakah untuk menjadi penetration tester (ethical hacker = white hat hacker) yang digaji 1 - 1.2 milyar. Atau menjadi black-hat hacker yang sering mendapat kecaman dan kutukan dari korban, dan hidup dalam kejaran FBI dan Interpol?

Salam:
red-dragon

2 comment:

Post a Comment

 
Back to top!