GWS - Google Platforms Phishing

htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!

HackTricks를 지원하는 다른 방법:

일반적인 피싱 방법론

Google 그룹 피싱

기본적으로 워크스페이스 구성원은 그룹을 생성하고 사람들을 초대할 수 있습니다. 그런 다음 사용자에게 보내질 이메일을 수정하여 일부 링크를 추가할 수 있습니다. 이메일은 구글 주소에서 올 것이므로 진짜로 보이고 사람들이 링크를 클릭할 수 있습니다.

또한 FROM 주소를 Google 그룹 이메일로 설정하여 그룹 내의 사용자들에게 더 많은 이메일을 보낼 수 있습니다. 다음 이미지에서와 같이 그룹 **google--support@googlegroups.com**이 생성되고 그룹의 모든 구성원에게 이메일이 보내졌습니다(동의 없이 추가된 구성원들).

Google Chat 피싱

이메일 주소만 가지고 사람과 채팅을 시작하거나 대화 초대를 보낼 수 있습니다. 더불어 **"Google Support"**와 같은 이름의 Space를 생성하고 회원을 초대할 수 있습니다. 그들이 수락하면 구글 지원팀과 대화 중이라고 생각할 수 있습니다.

그러나 제 테스트에서 초대된 구성원들은 심지어 초대장을 받지 못했습니다.

과거에 이 방법이 어떻게 작동했는지 확인할 수 있습니다: https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s

Google 문서 피싱

과거에는 진짜 같은 문서를 만들고 코멘트에 @user@gmail.com과 같은 이메일을 언급할 수 있었습니다. 구글은 해당 이메일 주소로 이메일을 보내어 그들이 문서에서 언급되었음을 알렸습니다. 현재는 이 방법이 작동하지 않지만 피해자에게 문서 액세스 권한을 부여하면 구글이 이메일을 보내 알려줍니다. 누군가를 언급할 때 나타나는 메시지는 다음과 같습니다:

피해자들은 외부 문서가 공유되었다는 이메일이 도착하지 못하도록 하는 보호 메커니즘이 있을 수 있습니다.

Google 캘린더 피싱

회사의 이메일 주소를 가진 사람들의 이메일 주소를 모두 추가하여 캘린더 이벤트를 생성할 수 있습니다. 현재 시간으로부터 5분 또는 15분 후에 이 캘린더 이벤트를 예약하세요. 이벤트를 실제로 보이게 만들고 댓글과 제목을 추가하여 무언가를 읽어야 한다는 내용을 넣으세요(피싱 링크와 함께).

이것은 브라우저에 나타날 "인원 해고"라는 회의 제목이 포함된 경고입니다. 따라서 더 피싱스러운 제목을 설정할 수 있습니다(심지어 이메일과 관련된 이름을 변경할 수도 있습니다).

더 의심스럽게 보이지 않도록 설정하세요:

  • 수신자가 초대된 다른 사람들을 볼 수 없도록 설정

  • 이벤트에 대한 이메일 알림을 보내지 않습니다. 그러면 사람들은 5분 후에 회의에 대한 경고만 보고 그 링크를 읽어야 한다는 것을 알게 됩니다.

  • API를 사용하여 사람들이 이벤트를 수락했음을 True로 설정하고 심지어 그들을 대신하여 코멘트를 작성할 수 있습니다.

앱 스크립트 리다이렉트 피싱

https://script.google.com/에서 스크립트를 만들고 모든 사람이 액세스할 수 있는 웹 애플리케이션으로 노출할 수 있습니다. 이 웹페이지에서 임의의 콘텐츠를 로드하는 스크립트를 만들 수 있습니다. 이 스크립트는 **script.google.com**과 같은 진정한 도메인을 사용할 것입니다.

다음과 같은 코드로 공격자는 이 스크립트가 도메인에 계속 액세스하면서 이 페이지에 임의의 콘텐츠를 로드할 수 있습니다:

