RPC - Remote Procedure Call
RPC steht für Remote Procedure Call und dient dazu, dass ein Client eine Verbindung zu einem bestimmten Dienst eines Servers herstellen kann. Sie können sicher das Verfahren mit TCP-Ports zu arbeiten. So erreichen Sie ihren Mailserver per SMTP auf Port 25, den POP3 Server unter 110 und den Webserver auf 80 oder per SSL auf 443. Nur ist die Anzahl der Ports natürlich auch 65535 beschränkt. Die ersten Definitionen stammen von Sun bei der Entwicklung des NFS und wurden in der RFC1057 und RFC1831 veröffentlicht. Auch Microsoft nutzt RPC als Methode, mit der eine Software eine Funktion auf einem anderen System aufrufen kann.
Der Trick bei RPC beruht darauf, dass alle Dienste einen zentralen Port als Auskunft ansprechen und den gewünschten Service anfordern. Dieser Endpointmapper teilt dem aufrufenden Prozess dann die tatsächliche Adresse der gewünschten Funktion mit, sofern diese vorhanden ist. Die SUN-Version nutzt einen RCP Portmapper auf Port 111 während Microsoft den vielfach bekannten Port 135 hierfür nutzt.
Der Einsatzbereich von RPC ist sehr weit gefasst. Hier einige Beispiele, wo RPC zum Einsatz kommt.
So funktioniert RPC
Jede Funktion, die daher RPC nutzt, muss folgende Schritt durchlaufen:
- Verbindungsaufbau mit TCP Handshake
Über drei Pakete wird eine TCP/IP-Verbindung zum Portmapper (Port 135) aufgebaut - RPC-Anforderung
Mit dem vierten Paket fordert der Client unter Angabe einer eindeutigen Kennung (uuID) eine Bindung an - RPC Antwort
Der Portmapper antwortet mit einer ACK-Bestätigung. Die Verbindung steht. Gibt es den angeforderten Dienst nicht, dann erfolgt eben eine NACK-Meldung. Das Antwortpaket kann auch Informationen darüber enthalten, ob die gewünschte Funktion auch auf einem anderen Port verfügbar ist. - RPC Anfrage und Antwort
Nun kann der Client mit dem entsprechenden Serverprozess Daten austauschen. Die Kommunikation kann weiterhin über den Portmapper aber auch über andere Kommunikationswege erfolgen. - Verbindungsabbau
Drei weitere TCP-Pakete beschließen die Verbindung geordnet.
Hier ein einfaches Beispiel eines Netzwerkmitschnitts
Hier sind sehr gut die drei Pakete TCP-Handshake am Anfang und die zwei Pakete zur Bindung zu erkennen. Die Nutzlast des Pakets4 zeigt unten die UUID, die von Packetyzer direkt in EPM für den Portmapper übersetzt wird.
Das Antwortpaket ist aber noch interessanter, da hier auch der Port angezeigt wird, auf dem der fragliche Dienst läuft:
- 159298 Analyzing Exchange RPC traffic over TCP/IP
RPC absichern
Aufgrund der Schlüsselfunktion ist natürlich der Schutz des Portmappers eine besondere Aufgabe. Sie sollten demnach nicht einen Windows Server mit Port 135 ungesichert in das Internet stellen. Das gleiche gilt natürlich auch für andere Betriebssysteme und Dienste.
Wenn Sie aber z.B. Exchange per RPC im Internet veröffentlichen wollen, dann wissen Sie nun anhand der Kommunikation auch, wie eine Firewall hier aktiv werden kann. Da jede Kommunikation immer über eine UUID erfolgt, kann eine gute Firewall bei einem Verbindungsaufbau auf Port 135 natürlich auch die angefragte UUID überprüfen und so gezielt Verbindungen sperren oder erlauben. Das kann z.B.: der ISA2004-Server.
- RPC over Internet
http://www.Microsoft.com/technet/prodtechnol/exchange/2003/library/ex2k3rpc.mspx - http://www.msisafaq.de/Anleitungen/2000/Server/Exchange_RPC.htm
- http://www.isaserver.org/articles/2004rpc.html
RPC mit PortQry analysieren
Welche RPC Endpunkte auf ihrem Server erreichbar sind, können Sie mit dem Programm PortQry.exe auslesen, welches bei Windows XP/2003 enthalten ist und auch bei Microsoft herunter laden können
Portqry.exe als Download
http://www.Microsoft.com/downloads/details.aspx?familyid=89811747-C74B-4638-A2D5-AC828BDC6983&displaylang=en
PortQueryuI mit grafische Oberfläche
http://download.Microsoft.com/download/3/f/4/3f4c6a54-65f0-4164-bdec-a3411ba24d3a/PortQryuI.exe
Auf der Kommandozeile können Sie mit folgendem Aufruf die aktuellen RPC-Endpunkte einer Gegenstelle in Erfahrung bringen und in eine Datei schreiben lassen. (Ersetzen Sie bitte 10.1.1.10 durch die gewünschte IP-Adresse)
portqry -n 10.1.1.10 -e 135 >c:\rpc-uuid.txt
Einige RPC-Endpoints
Folgende Liste ist eine unvollständige Auflistung von mir bereits gefundener RCP-Endpunkte auf Windows Servern.
uuID | Service |
---|---|
469d6ec0-0d87-11ce-b13f-00aa003bac6c |
MS Exchange System Attendant Public Interface |
83d72bf0-0d89-11ce-b13f-00aa003bac6c |
MS Exchange System Attendant Private Interface |
f930c514-1215-11d3-99a5-00a0c9b61b04 |
MS Exchange System Attendant Cluster Interface |
1544f5e0-613c-11d1-93df-00c04fd7bd09 |
MS Exchange Directory RFR Interface, DSReferral |
f5cc5a18-4264-101a-8c59-08002b2f8426 |
Active Directory Name Service Provider (NSP) Interface, DSProxy |
f5cc5a7c-4264-101a-8c59-08002b2f8426 |
Active Directory Extended Directory Service (XDS) |
a4f1db00-ca47-1067-b31e-00dd010662da |
Exchange Server STORE ADMIN Interface |
89742ace-a9ed-11cf-9c0c-08002be7ae86 |
Exchange Server STORE ADMIN Interface |
99e64010-b032-11d0-97a4-00c04fd6551d |
Exchange Server STORE ADMIN Interface |
1453c42c-0fa6-11d2-a910-00c04f990f3b |
Microsoft Information Store |
0e4a0156-dd5d-11d2-8c2f-00c04fb6bcde |
Microsoft Information Store |
10f24e8e-0fa6-11d2-a910-00c04f990f3b |
Microsoft Information Store |
a4f1db00-ca47-1067-b31f-00dd010662da |
Exchange 2003 Server STORE EMSMDB Interface |
9e8ee830-4459-11ce-979b-00aa005ffebe |
MS Exchange MTA 'MTA' Interface |
38a94e72-a9bc-11d2-8faf-00c04fa378ff |
MS Exchange MTA 'QAdmin' Interface |
f5cc59b4-4264-101a-8c59-08002b2f8426 |
NtFrs Service |
d049b186-814f-11d1-9a3c-00c04fc9b232 |
NtFrs API |
a00c021c-2be2-11d2-b678-0000f87a8f8e |
PerfFRS |
97f83d5c-1994-11d1-a90d-00c04fb960f8 |
InetInfo |
a520d06e-11de-11d2-ab59-00c04fa3590c |
InetInfo |
82ad4280-036b-11cf-972c-00aa006887b0 |
InetInfo |
8cfb5d70-31a4-11cf-a7d8-00805f48a135 |
IIS SMTP |
4f82f460-0e21-11cf-909e-00805f48a135 |
IIS NNTP |
2465e9e0-a873-11d0-930b-00a0c90ab17c |
IIS IMAP4 |
1be617c0-31a5-11cf-a7d8-00805f48a135 |
IIS POP3 |
70b51430-b6ca-11d0-b9b9-00a0c922e750 |
IMSAdminBase |
a9e69612-b80d-11d0-b9b9-00a0c922e750 |
IADMCOMSINK |
1ff70682-0a51-30e8-076d-740be8cee98b |
Taskplaner atsvc |
378e52b0-c0a9-11cf-822d-00aa0051e40f |
Taskplaner sasec |
0a74ef1c-41a4-4e06-83ae-dc74fb1cdd53 |
Taskplaner idletask |
ecec0d70-a603-11d0-96b1-00a0c91ece3 |
Active Directory backup interface |
16e0cf3a-a604-11d0-96b1-00a0c91ece30 |
Active Directory restore interface |
12345778-1234-abcd-ef00-0123456789ac |
LSASS Protected Storage |
e3514235-4b06-11d1-ab04-00c04fc2dcd2 |
MS NT Directory DRS Interface |
12345778-1234-abcd-ef00-0123456789ab |
LSASS |
12345678-1234-abcd-ef00-01234567cffb |
LSASS |
12345678-1234-abcd-ef00-0123456789ab |
Spooler Service |
906b0ce0-c70b-1067-b317-00dd010662da |
|
50abc2a4-574d-40b3-9d66-ee4fd5fba076 |
DNS Server |
bfa951d1-2f0e-11d3-bfd1-00c04fa3490a |
|
8384fc47-956a-4d1e-ab2a-1205014f96ec |
Exchange 2007 Port 1155 ? |
b4757e80-a0e4-46b4-876a-3ae4a548ee07 |
Exchange 2007 Port 1155 ? |
41f5fae1-e0ac-414c-a721-0d287466cb23 |
Exchange 2007 Port 1155 ? |
bd5790c9-d855-42b0-990f-3dfed8c184b3 |
Exchange 2007 Port 1155 ? |
e1af8308-5d1f-11c9-91a4-08002b14a0fa |
RPC Endpoint Mapper |
1cbcad78-df0b-4934-b558-87839ea501c9 |
Active Directory DSRole Interface (Ab Windows 2003) |
7c44d7d4-31d5-424c-bd5e-2b3e1f323d22 |
Active Directory dsaop Interface (Ab Windows 2003) |
6bffd098-a112-3610-9833-012892020162 |
Computer Browser |
9b8699ae-0e44-47b1-8e7f-86a461d7ecdc |
DCOM Server Process Launcher |
4fc742e0-4a10-11cf-8273-00aa004ae673 |
DFS |
68dcd486-669e-11d1-ab0c-00c04fc2dcd2 |
Inter-site Messaging service |
130ceefb-e466-11d1-b78b-00c04fa32883 |
Active Directory ISM IP Transport |
fdb3a030-065f-11d1-bb9b-00a024ea5525 v1.0 |
Message Queuing and Distributed Transaction Coordinator qmcomm |
76d12b80-3467-11d3-91ff-0090272f9ea3 v1.0 |
Message Queuing and Distributed Transaction Coordinator qmcomm2 |
1088a980-eae5-11d0-8d9b-00a02453c337 v1.0 |
Message Queuing and Distributed Transaction Coordinator qm2qm |
5b5b3580-b0e0-11d1-b92d-0060081e87f0 v1.0 |
Message Queuing and Distributed Transaction Coordinator qmrepl |
41208ee0-e970-11d1-9b9e-00e02c064c39 v1.0 |
Message Queuing and Distributed Transaction Coordinator |
906b0ce0-c70b-1067-b317-00dd010662da |
MS DTC OLE Transactions interface proxy |
17fdd703-1827-4e34-79d4-24a55c53bb37 |
Messenger service |
5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc |
Messenger service |
2f5f3220-c126-1076-b549-074d078619da |
NetDDE |
d6d70ef0-0e3b-11cb-acc3-08002b1d29c3 |
RPC locator service NsiS |
d3fbb514-0e3b-11cb-8fad-08002b1d29c3 |
NsiC |
d6d70ef0-0e3b-11cb-acc3-08002b1d29c4 |
NsiM |
86d35949-83c9-4044-b424-db363231fd0c |
Taskplaner ITaskSchedulerService (Seit Vista) |
45f52c28-7f9f-101a-b52b-08002b2efabe |
WINS |
811109bf-a4e1-11d1-ab54-00a0c91e9b45 |
WINS |
8c7daf44-b6dc-11d1-9a4c-0020af6e7c57 |
Application Management service |
91ae6020-9e3c-11cf-8d7c-00aa00c091be |
Zertifikatsdienst |
e67ab081-9844-3521-9d32-834f038001c0 |
Client Services für NetWare |
8d0ffe72-d252-11d0-bf8f-00c04fd9126b |
Cryptoservices IKeySvc |
68b58241-c259-4f03-a2e5-a2651dcbc930 |
Cryptoservices IKeySvc2 |
0d72a7d4-6148-11d1-b4aa-00c04fb66ea0 |
Cryptoservices ICertProtect |
f50aac00-c7f3-428e-a022-a6b71bfb9d43 |
Cryptoservices ICatDBSvc |
3c4728c5-f0ab-448b-bda1-6ce01eb0a6d5 |
DHCP Client LRPC Endpoint DNSResolver |
3c4728c5-f0ab-448b-bda1-6ce01eb0a6d6 |
DHCP Server dhcpcsvc6 |
6bffd098-a112-3610-9833-46c3f874532d |
DHCP Server dhcpsrv |
5b821720-f63b-11d0-aad2-00c04fc324db |
DHCP Server dhcpsrv2 |
300f3532-38cc-11d0-a3f0-0020af6b0add |
Distributed Link Tracking Client service |
4da1c422-943d-11d1-acae-00c04fc2aa3f |
Distributed Link Tracking Client service |
65a93890-fab9-43a3-b2a5-1e330ac28f11 |
DNS Client Service (Bis 2000) |
45776b01-5956-4485-9f80-f428f7d60129 |
DNS Client Service (XP und später) |
c681d488-d850-11d0-8c52-00c04fd90f7e |
EFS |
ea0a3165-4834-11d2-a6f8-00c04fa346cc |
Fax Service |
4b324fc8-1670-01d3-1278-5a47bf6ee188 |
File Server für Macintosh |
d335b8f6-cb31-11d0-b0f9-006097ba4e54 |
IPSec Policy Agent |
57674cd0-5200-11ce-a897-08002b2e9c6d |
License Logging service |
342cfd40-3c6c-11ce-a893-08002b2e9c6d |
License Logging service |
3f99b900-4d87-101b-99b7-aa0004007f07 |
Microsoft SQL Server über RPC |
c9378ff1-16f7-11d0-a0b2-00aa0061426a |
Protected storage service IPStoreProv |
11220835-5b26-4d94-ae86-c3e475a809de |
Protected storage service ICryptProtect |
5cbe92cb-f4be-45c9-9fc9-33e73e557b20 |
Protected storage service PasswordRecovery |
3dde7c30-165d-11d1-ab8f-00805f14db40 |
Protected storage service BackupKey |
8f09f000-b7ed-11ce-bbd2-00001a181cad |
Routing and Remote Access service |
12b81e99-f207-4a4c-85d3-77b42f76fd14 |
Secondary Logon service |
93149ca2-973b-11d1-8c39-00c04fb984f9 |
Security Configuration Editor Engine |
4b112204-0e19-11d3-b42b-0000f81feb9f |
SSDP Discovery Service service |
63fbe424-2029-11d1-8db8-00aa004abd5e |
System Event Notification service SensApi |
629b9f66-556c-11d1-8dd2-00aa004abd5e |
System Event Notification service SENSNotify |
2f5f6520-ca46-1067-b319-00dd010662da |
Telephony service TAPI |
2f59a331-bf7d-48cb-9ec5-7c090d76e8b8 |
Terminal Server Service |
5ca4a760-ebb1-11cf-8611-00a0245420ed |
Terminal Server Service winstation |
c8cb7687-e6d3-11d2-a958-00c04f682e16 |
WebClient DAV-Service WebDAV |
3faf4738-3a21-4307-b46c-fdda9bb8c0d5 |
Windows Audio Service audiosrv |
c386ca3e-9061-4a72-821e-498d83be188f |
Windows Audio Service Audiorpc |
83da7c00-e84f-11d2-9807-00c04f8ec850 |
Windows File Protection SFC |
06bba54a-be05-49f9-b0a0-30f790261023 |
Windows Security Center |
8fb6d884-2388-11d0-8c35-00c04fda2795 |
Windows Time w32time |
894de0c0-0d55-11d3-a322-00c04fa321a1 |
WinLogon InitShutdown |
369ce4f0-0fdc-11d3-bde8-00c04f8eee78 |
Winlogon Profile Mapper pmapapi |
a002b3a0-c9b7-11d1-ae88-0080c75e4ec1 |
Winlogon GetUserToken |
95958c94-a424-4055-b62b-b7f4d5c47770 |
Winlogon IRPCSCLogon (ab 2003) |
4825ea41-51e3-4c2a-8406-8f2d2698395f |
Winlogon IProfileDialog (ab 2003) |
326731e3-c1c0-4a69-ae20-7d9044a4ea5c |
Winlogon IUserProfile (ab 2003) |
621dff68-3c39-4c6c-aae3-e68e2c6503ad |
Windows Wireless Configuration |
2f5f6521-cb55-1059-b446-00df0bce31db |
unimodem LRPC Endpoint |
3473dd4d-2e88-4006-9cba-22570909dd1 |
WinHttp Auto-Proxy Service |
|
|
Ich nehme gerne weitere interessante uuIDs auf. Wenn Sie mit PORTQRY ihren Server auslesen und Dienste installiert haben, die hier noch nicht geführt werden, dann reicht eine kurze Mail an mit der uuID und dem Dienst.
Weitere Links
- Clientkommunikation
- RPC over HTTP
- 159298 Analyzing Exchange RPC traffic over TCP/IP
- 310298 How to use Portqry.exe to Troubleshoot Microsoft Exchange Server Connectivity Issues
- 325930 How to troubleshoot connectivity issues that are caused by RPC client protocol registry entries
- 831051 How to use the RPC Ping utility to troubleshoot connectivity issues with the Exchange over the Internet feature in Outlook 2003
- 839880 How to troubleshoot RPC Endpoint Mapper errors
- http://de.wikipedia.org/wiki/Remote_Procedure_Call
- Know-how: Kommunikation mit Remote Procedure Calls
http://www.tecchannel.de/entwicklung/programmierung/402428/index3.html - Universally unique Identifier
http://de.wikipedia.org/wiki/uuID - Windows services MSRPC interfaces
http://www.hsc.fr/ressources/articles/win_net_srv/services_msrpc_if.html
Exchange RPC services
http://www.hsc.fr/ressources/articles/win_net_srv/msrpc_exchange.html
Exchange RPC services in Active Directory domains
http://www.hsc.fr/ressources/articles/win_net_srv/msrpc_exchange_ad.html
Enthält weitere Details zu den unterfunktionen von Exchange RPC - Fingerprinting Through RPC
www.blackhat.com/presentations/win-usa-04/bh-win-04-seki-up2.pdf