Az - Conditional Access Policies / MFA Bypass

Support HackTricks

Basic Information

Azure Conditional Access 정책은 특정 조건에 따라 Azure 서비스 및 애플리케이션에 대한 액세스 제어를 시행하기 위해 Microsoft Azure에서 설정된 규칙입니다. 이러한 정책은 조직이 적절한 상황에서 올바른 액세스 제어를 적용하여 자원을 보호하는 데 도움을 줍니다. Conditional access 정책은 기본적으로 누가 어디서 무엇에 접근할 수 있는지를 어떻게 정의합니다.

여기 몇 가지 예가 있습니다:

  1. 로그인 위험 정책: 이 정책은 로그인 위험이 감지될 때 다단계 인증(MFA)을 요구하도록 설정될 수 있습니다. 예를 들어, 사용자의 로그인 행동이 정기적인 패턴과 비교하여 비정상적일 경우, 예를 들어 다른 국가에서 로그인하는 경우, 시스템은 추가 인증을 요청할 수 있습니다.

  2. 장치 준수 정책: 이 정책은 조직의 보안 기준을 준수하는 장치에만 Azure 서비스에 대한 액세스를 제한할 수 있습니다. 예를 들어, 최신 바이러스 백신 소프트웨어가 설치된 장치나 특정 운영 체제 버전을 실행하는 장치에서만 액세스를 허용할 수 있습니다.

Conditional Access Policies Bypasses

조건부 액세스 정책이 우회할 수 있는 정보를 쉽게 조작하고 있는 경우가 있을 수 있습니다. 예를 들어, 정책이 MFA를 구성하고 있다면 공격자는 이를 우회할 수 있습니다.

Device Platforms - Device Condition

장치 플랫폼(Android, iOS, Windows, macOS)을 기반으로 조건을 설정할 수 있지만, 이는 사용자 에이전트에 기반하므로 우회하기가 매우 쉽습니다. 모든 옵션에서 MFA를 강제하더라도, 인식하지 못하는 사용자 에이전트를 사용하면 MFA를 우회할 수 있습니다.

Locations: Countries, IP ranges - Device Condition

물론 이것이 조건부 정책에 설정되어 있다면, 공격자는 허용된 국가에서 VPN을 사용하거나 허용된 IP 주소에서 접근할 방법을 찾으려고 할 수 있습니다.

Office365 Client Apps

클라이언트가 브라우저에서 Office 365 앱에 접근할 경우 MFA가 필요하다고 지정할 수 있습니다:

이를 우회하기 위해, 데스크톱 애플리케이션(예: 다음 예의 Microsoft Teams)에서 앱에 로그인하는 척할 수 있으며, 이는 보호를 우회할 수 있습니다:

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

<token>

Microsoft Teams 앱은 많은 권한을 가지고 있으므로, 해당 접근을 사용할 수 있습니다.

사전 정의된 Office365 권한을 가진 더 많은 공개 애플리케이션의 I**D를 roadtools 데이터베이스에서 찾을 수 있습니다:

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

이 공격은 기본적으로 공개 Office365 애플리케이션이 일부 데이터에 접근할 수 있는 권한을 가지기 때문에 특히 흥미롭습니다.

다른 앱들

기본적으로 사용자가 만든 다른 앱은 권한이 없으며 비공개일 수 있습니다. 그러나 사용자는 공개 을 생성하여 일부 권한을 부여할 수도 있습니다.

정책이 애플리케이션에 접근하기 위해 MFA를 요구하도록 설정된 잠재적인 시나리오에서 사용자가 브라우저를 사용하고 있다면(아마도 웹 애플리케이션이기 때문에 유일한 방법일 것입니다), 프록시 애플리케이션이 있을 경우 -사용자를 대신하여 다른 앱과 상호작용할 수 있는 애플리케이션-, 사용자는 프록시 애플리케이션에 로그인한 다음 이 프록시 애플리케이션을 통해 처음에 MFA로 보호된 앱에 로그인할 수 있습니다.

Invoke-MFASweepdonkeytoken 기술을 확인하세요.

다른 Az MFA 우회 방법

링톤

Azure MFA 옵션 중 하나는 구성된 전화번호로 전화를 받는 것이며, 여기서 사용자에게 문자 #을 보내도록 요청합니다.

문자는 단지 이기 때문에, 공격자는 전화번호의 음성 메일 메시지를 타협하고 메시지로 #의 톤을 설정한 다음, MFA 요청 시 피해자의 전화가 통화 중인지 확인하여 Azure 전화를 음성 메일로 리디렉션할 수 있습니다.

준수 장치

정책은 종종 준수 장치 또는 MFA를 요구하므로, 공격자는 준수 장치를 등록하고 PRT 토큰을 얻어 이 방법으로 MFA를 우회할 수 있습니다.

먼저 Intune에 준수 장치를 등록한 다음, PRT를 얻으세요:

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

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

Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken

<token returned>

다음 페이지에서 이러한 종류의 공격에 대한 더 많은 정보를 찾으십시오:

Az - Pass the PRT

도구

모든 정책 가져오기

roadrecon plugin policies

MFASweep는 제공된 자격 증명을 사용하여 다양한 Microsoft 서비스에 로그인하려고 시도하고 MFA가 활성화되어 있는지 식별하려고 시도하는 PowerShell 스크립트입니다. 조건부 액세스 정책 및 기타 다단계 인증 설정이 구성되는 방식에 따라 일부 프로토콜은 단일 요소로 남을 수 있습니다. 또한 ADFS 구성에 대한 추가 검사가 있으며, 감지된 경우 온프레미스 ADFS 서버에 로그인하려고 시도할 수 있습니다.

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

Donkey token은 Conditional Access Policies를 검증해야 하는 보안 컨설턴트와 2FA가 활성화된 Microsoft 포털을 테스트하는 데 도움을 주기 위한 함수 집합입니다.

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

각 포털을 테스트하여 MFA 없이 로그인할 수 있는지 확인하십시오:

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

Azure 포털제한되지 않기 때문에 이전 실행에서 **감지된 모든 서비스에 접근하기 위해 포털 엔드포인트에서 토큰을 수집하는 것이 가능합니다. 이 경우 Sharepoint가 식별되었고, 이를 접근하기 위한 토큰이 요청됩니다:

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

토큰이 Sites.Read.All (Sharepoint에서) 권한을 가지고 있다고 가정할 때, MFA 때문에 웹에서 Sharepoint에 접근할 수 없더라도, 생성된 토큰을 사용하여 파일에 접근하는 것이 가능합니다:

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

References

HackTricks 지원하기

Last updated