GCP - Cloud Shell Persistence
클라우드 셸
더 많은 정보는 확인하세요:
GCP - Cloud Shell Enum지속적인 백도어
Google Cloud Shell은 브라우저에서 클라우드 리소스에 대한 명령줄 액세스를 제공하며 관련 비용이 없습니다.
웹 콘솔 또는 **gcloud cloud-shell ssh
**를 실행하여 Google의 Cloud Shell에 액세스할 수 있습니다.
이 콘솔에는 공격자에게 흥미로운 몇 가지 기능이 있습니다:
Google Cloud에 액세스 권한이 있는 모든 Google 사용자는 완전 인증된 Cloud Shell 인스턴스에 액세스할 수 있습니다(서비스 계정은 조직의 소유자일지라도 가능).
해당 인스턴스는 활동이 없는 경우에도 적어도 120일 동안 홈 디렉터리를 유지합니다.
해당 인스턴스의 활동을 모니터링할 수 있는 조직의 기능이 없습니다.
이 기본적으로는 공격자가 사용자의 홈 디렉터리에 백도어를 설치할 수 있고, 사용자가 적어도 120일마다 GC 셸에 연결한다면 백도어가 유지되어 공격자가 매번 실행될 때마다 쉘을 얻을 수 있습니다. 다음을 수행함으로써:
홈 폴더에 **.customize_environment
**이라는 다른 파일이 있습니다. 이 파일이 존재하면 사용자가 클라우드 셸에 액세스할 때마다 실행됩니다 (이전 기술과 마찬가지로). 사용자가 "자주" 클라우드 셸을 사용하는 한 이전 백도어를 삽입하거나 다음과 유사한 백도어를 삽입하여 지속성을 유지할 수 있습니다:
인증이 필요한 작업을 처음 수행할 때, 사용자의 브라우저에 팝업 인증 창이 나타납니다. 이 창을 수락해야 명령을 실행할 수 있습니다. 예기치 않은 팝업이 나타나면 의심을 불러일으키고 사용 중인 지속성 방법을 손상시킬 수 있습니다.
이것은 클라우드 셸에서 gcloud projects list
를 실행했을 때(공격자로) 브라우저 사용자 세션에서 본 팝업입니다:
그러나 사용자가 클라우드 셸을 활발히 사용한 경우 팝업이 나타나지 않고 사용자의 토큰을 수집할 수 있습니다:
SSH 연결이 설정되는 방법
기본적으로 다음 3가지 API 호출이 사용됩니다:
https://content-cloudshell.googleapis.com/v1/users/me/environments/default:addPublicKey [POST] (로컬에서 생성한 공개 키를 추가하도록 함)
https://content-cloudshell.googleapis.com/v1/users/me/environments/default:start [POST] (인스턴스를 시작하도록 함)
https://content-cloudshell.googleapis.com/v1/users/me/environments/default [GET] (구글 클라우드 쉘의 IP를 알려줌)
그러나 https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key에서 더 많은 정보를 찾을 수 있습니다.
참고 자료
Last updated