Merhaba TürkHackTeam Üyeleri.
Bu Konumda Sizlere Tünelleme Protokolünü Tanıtacağım.
Konu İçeriği
➤ Nedir Bu Tünelleme Protokolü?
➤ HTTP Tünelleme
➤ SSH Tünelleme
Nedir Bu Tünelleme Protokolü?
Ağ sistemlerinde cihazlar birbirleriyle protokolleri kullanarak iletişim kurarlar. Bu protokoller onların dili gibidir, iki farklı cihaz aynı protokolü kullanıp veri transferi gerçekleştirirek aralarında trafik oluşturur. Tünelleme protokolü ise normalinden farklı bir protokol ve port kullanılarak bu trafiğin sağlanmasıdır.
Hemen size bir örnek vererek anlatayım. Diyelim ki PC'nizin bulunduğu local ağda sadece 80 ve 443 portları kullanılıyor. Bunlar HTTP ve HTTPS portları. Diğer portlar kapalı farzedelim. Sizin 21 yani FTP portunu kullanmanızı gerektirecek bir durum söz konusu oldu lakin 21. port ağınızda kapalı olduğu için kullanamıyorsunuz. Bu durumda imdadımıza tünelleme protokolü sistemi yetişiyor. Siz özel VPN ağları sayesinde normalde 21. porttan yapacağınız trafiği 80. porttan gerçekleştiriyorsunuz. Bu işleme de tünelleme işlemi deniyor.
Örnek üzerinde verdiğim bu işlemi teknik terimler üzerinden anlatacak olursam; Hedef ağa paket göndermeden önce bu pakete, tünelleme protokolünün header yani başlık bilgileri dahil edilir. Bu başlıkta da yönlendirme bilgileri bulunur. Bu sayede mesela NetBIOS gibi yönlendirme özelliği olmayan bir protokol bu başlıklar ile yönlendirilebilir hale geliyor. Yönlendirilebilirden kastım internet üzerinde aktarılabilir.
Tünelleme protokolü esasında veri güvenliği açısından önem arz eden bir işlemdir. Zira veriler doğrudan hedefe gideceğine araya tünelleme işlemi girerek, bir şifrelemeye tabii tutularak hedefe gönderilir. Takdir edersiniz ki buda MITM(Man in The Middle) yani Ortadaki Adam Saldırısından korunmamızı sağlar.
HTTP Tünelleme
HTTP(Hyper Text Transfer Protocol), herhalde en çok kullandığımız protokoldür. Zira internette bulunan bütün web uygulamaları cihazımızla HTTP protokolünü kullanarak iletişim kurar.
Yine bir örnek üzerinden devam edelim. Mesela tarayıcımızdan
turkhackteam.org
sitesine girelim ve arka planda neler dönüyor kabaca bakalım. Tarayıcımızdan THT ye giriyoruz ve sağ tık yapıp İncele diyoruz akabinde Network kısmına giriyoruz ve sayfayı yeniliyoruz.Şimdi burada sayfa açılırken ağımızda hangi işlemler dönüyor görebiliyoruz. Yukarıdaki resimi yorumladığımız zaman, Status sunucunun bize verdiği dönütü söyler bize 200 OK yani istek onaylandı ve çalıştırıldı dönütü verilmiş. Öte yandan isteğimiz HTTP/1.1 protokolü ile gönderilmiş ve GET methodu kullanılmış. Diğer kısımlarda tarayıcı tarafından eklenmiş istemci ile alakalı cookie gibi verilerde bulunuyor, dilerseniz inceleyebilirsiniz.
Daha yeni sunucunun bizim isteğimize karşın 200 OK cevabını verdiğini söylemiştim, bu istek ile sunucu istemciye yani bizim tarayıcımıza ulaşmaya çalıştığımız web uygulamasının kaynak kodlarını gönderir. Yukarıda THT nin sunucusunun bize gönderdiği THT nin kaynak kodlarını görmektesiniz. Tabi tarayıcıda alır bu kaynak kodlarını kendi nezlinde yorumlar ve bize çıktıyı yansıtır. Yukarıdaki kaynak kodlarını benim tarayıcım aldı yorumladı ve bana aşağıdaki sayfayı yansıttı.
Bu vakte kadar size HTTP'yi anlattım şimdi HTTP tünellemenin ne olduğuna geçelim. HTTP tünelleme işlemi, tünellemenin mantığını anlatırken de dediğim gibi HTTP protokolü ile anlaşan iki cihaz arasında tünelleme işlemi yapılmasıdır. Bu işlem genelde iki cihaz arasına bir güvenlik duvarı atamak için yapılır. Tabi bunun tam tersi yani güvenlik duvarını atlatmak için de yapılır
En baştaki örnekten devam edelim, ağınız 80 ve 443 portlarına açık fakat 21 e kapalı olsun. Siz FTP ile uzak sunucuya dosya transferi yapmak istiyorsunuz lakin FTP portu yani 21. port açık değil. Bu durumda Proxyler ile tünelleme yapmanız gerekiyor. Bunu yapınca siz ve uzak sunucu arasına bir proxy giriyor ve köprü görevi görüyor. Bu durumda siz dosyanızı 80 portundan proxye sıkıntısız gönderiyorsunuz proxy dosyayı alıp 21 portu ile uzak sunucuya gönderiyor aynı şekilde uzak sunucudan gelen cevabı tekrar kendi üzerinde size gönderiyor. Böylelikle de aslında güvenlik duvarını aşmış oluyorsunuz.
SSH Tünelleme
SSH(Secure Shell), genelde uzak sunucuya kabuk (shell) bağlayıp bizim uzak sunucuda komut çalıştırmamızı sağlayan bir protokoldür. SSH tünelleme ise yine iki cihaz arasında bulunan SSH bağlantısına bir tünel oluşturarak verilerin güvenli aktarılmasını sağlar. SSH tünelleme işlemi 3 farklı şekilde yapılır. Bunlar; Local Port Forwarding, Reverse SSH Connection ve Dynamic SSH Tunelling.
Local Port Forwarding
Yerel Port Yönlendirmesi, local ağda çıkış portunu değiştirme işlemine denir. Direkt pratik örnek üzerinden devam edelim. GNU/Linux işletim sisteminde OpenSSH aracını kullanarak ağ içinde port yönlendirmesi yapalım.
Aşağıdaki komutu kendimize göre düzenleyip komut isteminde çalıştırdığımızda yerel ağda port yönlendirmesi yapmış oluyoruz. Komutdaki user@host kısmı bağlantı kuracağımız uzak makinenin kullanıcı adı ve makine IP'si ya da makine ismidir. -L parametresinden sonra ise port yönlendirmesini belirtiyoruz. Bunuda localport kısmına çıkış yapmak istediğimiz portu, host kısmına makine ismini, remoteport kısmına ise çıkış yapacağımız portu giriyoruz. Bu durumda komutu yukarıdaki örnektekine uygun olarak editlersek resimdeki komutu yazmış olmamız gerekirdi.
ssh user@host -L localport:host:remoteport
Reverse SSH Connection
Ters SSH Bağlantısında ise amaç genelde güvenlik duvarını atlatmaktır. Buradaki güvenlik duvarı, sunucuda bulunan bir bağlantıyı bizim açmamıza engel oluyor olabilir. Bu durumda araya bir tünelleme atarak açmak istediğimiz bağlantıyı tünel üzerinden açabiliyoruz.
Yine OpenSSH aracı üzerinden örnek vermek gerekirse aşağıdaki komut bize bağlantının tünel aracılığıyla açılmasını sağlayacaktır. Komutdaki -R parametresinden sonra gelen kısım daha yeniki ile aynı. Komutun sonundaki adress kısmı ise bağlanacağımız makinenin adı oluyor.
ssh -R user@host adress
Dynamic SSH Tunelling
Dinamik SSH Tünelleme, SSH sunucusunun Proxy olarak kullanılarak hedefe gönderilen verilerin şifrelenerek gönderilmesidir. Burada köprü/tünel olarak kullanılan şey aslında sizin SSH sunucunuzdur.
OpenSSH aracındaki pratik kullanımı ise aşağıdaki komut şeklindedir. Bu komutdaki -D parametresinden sonra gelen localport kısmı çıkış portumuzu, bindadress kısmı ise istemci yani bizim makine adımızı belirtir.
ssh -D localport bindadress
Okuduğunuz İçin Teşekkür Ederim.
Esenlikle Kalın...
Saygılarımla