Pivoting nedir?
Bu yazıda erişemediğimiz bir alt ağ(subnet)’daki bir bilgisayara ulaşmanın bir yolu olan ‘Pivoting’ işleminden bahsedeceğim.
Şirketlerde Finans, IT, İnsan Kaynakları, Pazarlama, Satış, Yazılım Geliştirme,vs gibi birçok alt birim bulunabilir. Bu alt birimlerin network bazında birbirinden yalıtılmış halde olması yani birbirlerini görmemeleri beklenir. Böylece Finans departmanında çalışan biri İnsan kaynaklarında çalışan birinin bilgisayarını göremez, paylaştığı dosyalara erişemez. İnsan kaynaklarında çalışan bir elemanın işlediği ve paylaştığı bilgilerin sadece aynı departman içindeki çalışanlar ve o departmanın üst yönetiminde bulunan kişiler tarafından görülmesi beklenir.
Bu senaryoda konfigürasyon şu şekilde olacaktır: Her bir departmanı diğerinden yalıtmak için farklı alt ağlarda IP adresi dağıtılır. Örneğin
Finans birimi 192.168.0.0/24 yani 192.168.0.0-192.168.0.255 arasındaki IP adreslerine
İnsan kaynakları birimi 192.168.10.0/24 yani 192.168.10.0-192.168.10.255 arasındaki IP adreslerine
sahip olacaktır. Finans birimindeki birinin görebildiği IP adresi aralığı yalnızca 192.168.0.0-192.168.0.255 olduğu için, bu alt ağ dışında bir cep telefonunu-bilgisayarı-sunucuyu vs. göremeyecektir.
Fakat bazı kişilerin gerek teknik destek açısından gerekse yönetimsel&idari sebeplerden dolayı birkaç ya da tüm alt ağları görmeleri ve o alt ağdaki kişilerin bilgisayarları ile iletişim kurmaları gerekebilir(destek açısından IT departmanı ve yönetimsel açıdan müdürlükler örnek verilebilir). Bu durumda, bu kişilerin kendi cihazlarından farklı alt ağlardaki cihazlara erişebilmeleri için birden fazla ağ arayüzüne(network interface) sahip olmaları ve birkaç farklı IP adresine sahip olmaları gerekir.
Yukarıdaki senaryodan devam edecek olursak, hem finans hem de insan kaynaklarından sorumlu bir müdürün internet konfigürasyonu şuna benzer olacaktır:
Arayüz1(Interface1) IP adresi: 192.168.0.16
Arayüz2(Interface2) IP adresi 192.168.10.35
Böylece müdür, finans departmanındaki bir bilgisayara ya da sunucuya erişmek istediği zaman 1 numaralı arayüzü kullanacak, insan kaynaklarındaki bir cihaza erişmek istediğinde ise 2 numaralı arayüzü ve o arayüze ait IP adresini kullanacak ve erişimini bu şekilde gerçekleştirecektir.
Peki burada nasıl bir zafiyet meydana gelebilir ve ne gibi sonuçlara sebep olabilir? Normal koşullarda finans departmanı alt ağında bulunan biri, insan kaynakları alt ağındaki bir bilgisayara erişemeyecektir. Fakat bu iki alt ağa da erişebilen bir cihazı ele geçiren bir saldırgan, ele geçirilmiş bu cihaz vasıtasıyla kendisinin göremediği fakat ele geçirilmiş cihazın görebildiği farklı alt ağlara ele geçirilen bu cihazı kullanarak, yani ‘Pivoting’ yaparak erişir. Saldırgan, ele geçirilmiş bu cihazı bir nevi atlama basamağı gibi kullanır.
Şimdi saldırı senaryosuna geçebiliriz.
Öncelikle makineleri tanıyalım. İlk makine finans ağında olan ve saldırıyı gerçekleştireceğimiz Kali Linux makinesi. 192.168.244.128 IP adresine sahip ve sadece 192.168.244.0/24 yani 192.168.244.0-192.168.244.255 aralığındaki IP adreslerine sahip olan cihazları görebiliyor.
Kali Linux’te ifconfig çıktısı:
İkinci makinemiz ise Pivoting işlemi için kullanacağımız, hem finans alt ağını hem de insan kaynakları alt ağını görebilen müdürün Windows 7 işletim sistemine sahip bilgisayarı. Finans alt ağından(Ethernet adapter Local Area Connection kısmı) 192.168.244.129 IP adresine sahip ve insan kaynakları alt ağından(Ethernet adapter Local Area Connection 2 kısmı) 192.168.91.129 IP adresine sahip.
Win 7’de ipconfig çıktısı:
Üçüncü bilgisayar ise insan kaynakları alt ağında bulunan Windows XP makinesi. Bu bilgisayar ise 192.168.91.128 IP adresine sahip.
Windows XP’de ipconfig çıktısı:
Saldırı senaryomuz şu şekilde: Amacımız Windows XP bilgisayarı ele geçirmek fakat doğrudan bu bilgisayara erişimimiz yok. O nedenle önce XP ile aynı alt ağda bulunan, aynı zamanda bizim bulunduğumuz alt ağda da bulunan bir bilgisayarı(müdürün bilgisayarını) ele geçirmeye çalışacağız, eğer başarılı olursak ele geçirilen bu bilgisayarı atlama noktası olarak kullanarak XP cihazını ele geçirmeye çalışacağız. Rotalamayı müdürün bilgisayarı üzerinden yapacağız.
Saldırıya sıfırdan yani hiçbir şey bilmiyormuş gibi başlıyoruz. Saldırıya keşif aşaması ile yani Kali Linux makinemizde ağ taraması yaparak başlayalım.
nbtscan 192.168.244.0/24 komutu ile bulunduğumuz alt ağda başka hangi cihazlar var diye görüntüleyebiliriz.
Tarama sonucu Windows 7 makinesinin IP adresini elde ettik. Artık zafiyet taraması yapacağımız ve varsa sömüreceğimiz hedef makinemiz 192.168.244.129 IP adresine sahip olan WIN-1D86SE11EIA adlı makine.
Zafiyet taraması için nmap’in NSE modülünden faydalandım. ‘nmap 192.168.244.129 --script vuln’ komutu ile NSE veritabanında bulunan zafiyetlerin taramasını nmap otomatik olarak yapacak.
Zafiyet taraması sonucu:
Hedef bilgisayarda uzaktan kod çalıştırma(Remote Code Execution)’ya sebebiyet veren MS17_010 zafiyeti mevcutmuş. Bu zafiyet Windows makinelerde 445 portunda bulunan SMB uygulamasındaki zafiyetlerden kaynaklanıyor. Zafiyetin detaylarına nmap’in referans olarak verdiği linklerden bakılabilir:
Bu zafiyetin istismar kodu Metasploit Framework’te mevcut. Hemen msfconsole komutu ile Metasploit Framework’ü çalıştıralım. Sonrasında ise bu zafiyetin istismar kodunu ‘search’ komutu ile arayalım.
Çıkan sonuçlar:
Biz burada ‘exploit/windows/smb/ms17_010_eternalblue’ modülünü kullanarak hedef makineyi ele geçirmeye çalışacağız.
‘show options’ komutu ile bu exploit bizden ne istiyor onları gördük ve ilgili alanları doldurduk. Ardından exploit dedik.
Meterpreter reverse tcp shell session açıldı.
ifconfig komutunu çalıştıralım.
Interface 11 bizim bu makineye erişim arayüzümüzdü. Burada görüyoruz ki, bizim göremediğimiz başka bir alt ağda(Interface 16) bu bilgisayar IP adresine sahip.
Artık bu bilgisayar ile ilgili her türlü hassas veriyi toplayabilir, bilgisayarda post modülleri çalıştırarak kalıcılık sağlayabiliriz. Burası bizim hayal gücümüze kalmış. Bu bahsettiğim kısımlar konumuzla doğrudan ilgili olmadığı için geçiyor ve devam ediyorum.
Aldığımız bu session Pivoting işlemi için önemli. Bu session’u öldürmeden arka plana atıyoruz. Arka planda çalışan sessionları görmek için ‘sessions’ komutunu çalıştırabiliriz.
Artık biliyoruz ki, bizim göremediğimiz fakat ele geçirdiğimiz bilgisayarın görebildiği 192.168.91.0/24 IP adresi aralığına sahip başka bir alt ağ mevcut. Pivoting işlemlerine geçebiliriz.
route add 192.168.91.0 255.255.255.0 1
komutunu kullanarak ele geçirdiğimiz bilgisayarı diğer alt ağa ulaşmak için rota olarak kullanacağız. Burada kullanılan
192.168.91.0: Alt ağ başlangıç IP adresi
255.255.255.0: Sadece dördüncü kısım için bütün aralığı kapsa, ilk üç kısım aynı kalsın. Bu iki komut ile 192.168.91.0/24’ü Metasploit Framework’e tanıtmış oluyoruz.
1: Bu değer session id değeri. Hangi session’u kullanılarak işlem yapılacağını belirtiyoruz. Sessions komutu ile açık bütün session’lar ekrana yazılmıştı. Burada Id değerini vererek tanıtıyoruz.
Komutu çalıştırdıktan sonra rota eklenmiş oldu.
Rotaları görüntülemek için ‘route print’ komutunu kullanabiliriz.
Artık yeni ağı tarayabiliriz. Hemen yeni alt ağda port taraması yapalım. Hızlı olması için SYN taraması yapalım. Tüm ağda sadece 22(SSH) ve 445(SMB) portlarını (en çok kullanılan portlardan ikisini kafama göre seçtim. Sebebi ise tüm portların taranmasının uzun sürecek olması), 50 thread kullanarak tarayalım. Kullandığımız modül ‘auxiliary/scanner/portscan/syn’
Görüldüğü gibi erişemediğimiz alt ağı pivoting ile tarayabildik. Karşımıza 2 adet IP çıktı (192.168.91.1 default gateway’dir). 192.168.91.129 müdürün bilgisayarıydı, o zaman yeni hedefimiz 192.168.91.128 IP adresine sahip bilgisayar.
nmap komutları Metasploit Framework içinde çalıştığı için, önce hedef bilgisayarda port taraması yapalım.
Hedef sistemimiz Windows XP işletim sistemine sahipmiş. Açık portları da önümüze çıktı. Bakalım zafiyetli uygulama barındırıyor mu? O zaman yine nmap NSE kullanarak zafiyet taraması yapalım.
Tarama sonucu gösteriyor ki hedef bilgisayarda hem az önce istismar ettiğimiz MS17_010 zafiyeti hem de MS08_067 zafiyeti mevcut. Bu iki zafiyet de SMB portunda çalışan uygulamadan kaynaklanıyor. Az önceki bilgisayarı MS17_010 zafiyeti ile istismar etmiştik, bunda da MS08_067 zafiyetini kullanalım. Zafiyeti search ile araştırıyoruz.
Kullanacağımız modül ‘exploit/windows/smb/ms08_067_netapi’. Yine meterpreter reverse tcp shell almaya çalışalım.
Bizden istenen alanları dolduruyoruz.
İstismar kodları çalıştı fakat hedef sistemde meterpreter reverse tcp shell alamadık.
Hedef bilgisayar reverse bağlantıya izin vermiyor olabilir. Bir de bind shell ile deneyelim. Az önce kullandığımız payload’ı değiştiriyoruz.
Ve başarılı bir şekilde shell’i aldık.
Burada dikkat edilmesi gereken bazı noktalar var. Eğer shell alma işlemi başarılı olmadıysa karşı bilgisayarda istenmeyen durumlar meydana gelmiş olabilir. Örneğin hedef bilgisayar mavi ekran verebilir, çökebilir, kendini yeniden başlatabilir. Bunlara dikkat etmek gerekir. Bizim senaryomuzda da benzer bir durum yaşandı. Reverse tcp shell alınmadaığı için makine çöktü ve baştan başlatmak zorunda kaldım. Fakat bu gibi durumlar sızma testinin doğasında mevcuttur.
Tam anlamıyla gerçek dünya senaryosu olan bir sızma testi oldu. Her şeyi sıfırdan tespit ederek adım adım ilerledik ve sonuca ulaştık.
Ahmet Selim Kaya