SSH Tunnel - scodarTV



SSH Tunneling adalah teknik yang perlu dikuasai hacker. Teknik ini sangat sesuai digunakan sebagai backdoor dari dunia luar yang secara langsung menembusi ke dalam “behind enemy lines” yang melewati semua firewall, IDS, IPS dan sebagainya di rangkaian anda. Dalam artikel ini saya juga menjelaskan bagaimana melakukan chaining tunnel, iaitu menyambung tunnel anda dengan tunnel lain. 

Apa itu Tunneling?

Secara asasnya tunneling ditakrifkan sebagai mengirimkan data melalui rangkaian talian (connection) lain yang sudah terbentuk. Kalau anda buka laman internet banking, pasti anda akan membukanya dengan URL dimulai dengan “https”, yang pada asalnya adalah data dalam protokol HTTP yang dikirimkan melalui connection dengan protokol SSL, atau “HTTP over SSL”, dalam bahasa mudah bererti HTTP didukung bersama SSL.
SSH dan SSL adalah dua contoh tunneling protocol, keduanya boleh diguna untuk mendukung data dalam protokol apa saja (tidak hanya http). Bezanya hanya pada SSL ditetapkan (set) public key certificate dalam format X.509 yang perlu diverifikasi melalui Certificate Authority rasmi. SSH tidak memerlukan public key certificate, sehingga lebih sederhana dan lebih mudah dipakai.

Protocol Encapsulation

Dalam ilmu https, data dalam protokol HTTP diencapsulation (dibungkus) dalam protokol SSL sebagai payload. Encapsulation juga terjadi dalam layer model TCP/IP, iaitu data pada layer yang lebih atas menjadi payload dan di-encapsulation dengan protokol pada layer di bawahnya.
Anda tentu tahu boneka lucu terbuat dari kayu dari Rusia bernama Matryoshka. Keunikan boneka ini adalah boneka yang berukuran kecil boleh dimasukkan ke dalam boneka yang lebih besar, dan boneka yang lebih besar juga boleh dimasukkan ke dalam boneka yang lebih besar lagi hingga pada akhirnya hanya ada satu boneka saja yang paling besar. Bila boneka yang paling besar itu dibuka, maka di dalamnya akan ada satu boneka yang lebih kecil, bila boneka tersebut dibuka, maka akan ditemui boneka lagi yang lebih kecil, demikian seterusnya hingga boneka yang terkecil.
Gambar di bawah ini sangat tepat menggambarkan apa itu protocol encapsulation.

Pic 1 : Protocol Encapsulation
Gambar di atas menggambarkan bagaimana data ketika dihantar (sent) diencapsulation dan dikirimkan melalui protokol yang berada pada layer di bawahnya. Pada gambar di atas boleh dikatakan bahawa email  tersebut dikirimkan dalam bentuk paket SMTP over TCP over IP over Ethernet. Jadi pada akhirnya semua data tersebut akan terkirim dalam bentuk paket ethernet.

Dalam ilustrasi Boneka Matryoshka, pesanan email adalah Boneka Matryoshka terkecil. Boneka ini dimasukkan dalam SMTP yang ukurannya lebih besar, kemudian SMTP ini dimasukkan dalam boneka TCP, kemudian TCP ini dimasukkan dalam IP, dan akhirnya dimasukkan ke dalam ethernet yang berukuran paling besar.

Jadi boneka matryoshka yang diterima oleh penerima adalah Boneka Matryoshka yang terbesar. Bila boneka ini dibuka, di dalamnya ada IP yang lebih kecil, dan bila boneka ini juga dibuka, di dalamnya ada TCP yang semakin kecil ukurannya. Bila TCP ini dibuka, di dalamnya ada SMTP yang didalamnya ada matryoshka email. Email adalah boneka matryoshka terkecil.

Port Forwarding

Port forwarding atau port mapping pengalihan (redirection) sambungan (connection) dari suatu IP:Port ke IP:Port yang lain.  Ini bererti semua sambungan yang ditujukan ke IP:Port asal akan dialihkan ke IP:Port tujuan seolah-olah client sedang menghubungi IP:Port tujuan secara langsung.
  • Contoh: bila kita definisikan port forwarding 127.0.0.1:8080 dipetakan ke 192.168.10.10:80, ertinya bila browser di arahkan ke url http://127.0.0.1:8080, maka request HTTP tersebut akan diteruskan ke 192.168.10.10:80. Jadi walaupun pada localhost (127.0.0.1) port 8080 tidak ada web server, namun web browser boleh membuka web pada url http://localhost:8080.
Gambar di bawah ini adalah contoh port forwarding dari web nakahara-informatics.com.

Pic 2 : Port Forwarding

