hacktricks/network-services-pentesting/135-pentesting-msrpc.md

136 lines
13 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 135, 593 - Pentesting MSRPC
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
**HackenProof es el hogar de todas las recompensas por errores de criptografía.**
**Obtén recompensas sin demoras**\
Las recompensas de HackenProof se lanzan solo cuando sus clientes depositan el presupuesto de recompensa. Obtendrás la recompensa después de que se verifique el error.
**Obtén experiencia en pentesting web3**\
¡Los protocolos blockchain y los contratos inteligentes son el nuevo Internet! Domina la seguridad web3 en sus días de crecimiento.
**Conviértete en la leyenda del hacker web3**\
Gana puntos de reputación con cada error verificado y conquista la cima de la clasificación semanal.
[**Regístrate en HackenProof**](https://hackenproof.com/register) ¡comienza a ganar con tus hacks!
{% embed url="https://hackenproof.com/register" %}
## Información básica
Microsoft Remote Procedure Call, también conocido como llamada de función o llamada de subrutina, es [un protocolo](http://searchmicroservices.techtarget.com/definition/Remote-Procedure-Call-RPC) que utiliza el modelo cliente-servidor para permitir que un programa solicite un servicio a un programa en otra computadora sin tener que entender los detalles de la red de esa computadora. MSRPC se derivó originalmente de software de código abierto, pero ha sido desarrollado y protegido por derechos de autor por Microsoft.
Dependiendo de la configuración del host, el mapeador de puntos finales de RPC se puede acceder a través de los puertos TCP y UDP 135, a través de SMB con una sesión nula o autenticada (TCP 139 y 445), y como un servicio web que escucha en el puerto TCP 593.
```
135/tcp open msrpc Microsoft Windows RPC
```
## ¿Cómo funciona MSRPC?
El proceso de MSRPC comienza en el lado del cliente, con la aplicación del cliente llamando a un procedimiento de stub local en lugar de implementar el código del procedimiento. El código de stub del cliente recupera los parámetros requeridos del espacio de direcciones del cliente y los entrega a la biblioteca de tiempo de ejecución del cliente, que luego traduce los parámetros a un formato estándar de Representación de Datos de Red para transmitirlos al servidor.
El stub del cliente luego llama a funciones en la biblioteca de tiempo de ejecución del cliente RPC para enviar la solicitud y los parámetros al servidor. Si el servidor se encuentra de forma remota, la biblioteca de tiempo de ejecución especifica un protocolo de transporte y un motor adecuados y pasa el RPC a la pila de red para su transporte al servidor.\
Desde aquí: [https://www.extrahop.com/resources/protocols/msrpc/](https://www.extrahop.com/resources/protocols/msrpc/)
![](<../.gitbook/assets/image (133).png>)
**Imagen del libro "**_**Network Security Assesment 3rd Edition**_**"**
## **Identificación de servicios RPC expuestos**
**Sección extraída del libro "**_**Network Security Assesment 3rd Edition**_**"**
Puede consultar el servicio de localizador de RPC y los puntos finales de RPC individuales para catalogar servicios interesantes que se ejecutan sobre TCP, UDP, HTTP y SMB (a través de named pipes). Cada valor IFID recopilado a través de este proceso denota un servicio RPC (por ejemplo, 5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc es la interfaz de Messenger).
Las utilidades de Windows rpcdump e ifids de Todd Sabin consultan tanto el localizador de RPC como los puntos finales de RPC específicos para enumerar los valores IFID. La sintaxis de rpcdump es la siguiente:
```
D:\rpctools> rpcdump [-p port] 192.168.189.1
IfId: 5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc version 1.0
Annotation: Messenger Service
UUID: 00000000-0000-0000-0000-000000000000
Binding: ncadg_ip_udp:192.168.189.1[1028]
```
Puedes acceder al servicio de localización de RPC utilizando cuatro secuencias de protocolo:
* ncacn\_ip\_tcp y ncadg\_ip\_udp (puerto TCP y UDP 135)
* ncacn\_np (la tubería con nombre \pipe\epmapper a través de SMB)
* ncacn\_http (RPC sobre HTTP a través de los puertos TCP 80, 593 y otros)
```bash
use auxiliary/scanner/dcerpc/endpoint_mapper
use auxiliary/scanner/dcerpc/hidden
use auxiliary/scanner/dcerpc/management
use auxiliary/scanner/dcerpc/tcp_dcerpc_auditor
rpcdump.py <IP> -p 135
```
_Nota que de las opciones mencionadas, todas excepto **`tcp_dcerpc_auditor`** solo se pueden ejecutar contra **msrpc** en el puerto **135**._
#### Interfaces RPC destacadas
| **Valor IFID** | **Named pipe** | **Descripción** |
| ------------------------------------ | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 12345778-1234-abcd-ef00-0123456789ab | \pipe\lsarpc | Interfaz LSA, utilizada para enumerar usuarios |
| 3919286a-b10c-11d0-9ba8-00c04fd92ef5 | \pipe\lsarpc | Interfaz de Servicios de Directorio (DS) de LSA, utilizada para enumerar dominios y relaciones de confianza |
| 12345778-1234-abcd-ef00-0123456789ac | \pipe\samr | Interfaz SAMR de LSA, utilizada para acceder a elementos públicos de la base de datos SAM (por ejemplo, nombres de usuario) y forzar contraseñas de usuario sin importar la política de bloqueo de cuentas [Biblioteca Oreilly](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#idm139659172852688) |
| 1ff70682-0a51-30e8-076d-740be8cee98b | \pipe\atsvc | Programador de tareas, utilizado para ejecutar comandos de forma remota |
| 338cd001-2244-31f1-aaaa-900038001003 | \pipe\winreg | Servicio de registro remoto, utilizado para acceder al registro del sistema |
| 367abb81-9844-35f1-ad32-98f038001003 | \pipe\svcctl | Administrador de control de servicios y servicios de servidor, utilizado para iniciar y detener servicios y ejecutar comandos de forma remota |
| 4b324fc8-1670-01d3-1278-5a47bf6ee188 | \pipe\srvsvc | Administrador de control de servicios y servicios de servidor, utilizado para iniciar y detener servicios y ejecutar comandos de forma remota |
| 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57 | \pipe\epmapper | Interfaz DCOM, compatible con WMI |
### Identificación de direcciones IP
Utilizando [https://github.com/mubix/IOXIDResolver](https://github.com/mubix/IOXIDResolver), proveniente de la investigación de [Airbus](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/), es posible abusar del método _**ServerAlive2**_ dentro de la interfaz _**IOXIDResolver**_.
Este método se ha utilizado para obtener información de la interfaz como la dirección **IPv6** de la máquina HTB _APT_. Consulta [aquí](https://0xdf.gitlab.io/2021/04/10/htb-apt.html) el informe de APT de 0xdf, que incluye un método alternativo utilizando rpcmap.py de [Impacket](https://github.com/SecureAuthCorp/impacket/) con _stringbinding_ (ver arriba).
Referencias:
* [https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/)
* [https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/](https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/)
## Puerto 593
El **rpcdump.exe** de [rpctools](https://resources.oreilly.com/examples/9780596510305/tree/master/tools/rpctools) puede interactuar con este puerto.
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
**HackenProof es el hogar de todas las recompensas por errores de cifrado.**
**Obtén recompensas sin demoras**\
Las recompensas de HackenProof se lanzan solo cuando los clientes depositan el presupuesto de recompensa. Recibirás la recompensa después de que se verifique el error.
**Obtén experiencia en pentesting web3**\
¡Los protocolos blockchain y los contratos inteligentes son el nuevo Internet! Domina la seguridad web3 en sus días de crecimiento.
**Conviértete en una leyenda del hacker web3**\
Gana puntos de reputación con cada error verificado y conquista la cima de la clasificación semanal.
[**Regístrate en HackenProof**](https://hackenproof.com/register) ¡comienza a ganar con tus hacks!
{% embed url="https://hackenproof.com/register" %}
<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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
* 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>