function doGet() {
return HtmlService.createHtmlOutput('<meta http-equiv="refresh" content="0;url=https://cloud.hacktricks.xyz/pentesting-cloud/workspace-security/gws-google-platforms-phishing#app-scripts-redirect-phishing">')
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

예를 들어 https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec에 액세스하면:

내용이 iframe 내에서 로드되므로 경고가 표시됩니다.

앱 스크립트 OAuth 피싱

피해자의 OAuth 토큰에 액세스하려는 문서에 첨부된 앱 스크립트를 만들 수 있습니다. 자세한 내용은 확인하려면:

pageGWS - App Scripts

OAuth 앱 피싱

이전 기술 중 어느 것이든 사용자가 Google OAuth 애플리케이션에 액세스하도록 유도할 수 있습니다. 사용자가 소스신뢰한다면 애플리케이션신뢰할 수 있습니다(높은 권한을 요청하더라도).

Google은 여러 경우에 애플리케이션이 신뢰할 수 없다는 경고를 표시하며 Workspace 관리자는 OAuth 애플리케이션 수락을 방지할 수도 있습니다.

Google은 여러 Google 서비스에서 사용자를 대신하여 상호 작용할 수 있는 애플리케이션을 만들 수 있습니다: Gmail, 드라이브, GCP...

다른 사용자를 대신하여 작동하는 애플리케이션을 만들 때, 개발자는 GCP 내에서 OAuth 앱을 만들고 사용자 데이터에 액세스해야 하는 권한(범위)을 지정해야 합니다. 사용자해당 애플리케이션을 사용하려고 할 때, 해당 애플리케이션이 권한을 요청한 범위에 지정된 데이터에 액세스할 수 있도록 수락하도록 알림을 받게 됩니다.

이는 비기술 사용자를 민감한 정보에 액세스하는 애플리케이션을 사용하도록 유도하는 매우 유혹적인 방법입니다. 그러나 조직 계정에서는 이를 방지할 수 있는 방법이 있습니다.

확인되지 않은 앱 프롬프트

이미 언급했듯이 Google은 항상 사용자에게 애플리케이션이 그들을 대신하여 부여하는 권한을 수락할 것인지 묻는 프롬프트를 표시합니다. 그러나 애플리케이션이 위험하다고 간주되면 Google은 사용자가 앱에 권한을 부여하는 것을 더 어렵게 만들기 위해 먼저 위험하다고 알리는 프롬프트를 표시합니다.

이 프롬프트는 다음과 같은 앱에서 나타납니다:

  • 개인 데이터에 액세스할 수 있는 범위를 사용하는 경우 (Gmail, 드라이브, GCP, BigQuery...)

  • 100명 미만의 사용자를 가진 앱 (100명 이상의 앱의 경우 확인되지 않은 프롬프트를 표시하지 않으려면 검토 프로세스도 필요)

흥미로운 범위

여기에서 Google OAuth 범위 목록을 찾을 수 있습니다.

  • cloud-platform: 여러 Google Cloud Platform 서비스에서 데이터를 보고 관리합니다. GCP에서 사용자를 대신할 수 있습니다.

  • admin.directory.user.readonly: 조직의 GSuite 디렉토리를 볼 수 있고 다운로드할 수 있습니다. 모든 사용자의 이름, 전화번호, 캘린더 URL을 얻을 수 있습니다.

OAuth 앱 만들기

OAuth 클라이언트 ID를 만들기 시작

  1. https://console.cloud.google.com/apis/credentials/oauthclient로 이동하고 동의 화면 구성을 클릭합니다.

  2. 그런 다음 사용자 유형내부(조직 내 사람 전용)인지 외부인지 묻습니다. 필요에 맞는 것을 선택합니다.

  • 내부는 이미 조직의 사용자를 침해했고 다른 사용자를 피싱하기 위해이 앱을 만드는 경우 흥미로울 수 있습니다.

  1. 앱에 이름, 지원 이메일(더 익명화하려면 googlegroup 이메일을 설정할 수 있음), 로고, 인증된 도메인업데이트용 이메일을 지정합니다.

  2. OAuth 범위선택합니다.

  • 이 페이지는 민감하지 않은 권한, 민감한 권한 및 제한된 권한으로 나뉩니다. 새 권한을 추가할 때마다 해당 범주에 추가됩니다. 요청된 권한에 따라 사용자에게 얼마나 민감한지를 나타내는 다양한 프롬프트가 표시됩니다.

  • admin.directory.user.readonly 및 **cloud-platform**은 모두 민감한 권한입니다.

  1. 테스트 사용자 추가. 앱의 상태가 테스트인 동안에는 이러한 사용자만 앱에 액세스할 수 있으므로 피싱할 이메일을 추가하는지 확인하세요.

이제 이전에 만든 OAuth 클라이언트 ID를 사용하여 웹 애플리케이션에 대한 자격 증명을 가져옵니다:

  1. https://console.cloud.google.com/apis/credentials/oauthclient로 돌아가면 이번에는 다른 옵션이 나타납니다.

  2. 웹 애플리케이션용 자격 증명 생성을 선택합니다.

  3. 필요한 Javascript 원본리디렉션 URI를 설정합니다.

  • 테스트를 위해 둘 다 **http://localhost:8000/callback**과 같은 것을 설정할 수 있습니다.

  1. 애플리케이션 자격 증명을 가져옵니다.

마지막으로, 이전에 만든 OAuth 애플리케이션 자격 증명을 사용하는 웹 애플리케이션을 실행합시다. 예제는 https://github.com/carlospolop/gcp_oauth_phishing_example에서 찾을 수 있습니다.

git clone ttps://github.com/carlospolop/gcp_oauth_phishing_example
cd gcp_oauth_phishing_example
pip install flask requests google-auth-oauthlib
python3 app.py --client-id "<client_id>" --client-secret "<client_secret>"

**http://localhost:8000**로 이동하여 Google로 로그인 버튼을 클릭하면 다음과 같은 메시지가 표시됩니다:

애플리케이션은 쉽게 사용할 수 있는 액세스 및 리프레시 토큰을 표시합니다. 이러한 토큰을 사용하는 방법에 대한 자세한 정보는 다음을 확인하십시오:

pageGCP - Non-svc Persistance

glcoud 사용

웹 콘솔 대신 gcloud를 사용하여 무언가를 수행할 수 있습니다. 확인하십시오:

pageGCP - ClientAuthConfig Privesc

참고 자료

htARTE (HackTricks AWS Red Team Expert)로부터 제로에서 영웅까지 AWS 해킹 배우기

HackTricks를 지원하는 다른 방법:

最終更新