Az - Conditional Access Policies & MFA Bypass
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Azure Conditional Access 정책은 특정 조건에 따라 Azure 서비스 및 애플리케이션에 대한 액세스 제어를 시행하기 위해 Microsoft Azure에서 설정된 규칙입니다. 이러한 정책은 조직이 적절한 상황에서 올바른 액세스 제어를 적용하여 자원을 보호하는 데 도움을 줍니다. Conditional access 정책은 기본적으로 누가 무엇에 어디서 어떻게 접근할 수 있는지를 정의합니다.
여기 몇 가지 예가 있습니다:
로그인 위험 정책: 이 정책은 로그인 위험이 감지될 때 다단계 인증(MFA)을 요구하도록 설정될 수 있습니다. 예를 들어, 사용자의 로그인 행동이 정기적인 패턴과 비교하여 비정상적일 경우, 예를 들어 다른 국가에서 로그인하는 경우, 시스템은 추가 인증을 요청할 수 있습니다.
장치 준수 정책: 이 정책은 조직의 보안 기준을 준수하는 장치에만 Azure 서비스에 대한 액세스를 제한할 수 있습니다. 예를 들어, 최신 바이러스 백신 소프트웨어가 설치된 장치나 특정 운영 체제 버전을 실행하는 장치에서만 액세스를 허용할 수 있습니다.
Conditional access 정책이 우회할 수 있는 정보를 쉽게 조작하고 있는 경우가 있을 수 있습니다. 예를 들어, 정책이 MFA를 구성하고 있다면 공격자는 이를 우회할 수 있습니다.
Conditional access 정책을 구성할 때는 영향을 받는 사용자와 대상 리소스(모든 클라우드 앱과 같은)를 지정해야 합니다.
정책을 트리거할 조건을 구성하는 것도 필요합니다:
네트워크: IP, IP 범위 및 지리적 위치
VPN 또는 프록시를 사용하여 허용된 IP 주소에서 로그인하거나 허용된 국가에 연결하여 우회할 수 있습니다.
Microsoft 위험: 사용자 위험, 로그인 위험, 내부자 위험
장치 플랫폼: 모든 장치 또는 Android, iOS, Windows Phone, Windows, macOS, Linux 선택
“모든 장치”가 선택되지 않았지만 다른 모든 옵션이 선택된 경우, 해당 플랫폼과 관련 없는 임의의 사용자 에이전트를 사용하여 우회할 수 있습니다.
클라이언트 앱: 옵션은 “브라우저”, “모바일 앱 및 데스크톱 클라이언트”, “Exchange ActiveSync 클라이언트” 및 “기타 클라이언트”입니다.
선택되지 않은 옵션으로 로그인하여 우회할 수 있습니다.
장치 필터: 사용된 장치와 관련된 규칙을 생성할 수 있습니다.
인증 흐름: 옵션은 “장치 코드 흐름” 및 “인증 전송”입니다.
이는 공격자가 피해자의 계정에 접근하기 위해 피싱 시도를 하는 경우가 아니라면 영향을 미치지 않습니다.
가능한 결과는: 차단 또는 MFA 요구, 장치 준수와 같은 잠재적 조건으로 액세스 허용입니다…
장치 플랫폼(Android, iOS, Windows, macOS 등)을 기반으로 조건을 설정할 수 있지만, 이는 사용자 에이전트에 기반하므로 쉽게 우회할 수 있습니다. 모든 옵션이 MFA를 강제하더라도, 인식되지 않는 사용자 에이전트를 사용하면 MFA 또는 차단을 우회할 수 있습니다:
브라우저가 알 수 없는 사용자 에이전트를 전송하도록 만드는 것만으로도 이 조건을 트리거하지 않게 할 수 있습니다. 개발자 도구에서 사용자 에이전트를 수동으로 변경할 수 있습니다:
또는 이와 같은 브라우저 확장 프로그램을 사용할 수 있습니다.
이것이 조건부 정책에 설정되어 있다면, 공격자는 허용된 국가에서 VPN을 사용하거나 허용된 IP 주소에서 접근할 방법을 찾아 이러한 조건을 우회할 수 있습니다.
특정 앱에 접근할 때 MFA를 차단하거나 강제하는 조건부 액세스 정책을 구성할 수 있습니다:
이 보호를 우회하려면 어떤 애플리케이션에도 로그인할 수 있는지 확인해야 합니다. 도구 AzureAppsSweep는 하드코딩된 수십 개의 애플리케이션 ID를 가지고 있으며, 이들에 로그인 시도를 하고 성공하면 토큰을 알려줍니다.
특정 리소스에서 특정 애플리케이션 ID를 테스트하려면 다음과 같은 도구를 사용할 수도 있습니다:
또한 로그인 방법(예: 브라우저 또는 데스크톱 애플리케이션에서 로그인 시도)도 보호할 수 있습니다. 도구 Invoke-MFASweep는 이러한 보호를 우회하려고 몇 가지 검사를 수행합니다.
도구 donkeytoken도 유사한 목적으로 사용될 수 있지만, 유지 관리가 되지 않는 것처럼 보입니다.
도구 ROPCI도 이러한 보호를 테스트하고 MFA 또는 차단을 우회할 수 있는지 확인하는 데 사용할 수 있지만, 이 도구는 화이트박스 관점에서 작동합니다. 먼저 테넌트에서 허용된 앱 목록을 다운로드한 다음, 해당 앱에 로그인하려고 시도합니다.
Azure MFA 옵션 중 하나는 구성된 전화번호로 전화를 받는 것이며, 사용자에게 문자 #
을 보내도록 요청합니다.
문자는 단지 톤이므로, 공격자는 전화번호의 음성 메일 메시지를 타협하고, 메시지로 #
의 톤을 설정한 다음, MFA 요청 시 피해자의 전화가 통화 중이 되도록 하여 Azure 전화를 음성 메일로 리디렉션할 수 있습니다.
정책은 종종 준수 장치 또는 MFA를 요구하므로, 공격자는 준수 장치를 등록하고, PRT 토큰을 얻어 이 방법으로 MFA를 우회할 수 있습니다.
먼저 Intune에 준수 장치를 등록한 다음, PRT를 얻습니다:
Find more information about this kind of attack in the following page:
Az - Pass the PRT이 스크립트는 일부 사용자 자격 증명을 가져와서 일부 애플리케이션에 로그인할 수 있는지 확인합니다.
이는 나중에 특권 상승을 위해 악용할 수 있는 일부 애플리케이션에 로그인하는 데 MFA가 필요하지 않은지 확인하는 데 유용합니다.
모든 정책을 가져옵니다.
MFASweep는 제공된 자격 증명을 사용하여 다양한 Microsoft 서비스에 로그인하려고 시도하고 MFA가 활성화되어 있는지 식별하려고 시도하는 PowerShell 스크립트입니다. 조건부 액세스 정책 및 기타 다단계 인증 설정이 구성되는 방식에 따라 일부 프로토콜은 단일 요소로 남을 수 있습니다. 또한 ADFS 구성에 대한 추가 검사가 있으며, 감지된 경우 온프레미스 ADFS 서버에 로그인하려고 시도할 수 있습니다.
이 도구는 MFA 우회를 식별하고 여러 프로덕션 AAD 테넌트에서 API를 악용하는 데 도움을 주었습니다. AAD 고객은 MFA가 적용되었다고 믿었지만 ROPC 기반 인증이 성공했습니다.
모든 애플리케이션을 나열할 수 있는 권한이 있어야 앱 목록을 생성하여 무차별 대입 공격을 수행할 수 있습니다.
Donkey token은 Conditional Access Policies를 검증해야 하는 보안 컨설턴트를 돕기 위한 기능 집합입니다. 2FA가 활성화된 Microsoft 포털에 대한 테스트 등을 포함합니다.
각 포털을 테스트하여 MFA 없이 로그인할 수 있는지 확인합니다:
Azure 포털이 제한되지 않기 때문에 이전 실행에서 **감지된 모든 서비스에 접근하기 위해 포털 엔드포인트에서 토큰을 수집하는 것이 가능합니다. 이 경우 Sharepoint가 식별되었고, 이를 접근하기 위한 토큰이 요청됩니다:
토큰이 Sites.Read.All (Sharepoint에서) 권한을 가지고 있다고 가정할 때, MFA 때문에 웹에서 Sharepoint에 접근할 수 없더라도, 생성된 토큰을 사용하여 파일에 접근하는 것이 가능합니다:
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)