Pentesting Cloud Methodology

Apoya a HackTricks

Metodología Básica

Cada nube tiene sus propias peculiaridades, pero en general hay algunas cosas comunes que un pentester debería verificar al probar un entorno en la nube:

  • Verificaciones de referencia

  • Esto te ayudará a entender el tamaño del entorno y los servicios utilizados

  • También te permitirá encontrar algunas mala configuraciones rápidas ya que puedes realizar la mayoría de estas pruebas con herramientas automatizadas

  • Enumeración de Servicios

  • Probablemente no encontrarás muchas más mala configuraciones aquí si realizaste correctamente las pruebas de referencia, pero podrías encontrar algunas que no se buscaron en la prueba de referencia.

  • Esto te permitirá saber qué se está utilizando exactamente en el entorno de la nube

  • Esto ayudará mucho en los siguientes pasos

  • Verifica activos expuestos

  • Esto se puede hacer durante la sección anterior, necesitas descubrir todo lo que está potencialmente expuesto a Internet de alguna manera y cómo se puede acceder.

  • Aquí estoy tomando infraestructura expuesta manualmente como instancias con páginas web u otros puertos expuestos, y también sobre otros servicios gestionados en la nube que pueden ser configurados para estar expuestos (como bases de datos o buckets)

  • Luego deberías verificar si ese recurso puede ser expuesto o no (¿información confidencial? ¿vulnerabilidades? ¿mala configuraciones en el servicio expuesto?)

  • Verifica permisos

  • Aquí deberías descubrir todos los permisos de cada rol/usuario dentro de la nube y cómo se utilizan

  • ¿Demasiadas cuentas altamente privilegiadas (controlan todo)? ¿Claves generadas no utilizadas?... La mayoría de estas verificaciones ya deberían haberse realizado en las pruebas de referencia

  • Si el cliente está utilizando OpenID o SAML u otra federación, es posible que necesites pedirles más información sobre cómo se asigna cada rol (no es lo mismo que el rol de administrador esté asignado a 1 usuario o a 100)

  • No es suficiente encontrar qué usuarios tienen permisos de administrador "*:*". Hay muchos otros permisos que dependiendo de los servicios utilizados pueden ser muy sensibles.

  • Además, hay posibles caminos de privesc a seguir abusando de los permisos. Todas estas cosas deben tenerse en cuenta y se deben reportar tantos caminos de privesc como sea posible.

  • Verifica Integraciones

  • Es muy probable que integraciones con otras nubes o SaaS se estén utilizando dentro del entorno de la nube.

  • Para integraciones de la nube que estás auditando con otra plataforma, deberías notificar quién tiene acceso para (ab)usar esa integración y deberías preguntar qué tan sensible es la acción que se está realizando. Por ejemplo, quién puede escribir en un bucket de AWS del cual GCP está obteniendo datos (pregunta qué tan sensible es la acción en GCP al tratar esos datos).

  • Para integraciones dentro de la nube que estás auditando desde plataformas externas, deberías preguntar quién tiene acceso externamente para (ab)usar esa integración y verificar cómo se está utilizando esos datos. Por ejemplo, si un servicio está utilizando una imagen de Docker alojada en GCR, deberías preguntar quién tiene acceso para modificar eso y qué información sensible y acceso obtendrá esa imagen al ejecutarse dentro de una nube de AWS.

Herramientas Multi-Nube

Hay varias herramientas que se pueden utilizar para probar diferentes entornos en la nube. Los pasos de instalación y enlaces se indicarán en esta sección.

Una herramienta para identificar malas configuraciones y caminos de privesc en nubes y entre nubes/SaaS.

# You need to install and run neo4j also
git clone https://github.com/carlospolop/PurplePanda
cd PurplePanda
python3 -m venv .
source bin/activate
python3 -m pip install -r requirements.txt
export PURPLEPANDA_NEO4J_URL="bolt://neo4j@localhost:7687"
export PURPLEPANDA_PWD="neo4j_pwd_4_purplepanda"
python3 main.py -h # Get help

Soporta AWS, GCP y Azure. Consulta cómo configurar cada proveedor en https://docs.prowler.cloud/en/latest/#aws

# Install
pip install prowler
prowler -v

# Run
prowler <provider>
# Example
prowler aws --profile custom-profile [-M csv json json-asff html]

