Az - OAuth Apps Phishing
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
, Application Administrator
또는 Cloud Application
Administrator
와 같은 관리자가 사용자가 사용할 수 있는 애플리케이션에 동의할 수 있습니다.
또한, 사용자가 저위험 권한을 사용하는 앱에만 동의할 수 있는 경우, 이러한 권한은 기본적으로 openid, profile, email, User.Read 및 offline_access이며, 이 목록에 더 많은 권한을 추가할 수 있습니다.
그리고 그들이 모든 앱에 동의할 수 있다면, 모든 앱에 동의할 수 있습니다.
인증되지 않음: 외부 계정에서 저위험 권한 User.Read
및 User.ReadBasic.All
을 가진 애플리케이션을 생성하고 사용자를 피싱하면 디렉터리 정보에 접근할 수 있습니다.
피싱된 사용자가 외부 테넌트의 OAuth 앱을 수락할 수 있어야 합니다.
피싱된 사용자가 모든 권한을 가진 앱에 동의할 수 있는 관리자인 경우, 애플리케이션은 특권 권한을 요청할 수도 있습니다.
인증됨: 충분한 권한을 가진 주체를 손상시킨 후, 계정 내에서 애플리케이션을 생성하고 특권 OAuth 권한을 수락할 수 있는 특권 사용자를 피싱합니다.
이 경우 이미 디렉터리 정보를 접근할 수 있으므로, 권한 User.ReadBasic.All
은 더 이상 흥미롭지 않습니다.
관리자가 부여해야 하는 권한에 관심이 있을 가능성이 높습니다. 일반 사용자는 OAuth 앱에 어떤 권한도 부여할 수 없기 때문에, 오직 그런 사용자만 피싱해야 합니다(어떤 역할/권한이 이 특권을 부여하는지에 대한 내용은 나중에 설명).
이 명령은 테넌트 내의 사용자로부터 실행해야 하며, 외부에서 테넌트의 이 구성을 찾을 수 없습니다. 다음 CLI는 사용자의 권한을 이해하는 데 도움이 될 수 있습니다:
모든 앱에 대한 사용자 동의: permissionGrantPoliciesAssigned
내에 ManagePermissionGrantsForSelf.microsoft-user-default-legacy
가 있으면 사용자가 모든 애플리케이션을 수락할 수 있습니다.
사용자는 검증된 게시자 또는 귀하의 조직의 앱에 대해 선택한 권한에 대해서만 동의할 수 있습니다: permissionGrantPoliciesAssigned
내에 ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team
가 있으면 사용자가 모든 애플리케이션을 수락할 수 있습니다.
사용자 동의 비활성화: permissionGrantPoliciesAssigned
내에 ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-chat
및 ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team
만 있으면 사용자가 동의할 수 없습니다.
주석이 달린 각 정책의 의미를 찾는 것이 가능합니다:
새로운 애플리케이션을 수락할 수 있는 애플리케이션 관리자 사용자 확인:
이 공격은 일반적인 회사를 목표로 하는 여러 단계를 포함합니다. 다음은 공격이 어떻게 전개될 수 있는지입니다:
도메인 등록 및 애플리케이션 호스팅: 공격자는 신뢰할 수 있는 사이트를 닮은 도메인을 등록합니다. 예를 들어, "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를 포함하는 링크를 작성하고 이를 목표 사용자와 공유하여 그들이 동의를 하도록 속입니다.
새 애플리케이션을 등록합니다. 공격받는 디렉토리의 사용자를 사용하는 경우 현재 디렉토리 전용으로 등록할 수 있으며, 외부 공격인 경우 모든 디렉토리에 대해 등록할 수 있습니다(다음 이미지와 같이).
또한 리디렉션 URI를 토큰을 얻기 위해 코드를 받을 예상 URL로 설정합니다(http://localhost:8000/callback
가 기본값입니다).
그런 다음 애플리케이션 비밀을 생성합니다:
API 권한을 선택합니다(예: Mail.Read
, Notes.Read.All
, Files.ReadWrite.All
, User.ReadBasic.All
, User.Read
)
권한을 요청하는 웹 페이지 (azure_oauth_phishing_example**)**를 실행합니다:
URL을 피해자에게 전송하기
이 경우 http://localhost:8000
피해자는 프롬프트를 수락해야 합니다:
요청된 권한에 접근하기 위해 액세스 토큰을 사용하세요:
요청된 권한에 따라 테넌트의 다양한 데이터에 접근할 수 있을 수 있습니다 (사용자 목록, 그룹... 또는 설정 수정 등) 및 사용자 정보 (파일, 노트, 이메일...)에 접근할 수 있습니다. 그런 다음, 이러한 권한을 사용하여 해당 작업을 수행할 수 있습니다.
페이지의 애플리케이션 및 서비스 주체 섹션을 확인하세요:
Az - EntraID PrivescAWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)