DCOM ist ein Programmierkonstrukt, das es einem Computer ermöglicht, Programme über das Netzwerk auf einem anderen Computer auszuführen, als ob das Programm lokal ausgeführt würde. DCOM ist ein Akronym, das für Distributed Component Object Modell steht. DCOM ist eine proprietäre Microsoft-Softwarekomponente, die es COM-Objekten ermöglicht, über das Netzwerk miteinander zu kommunizieren.

Distributed Component Object Model (DCOM)

Als Erweiterung von COM löst DCOM einige inhärente Probleme mit dem COM-Modell, um die Nutzung über ein Netzwerk zu verbessern:

Marshalling: Das Marshalling löst die Notwendigkeit, Daten von einer COM-Objektinstanz an eine andere aauf einem anderen Computer zu übergeben – programmiertechnisch gesehen nennt man das „Passing Arguments“. Wenn wir z.B. den Nachnamen Müller haben wollen, müssen wir das COM-Objekt LastName mit dem Argument von Mueller aufrufen. Die Nachname-Funktion würde einen Remote Procedure Call (RPC) verwenden, um das andere COM-Objekt auf dem Zielserver nach dem Rückgabewert für LastName(Mueller) zu fragen und sie würde die Antwort Beeblebrox zurück an das erste COM-Objekt senden.

Distrbuted Garbage Collection: Die Distributed Garbage Collection wurde speziell für die Skalierung von DCOM entwickelt, um den hochvolumigen Internettraffic zu unterstützen, und befasst sich auch mit der Möglichkeit, abgeschlossene oder aufgegebene DCOM-Objekte zu zerstören und zurückzugewinnen, um zu vermeiden, dass der Speicher auf Webservern zerstört wird. Im Gegenzug kommuniziert es mit den anderen Servern in der Transaktionskette, um Ihnen mitzuteilen, dass sie die mit einer Transaktion verbundenen Objekte loswerden können.

Verwendung von DCE/RPC als zugrundeliegenden RPC-Mechanismus: Um die vorherigen Punkte zu erreichen und zu skalieren, um den hochvolumigen Webtraffic zu unterstützen, implementierte Microsoft DCE/RPC als Basistechnologie für DCOM – woher das D in DCOM kam.

Wie funktioniert DCOM?

Damit DCOM funktioniert, muss das COM-Objekt auf beiden Computern korrekt konfiguriert sein – nach unserer Erfahrung waren sie es selten und Sie mussten die Objekte mehrmals deinstallieren und neu installieren, damit sie funktionieren.

Die Windows-Registry enthält die DCOM-Konfigurationsdaten in 3 Identifikatoren:

  • CLSID – Der Class Identifier (CLSID) ist eine Global Uniquer Identifier (GUID). Windows speichert für jede installierte Klasse in einem Programm eine CLSID. Wenn Sie eine Klasse ausführen müssen, benötigen Sie die richtige CLSID, damit Windows weiß, wohin es geht und das Programm findet.
  • PROGID – Der Programmatic Identifier (PROGID) ist ein optionaler Identifikator, den ein Programmierer durch die kompliziertere und strengere CLSID ersetzen kann. PROGIDs sind in der Regel leicher zu lesen und zu verstehen. Eine grundlegende PROGID für unser vorheriges Beispiel könnte Hitchiker.LastName sein. Es gibt keine Einschränkungen, wie viele PROGIDs den gleichen Namen haben können, was gelegentlich zu Problemen führt.
  • APPID – Der Application Identifier (APPID) identifiziert alle Klassen, die Teil derselben ausführbaren Datei sind und die erforderlichen Berechtigungen für den Zugriff darauf. DCOM kann nicht funktionieren, wenn die APPID nicht korrekt ist. Sie werden wahrscheinlich Berechtigungsfehler erhalten, wenn Sie versuchen, das Remote-Objekt zu erstellen.

Eine einfache DCOM-Transaktion sieht so aus:

  1. Der Client-Computer fordert den Remote-Computer auf, ein Objekt über seine CLSID oder PROGID zu erstellen. Wenn der Client die APPID übergibt, sucht der entfernte Computer die CLSID mit der PROGID.
  2. Der entfernte Rechner überprüft die APPD und checkt, ob der Client über Berechtigungen zum Erstellen des Objekts verfügt.
  3. DCOMLaunch.exe (wenn eine exe) oder DLLHOST.exe (wenn eine dll) erstellt eine Instanz der Klasse, die der Client-Computer angefordert hat.
  4. Kommunikation ist erfolgreich.
  5. Der Client kann nun auf alle Funktionen der Klasse auf dem entfernten Computer zugreifen.

Wenn die APPID nicht korrekt konfiguriert ist oder der Client nicht über die richtigen Berechtigungen verfügt oder die CLSID auf eine alte Version der exe oder eine andere Anzahl von Problemen zeigt, erhalten Sie wahrscheinlich die unbeliebte Meldung „Can`t create Object“.

DCOM vs. CORBA.

Common Object Request Broker Architecture (CORBA) ist eine JAVA-basierte Anwendung und funktioniert im Wesentlichen wie DCOM. Im Gegensatz zu DCOM ist CORBA nicht an ein bestimmtes Betriebssystem (OS) gebunden und arbeitet auf UNIX, Linux, SUN, OS X und anderen UNIX-basierten Plattformen.

Weder erwiesen sie sich als sicher noch skalierbar genug, um ein Standard für hochvolumigen Webtraffic zu werden. DCOM und CORBA arbeiteten mit Firewalls nicht gut zusammen, so dass HTTP zum Standard-Protokoll für das Internet wurde.

Warum ist DCOM notwendig?

DCOM hat den Kampf nicht gewonnen, das Standardprotokoll für das Internet zu werden, aber es bleibt in das Windows-Betriebssystem integriert und stellt die Anzahl der Windows-Dienste dar, die kommunizieren – wie die Microsoft Management Console (MMC).

Da DCOM Programme auf anderen Computern ausführen kann, können Hacker es für Angriffe mit seitlichen Bewegungen über Ihr Netzwerk nutzen und so Zugriff auf mehr Daten erhalten. Diese Aktivität kann schwer zu erkennen sein, da es sich nicht um Malware oder Hacker-Tools handelt: Alles, was für den Zugriff auf DCOM erforderlich ist, ist PowerShell.

Vielen Dank für Ihren Besuch.