# Get info about checks & services
prowler <provider> --list-checks
prowler <provider> --list-services

AWS, Azure, Github, Google, Oracle, Alibaba

# Install
git clone https://github.com/aquasecurity/cloudsploit.git
cd cloudsploit
npm install
./index.js -h
## Docker instructions in github

AWS, Azure, GCP, Alibaba Cloud, Oracle Cloud Infrastructure

mkdir scout; cd scout
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help
## Using Docker: https://github.com/nccgroup/ScoutSuite/wiki/Docker-Image

Descargue e instale Steampipe (https://steampipe.io/downloads). O use Brew:

brew tap turbot/tap
brew install steampipe

AWS, GCP, Azure, DigitalOcean. Requiere python2.7 y parece no estar mantenido.

Nessus

Nessus tiene un Auditoría de Infraestructura en la Nube que admite: AWS, Azure, Office 365, Rackspace, Salesforce. Se necesitan algunas configuraciones adicionales en Azure para obtener un Client Id.

Cloudlist es una herramienta multi-nube para obtener Activos (Nombres de Host, Direcciones IP) de Proveedores de Nube.

cd /tmp
wget https://github.com/projectdiscovery/cloudlist/releases/latest/download/cloudlist_1.0.1_macOS_arm64.zip
unzip cloudlist_1.0.1_macOS_arm64.zip
chmod +x cloudlist
sudo mv cloudlist /usr/local/bin

Cartography es una herramienta de Python que consolida los activos de infraestructura y las relaciones entre ellos en una vista gráfica intuitiva impulsada por una base de datos Neo4j.

# Installation
docker image pull ghcr.io/lyft/cartography
docker run --platform linux/amd64 ghcr.io/lyft/cartography cartography --help
## Install a Neo4j DB version 3.5.*

Starbase recopila activos y relaciones de servicios y sistemas, incluyendo infraestructura en la nube, aplicaciones SaaS, controles de seguridad y más, en una vista gráfica intuitiva respaldada por la base de datos Neo4j.

# You are going to need Node version 14, so install nvm following https://tecadmin.net/install-nvm-macos-with-homebrew/
npm install --global yarn
nvm install 14
git clone https://github.com/JupiterOne/starbase.git
cd starbase
nvm use 14
yarn install
yarn starbase --help
# Configure manually config.yaml depending on the env to analyze
yarn starbase setup
yarn starbase run

# Docker
git clone https://github.com/JupiterOne/starbase.git
cd starbase
cp config.yaml.example config.yaml
# Configure manually config.yaml depending on the env to analyze
docker build --no-cache -t starbase:latest .
docker-compose run starbase setup
docker-compose run starbase run

Descubre los usuarios más privilegiados en el entorno de AWS o Azure escaneado, incluidos los AWS Shadow Admins. Utiliza powershell.

Import-Module .\SkyArk.ps1 -force
Start-AzureStealth

# in the Cloud Console
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cyberark/SkyArk/master/AzureStealth/AzureStealth.ps1')
Scan-AzureAdmins

Una herramienta para encontrar la infraestructura, archivos y aplicaciones de una empresa (objetivo) en los principales proveedores de nube (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).

  • CloudFox es una herramienta para encontrar rutas de ataque explotables en la infraestructura de la nube (actualmente solo se admite AWS y Azure, con GCP en camino).

  • Es una herramienta de enumeración que está destinada a complementar el pentesting manual.

  • No crea ni modifica ningún dato dentro del entorno de la nube.

Más listas de herramientas de seguridad en la nube

Google

GCP

GCP Pentesting

Workspace

GWS - Workspace Pentesting

AWS

AWS Pentesting

Azure

Azure Pentesting

Attack Graph

Stormspotter crea un “gráfico de ataque” de los recursos en una suscripción de Azure. Permite a los equipos rojos y pentesters visualizar la superficie de ataque y las oportunidades de pivote dentro de un inquilino, y potencia a tus defensores para orientarse y priorizar rápidamente el trabajo de respuesta a incidentes.

Office365

Necesitas Global Admin o al menos Global Admin Reader (pero ten en cuenta que Global Admin Reader es un poco limitado). Sin embargo, esas limitaciones aparecen en algunos módulos de PS y se pueden eludir accediendo a las funciones a través de la aplicación web.

Apoya a HackTricks

Last updated