Az - Conditional Access Policies / MFA Bypass

Wspieraj HackTricks

Podstawowe Informacje

Azure Conditional Access policies to zasady ustanowione w Microsoft Azure w celu egzekwowania kontroli dostępu do usług i aplikacji Azure na podstawie określonych warunków. Te zasady pomagają organizacjom zabezpieczać swoje zasoby, stosując odpowiednie kontrole dostępu w odpowiednich okolicznościach. Conditional access policies zasadniczo definiują Kto może uzyskać dostęp do Czego z Gdzie i Jak.

Oto kilka przykładów:

  1. Sign-In Risk Policy: Ta zasada może wymagać uwierzytelniania wieloskładnikowego (MFA) w przypadku wykrycia ryzyka logowania. Na przykład, jeśli zachowanie logowania użytkownika jest nietypowe w porównaniu do jego regularnego wzorca, takie jak logowanie z innego kraju, system może poprosić o dodatkowe uwierzytelnienie.

  2. Device Compliance Policy: Ta zasada może ograniczać dostęp do usług Azure tylko do urządzeń zgodnych ze standardami bezpieczeństwa organizacji. Na przykład, dostęp może być dozwolony tylko z urządzeń, które mają aktualne oprogramowanie antywirusowe lub działają na określonej wersji systemu operacyjnego.

Omijanie Conditional Access Policies

Możliwe jest, że zasada conditional access sprawdza pewne informacje, które można łatwo zmanipulować, umożliwiając obejście zasady. A jeśli na przykład zasada konfigurowała MFA, atakujący będzie mógł ją ominąć.

Platformy Urządzeń - Warunek Urządzenia

Możliwe jest ustawienie warunku na podstawie platformy urządzenia (Android, iOS, Windows, macOS), jednak jest to oparte na user-agent, więc jest to dość łatwe do obejścia. Nawet wymuszając MFA dla wszystkich opcji, jeśli użyjesz user-agent, którego nie rozpoznaje, będziesz mógł ominąć MFA.

Lokalizacje: Kraje, Zakresy IP - Warunek Urządzenia

Oczywiście, jeśli jest to ustawione w zasadzie conditional, atakujący może po prostu użyć VPN w dozwolonym kraju lub spróbować znaleźć sposób na dostęp z dozwolonego adresu IP, aby ominąć te warunki.

Office365 Client Apps

Możesz wskazać, że jeśli klienci uzyskują dostęp do aplikacji Office 365 z przeglądarki, potrzebują MFA:

Aby to ominąć, można udawać, że logujesz się do aplikacji z aplikacji desktopowej (jak Microsoft Teams w poniższym przykładzie), co pozwoli ominąć ochronę:

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

<token>

Ponieważ aplikacja Microsoft Teams ma wiele uprawnień, będziesz mógł wykorzystać ten dostęp.

Możesz znaleźć ID bardziej publicznych aplikacji z predefiniowanymi uprawnieniami Office365 w bazie danych roadtools:

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

Ten atak jest szczególnie interesujący, ponieważ domyślnie publiczne aplikacje Office365 będą miały uprawnienia do dostępu do niektórych danych.

Inne aplikacje

Domyślnie inne aplikacje tworzone przez użytkowników nie będą miały uprawnień i mogą być prywatne. Jednak użytkownicy mogą również tworzyć publiczne aplikacje, nadając im pewne uprawnienia.

Potencjalny scenariusz, w którym polityka jest ustawiona na wymaganie MFA do uzyskania dostępu do aplikacji podczas korzystania z przeglądarki (może dlatego, że jest to aplikacja webowa i będzie to jedyny sposób), jeśli istnieje aplikacja proxy - aplikacja, która ma pozwolenie na interakcję z innymi aplikacjami w imieniu użytkowników - użytkownik może zalogować się do aplikacji proxy, a następnie przez tę aplikację proxy zalogować się do początkowo chronionej MFA aplikacji.

Sprawdź techniki Invoke-MFASweep i donkeytoken.

Inne obejścia MFA w Az

Dzwonek

Jedną z opcji Azure MFA jest otrzymanie połączenia na skonfigurowany numer telefonu, gdzie użytkownik zostanie poproszony o wysłanie znaku #.

Ponieważ znaki to tylko tony, atakujący może przejąć wiadomość głosową numeru telefonu, skonfigurować jako wiadomość ton #, a następnie, podczas żądania MFA, upewnić się, że telefon ofiary jest zajęty (dzwoniąc na niego), aby połączenie Azure zostało przekierowane na pocztę głosową.

Zgodne urządzenia

Polityki często wymagają zgodnego urządzenia lub MFA, więc atakujący może zarejestrować zgodne urządzenie, uzyskać token PRT i obejść w ten sposób MFA.

Zacznij od zarejestrowania zgodnego urządzenia w Intune, a następnie uzyskaj PRT za pomocą:

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

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

Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken

<token returned>

Znajdź więcej informacji na temat tego rodzaju ataku na następującej stronie:

Az - Pass the PRT

Narzędzia

Pobierz wszystkie polityki

roadrecon plugin policies

MFASweep to skrypt PowerShell, który próbuje zalogować się do różnych usług Microsoft przy użyciu podanego zestawu poświadczeń i próbuje zidentyfikować, czy MFA jest włączone. W zależności od tego, jak skonfigurowane są polityki dostępu warunkowego i inne ustawienia uwierzytelniania wieloskładnikowego, niektóre protokoły mogą pozostać jednoskładnikowe. Ma również dodatkową kontrolę konfiguracji ADFS i może próbować zalogować się do lokalnego serwera ADFS, jeśli zostanie wykryty.

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

Donkey token to zestaw funkcji, które mają na celu pomóc konsultantom ds. bezpieczeństwa, którzy muszą weryfikować Conditional Access Policies, testować portale Microsoft z włączonym 2FA, itp.

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

Przetestuj każdy portal, czy możliwe jest logowanie bez MFA:

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

Ponieważ Azure portal nie jest ograniczony, możliwe jest uzyskanie tokena z punktu końcowego portalu, aby uzyskać dostęp do dowolnej usługi wykrytej przez poprzednie wykonanie. W tym przypadku zidentyfikowano Sharepoint i żądany jest token do uzyskania do niego dostępu:

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

Zakładając, że token ma uprawnienie Sites.Read.All (z Sharepoint), nawet jeśli nie możesz uzyskać dostępu do Sharepoint z sieci z powodu MFA, możliwe jest użycie tokena do uzyskania dostępu do plików za pomocą wygenerowanego tokena:

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

Referencje

Wspieraj HackTricks

Last updated