Bu yazıda PriviaHub platformunda bulunan ve emekliye ayrılan “ACCESS” adlı makinenin çözüm adımları anlatılmaktadır. İlk olarak makinede bulunan açık portların, açık portlar üzerinde çalışan güncel servislerin ve işletim sisteminin tespit edilmesi için tarama başlatılmıştır. Tarama işlemi için NMAP aracı kullanılarak, nmap -A <<IP_Adresi>> -Pn -v komutu çalıştırılmıştır. -A parametresi SYN taraması, güncel servis versiyon taraması, işletim sistemi taraması ve traceroute taraması yapan bir parametredir. -Pn parametresi ise varsayılan olarak PING taraması yapan nmap aracının PING isteğine kapalı makinelere tarama yapması amacıyla kullanılır.
Bunun nedeni PriviaHub platformunda bulunan makinelerin gerçek şirket ağlarından esinlenerek oluşturulmasıdır. PriviaHub platformda bulunan birçok makine PING’e kapalıdır. -v parametresi ise detaylı bilgi vermek amacıyla kullanılmıştır.
Şekil 1’de Access makinesine yapılan tarama sonucunda 80 numaralı port üzerinde Microsoft IIS httpd 7.5 servisinin çalıştığı görülmektedir. Ayrıca açık olan port üzerinde nmap’in varsayılan taramalarda kullandığı scriptlerden “http-methods” script’i ile IIS üzerinde çalışan sayfanın desteklediği http metotları gösterilmektedir. Bu metotlardan en tehlikeli olanlardan biri PUT metodudur. PUT metodu kullanılarak hedef makineye dosya yüklenip çalıştırılabilmektedir. Ek olarak IIS üzerinde WebDAV hizmeti çalışmaktadır. WebDAV üzerinden de desteklenen HTTP metotları gösterilmektedir. Aynı şekilde PUT metodunun desteklendiği belirtilmektedir.
WebDAV hizmetinin çalıştığının doğrulanması için Metasploit Framework üzerinde bulunan “webdav_scanner” adlı modül kullanılmıştır. Modülü başarılı bir şekilde çalıştırmak için, required değeri ‘yes’ olan parametrelere değer atanması zorunludur. Bu modülün çalıştırılması için makineye ait olan host veya IP adresi bilgisinin verilmesi yeterlidir.
RHOSTS parametresine ACCESS makinesinin IP adresi ‘set’ komutu kullanılarak atanmıştır. Daha sonra modülün çalıştırılması için ‘run’ komutu kullanılmıştır. Modülün başarılı bir şekilde çalıştırılması ve sonuçları Şekil 4 üzerinde gösterilmektedir.
Şekil 4’te auxiliary modülünün başarılı bir şekilde çalıştırılıp sonuçlandığı görülmektedir. Böylelikle WebDAV hizmetinin kullanıldığı doğrulanmıştır. Bundan sonra yapılacak olan işlem WebDAV üzerinden makineye sızma işlemi gerçekleştirmektir. Bunun için desteklenen metotlar arasında bulunan PUT metodundan yararlanılabilir ve makineye zararlı bir dosya yüklenerek oturum bağlantısı elde edilebilir. Metasploit Framework bu işlem için bir modül sunmaktadır.
Şekil 5’te IIS üzerinde çalışan WebDAV hizmetinin 1994 yılında çıkan bir exploit modülünün olduğu tespit edildi. Exploit modülü kullanılarak hedef makineye “.asp” uzantılı dosya yüklenebilmektedir.
Exploit modülünün çalıştırılması için gerekli parametrelerin atanması gerekmektedir. Atanması gereken parametreler arasında atanmayan tek parametre RHOSTS parametresidir. Ayrıca exploit modülü kullanılarak hedef makine üzerinden oturum elde edebilmek payload kullanılması gerekmektedir. Payload kullanılmadığı takdirde exploit modülünün çalıştığı ama oturum elde edilmediği mesajı gelmektedir. Exploit modülündeki parametre atamaları ve payload’ın oluşturulması Şekil 7’de gösterilmektedir.
Şekil 7’de exploit modülünün RHOSTS parametresine IP adresi atanmıştır. Ayrıca Windows sistemlere yönelik meterpreter oturumu elde etmek için bir payload seçilmiştir. Aynı şekilde payload modülünün parametrelerini görüntülemek için ‘show options’ komutu kullanılmaktadır. Payload’ın parametrelerinden LHOST ve LPORT parametrelerine makinemizin yerel IP adresi ve dinleme yapacağımız portun numarası girilmelidir. Son olarak modülü çalıştırmak için ‘exploit’ komutunun kullanılması gerekmektedir. Exploit modülünün sonucu Şekil 8’de gösterilmektedir.
Şekil 8’de dosya hedef makineye upload edilirken 401 durum kodu dönmüştür. Durum kodu yetkisiz erişim ile gerçekleşemeyeceğini belirtmektedir. Erişim sağlamak için kimlik bilgileri gerekmektedir.
Şekil 9’da web tarayıcısı üzerinden hedef makinenin 80 numaralı portuna yapılan istek sonucunda varsayılan IIS sayfası açılmaktadır. Yapılan isteğin header bilgilerine bakıldığında, Authorization parametresi base64 ile encode edilmiş bir değer almıştır. Alınan değer decode edilerek kimlik bilgileri elde edilmiştir.
Şekil 10’da base64 kodlu değer decode edilerek kullanıcı bilgileri elde edilmiştir. Böylelikle Metasploit Framework aracı üzerinde çalıştırılmak istenilen exploit modülünde bu değerler kullanılabilir ve yetkili erişim gerçekleştirilebilir.
Şekil 11’de exploit modülünün HTTPUSERNAME ve HTTPPASSWORD parametrelerine değerler ‘set’ komutu kullanılarak atanmış olup, ‘exploit’ komutu kullanılarak exploit başarılı bir şekilde çalışmıştır. Sonuç olarak, hedef makineye metasploit230988068.asp adlı dosya eklenip çalıştırılarak meterpreter oturumu elde edilmiştir. Meterpreter komut satırı üzerinde “getuid” komutu çalıştırılmıştır ve oturum bağlantısının “IIS APPPOOL\DefaultAppPool” adlı düşük yetkili servis hesabının yetkileriyle elde edildiği görülmektedir.
Bu aşamadan sonra yapılacak işlem sistem üzerinde hak ve yetki yükseltmektir. Bunun için MS16-075 güvenlik açığından yararlanılacaktır. Bu güvenlik açığı servis hesaplarının, en yetkili hesap olan SYSTEM hesabının token verisine erişmesini ve bu token’i birincil token olarak kullanmasını sağlamaktadır.
Öncelikle meterpreter yazılımı üzerinden erişim sağlanabilecek token bilgileri listelenmiştir. Sistemde erişilebilecek token bilgilerinin görüntülenmesi ve geçiş yapılması için ‘incognito’ modülü kullanılmalıdır. Modülün eklenmesi için ‘load incognito’ komutunun kullanılması gerekmektedir. Daha sonra erişim sağlanabilecek kullanıcı token bilgilerini görüntülemek için ‘list_tokens -u’ komutu kullanılmıştır. Alınan sonuçlara göre bu servis hesabı yetkili bir hesabın token’ine geçiş yapamamaktadır. SYSTEM hesabına ait token verisini getirebilmek için “Potato.exe” adlı bir uygulama kullanılacaktır. Bu uygulama MS16-075 güvenli zafiyetini tetikler ve SYSTEM hesabına ait token verisinin ele geçirilmesini sağlar.
Uygulamayı çalıştırmak için yapılacak ilk işlem “Potato.exe” uygulamasını ACCESS makinesine yüklemek olacaktır. Bunun için tüm hesapların erişebileceği bir dizin olan “ProgramData” dizinine geçiş yapılmıştır.
Dizine geçildikten sonra meterpreter yazılımına ait “upload” komutu ile “Potato.exe” uygulaması ve bu uygulamanın çalışması için gerekli olan DLL dosyaları makineye yüklenmiştir.
Dosya yüklendikten sonra meterpreter yazılımına ait “execute” komutu ile “Potato.exe” uygulaması çalıştırılmıştır.
Uygulama çalıştırıldıktan sonra tekrar token bilgileri listelenmiştir ve Şekil 16’da geçiş yapılabilecek token bilgileri arasında SYSTEM hesabı da görülmektedir. SYSTEM token’ine geçiş yapabilmek için “incognito” modülü ile gelen “impersonate_token” komutu kullanılmıştır. Bu komuta argüman olarak “NT AUTHORITY\SYSTEM” değeri verilmiştir ve komut çalıştırıldıktan sonra SYSTEM haklarına erişim sağlanarak hak ve yetki yükseltme işlemi başarıyla sonuçlanmıştır.