Az - Illicit Consent Grant
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 애플리케이션은 사용자 데이터에 접근하기 위한 권한을 요청합니다 (기본 정보, 문서 접근, 이메일 전송 등).
허용되면, 일반 사용자는 "저영향" 권한에 대해서만 동의를 부여할 수 있습니다. 모든 다른 경우에는 관리자 동의가 필요합니다.
GA
, ApplicationAdministrator
, CloudApplication
Administrator
및 `애플리케이션에 대한 권한 부여 권한을 포함하는 사용자 정의 역할이 테넌트 전체 동의를 제공할 수 있습니다.
관리자 동의가 필요하지 않은 권한만이 저영향으로 분류됩니다. 이러한 권한은 기본 로그인에 필요한 openid, profile, email, User.Read 및 offline_access입니다. 만약 조직이 모든 앱에 대한 사용자 동의를 허용하면, 직원은 앱에 대해 자신의 프로필에서 위의 정보를 읽도록 동의할 수 있습니다.
따라서 공격자는 악성 앱을 준비하고 피싱을 통해 사용자가 앱을 수락하고 그의 데이터를 훔치도록 만들 수 있습니다.
인증되지 않음: 외부 계정에서 User.Read
및 User.ReadBasic.All
권한을 가진 애플리케이션을 생성하고 사용자를 피싱하면 디렉토리 정보에 접근할 수 있습니다.
이는 피싱된 사용자가 외부 환경에서 OAuth 앱을 수락할 수 있어야 합니다!
인증됨: 충분한 권한을 가진 주체를 손상시킨 후, 계정 내에서 애플리케이션을 생성하고 특권 OAuth 권한을 수락할 수 있는 특권 사용자를 피싱합니다.
이 경우 이미 디렉토리 정보에 접근할 수 있으므로 User.ReadBasic.All
권한은 더 이상 흥미롭지 않습니다.
관리자가 부여해야 하는 권한에 관심이 있을 가능성이 높습니다. 일반 사용자는 OAuth 앱에 어떤 권한도 부여할 수 없기 때문에 오직 그 사용자들만 피싱해야 합니다 (어떤 역할/권한이 이 특권을 부여하는지에 대한 내용은 나중에 설명합니다).
다음 PowerShell 명령은 Azure Active Directory (Azure AD)에서 애플리케이션에 대한 동의 구성 여부를 확인하는 데 사용됩니다:
사용자 동의 비활성화: 이 설정은 사용자가 애플리케이션에 권한을 부여하는 것을 금지합니다. 애플리케이션에 대한 사용자 동의는 허용되지 않습니다.
사용자는 검증된 게시자 또는 귀하의 조직에서 제공하는 앱에 대해 선택한 권한에 대해서만 동의할 수 있습니다: 이 설정은 모든 사용자가 검증된 게시자가 발행한 애플리케이션과 귀하의 테넌트에 등록된 애플리케이션에 대해서만 동의할 수 있도록 허용합니다. 특정 권한에 대해서만 동의를 허용하여 제어의 레이어를 추가합니다.
사용자는 모든 앱에 동의할 수 있습니다: 이 설정은 더 관대하며 모든 사용자가 관리자의 동의가 필요하지 않은 애플리케이션에 대한 모든 권한에 동의할 수 있도록 허용합니다.
사용자 정의 앱 동의 정책: 이 설정은 특정 조직의 요구 사항에 맞게 조정할 수 있는 사용자 정의 정책이 시행되고 있음을 나타내며, 앱 게시자, 앱이 요청하는 권한 및 기타 요소를 기반으로 한 제한의 조합을 포함할 수 있습니다.
불법 동의 부여 공격에서 공격자는 최종 사용자를 속여 Azure에 등록된 악성 애플리케이션에 권한을 부여하도록 유도합니다. 이는 애플리케이션이 합법적으로 보이도록 만들어 피해자가 "수락" 버튼을 무의식적으로 클릭하게 만듭니다. 그 결과 Azure AD는 공격자의 사이트에 토큰을 발급하여, 조직 계정 없이도 피해자의 데이터에 접근하고 조작할 수 있게 합니다. 예를 들어 이메일을 읽거나 보내고 파일에 접근하는 등의 작업이 가능합니다.
이 공격은 일반 회사를 대상으로 하는 여러 단계를 포함합니다. 다음은 공격이 어떻게 전개될 수 있는지에 대한 설명입니다:
도메인 등록 및 애플리케이션 호스팅: 공격자는 신뢰할 수 있는 사이트를 닮은 도메인을 등록합니다. 예를 들어, "safedomainlogin.com"과 같은 도메인입니다. 이 도메인 아래에 권한 부여 코드를 캡처하고 액세스 토큰을 요청하기 위해 설계된 애플리케이션을 호스팅하기 위한 하위 도메인(예: "companyname.safedomainlogin.com")이 생성됩니다.
Azure AD에서 애플리케이션 등록: 공격자는 자신의 Azure AD 테넌트에 다중 테넌트 애플리케이션을 등록하고, 이를 목표 회사의 이름으로 명명하여 합법적으로 보이도록 합니다. 그들은 애플리케이션의 리디렉션 URL을 악성 애플리케이션을 호스팅하는 하위 도메인을 가리키도록 구성합니다.
권한 설정: 공격자는 애플리케이션에 다양한 API 권한(예: Mail.Read
, Notes.Read.All
, Files.ReadWrite.All
, User.ReadBasic.All
, User.Read
)을 설정합니다. 이러한 권한은 사용자가 부여하면 공격자가 사용자를 대신하여 민감한 정보를 추출할 수 있게 합니다.
악성 링크 배포: 공격자는 악성 애플리케이션의 클라이언트 ID를 포함하는 링크를 작성하고 이를 목표 사용자와 공유하여 그들이 동의를 부여하도록 속입니다.
이 공격은 365-Stealer와 같은 도구를 사용하여 촉진될 수 있습니다.
공격자가 피해 조직의 사용자에게 어느 정도 접근할 수 있는 경우, 그들은 조직의 정책이 사용자가 앱을 수락하도록 허용하는지 확인할 수 있습니다:
공격을 실행하기 위해 공격자는 Azure 테넌트에 새 앱을 생성해야 합니다 (앱 등록에서), 권한이 구성된 상태로:
User.ReadBasic.All
은 Delegated permissions
의 Microsoft Graph
에 있습니다. (애플리케이션 권한은 항상 추가 승인이 필요합니다).
User.ReadBasic.All
은 부여될 경우 조직의 모든 사용자 정보를 읽을 수 있는 권한입니다.
GA
, ApplicationAdministrator
, CloudApplication
Administrator
및 애플리케이션에 권한을 부여할 수 있는 권한을 포함하는 사용자 정의 역할
만이 테넌트 전체 동의를 제공할 수 있다는 점을 기억하세요. 따라서 관리자 동의를 요구하는 앱을 승인하도록 하려면 이러한 역할 중 하나를 가진 사용자를 피싱해야 합니다.
CLI를 통해 앱을 생성할 수도 있습니다:
https://www.alteredsecurity.com/post/introduction-to-365-stealer에서 설정 방법을 확인하세요.
획득한 액세스 토큰은 그래프 엔드포인트에 대한 것이며, 범위는 User.Read
및 User.ReadBasic.All
입니다(요청된 권한). 다른 작업을 수행할 수는 없지만(모든 사용자에 대한 정보를 다운로드하는 데는 충분합니다).
이 도구를 사용하여 이 공격을 수행할 수도 있습니다.
사용자에 대한 액세스를 얻으면 민감한 문서를 훔치거나 백도어가 있는 문서 파일을 업로드하는 등의 작업을 수행할 수 있습니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)