GWS - Google Platforms 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)
기본적으로, 워크스페이스의 구성원은 그룹을 생성할 수 있습니다 그리고 사람들을 초대할 수 있습니다. 그런 다음 사용자에게 보낼 이메일을 수정하여 링크를 추가할 수 있습니다. 이메일은 구글 주소에서 발송되므로, 합법적으로 보일 것이며 사람들이 링크를 클릭할 수 있습니다.
FROM 주소를 Google 그룹 이메일로 설정하여 그룹 내 사용자에게 더 많은 이메일을 보낼 수 있습니다, 다음 이미지와 같이 google--support@googlegroups.com
그룹이 생성되고 그룹의 모든 구성원에게 이메일이 전송되었습니다 (동의 없이 추가된 구성원들).
이메일 주소만 있으면 사람과 채팅을 시작하거나 대화 초대를 보낼 수 있습니다. 또한, **"Google Support"**와 같은 이름을 가진 Space를 생성하고 구성원들을 초대할 수 있습니다. 그들이 수락하면 Google Support와 대화하고 있다고 생각할 수 있습니다:
하지만 제 테스트에서는 초대된 구성원들이 초대장을 받지 못했습니다.
이것이 과거에 어떻게 작동했는지 확인할 수 있습니다: https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s
과거에는 명백히 합법적인 문서를 생성하고 댓글에서 **어떤 이메일(@user@gmail.com과 같은)**을 언급할 수 있었습니다. Google은 그 이메일 주소로 이메일을 보내 그들이 문서에서 언급되었다고 알렸습니다. 현재는 이 방법이 작동하지 않지만, 피해자에게 문서에 대한 접근 권한을 부여하면 Google은 이를 알리는 이메일을 보냅니다. 누군가를 언급할 때 나타나는 메시지는 다음과 같습니다:
피해자는 외부 문서가 공유되었다는 알림 이메일이 그들의 이메일로 도달하지 않도록 하는 보호 메커니즘을 가질 수 있습니다.
캘린더 이벤트를 생성하고 공격하는 회사의 이메일 주소를 가능한 한 많이 추가할 수 있습니다. 현재 시간으로부터 5분 또는 15분 후에 이 캘린더 이벤트를 예약합니다. 이벤트를 합법적으로 보이게 하고 읽어야 할 내용을 나타내는 댓글과 제목을 추가합니다 (여기에 피싱 링크 포함).
브라우저에 "Firing People"이라는 회의 제목으로 나타날 경고는 다음과 같으며, 더 피싱 같은 제목을 설정할 수 있습니다 (이메일과 연결된 이름을 변경할 수도 있습니다).
덜 의심스럽게 보이도록 하려면:
수신자가 초대된 다른 사람들을 볼 수 없도록 설정합니다.
이벤트에 대한 알림 이메일을 보내지 마십시오. 그러면 사람들은 5분 후 회의에 대한 경고와 그 링크를 읽어야 한다는 것만 보게 됩니다.
API를 사용하여 사람들이 이벤트를 수락했다고 설정하고 그들의 이름으로 댓글을 생성할 수 있습니다.
https://script.google.com/에서 스크립트를 생성하고 모두가 접근할 수 있는 웹 애플리케이션으로 노출할 수 있습니다. 이때 합법적인 도메인 **script.google.com
**을 사용할 것입니다.
다음과 같은 코드를 사용하면 공격자는 이 페이지에서 임의의 콘텐츠를 로드하도록 스크립트를 만들 수 있습니다.
예를 들어 https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec에 접근하면 다음과 같은 화면이 나타납니다:
콘텐츠가 iframe 내에서 로드될 때 경고가 나타날 것임을 유의하세요.
문서에 첨부된 App Scripts를 생성하여 피해자의 OAuth 토큰에 접근하려고 시도할 수 있습니다. 자세한 내용은 다음을 확인하세요:
GWS - App Scripts이전의 기술 중 어떤 것이든 사용자가 Google OAuth 애플리케이션에 접근하도록 유도할 수 있으며, 이 애플리케이션은 사용자에게 접근을 요청할 것입니다. 사용자가 출처를 신뢰하면 애플리케이션도 신뢰할 수 있습니다(비록 높은 권한의 권한을 요청하더라도).
Google은 여러 경우에 애플리케이션이 신뢰할 수 없다는 경고를 요청하는 불쾌한 프롬프트를 표시하며, Workspace 관리자는 사람들이 OAuth 애플리케이션을 수락하는 것을 방지할 수 있습니다.
Google은 여러 Google 서비스(Gmail, Drive, GCP...)를 대신하여 사용자와 상호작용할 수 있는 애플리케이션을 생성할 수 있도록 허용합니다.
다른 사용자를 대신하여 작동하는 애플리케이션을 생성할 때, 개발자는 GCP 내에서 OAuth 앱을 생성하고 애플리케이션이 사용자 데이터에 접근하는 데 필요한 범위(권한)를 지정해야 합니다. 사용자가 해당 애플리케이션을 사용하고자 할 때, 그들은 애플리케이션이 범위에 지정된 데이터에 접근할 것임을 수락하라는 프롬프트를 받게 됩니다.
이는 비기술적 사용자가 민감한 정보에 접근하는 애플리케이션을 사용하도록 피싱하는 매우 매력적인 방법입니다. 그들은 결과를 이해하지 못할 수 있기 때문입니다. 그러나 조직 계정에서는 이러한 일이 발생하지 않도록 방지할 수 있는 방법이 있습니다.
앞서 언급했듯이, Google은 항상 사용자가 애플리케이션에 부여하는 권한을 수락하도록 프롬프트를 표시합니다. 그러나 애플리케이션이 위험하다고 간주되면, Google은 먼저 위험하다는 것을 나타내는 프롬프트를 표시하고 사용자가 애플리케이션에 권한을 부여하는 것을 더 어렵게 만듭니다.
이 프롬프트는 다음과 같은 앱에서 나타납니다:
개인 데이터에 접근할 수 있는 범위를 사용하는 앱(Gmail, Drive, GCP, BigQuery...)
사용자 수가 100명 미만인 앱(100명 이상의 앱은 검증되지 않은 프롬프트를 표시하지 않기 위해 검토 프로세스가 필요함)
여기에서 모든 Google OAuth 범위의 목록을 찾을 수 있습니다.
cloud-platform: Google Cloud Platform 서비스 전반에 걸쳐 데이터를 보고 관리합니다. GCP에서 사용자를 가장할 수 있습니다.
admin.directory.user.readonly: 조직의 GSuite 디렉토리를 보고 다운로드합니다. 모든 사용자의 이름, 전화번호, 캘린더 URL을 가져옵니다.
OAuth 클라이언트 ID 생성 시작
https://console.cloud.google.com/apis/credentials/oauthclient로 이동하여 동의 화면을 구성합니다.
그런 다음 사용자 유형이 내부(조직 내 사람만 해당)인지 외부인지 묻는 질문이 표시됩니다. 필요에 맞는 것을 선택하세요.
내부는 이미 조직의 사용자를 타겟으로 삼고 다른 사용자를 피싱하기 위해 이 앱을 생성하는 경우 흥미로울 수 있습니다.
앱에 이름을 지정하고, 지원 이메일(조금 더 익명성을 높이기 위해 구글 그룹 이메일을 설정할 수 있습니다), 로고, 허가된 도메인 및 업데이트를 위한 다른 이메일을 입력합니다.
OAuth 범위를 선택합니다.
이 페이지는 비민감 권한, 민감 권한 및 제한된 권한으로 나뉘어 있습니다. 새로운 권한을 추가할 때마다 해당 카테고리에 추가됩니다. 요청된 권한에 따라 사용자가 이러한 권한이 얼마나 민감한지를 나타내는 다양한 프롬프트가 표시됩니다.
**admin.directory.user.readonly
**와 **cloud-platform
**은 민감한 권한입니다.
테스트 사용자 추가. 앱의 상태가 테스트인 동안, 오직 이 사용자만 앱에 접근할 수 있으므로 피싱할 이메일을 추가하는 것을 잊지 마세요.
이제 이전에 생성한 OAuth 클라이언트 ID를 사용하여 웹 애플리케이션의 자격 증명을 가져옵니다:
https://console.cloud.google.com/apis/credentials/oauthclient로 돌아가면 이번에는 다른 옵션이 나타납니다.
웹 애플리케이션을 위한 자격 증명 생성을 선택합니다.
필요한 Javascript 출처 및 리디렉션 URI를 설정합니다.
테스트를 위해 **http://localhost:8000/callback
**과 같은 것을 설정할 수 있습니다.
애플리케이션 자격 증명을 가져옵니다.
마지막으로, OAuth 애플리케이션 자격 증명을 사용할 웹 애플리케이션을 실행합니다. https://github.com/carlospolop/gcp_oauth_phishing_example에서 예제를 찾을 수 있습니다.
Go to http://localhost:8000
click on the Login with Google button, you will be 프롬프트 with a message like this one:
The application will show the access and refresh token than can be easily used. For more information about how to use these tokens check:
GCP - Token Persistanceglcoud
It's possible to do something using gcloud instead of the web console, check:
GCP - ClientAuthConfig Priveschttps://www.youtube-nocookie.com/embed/6AsVUS79gLw - Matthew Bryant - Hacking G Suite: The Power of Dark Apps Script Magic
https://www.youtube.com/watch?v=KTVHLolz6cE - Mike Felch and Beau Bullock - OK Google, How do I Red Team GSuite?
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)