hacktricks/network-services-pentesting/135-pentesting-msrpc.md
2023-06-03 13:10:46 +00:00

10 KiB
Raw Blame History

Informations de base

Microsoft Remote Procedure Call, également connu sous le nom d'appel de fonction ou d'appel de sous-routine, est un protocole qui utilise le modèle client-serveur pour permettre à un programme de demander un service à un programme sur un autre ordinateur sans avoir à comprendre les détails du réseau de cet ordinateur. MSRPC a été initialement dérivé d'un logiciel open source mais a été développé davantage et protégé par des droits d'auteur par Microsoft.

Selon la configuration de l'hôte, le gestionnaire de point de terminaison RPC peut être accessible via les ports TCP et UDP 135, via SMB avec une session nulle ou authentifiée (TCP 139 et 445), et en tant que service Web écoutant sur le port TCP 593.

135/tcp   open     msrpc         Microsoft Windows RPC

Comment fonctionne MSRPC?

Le processus MSRPC commence côté client, avec l'application cliente appelant une procédure locale de stub au lieu du code implémentant la procédure. Le code stub client récupère les paramètres requis de l'espace d'adressage client et les transmet à la bibliothèque d'exécution client, qui traduit ensuite les paramètres dans un format standard de représentation de données réseau pour les transmettre au serveur.

Le stub client appelle ensuite des fonctions dans la bibliothèque d'exécution client RPC pour envoyer la demande et les paramètres au serveur. Si le serveur est situé à distance, la bibliothèque d'exécution spécifie un protocole de transport approprié et un moteur et transmet le RPC à la pile réseau pour le transport vers le serveur.
À partir de là: https://www.extrahop.com/resources/protocols/msrpc/

Image du livre "Network Security Assesment 3rd Edition"

Identification des services RPC exposés

Vous pouvez interroger le service de localisation RPC et les points de terminaison RPC individuels pour cataloguer les services intéressants s'exécutant sur TCP, UDP, HTTP et SMB (via des pipes nommés). Chaque valeur IFID recueillie par ce processus désigne un service RPC (par exemple, 5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc est l'interface Messenger).

Les utilitaires Windows rpcdump et ifids de Todd Sabin interrogent à la fois le service de localisation RPC et les points de terminaison RPC spécifiques pour répertorier les valeurs IFID. La syntaxe de rpcdump est la suivante:

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]

Vous pouvez accéder au service RPC locator en utilisant quatre séquences de protocoles :

  • ncacn_ip_tcp et ncadg_ip_udp (port TCP et UDP 135)
  • ncacn_np (le pipe nommé \pipe\epmapper via SMB)
  • ncacn_http (RPC sur HTTP via le port TCP 80, 593 et autres)
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

Notez que de toutes les options mentionnées, seule tcp_dcerpc_auditor ne peut être exécutée que contre msrpc sur le port 135.

Interfaces RPC notables

Valeur IFID Named pipe Description
12345778-1234-abcd-ef00-0123456789ab \pipe\lsarpc Interface LSA, utilisée pour énumérer les utilisateurs
3919286a-b10c-11d0-9ba8-00c04fd92ef5 \pipe\lsarpc Interface LSA Directory Services (DS), utilisée pour énumérer les domaines et les relations de confiance
12345778-1234-abcd-ef00-0123456789ac \pipe\samr Interface LSA SAMR, utilisée pour accéder aux éléments publics de la base de données SAM (par exemple, les noms d'utilisateur) et pour forcer les mots de passe des utilisateurs indépendamment de la politique de verrouillage de compte bibliothèque Oreilly
1ff70682-0a51-30e8-076d-740be8cee98b \pipe\atsvc Planificateur de tâches, utilisé pour exécuter des commandes à distance
338cd001-2244-31f1-aaaa-900038001003 \pipe\winreg Service de registre à distance, utilisé pour accéder au registre système
367abb81-9844-35f1-ad32-98f038001003 \pipe\svcctl Gestionnaire de services et services de serveur, utilisé pour démarrer et arrêter des services à distance et exécuter des commandes
4b324fc8-1670-01d3-1278-5a47bf6ee188 \pipe\srvsvc Gestionnaire de services et services de serveur, utilisé pour démarrer et arrêter des services à distance et exécuter des commandes
4d9f4ab8-7d1c-11cf-861e-0020af6e7c57 \pipe\epmapper Interface DCOM, prenant en charge WMI

Identification des adresses IP

En utilisant https://github.com/mubix/IOXIDResolver, qui provient de la recherche d'Airbus, il est possible d'abuser de la méthode ServerAlive2 à l'intérieur de l'interface IOXIDResolver.

Cette méthode a été utilisée pour obtenir des informations d'interface telles que l'adresse IPv6 de la boîte HTB APT. Voir ici pour le writeup APT de 0xdf, qui inclut une méthode alternative utilisant rpcmap.py de Impacket avec stringbinding (voir ci-dessus).

Références :

Port 593

Le rpcdump.exe de rpctools peut interagir avec ce port.

Suivez HackenProof pour en savoir plus sur les bugs web3

🐞 Lisez les tutoriels sur les bugs web3

🔔 Soyez informé des nouveaux programmes de primes pour bugs

💬 Participez aux discussions de la communauté

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