mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-14 13:56:30 -08:00
366 lines
20 KiB
Markdown
366 lines
20 KiB
Markdown
# AWS Pentesting
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## Información Básica
|
|
|
|
**Antes de comenzar el pentesting** en un **entorno de AWS**, hay algunas **cosas básicas que necesitas saber** sobre cómo funciona AWS para ayudarte a entender qué necesitas hacer, cómo encontrar configuraciones incorrectas y cómo explotarlas.
|
|
|
|
Conceptos como la jerarquía de organización, IAM y otros conceptos básicos se explican en:
|
|
|
|
{{#ref}}
|
|
aws-basic-information/
|
|
{{#endref}}
|
|
|
|
## Laboratorios para aprender
|
|
|
|
- [https://github.com/RhinoSecurityLabs/cloudgoat](https://github.com/RhinoSecurityLabs/cloudgoat)
|
|
- [https://github.com/BishopFox/iam-vulnerable](https://github.com/BishopFox/iam-vulnerable)
|
|
- [https://github.com/nccgroup/sadcloud](https://github.com/nccgroup/sadcloud)
|
|
- [https://github.com/bridgecrewio/terragoat](https://github.com/bridgecrewio/terragoat)
|
|
- [https://github.com/ine-labs/AWSGoat](https://github.com/ine-labs/AWSGoat)
|
|
- [http://flaws.cloud/](http://flaws.cloud/)
|
|
- [http://flaws2.cloud/](http://flaws2.cloud/)
|
|
|
|
Herramientas para simular ataques:
|
|
|
|
- [https://github.com/Datadog/stratus-red-team/](https://github.com/Datadog/stratus-red-team/)
|
|
- [https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main](https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main)
|
|
|
|
## Metodología de Pentester/Red Team de AWS
|
|
|
|
Para auditar un entorno de AWS, es muy importante saber: qué **servicios se están utilizando**, qué está **siendo expuesto**, quién tiene **acceso** a qué, y cómo están conectados los servicios internos de AWS y los **servicios externos**.
|
|
|
|
Desde el punto de vista de un Red Team, el **primer paso para comprometer un entorno de AWS** es conseguir obtener algunas **credenciales**. Aquí tienes algunas ideas sobre cómo hacerlo:
|
|
|
|
- **Filtraciones** en github (o similar) - OSINT
|
|
- **Ingeniería** Social
|
|
- Reutilización de **contraseñas** (filtraciones de contraseñas)
|
|
- Vulnerabilidades en Aplicaciones Alojadas en AWS
|
|
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) con acceso al endpoint de metadatos
|
|
- **Lectura de Archivos Locales**
|
|
- `/home/USERNAME/.aws/credentials`
|
|
- `C:\Users\USERNAME\.aws\credentials`
|
|
- **terceros** **comprometidos**
|
|
- Empleado **Interno**
|
|
- [**Cognito** ](aws-services/aws-cognito-enum/index.html#cognito)credenciales
|
|
|
|
O comprometiendo un servicio **no autenticado** expuesto:
|
|
|
|
{{#ref}}
|
|
aws-unauthenticated-enum-access/
|
|
{{#endref}}
|
|
|
|
O si estás haciendo una **revisión**, podrías simplemente **pedir credenciales** con estos roles:
|
|
|
|
{{#ref}}
|
|
aws-permissions-for-a-pentest.md
|
|
{{#endref}}
|
|
|
|
> [!NOTE]
|
|
> Después de haber conseguido obtener credenciales, necesitas saber **a quién pertenecen esas credenciales**, y **a qué tienen acceso**, por lo que necesitas realizar alguna enumeración básica:
|
|
|
|
## Enumeración Básica
|
|
|
|
### SSRF
|
|
|
|
Si encontraste un SSRF en una máquina dentro de AWS, consulta esta página para trucos:
|
|
|
|
{{#ref}}
|
|
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
|
{{#endref}}
|
|
|
|
### Whoami
|
|
|
|
Una de las primeras cosas que necesitas saber es quién eres (en qué cuenta estás y otra información sobre el entorno de AWS):
|
|
```bash
|
|
# Easiest way, but might be monitored?
|
|
aws sts get-caller-identity
|
|
aws iam get-user # This will get your own user
|
|
|
|
# If you have a Key ID
|
|
aws sts get-access-key-info --access-key-id=ASIA1234567890123456
|
|
|
|
# Get inside error message
|
|
aws sns publish --topic-arn arn:aws:sns:us-east-1:*account id*:aaa --message aaa
|
|
|
|
# From metadata
|
|
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
|
|
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document
|
|
```
|
|
> [!CAUTION]
|
|
> Tenga en cuenta que las empresas pueden usar **canary tokens** para identificar cuándo **se están robando y utilizando tokens**. Se recomienda verificar si un token es un canary token o no antes de usarlo.\
|
|
> Para más información [**ver esta página**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
|
|
|
|
### Enumeración de Organizaciones
|
|
|
|
{{#ref}}
|
|
aws-services/aws-organizations-enum.md
|
|
{{#endref}}
|
|
|
|
### Enumeración de IAM
|
|
|
|
Si tiene suficientes permisos, **verificar los privilegios de cada entidad dentro de la cuenta de AWS** le ayudará a entender qué puede hacer usted y otras identidades y cómo **escalar privilegios**.
|
|
|
|
Si no tiene suficientes permisos para enumerar IAM, puede **robarlos mediante fuerza bruta** para averiguarlos.\
|
|
Verifique **cómo realizar la enumeración y la fuerza bruta** en:
|
|
|
|
{{#ref}}
|
|
aws-services/aws-iam-enum.md
|
|
{{#endref}}
|
|
|
|
> [!NOTE]
|
|
> Ahora que **tiene algo de información sobre sus credenciales** (y si es un red team, espero que **no haya sido detectado**). Es hora de averiguar qué servicios se están utilizando en el entorno.\
|
|
> En la siguiente sección puede verificar algunas formas de **enumerar algunos servicios comunes.**
|
|
|
|
## Enumeración de Servicios, Post-Explotación y Persistencia
|
|
|
|
AWS tiene una asombrosa cantidad de servicios, en la siguiente página encontrará **información básica, enumeración** cheatsheets\*\*,\*\* cómo **evitar la detección**, obtener **persistencia** y otros trucos de **post-explotación** sobre algunos de ellos:
|
|
|
|
{{#ref}}
|
|
aws-services/
|
|
{{#endref}}
|
|
|
|
Tenga en cuenta que **no** necesita realizar todo el trabajo **manualmente**, a continuación en esta publicación puede encontrar una **sección sobre** [**herramientas automáticas**](#automated-tools).
|
|
|
|
Además, en esta etapa puede haber descubierto **más servicios expuestos a usuarios no autenticados**, podría ser capaz de explotarlos:
|
|
|
|
{{#ref}}
|
|
aws-unauthenticated-enum-access/
|
|
{{#endref}}
|
|
|
|
## Escalación de Privilegios
|
|
|
|
Si puede **ver al menos sus propios permisos** sobre diferentes recursos, podría **ver si puede obtener más permisos**. Debería centrarse al menos en los permisos indicados en:
|
|
|
|
{{#ref}}
|
|
aws-privilege-escalation/
|
|
{{#endref}}
|
|
|
|
## Servicios Expuestos Públicamente
|
|
|
|
Mientras enumeraba los servicios de AWS, puede haber encontrado algunos de ellos **exponiendo elementos a Internet** (puertos de VM/Contenedores, bases de datos o servicios de cola, instantáneas o buckets...).\
|
|
Como pentester/red teamer, siempre debe verificar si puede encontrar **información sensible / vulnerabilidades** en ellos, ya que podrían proporcionarle **más acceso a la cuenta de AWS**.
|
|
|
|
En este libro debería encontrar **información** sobre cómo encontrar **servicios de AWS expuestos y cómo verificarlos**. Sobre cómo encontrar **vulnerabilidades en servicios de red expuestos**, le recomendaría **buscar** el **servicio** específico en:
|
|
|
|
{{#ref}}
|
|
https://book.hacktricks.wiki/
|
|
{{#endref}}
|
|
|
|
## Comprometiendo la Organización
|
|
|
|
### Desde la cuenta raíz/administrativa
|
|
|
|
Cuando la cuenta de administración crea nuevas cuentas en la organización, se crea un **nuevo rol** en la nueva cuenta, llamado por defecto **`OrganizationAccountAccessRole`** y otorgando la política de **AdministratorAccess** a la **cuenta de administración** para acceder a la nueva cuenta.
|
|
|
|
<figure><img src="../../images/image (171).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Por lo tanto, para acceder como administrador a una cuenta secundaria, necesita:
|
|
|
|
- **Comprometer** la **cuenta de administración** y encontrar el **ID** de las **cuentas secundarias** y los **nombres** del **rol** (OrganizationAccountAccessRole por defecto) que permite a la cuenta de administración acceder como administrador.
|
|
- Para encontrar cuentas secundarias, vaya a la sección de organizaciones en la consola de aws o ejecute `aws organizations list-accounts`
|
|
- No puede encontrar el nombre de los roles directamente, así que verifique todas las políticas IAM personalizadas y busque cualquier que permita **`sts:AssumeRole` sobre las cuentas secundarias descubiertas previamente**.
|
|
- **Comprometer** un **principal** en la cuenta de administración con **permiso `sts:AssumeRole` sobre el rol en las cuentas secundarias** (incluso si la cuenta permite que cualquiera de la cuenta de administración se impersonifique, como es una cuenta externa, son necesarios permisos específicos de `sts:AssumeRole`).
|
|
|
|
## Herramientas Automáticas
|
|
|
|
### Recon
|
|
|
|
- [**aws-recon**](https://github.com/darkbitio/aws-recon): Una herramienta de **colección de inventario** enfocada en la seguridad de AWS, multihilo, escrita en Ruby.
|
|
```bash
|
|
# Install
|
|
gem install aws_recon
|
|
|
|
# Recon and get json
|
|
AWS_PROFILE=<profile> aws_recon \
|
|
--services S3,EC2 \
|
|
--regions global,us-east-1,us-east-2 \
|
|
--verbose
|
|
```
|
|
- [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist es una **herramienta multi-nube para obtener Activos** (Nombres de host, Direcciones IP) de Proveedores de Nube.
|
|
- [**cloudmapper**](https://github.com/duo-labs/cloudmapper): CloudMapper te ayuda a analizar tus entornos de Amazon Web Services (AWS). Ahora contiene mucha más funcionalidad, incluyendo auditoría de problemas de seguridad.
|
|
```bash
|
|
# Installation steps in github
|
|
# Create a config.json file with the aws info, like:
|
|
{
|
|
"accounts": [
|
|
{
|
|
"default": true,
|
|
"id": "<account id>",
|
|
"name": "dev"
|
|
}
|
|
],
|
|
"cidrs":
|
|
{
|
|
"2.2.2.2/28": {"name": "NY Office"}
|
|
}
|
|
}
|
|
|
|
# Enumerate
|
|
python3 cloudmapper.py collect --profile dev
|
|
## Number of resources discovered
|
|
python3 cloudmapper.py stats --accounts dev
|
|
|
|
# Create HTML report
|
|
## In the report you will find all the info already
|
|
python3 cloudmapper.py report --accounts dev
|
|
|
|
# Identify potential issues
|
|
python3 cloudmapper.py audit --accounts dev --json > audit.json
|
|
python3 cloudmapper.py audit --accounts dev --markdow > audit.md
|
|
python3 cloudmapper.py iam_report --accounts dev
|
|
|
|
# Identify admins
|
|
## The permissions search for are in https://github.com/duo-labs/cloudmapper/blob/4df9fd7303e0337ff16a08f5e58f1d46047c4a87/shared/iam_audit.py#L163-L175
|
|
python3 cloudmapper.py find_admins --accounts dev
|
|
|
|
# Identify unused elements
|
|
python3 cloudmapper.py find_unused --accounts dev
|
|
|
|
# Identify publivly exposed resources
|
|
python3 cloudmapper.py public --accounts dev
|
|
|
|
python cloudmapper.py prepare #Prepare webserver
|
|
python cloudmapper.py webserver #Show webserver
|
|
```
|
|
- [**cartography**](https://github.com/lyft/cartography): 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.
|
|
```bash
|
|
# Install
|
|
pip install cartography
|
|
## At the time of this writting you need neo4j version 3.5.*
|
|
|
|
# Get AWS info
|
|
AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt --neo4j-user neo4j
|
|
```
|
|
- [**starbase**](https://github.com/JupiterOne/starbase): 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.
|
|
- [**aws-inventory**](https://github.com/nccgroup/aws-inventory): (Usa python2) Esta es una herramienta que intenta **descubrir todos** los [**recursos de AWS**](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#resource) creados en una cuenta.
|
|
- [**aws_public_ips**](https://github.com/arkadiyt/aws_public_ips): Es una herramienta para **obtener todas las direcciones IP públicas** (tanto IPv4/IPv6) asociadas con una cuenta de AWS.
|
|
|
|
### Privesc & Exploiting
|
|
|
|
- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Descubre los usuarios más privilegiados en el entorno de AWS escaneado, incluyendo a los AWS Shadow Admins. Utiliza powershell. Puedes encontrar la **definición de políticas privilegiadas** en la función **`Check-PrivilegedPolicy`** en [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1).
|
|
- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu es un **framework de explotación de AWS** de código abierto, diseñado para pruebas de seguridad ofensivas contra entornos en la nube. Puede **enumerar**, encontrar **configuraciones incorrectas** y **explotarlas**. Puedes encontrar la **definición de permisos privilegiados** en [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) dentro del diccionario **`user_escalation_methods`**.
|
|
- Ten en cuenta que pacu **solo verifica tus propios caminos de privesc** (no a nivel de cuenta).
|
|
```bash
|
|
# Install
|
|
## Feel free to use venvs
|
|
pip3 install pacu
|
|
|
|
# Use pacu CLI
|
|
pacu
|
|
> import_keys <profile_name> # import 1 profile from .aws/credentials
|
|
> import_keys --all # import all profiles
|
|
> list # list modules
|
|
> exec iam__enum_permissions # Get permissions
|
|
> exec iam__privesc_scan # List privileged permissions
|
|
```
|
|
- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) es un script y biblioteca para identificar riesgos en la configuración de AWS Identity and Access Management (IAM) para una cuenta de AWS o una organización de AWS. Modela los diferentes Usuarios y Roles de IAM en una cuenta como un grafo dirigido, lo que permite verificar **escaladas de privilegios** y caminos alternativos que un atacante podría tomar para obtener acceso a un recurso o acción en AWS. Puedes verificar los **permisos utilizados para encontrar caminos de privesc** en los nombres de archivo que terminan en `_edges.py` en [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing)
|
|
```bash
|
|
# Install
|
|
pip install principalmapper
|
|
|
|
# Get data
|
|
pmapper --profile dev graph create
|
|
pmapper --profile dev graph display # Show basic info
|
|
# Generate graph
|
|
pmapper --profile dev visualize # Generate svg graph file (can also be png, dot and graphml)
|
|
pmapper --profile dev visualize --only-privesc # Only privesc permissions
|
|
|
|
# Generate analysis
|
|
pmapper --profile dev analysis
|
|
## Run queries
|
|
pmapper --profile dev query 'who can do iam:CreateUser'
|
|
pmapper --profile dev query 'preset privesc *' # Get privescs with admins
|
|
|
|
# Get organization hierarchy data
|
|
pmapper --profile dev orgs create
|
|
pmapper --profile dev orgs display
|
|
```
|
|
- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining es una herramienta de evaluación de seguridad de AWS IAM que identifica violaciones del principio de menor privilegio y genera un informe HTML priorizado por riesgo.\
|
|
Mostrará los clientes **sobre privilegiados** potencialmente, las **políticas** en línea y de aws, y qué **principales tienen acceso a ellas**. (No solo verifica privesc, sino también otros tipos de permisos interesantes, se recomienda su uso).
|
|
```bash
|
|
# Install
|
|
pip install cloudsplaining
|
|
|
|
# Download IAM policies to check
|
|
## Only the ones attached with the versions used
|
|
cloudsplaining download --profile dev
|
|
|
|
# Analyze the IAM policies
|
|
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
|
|
```
|
|
- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack evalúa cuentas de AWS en busca de **vulnerabilidades de secuestro de subdominios** como resultado de configuraciones desacopladas de Route53 y CloudFront.
|
|
- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Listar repositorios ECR -> Extraer repositorio ECR -> Insertar puerta trasera -> Subir imagen con puerta trasera
|
|
- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag es una herramienta que **busca** a través de instantáneas públicas de Elastic Block Storage (**EBS**) en busca de secretos que pueden haber sido dejados accidentalmente.
|
|
|
|
### Auditoría
|
|
|
|
- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** CloudSploit de Aqua es un proyecto de código abierto diseñado para permitir la detección de **riesgos de seguridad en cuentas de infraestructura en la nube**, incluyendo: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) y GitHub (no busca ShadowAdmins).
|
|
```bash
|
|
./index.js --csv=file.csv --console=table --config ./config.js
|
|
|
|
# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
|
|
## use "cis" for cis level 1 and 2
|
|
```
|
|
- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler es una herramienta de seguridad de código abierto para realizar evaluaciones de las mejores prácticas de seguridad de AWS, auditorías, respuesta a incidentes, monitoreo continuo, endurecimiento y preparación forense.
|
|
```bash
|
|
# Install python3, jq and git
|
|
# Install
|
|
pip install prowler
|
|
prowler -v
|
|
|
|
# Run
|
|
prowler <provider>
|
|
prowler aws --profile custom-profile [-M csv json json-asff html]
|
|
```
|
|
- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox te ayuda a obtener conciencia situacional en entornos de nube desconocidos. Es una herramienta de línea de comandos de código abierto creada para ayudar a los pentesters y otros profesionales de la seguridad ofensiva a encontrar rutas de ataque explotables en la infraestructura de la nube.
|
|
```bash
|
|
cloudfox aws --profile [profile-name] all-checks
|
|
```
|
|
- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suite es una herramienta de auditoría de seguridad multi-nube de código abierto, que permite la evaluación de la postura de seguridad de los entornos en la nube.
|
|
```bash
|
|
# Install
|
|
virtualenv -p python3 venv
|
|
source venv/bin/activate
|
|
pip install scoutsuite
|
|
scout --help
|
|
|
|
# Get info
|
|
scout aws -p dev
|
|
```
|
|
- [**cs-suite**](https://github.com/SecurityFTW/cs-suite): Cloud Security Suite (usa python2.7 y parece no estar mantenido)
|
|
- [**Zeus**](https://github.com/DenizParlak/Zeus): Zeus es una herramienta poderosa para las mejores prácticas de endurecimiento de AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (parece no estar mantenida). Solo verifica las credenciales configuradas por defecto dentro del sistema.
|
|
|
|
### Auditoría Constante
|
|
|
|
- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian es un motor de reglas para gestionar cuentas y recursos de nube pública. Permite a los usuarios **definir políticas para habilitar una infraestructura en la nube bien gestionada**, que sea segura y optimizada en costos. Consolida muchos de los scripts ad-hoc que las organizaciones tienen en una herramienta ligera y flexible, con métricas y reportes unificados.
|
|
- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** es una plataforma para **monitoreo continuo de cumplimiento, reporte de cumplimiento y automatización de seguridad para la nube**. En PacBot, las políticas de seguridad y cumplimiento se implementan como código. Todos los recursos descubiertos por PacBot se evalúan contra estas políticas para medir la conformidad con las políticas. El marco **auto-fix** de PacBot proporciona la capacidad de responder automáticamente a las violaciones de políticas tomando acciones predefinidas.
|
|
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert es un marco de análisis de datos **en tiempo real** sin servidor que te permite **ingresar, analizar y alertar** sobre datos de cualquier entorno, **usando fuentes de datos y lógica de alertas que defines**. Los equipos de seguridad informática utilizan StreamAlert para escanear terabytes de datos de registro todos los días para la detección y respuesta a incidentes.
|
|
|
|
## DEBUG: Capturar solicitudes de AWS cli
|
|
```bash
|
|
# Set proxy
|
|
export HTTP_PROXY=http://localhost:8080
|
|
export HTTPS_PROXY=http://localhost:8080
|
|
|
|
# Capture with burp nor verifying ssl
|
|
aws --no-verify-ssl ...
|
|
|
|
# Dowload brup cert and transform it to pem
|
|
curl http://127.0.0.1:8080/cert --output Downloads/certificate.cer
|
|
openssl x509 -inform der -in Downloads/certificate.cer -out Downloads/certificate.pem
|
|
|
|
# Indicate the ca cert to trust
|
|
export AWS_CA_BUNDLE=~/Downloads/certificate.pem
|
|
|
|
# Run aws cli normally trusting burp cert
|
|
aws ...
|
|
```
|
|
## Referencias
|
|
|
|
- [https://www.youtube.com/watch?v=8ZXRw4Ry3mQ](https://www.youtube.com/watch?v=8ZXRw4Ry3mQ)
|
|
- [https://cloudsecdocs.com/aws/defensive/tooling/audit/](https://cloudsecdocs.com/aws/defensive/tooling/audit/)
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|