Pada port forwarding tersebut, didefinisikan sehingga klien dari dunia luar boleh mengakses perkhidmatan (service) yang ada pada jaringan luar  (internal). Port forwarding yang didefinisikan adalah:
  • 64.130.31.59:10004 –> 192.168.1.103:22
  • Maksudnya untuk SSH ke host 192.168.1.103, maka client harus ssh ke IP 64.130.31.59 port 10004.

  • 64.130.31.59:10001 –> 192.168.1.100:22
  • Maksudnya untuk SSH ke host 192.168.1.100, maka client harus ssh ke IP 64.130.31.59 port 10001.

  • 64.130.31.59:8080 –> 192.168.1.102:80
  • Maksudnya untuk mengakses halaman web di host 192.168.1.102, maka url yang harus dibuka di browser adalah http://64.130.31.59:8080
Port forwarding pada ssh, mirip dengan port forwarding pada gambar di atas, namun ada sedikit perbezaan. Pada port forward gambar di atas, titik sambungan (connection) masuk dan keluar sama, ertinya sambungan (connection) masuk ke IP dan port tertentu, dan sambungan (connection) tersebut akan diforward ke tempat lain dari titik yang sama juga. Sedangkan port forwarding pada ssh, titik keluarnya berbeza dengan titik masuknya. Agar lebih jelas, silakan lihat gambar di bawah ini.

Pic 3 : Port Forwarding

Pada gambar di atas, sambungan (connection) yang masuk di titik masuk, diforward ke tujuan dari titik itu juga. Ini adalah tipikal port forwarding di router/proxy. Pada gambar di bawahnya, sambungan (connection) yang masuk di titik masuk, diforward ke tujuan dari titik lain di hujung sebelah kanan. Kotak panjang yang menghubungkan dua titik berwarna oren tersebut menggambarkan sambungan (connection) ssh. Sambungan (connection) yang masuk akan diforward dari hujung sambungan (connection) ssh, bukan dari titik masuknya. 


Konsep SSH Tunneling

SSH adalah protokol yang pelbagai guna, selain untuk menggantikan telnet, SSH juga mendukung konsep tunneling, port forwarding, download/upload file (Secure FTP), SOCKS proxy dsb. Semua konsep tersebut di bungkus(encap) dengan enkripsi (encryption) sehingga data yang lewat melalui protokol ini tidak diganggu hacker.

Dalam ssh tunneling, data yang dikirimkan melalui sambungan ssh akan diencapsulation (dibungkus) dalam paket SSH seperti pada gambar di bawah ini.

Pic 4 : Konsep SSH Tunneling
Selain enkapsulasi paket, dalam ssh tunnel juga perlu ada port forwarding. Terdapat 3 jenis Port forwarding dalam SSH tunnel iaitu :
  • Local Port Forwarding
  • Remote Port Forwarding
  • Dynamic Port Forwarding
Perhatikan gambar di bawah ini untuk memahami perbezaan antara local port forwarding dan remote port forwarding.
Pic 5 : Perbezaan Local dan Remote Port Forwarding

Dari gambar di atas jelas menunjukkan perbezaan antara local dan remote port forwarding.
  • Pada local port forwarding, komputer yang bertindak sebagai ssh client akan menjadi titik masuk sambungan (connection) yang akan diforward dan komputer yang bertindak sebagai ssh server menjadi titik keluar. Jadi sambungan (connection)  yang masuk ke titik masuk di komputer ssh client akan diforward ke tujuan dari komputer ssh server. 
  • Gambar di bawah ini ilustrasi lain dari ssh local port forwarding.
Pic 6 : Ilustrasi SSH Local Port Forwarding
  • Pada remote port forwarding, komputer yang bertindak sebagai ssh server akan menjadi titik masuk sambungan (incoming connection) akan diforward dan komputer yang bertindak sebagai ssh client menjadi titik keluar. Jadi sambungan (connection) yang masuk ke titik masuk di komputer ssh server akan diforward ke tujuan dari komputer ssh client. 
  • Gambar di bawah ini ilustrasi lain dari ssh remote port forwarding.

Pic 7 : Ilustrasi Remote Port Forwading


Jadi yang perlu diingat dalam perbezaan antara local dan remote port forwarding adalah kedudukan titik masuk sambungan yang akan diforward. Bila titik masuknya ada di komputer yang berperanan sebagai ssh client, maka itu adalah local port forwarding, namun bila titik masuknya di komputer ssh server, maka itu adalah remote port forwarding.
Dalam bahasa mudahnya, disebut local kerana dari sudut pandang ssh client, titik masuknya ada di localhost, dan disebut remote kerana titik masuknya bukan di localhost, tapi di komputer hujung sana.


Static vs Dynamic Port Forwarding
Sebenarnya dynamic port forwarding termasuk local port forwarding juga kerana pada dynamic port forwarding, titik masuk sambungan (connection) yang akan diforward berada di komputer yang berperanan sebagai ssh client. Namun pada local dan remote port forwarding biasa (static), IP address dan port asal dan tujuan harus ditetapkan (setting) dulu sebelum digunakan, jadi sifatnya kekal.



Tiada ulasan:

Catat Ulasan

Pages