mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
93 lines
6.0 KiB
Markdown
93 lines
6.0 KiB
Markdown
# 135, 593 - Pentesting MSRPC
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
## Informazioni di base
|
|
|
|
Il protocollo Microsoft Remote Procedure Call (MSRPC), un modello client-server che consente a un programma di richiedere un servizio da un programma situato su un altro computer senza comprendere le specifiche della rete, è stato inizialmente derivato da software open-source e successivamente sviluppato e protetto da copyright da Microsoft.
|
|
|
|
L'endpoint mapper RPC può essere accessibile tramite la porta TCP e UDP 135, SMB sulla TCP 139 e 445 (con una sessione nulla o autenticata), e come servizio web sulla porta TCP 593.
|
|
```
|
|
135/tcp open msrpc Microsoft Windows RPC
|
|
```
|
|
## Come funziona MSRPC?
|
|
|
|
Iniziato dall'applicazione client, il processo MSRPC prevede la chiamata a una procedura stub locale che interagisce con la libreria runtime del client per preparare e trasmettere la richiesta al server. Questo include la conversione dei parametri in un formato standard di Rappresentazione Dati di Rete. La scelta del protocollo di trasporto è determinata dalla libreria runtime se il server è remoto, garantendo che l'RPC venga consegnato attraverso lo stack di rete.
|
|
|
|

|
|
|
|
## **Identificazione dei servizi RPC esposti**
|
|
|
|
L'esposizione dei servizi RPC attraverso TCP, UDP, HTTP e SMB può essere determinata interrogando il servizio di localizzazione RPC e i singoli endpoint. Strumenti come rpcdump facilitano l'identificazione di servizi RPC unici, denotati da valori **IFID**, rivelando dettagli sul servizio e binding di comunicazione:
|
|
```
|
|
D:\rpctools> rpcdump [-p port] <IP>
|
|
**IFID**: 5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc version 1.0
|
|
Annotation: Messenger Service
|
|
UUID: 00000000-0000-0000-0000-000000000000
|
|
Binding: ncadg_ip_udp:<IP>[1028]
|
|
```
|
|
L'accesso al servizio di localizzazione RPC è abilitato attraverso protocolli specifici: ncacn_ip_tcp e ncadg_ip_udp per l'accesso tramite la porta 135, ncacn_np per le connessioni SMB e ncacn_http per la comunicazione RPC basata sul web. I seguenti comandi esemplificano l'utilizzo dei moduli di Metasploit per auditare e interagire con i servizi MSRPC, concentrandosi principalmente sulla porta 135:
|
|
```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
|
|
```
|
|
Tutte le opzioni tranne `tcp_dcerpc_auditor` sono specificamente progettate per mirare a MSRPC sulla porta 135.
|
|
|
|
#### Interfacce RPC notevoli
|
|
|
|
- **IFID**: 12345778-1234-abcd-ef00-0123456789ab
|
|
- **Named Pipe**: `\pipe\lsarpc`
|
|
- **Descrizione**: interfaccia LSA, utilizzata per enumerare gli utenti.
|
|
- **IFID**: 3919286a-b10c-11d0-9ba8-00c04fd92ef5
|
|
- **Named Pipe**: `\pipe\lsarpc`
|
|
- **Descrizione**: interfaccia LSA Directory Services (DS), utilizzata per enumerare domini e relazioni di fiducia.
|
|
- **IFID**: 12345778-1234-abcd-ef00-0123456789ac
|
|
- **Named Pipe**: `\pipe\samr`
|
|
- **Descrizione**: interfaccia LSA SAMR, utilizzata per accedere agli elementi del database SAM pubblici (ad es., nomi utente) e per forzare le password degli utenti indipendentemente dalla politica di blocco dell'account.
|
|
- **IFID**: 1ff70682-0a51-30e8-076d-740be8cee98b
|
|
- **Named Pipe**: `\pipe\atsvc`
|
|
- **Descrizione**: pianificatore di attività, utilizzato per eseguire comandi da remoto.
|
|
- **IFID**: 338cd001-2244-31f1-aaaa-900038001003
|
|
- **Named Pipe**: `\pipe\winreg`
|
|
- **Descrizione**: servizio di registro remoto, utilizzato per accedere e modificare il registro di sistema.
|
|
- **IFID**: 367abb81-9844-35f1-ad32-98f038001003
|
|
- **Named Pipe**: `\pipe\svcctl`
|
|
- **Descrizione**: gestore di controllo dei servizi e servizi server, utilizzati per avviare e fermare servizi da remoto ed eseguire comandi.
|
|
- **IFID**: 4b324fc8-1670-01d3-1278-5a47bf6ee188
|
|
- **Named Pipe**: `\pipe\srvsvc`
|
|
- **Descrizione**: gestore di controllo dei servizi e servizi server, utilizzati per avviare e fermare servizi da remoto ed eseguire comandi.
|
|
- **IFID**: 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57
|
|
- **Named Pipe**: `\pipe\epmapper`
|
|
- **Descrizione**: interfaccia DCOM, utilizzata per la forzatura delle password e la raccolta di informazioni tramite WM.
|
|
|
|
### Identificazione degli indirizzi IP
|
|
|
|
Utilizzando [https://github.com/mubix/IOXIDResolver](https://github.com/mubix/IOXIDResolver), proveniente da [Airbus research](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/), è possibile abusare del metodo _**ServerAlive2**_ all'interno dell'interfaccia _**IOXIDResolver**_.
|
|
|
|
Questo metodo è stato utilizzato per ottenere informazioni sull'interfaccia come indirizzo **IPv6** dalla macchina HTB _APT_. Vedi [qui](https://0xdf.gitlab.io/2021/04/10/htb-apt.html) per il writeup di 0xdf APT, che include un metodo alternativo utilizzando rpcmap.py da [Impacket](https://github.com/SecureAuthCorp/impacket/) con _stringbinding_ (vedi sopra).
|
|
|
|
### Esecuzione di un RCE con credenziali valide
|
|
|
|
È possibile eseguire codice remoto su una macchina, se sono disponibili le credenziali di un utente valido utilizzando [dcomexec.py](https://github.com/fortra/impacket/blob/master/examples/dcomexec.py) dal framework impacket.
|
|
|
|
**Ricorda di provare con i diversi oggetti disponibili**
|
|
|
|
- ShellWindows
|
|
- ShellBrowserWindow
|
|
- MMC20
|
|
|
|
## Porta 593
|
|
|
|
Il **rpcdump.exe** da [rpctools](https://resources.oreilly.com/examples/9780596510305/tree/master/tools/rpctools) può interagire con questa porta.
|
|
|
|
## Riferimenti
|
|
|
|
- [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/)
|
|
- [https://0xffsec.com/handbook/services/msrpc/](https://0xffsec.com/handbook/services/msrpc/)
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|