BGAPTS-II: Senaryolu Pentest Örneği (bilgi toplama -> root)

Penetration test çalışmalarında ana amaç hedef sisteme denenebilecek her yolu (izinli ve onaylı) deneyerek sızmaya çalışmak ve bunu  raporlamaktır. Genellikle bünyesinde teknik kapasitesi yüksek ekip barındırmayan firmalar zayıflık tarama ve pentest çalışmalarını birbirinden farklı olmadığını ifade eder ve pentest çalışmalarını klasik bir iki araç kullanarak raporlanacak şekilde algılar ve gerçekleştirir.

Bu senaryo pentest ile zafiyet taramanın farklarını en iyi ifade edebilecek bulguları içermektedir ve daha önce BGA ekibinin pentest’de kullandığı yönteme benzer bir yöntem kullanarak hacklenmiş bir firmaya aittir. Firmaya daha önce gerçekleştirilen pentest raporlarında orta seviye riskli olarak adlandırılan bu açıklığı kullanarak  BGA ekibi internet üzerinden yerel ağdaki tüm sistemleri ele geçirmiştir.(Active Directory aracılığıyla)

Pentest Detayları:

Pentest çalışmasına hedef firmanın tüm IP adresleri ve uygulamaları dahil edildi. Bilgi toplama aşamasında elde edilen veriler üzerinden zafiyet analizine gidildi fakat firmanın dış dünyaya (internete) açık servislerlerinde bilinen kritik bir güvenlik açığı bulunamadı.

Aktif network servislerine (http,ftp,smtp vb.) yönelik brute force demesine başlandı ve bir süre sonra bir FTP hesabı ele geçirildi.

FTP sunucu incelendiğinde, ftp servisinin bir NAS sunucu (Network Attached Storage) üzerinde çalıştığı anlaşıldı. Bu bir backup sunucu ve firma verilerinin birer yedeğini tutuluyor, bu demek oluyor ki; hedefe sızmak için buradan çeşitli bulgular elde edebiliriz (parola vb.)

FTP sunucunun tüm dosya ve dizin yapısı incelendi, önemli görülen dosyalar ve uygulamalar incelenmek için sıralandı ve aşağıdaki uygulamalar ile konfigurasyon dosyaları elde edildi;

– VPN bağlantısı için kullanılan client yazılımı ve hali hazırdaki konfigurasyonu (ip,port,ipsec ayarları vs.)

– Firma verilerini raporlamak için kullanılan “Rapor.exe”

– Bazı windows scriptleri

Rapor.exe uygulamasını kendi bilgisayarımızda çalıştırdığımızda, 10.x.x.x ip adresine bağlantı kurmak istedi, biz internet dünyasında yer aldığımız için 10.x.x.x ip adresine bağlantı kurulamadı dolayısıyla rapor verilerine ulaşamadık.

Bu tür durumlarda eğer hedefe bağlantı kurulabilirse genel yaklaşımımız şu olurdu; uygulamayı çalıştırıp bağlantı kurduğu adrese ait bilgileri trafiği sniff ederek elde etmek, fakat bu uygulama 10.x.x.x ip adresine bağlantı kuramadığı için (TCP 3way handshake tamamlanmıyor) ftp,http,sql vb. bağlantısı için kimlik doğrulama yapılamayacaktır.Dolayısıyla sniffing yerine binary analizi yaparak, okunabilir veriler varsa bunları elde etmek en doğru karar.

Gerçek profesyoneller her zaman basit düşünürler, bu adımda da derinlemesine binary analizi yapmadan basit bir işlemle dosyadan okunabilir ifadeler içerisinden “parola,password,sifre,user vb” ifadeleri elde etmeyi amaçladık.

Linux’da “strings” ve “egrep” komutları ile aşağıdaki komut zinciri kullanılacak Rapor.exe dosyasından önemli bulgular elde ettik;

$ strings Rapor.exe | egrep -i ‘Password|Sifre|Kullanici|user’

Provider=SQLOLEDB.1;Password=hedehödö;Persist Security Info=True;User ID=SA;Initial Catalog=xyzdb;Data Source=10.x.x.x

Rapor.exe uygulaması, 10.x.x.x ip adresinin mssql servisine “sa” kullanıcı hesabı ile bağlantı kuruyor ve bağlantı kurduğu satırda parolası da yer alıyordu.

Bu bulguları kullanıp veritabanına bağlanmak için üç  seçeneğimiz bulunuyor;

