GWS - Google Platforms Phishing
일반적인 피싱 방법론
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
**과 같은 진정한 도메인을 사용할 것입니다.
다음과 같은 코드로 공격자는 이 스크립트가 도메인에 계속 액세스하면서 이 페이지에 임의의 콘텐츠를 로드할 수 있습니다:
예를 들어 https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec에 액세스하면:
내용이 iframe 내에서 로드되므로 경고가 표시됩니다.
앱 스크립트 OAuth 피싱
피해자의 OAuth 토큰에 액세스하려는 문서에 첨부된 앱 스크립트를 만들 수 있습니다. 자세한 내용은 확인하려면:
pageGWS - App ScriptsOAuth 앱 피싱
이전 기술 중 어느 것이든 사용자가 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를 만들기 시작
https://console.cloud.google.com/apis/credentials/oauthclient로 이동하고 동의 화면 구성을 클릭합니다.
그런 다음 사용자 유형이 내부(조직 내 사람 전용)인지 외부인지 묻습니다. 필요에 맞는 것을 선택합니다.
내부는 이미 조직의 사용자를 침해했고 다른 사용자를 피싱하기 위해이 앱을 만드는 경우 흥미로울 수 있습니다.
앱에 이름, 지원 이메일(더 익명화하려면 googlegroup 이메일을 설정할 수 있음), 로고, 인증된 도메인 및 업데이트용 이메일을 지정합니다.
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에서 찾을 수 있습니다.
**http://localhost:8000
**로 이동하여 Google로 로그인 버튼을 클릭하면 다음과 같은 메시지가 표시됩니다:
애플리케이션은 쉽게 사용할 수 있는 액세스 및 리프레시 토큰을 표시합니다. 이러한 토큰을 사용하는 방법에 대한 자세한 정보는 다음을 확인하십시오:
pageGCP - Non-svc Persistanceglcoud
사용
glcoud
사용웹 콘솔 대신 gcloud를 사용하여 무언가를 수행할 수 있습니다. 확인하십시오:
pageGCP - ClientAuthConfig Privesc참고 자료
https://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?
最終更新