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 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
IPSec Policy agent endpoint
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 Kontaktadresse mit der uuID und dem Dienst.

Weitere Links