GWS - Google Platforms Phishing

支持HackTricks

通用钓鱼方法论

谷歌群组钓鱼

显然,默认情况下,在工作区成员可以创建群组 并邀请人加入。然后,您可以修改将发送给用户的电子邮件,添加一些链接电子邮件将来自谷歌地址,因此看起来合法,人们可能会点击链接。

还可以将发件人地址设置为谷歌群组电子邮件,以向群组内的用户发送更多电子邮件,就像下面的图像中创建了名为**google--support@googlegroups.com**的群组,并向该群组的所有成员发送了一封电子邮件(未经任何同意添加的成员)

谷歌聊天钓鱼

您可以通过仅知道其电子邮件地址开始与某人聊天,或发送邀请进行对话。此外,可以创建一个空间,可以使用任何名称(例如“谷歌支持”),并邀请成员加入。如果他们接受,他们可能会认为自己正在与谷歌支持交谈:

然而,在我的测试中,被邀请的成员甚至没有收到邀请。

您可以查看过去的工作方式:https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s

谷歌文档钓鱼

过去,可以创建一个看起来合法的文档,然后在评论中提及某个电子邮件(如@user@gmail.com)。谷歌会向该电子邮件地址发送一封电子邮件,通知他们在文档中被提及。 现在,这种方法不起作用,但如果您授予受害者对文档的访问权限,谷歌将发送一封电子邮件通知。这是在提及某人时出现的消息:

受害者可能有防护机制,不允许这些指示外部文档与他们共享的电子邮件到达他们的邮箱。

谷歌日历钓鱼

您可以创建一个日历事件,并添加您攻击的公司的尽可能多的电子邮件地址。将此日历事件安排在当前时间的5或15分钟后。使事件看起来合法,并添加评论和标题,指示他们需要阅读某些内容(带有钓鱼链接)。

这是在浏览器中出现的会议标题为“解雇人员”的警报,因此您可以设置更具钓鱼性质的标题(甚至更改与您的电子邮件关联的名称)。

为了使其看起来不那么可疑:

  • 设置为接收者无法看到其他受邀人员

  • 不要发送关于事件的电子邮件通知。然后,人们只会看到他们关于5分钟后的会议的警告,以及他们需要阅读该链接。

  • 显然,使用API,您可以设置人员已接受事件,并甚至代表他们创建评论

应用脚本重定向钓鱼

可以在https://script.google.com/创建一个脚本,并将其公开为每个人都可以访问的Web应用程序,该应用程序将使用合法域**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令牌的访问权限,欲了解更多信息,请查看:

GWS - App Scripts

OAuth应用程序钓鱼

任何先前的技术都可能被用来让用户访问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应用程序

开始创建OAuth客户端ID

  1. 转到https://console.cloud.google.com/apis/credentials/oauthclient,然后单击配置同意屏幕。

  2. 然后,将询问用户类型内部(仅适用于您组织中的人员)还是外部。选择适合您需求的类型

  • 如果您已经入侵了组织的用户,并且正在创建此应用程序以钓鱼另一个用户,则内部可能会很有趣。

  1. 为应用程序指定一个名称、一个支持电子邮件(请注意,您可以设置一个googlegroup电子邮件,以尝试更加匿名化自己),一个标志授权域和另一个用于更新电子邮件

  2. 选择****OAuth范围

  • 此页面分为非敏感权限、敏感权限和受限权限。每次添加新权限,它都会添加到其类别中。根据请求的权限不同,用户将看到不同的提示,指示这些权限有多敏感。

  • **admin.directory.user.readonlycloud-platform**都是敏感权限。

  1. 添加测试用户。只有这些用户能够访问应用程序,因此请确保添加您将要进行钓鱼的电子邮件

现在,使用先前创建的OAuth客户端ID获取Web应用程序的凭据

  1. 返回到https://console.cloud.google.com/apis/credentials/oauthclient,这次会出现不同的选项。

  2. 选择为Web应用程序创建凭据

  3. 设置所需的Javascript起源重定向URI

  • 您可以在两者中都设置类似**http://localhost:8000/callback**的内容进行测试

  1. 获取您的应用程序凭据

最后,让我们运行一个将使用OAuth应用程序凭据的Web应用程序。您可以在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登录”按钮,您将收到类似以下消息的提示**:

该应用程序将显示可轻松使用的访问和刷新令牌。有关如何使用这些令牌的更多信息,请查看:

GCP - Non-svc Persistance

使用gcloud

可以使用gcloud而不是Web控制台执行某些操作,请查看:

GCP - ClientAuthConfig Privesc

参考资料

支持HackTricks

Last updated