1. VPN kurup hedef networke ulaşmak.

2. Hedef sistemden bir bilgisayar ele geçirip, pivoting yaparak mssql sunucuya ulaşmak.

3. Mssql servisi dışarı açık mı ve erişim kısıtlaması var mı bunu tespit etmek.

3. adımdan başladık ve port tarama sonuçlarından mssql portu açık olan ip adreslerini filtreleyip internet ip’sini tespit ettik. Dışarıya açık ve erişim kısıtlaması olmayan bir mssql sunucu bulunuyordu.

Bu bilgiler ile bağlantı kurmayı denediğimizde, başarılı bir şekilde Mssql 2008 sunucuya “sa” hakları ile giriş yapabildik.Veritabanları ve tablolar incelendiğinde firmanın müşteri verileri vb. kritik bilgiler yer alıyordu fakat bir pentester için kritik veriler (kullanıcı adı ve parola gibi) yer almıyordu.

Bu iş burada bitemezdi, daha da ileri girmek için neler yapılabilir ?

Mssql sunucu üzerinden işletim sistemini ele geçirmek 

Küçük bir hatırlatma, “sa” hesabı mssql sunucunun en yetkili kullanıcısıdır. Mssql üzerinde herşey yapabilir.

“sa” yetkilerini kullanarak, mssql sunucunun işletim sisteminde komut çalıştırmaya yarayan xp_cmdshell özelliğini aktif ettik. Xp_cmdshell özelliği ile hedefde komut çalıştıracağız fakat hangi haklarla ?

Burada bir güvenlik eksikliği daha keşfedildi; mssql server 2008 windows 2008 üzerine Administrator hakları ile kurulmuş.Bu demek oluyor ki, mssql üzerinden çalıştıracağımız her komut hedef işletim sisteminde Administrator hakları ile çalışacaktır.

İlk yapmak istediğimiz, uzak masaüstü servisi dışarı açıksa yetkili bir kullanıcı ekleyip bağlantı kurmak. Fakat Firewall’dan uzak masaüstü bağlantısı kapalı.Bu durumda, meterpreter ajanını karşıya yükleyip, ters bağlantı kurarak istediğimiz işlemleri yapabilmeyi düşündük.

Hedef işletim sisteminde çalışan symantech endpoint security yazılımını bypass etmek zor olmadı, meterpreter payloadını .exe yaparken çeşitli encoding teknikleri uygulayarak hedef sistemde çalıştırmayı ve ters bağlantı ile komut satırını ele geçirmeyi başardık.

Artık hedef sistemdeyiz

Hedef işletim sistemini Administator hakları ile ele geçirdikden sonra, karşılaştığımız ilk ve en büyük süpriz bu makinanın Windows Domain Controller olmasıydı. Bundan güzel daha ne olabilir.

“bga” adında bir Domain Admin hesabı oluşturduk.Meterpreter’in port forwarding özelliğini kullanarak bu sistemi dış dünyaya açtık (yalnızca BGA pentest ekibine tabii) ve artık hedefi uzak masaüstünden rahat rahat yönebilir hale geldik.

Bu aşamadan sonra, meterpreter’in route özelliğini kullanarak hedef networke dahil olduk. Ağdaki herhangi bir bilgisaya doğrudan ulaşabiliyorduk ve elimizde bir domain admin hesabı vardı.Bu bir pentester için her sistemi ele geçirebilirsin demek oluyor.

Metasploit psexec yardımcı aracı kullanılarak, domain ortamındaki tüm bilgisayarlara meterpreter ajanı kurulabilir. Kritik sunucular bu yöntem ile ele geçirildikden sonra bilgi işlem, yazılım ekibi bilgisayarlarınada sessiz sedasız giriş yapılır ekran görüntüleri alındı.

Sonuç olarak, tahmin edilebilir bir FTP hesabından firmaya ait bir uygulama ve bu uygulamadan mssql bağlantı bilgileri elde edildi.Mssql server üzerinden işletim sistemi ele geçirildi ve bu işletim sistemine yüklenen ajan yazılım ile firma networkünde bulunan tüm sistemler en üst düzey yetkiler ile ele geçirildi.

Bu çalışamaya ait pratik bilgiler aşağıdaki blog girdisinde yer almaktadır.

http://blog.bga.com.tr/genel/mssql-uzerinden-xp_cmdshell-isletim-sistemine-sizma

@BGA Pentest Ekibi