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