Cet article TechNet est fantastique, je vous recommande de le mettre en signet. Il répertorie les ports utilisés par différents services Windows et est assez complet.
Dans les versions de Windows antérieures à vista/2008, NetBIOS était utilisé pour le service "RPC Locator", qui gérait la base de données du service de nom RPC. Mais dans Vista/2008 et au-delà, le service de localisateur RPC n'est plus nécessaire ou utile. C'est vestigiel. À partir de ce point, je vais uniquement parler de MSRPC sur Vista/2008+.
Les ports 137, 138 et 139 sont pour le NetBIOS, et ne sont pas nécessaires pour la fonctionnalité de MSRPC.
Tous les ports utilisés par RPC sont les suivants :
RPC EPM TCP 135
RPC sur HTTPS TCP 593
SMB (pour les canaux nommés) TCP 445
Plage éphémère, Dynamique *
D'autres applications, comme Remote Desktop Gateway, utiliseront un proxy RPC sur HTTP et utiliseront le port 443, etc.
Bien que l'article que j'ai lié ci-dessus répertorie les ports NetBIOS, ceux-ci sont obsolètes et ne sont pas nécessaires pour RPC, en supposant que vous puissiez obtenir une résolution de nom par d'autres moyens (DNS,) et en supposant que le service distant lui-même ne dépend pas du NetBIOS.
Le port 145 est bidon. Il n'est utilisé à rien. Partout où vous avez entendu qu'il "améliore les choses", c'est incorrect.
Le MSRPC de base utilise les ports 135 et la plage dynamique des numéros élevés. Cette plage dynamique des numéros élevés est les ports 1024-5000 sur XP/2003 et en dessous, et 49152-65535 sur Vista/2008 et au-dessus. Vous pouvez aussi appeler cette plage de ports éphémères.
Vous pouvez définir une plage de ports personnalisée si vous le souhaitez, comme ceci :
reg add HKLM\SOFTWARE\Microsoft\Rpc\Internet /v Ports /t REG_MULTI_SZ /f /d 8000-9000
reg add HKLM\SOFTWARE\Microsoft\Rpc\Internet /v PortsInternetAvailable /t REG_SZ /f /d Y
reg add HKLM\SOFTWARE\Microsoft\Rpc\Internet /v UseInternetPorts /t REG_SZ /f /d Y
Et/ou
netsh int ipv4 set dynamicport tcp start=8000 num=1001
netsh int ipv4 set dynamicport udp start=8000 num=1001
netsh int ipv6 set dynamicport tcp start=8000 num=1001
netsh int ipv6 set dynamicport udp start=8000 num=1001
Le port TCP 135 est le gestionnaire de point d'accès MSRPC. Vous pouvez vous connecter à ce port sur un ordinateur distant, de manière anonyme, et soit énumérer tous les services (points d'accès) disponibles sur cet ordinateur, soit demander sur quel port un service spécifique est en cours d'exécution si vous savez ce que vous cherchez.
Laissez-moi vous montrer un exemple de requête au gestionnaire de point d'accès RPC :
C:\>PortQry.exe -n 192.168.1.1 -e 135
Interrogation du système cible appelé :
192.168.1.1
Tentative de résolution de l'adresse IP à un nom...
Adresse IP résolue en host01.labs.myotherpcisacloud.com
interrogation...
Port TCP 135 (service epmap) : ÉCOUTE
En utilisant un port source éphémère
Interrogation de la base de données du gestionnaire de points de terminaison...
Réponse du serveur :
UUID: d95afe70-a6d5-4259-822e-2c84da1ddb0d
ncacn_ip_tcp:192.168.1.1[49152]
UUID: 12345778-1234-abcd-ef00-0123456789ac
ncacn_np:192.168.1.1[\\pipe\\lsass]
UUID: 12345778-1234-abcd-ef00-0123456789ac
ncacn_ip_tcp:192.168.1.1[49159]
UUID: 6b5bdd1e-528c-422c-af8c-a4079be4fe48 Remote Fw APIs
ncacn_ip_tcp:192.168.1.1[49158]
UUID: 367abb81-9844-35f1-ad32-98f038001003
ncacn_ip_tcp:192.168.1.1[49157]
UUID: 12345678-1234-abcd-ef00-0123456789ab
ncacn_ip_tcp:192.168.1.1[49155]
UUID: 0b6edbfa-4a24-4fc6-8a23-942b1eca65d1
ncacn_ip_tcp:192.168.1.1[49155]
UUID: ae33069b-a2a8-46ee-a235-ddfd339be281
ncacn_ip_tcp:192.168.1.1[49155]
UUID: 4a452661-8290-4b36-8fbe-7f4093a94978
ncacn_ip_tcp:192.168.1.1[49155]
UUID: 76f03f96-cdfd-44fc-a22c-64950a001209
ncacn_ip_tcp:192.168.1.1[49155]
UUID: 7f1343fe-50a9-4927-a778-0c5859517bac Service DfsDs
ncacn_np:192.168.1.1[\\PIPE\\wkssvc]
UUID: 3473dd4d-2e88-4006-9cba-22570909dd10 Service de proxy automatique WinHttp
ncacn_np:192.168.1.1[\\PIPE\\W32TIME_ALT]
UUID: 1ff70682-0a51-30e8-076d-740be8cee98b
ncacn_np:192.168.1.1[\\PIPE\\atsvc]
...
Total des points d'accès trouvés : 50
==== Fin de la réponse de la requête au gestionnaire de points de terminaison RPC ====
Vous remarquerez que si vous effectuez cette requête sur l'ordinateur local, vous trouverez beaucoup plus de points d'accès que si vous effectuez la requête depuis un ordinateur distant. C'est parce que de nombreux points finaux RPC ne sont pas exposés à distance et ne sont utilisés que pour la communication interprocessus locale.
Lecture complémentaire : http://technet.microsoft.com/fr-fr/library/cc738291(v=WS.10).aspx
Et aussi : https://www.myotherpcisacloud.com/post/2014/02/16/verifying-rpc-network-connectivity-like-a-boss.aspx