Wat is DCOM?
DCOM (Distributed Component Object Model) is een Microsoft-technologie waarmee softwarecomponenten op verschillende Windows-computers elkaar via het netwerk aanroepen alsof ze lokaal draaien, op basis van het Component Object Model (COM) en Remote Procedure Calls (RPC). Binnen OT en Industriële Automatisering werd DCOM vanaf 1996 de transportlaag voor OPC DA en de rest van OPC Classic. Daarmee wisselden SCADA, HMI, historians en PLC-drivers jarenlang procesdata uit. Door lastig firewallbeheer, security-zwaktes en beperkte schaalbaarheid wordt DCOM in moderne OT-convergentie-architecturen vervangen door OPC UA, MQTT en webgebaseerde API’s.
🧠 Hoe verhouden COM en DCOM zich tot elkaar?
COM is het objectmodel van Windows waarmee een programma een softwarecomponent aanroept via een vaste interface, los van de programmeertaal. Een COM-object draait in hetzelfde proces of in een ander proces op dezelfde computer. DCOM, eerst Network OLE genoemd, breidt dat uit naar andere computers. Microsoft leverde DCOM mee met Windows NT 4.0 in 1996; in september dat jaar verscheen ook een bètaversie voor Windows 95.
Voor de programmeur verandert er weinig: de client vraagt een object op en roept methoden aan, terwijl DCOM onder de motorkap de aanroep verpakt (marshaling), via RPC over het netwerk stuurt en het antwoord terugbrengt. RPC is afgeleid van de OSF DCE RPC-standaard met Microsoft-uitbreidingen.
| Laag | Rol | Voorbeeld in OT |
|---|---|---|
| COM-object | Component met vaste interfaces | OPC DA-server van een PLC-leverancier |
| DCOM | Objectactivatie en marshaling over het netwerk | SCADA-client op een andere computer |
| RPC | Transport van aanroepen | MSRPC over TCP |
| Endpoint Mapper (RPCSS) | Vertelt de client op welke poort de server luistert | TCP 135 |
| Securitylaag | Authenticatie en autorisatie | Windows-accounts, NTLM, Kerberos, Active Directory |
🔧 Hoe verloopt een DCOM-verbinding?
Een DCOM-verbinding tussen een OPC-client en een OPC-server op een andere computer doorloopt deze stappen:
- Activatieverzoek - de client vraagt de RPCSS-service van de server via TCP-poort 135 om het object (aangeduid met een CLSID) te starten of te koppelen.
-
Controle van rechten - de server controleert de Launch and Activation
Permissions en Access Permissions uit
dcomcnfgtegen het account van de client. - Poorttoewijzing - de Endpoint Mapper geeft een dynamische poort terug waarop het object luistert.
- Objectreferentie - de client krijgt een gemarshalde referentie met daarin het echte IP-adres van de server.
- Aanroepen en callbacks - de client roept methoden aan; bij OPC DA stuurt de server waardewijzigingen terug via een callback. Daarvoor wordt de client zelf een DCOM-server en loopt er ook verkeer van server naar client.
Die laatste twee stappen verklaren de meeste problemen in de praktijk. Omdat het IP-adres in de referentie zit, werkt DCOM niet door netwerkadresvertaling (NAT). Omdat callbacks de andere kant op lopen, moet de firewall in beide richtingen open.
🧩 Waarom werd DCOM de standaard in OT?
In de jaren negentig was Windows het dominante platform voor SCADA-, HMI- en historiansoftware. DCOM zat standaard in het besturingssysteem en gaf leveranciers een kant-en-klare manier om componenten over het netwerk te koppelen. De OPC Foundation koos het daarom in 1996 als basis voor OPC DA.
| Eigenschap | Voordeel destijds | Nadeel nu |
|---|---|---|
| Gestandaardiseerde interfaces | Leveranciersonafhankelijke koppelingen via OPC | Vast aan het COM-model en Windows |
| Integratie met Windows | Geen extra middleware, gebruik van Windows-accounts | Complex rechtenbeheer in dcomcnfg |
| Transparante netwerkaanroepen | Minder netwerkcode in de applicatie | Netwerkproblemen zijn moeilijk te diagnosticeren |
| Lage overhead binnen één LAN | Goede prestaties op een lokaal procesnetwerk | Gevoelig voor latency en time-outs over een WAN |
| Sessies met objectreferenties | Directe callbacks bij waardewijzigingen | Lastig te schalen en niet door NAT |
⚡ Welke poorten gebruikt DCOM?
DCOM begint altijd op TCP-poort 135 en schakelt daarna over naar een dynamische poort. Sinds Windows Vista en Windows Server 2008 ligt die standaard tussen 49152 en 65535; oudere versies zoals Windows XP en Server 2003 gebruikten 1025 tot 5000.
| Onderdeel | Poort | Opmerking |
|---|---|---|
| RPC Endpoint Mapper | TCP 135 | Altijd nodig voor activatie |
| Dynamische RPC-poorten (Vista/2008 en nieuwer) | TCP 49152-65535 | Standaardbereik, in te perken |
| Dynamische RPC-poorten (XP/2003 en ouder) | TCP 1025-5000 | Komt nog voor op legacy-stations |
| Callback van OPC-server naar client | Dynamische poort op de client | Firewall moet ook deze richting toestaan |
| NAT tussen client en server | Niet ondersteund | IP-adres zit in de objectreferentie |
Het bereik is in te perken via de registersleutel HKLM\Software\Microsoft\Rpc\Internet met de
waarden Ports (bijvoorbeeld 5000-5100), PortsInternetAvailable en UseInternetPorts op Y, gevolgd door een herstart. Microsoft adviseert poorten boven
5000 en minimaal 100 poorten, omdat ook systeemdiensten deze RPC-poorten gebruiken. Een te krap bereik
leidt tot poortuitputting.
🔐 Hoe is het securitymodel van DCOM opgebouwd?
DCOM gebruikt de Windows-beveiliging. Per toepassing (AppID) of systeembreed stelt u in dcomcnfg in wie een object mag starten en gebruiken. Daarnaast bepalen twee niveaus hoe sterk een
verbinding beschermd is:
- Authenticatieniveau - van None (1) via Connect, Call en Packet tot Packet Integrity (5) en Packet Privacy (6). Packet Privacy versleutelt de RPC-inhoud, maar in OPC-installaties stond het niveau vaak laag of zelfs op None.
- Impersonatieniveau - Anonymous, Identify, Impersonate of Delegate: hoeveel de server mag doen namens de identiteit van de client.
Leveranciershandleidingen raadden lange tijd aan om het authenticatieniveau op None te zetten en Everyone of ANONYMOUS LOGON rechten te geven, vooral in werkgroepen zonder domein. Dat maakte OPC werkend, maar liet ook iedereen op het netwerk de OPC-server bedienen.
⚠️ Welke cybersecurityrisico’s brengt DCOM mee?
DCOM werd ontworpen voor geïsoleerde, vertrouwde netwerken, lang voordat cybersecurity in OT een thema was. Met de koppeling van kantoor- en procesnetwerken werd het een bekend aanvalspad:
- Kwetsbaarheden in RPCSS - MS03-026 (juli 2003) was een buffer overflow in de DCOM-activatie-interface waarmee een aanvaller via poort 135 code met LocalSystem-rechten kon uitvoeren op Windows NT 4.0 tot en met Server 2003. De Blaster-worm misbruikte dit vanaf augustus 2003 op grote schaal.
- Laterale beweging - MITRE ATT&CK beschrijft DCOM als techniek T1021.003: met geldige beheerdersaccounts starten aanvallers op afstand objecten zoals MMC20.Application of Excel om code uit te voeren.
- Zwakke configuratie - anonieme toegang, gedeelde lokale accounts met hetzelfde wachtwoord op elk station en uitgeschakelde Windows Firewall.
- Groot aanvalsoppervlak - een breed geopend dynamisch poortbereik maakt netwerksegmentatie in feite waardeloos.
🛡️ Wat betekent de DCOM-hardening KB5004442 voor OT?
Met KB5004442 (CVE-2021-26414) eist Microsoft dat DCOM-activatieverzoeken minimaal het niveau Packet Integrity gebruiken. De wijziging kwam in drie fasen:
| Fase | Datum | Status |
|---|---|---|
| 1 | 8 juni 2021 | Hardening standaard uit, via register aan te zetten |
| 2 | 14 juni 2022 | Standaard aan, via register nog uit te zetten |
| 3 | 14 maart 2023 | Altijd aan, niet meer uit te schakelen |
De tijdelijke registerwaarde was RequireIntegrityActivationAuthenticationLevel onder HKLM\SOFTWARE\Microsoft\Ole\AppCompat. Windows-clients met de cumulatieve updates vanaf januari
2023 verhogen het niveau van niet-anonieme activatieverzoeken automatisch naar Packet Integrity.
OPC-clients op ongepatchte of niet meer ondersteunde Windows-versies, zoals Windows XP of een niet
bijgewerkte Windows 7-machine, en DCOM-implementaties van derden die dat niet doen, worden door een
bijgewerkte server geweigerd. Controleer bij storingen het System-logboek: event-ID 10036 op de server en
10037 of 10038 op de client.
🏭 Hoe beveiligt u een bestaande DCOM-omgeving?
Veel legacy-systemen zijn niet op korte termijn te vervangen vanwege leveranciersbinding, oude PLC-drivers, validatie-eisen en productiecontinuïteit. Een praktische hardening-aanpak:
- Inventariseer alle DCOM-stromen: welke OPC-clients praten met welke servers, over welke subnetten en Purdue-niveaus.
- Houd DCOM binnen één zone en laat het nooit de DMZ of het kantoornetwerk kruisen. Leg verbindingen tussen zones vast in de segmentatie-architectuur volgens IEC 62443.
- Perk het RPC-poortbereik in en sta op een industriële firewall alleen poort 135 en dat bereik toe, tussen vaste IP-adressen en in beide richtingen. Sommige firewalls kunnen RPC filteren op interface-UUID: ze lezen het antwoord van de Endpoint Mapper mee en openen alleen de poort voor die ene interface.
-
Gebruik domeinaccounts of dedicated serviceaccounts met minimale rechten, verwijder Everyone en ANONYMOUS LOGON uit
dcomcnfgen zet het authenticatieniveau op minimaal Packet Integrity. - Patch de Windows-stations via patchmanagement en test na elke update de OPC-koppelingen.
- Monitor DCOM-verkeer met logging en security monitoring: een onverwachte DCOM-aanroep naar poort 135, gevolgd door een nieuw proces, is een klassiek teken van laterale beweging.
- Vervang netwerk-DCOM waar mogelijk door een lokale OPC-tunnel of een OPC UA-wrapper, zodat DCOM alleen nog op één computer draait.
NIST SP 800-82 en IEC 62443 geven hiervoor het kader; voor organisaties onder NIST CSF of andere compliance-eisen hoort zo’n legacy-uitzondering ook in het risicoregister.
🔄 Wat is het verschil tussen DCOM en OPC UA?
OPC UA verscheen in 2006 als opvolger van OPC Classic en lost de grootste DCOM-problemen op: het is platformonafhankelijk, werkt over één vaste TCP-poort (standaard 4840) en heeft een eigen securitymodel met certificaten.
| Eigenschap | DCOM / OPC DA | OPC UA |
|---|---|---|
| Platform | Alleen Windows | Windows, Linux, embedded, cloud |
| Poorten | 135 plus dynamisch bereik, ook richting client | Eén vaste poort, verbinding opgezet door client |
| NAT | Werkt niet | Werkt |
| Authenticatie | Windows-accounts | X.509-certificaten en gebruikersaccounts |
| Versleuteling | Optioneel (Packet Privacy), in de praktijk zelden aan | Sign en SignAndEncrypt per securitybeleid |
| Informatiemodel | Platte tags | Objectgeoriënteerd adresmodel |
| Geschikt voor WAN en cloud | Nee | Ja |
Gangbare migratiestrategieën zijn OPC UA-wrappers rond bestaande OPC DA-servers, protocolgateways op een edge-computer, parallelle infrastructuur voor een gefaseerde overgang en het doorsturen van data naar MQTT en een Unified Namespace. Tunnelsoftware die DCOM lokaal houdt en tussen computers een eigen TCP-verbinding gebruikt, is een tussenstap: firewallvriendelijker en stabieler over WAN, maar geen vervanging van een volwaardige architectuur volgens ISA-95.
🌍 Waar komt u DCOM nog tegen?
| Sector | Typische DCOM-toepassing |
|---|---|
| Productie-industrie | Machinemonitoring, SCADA-koppelingen, historian-verzameling |
| Energie | Turbinebewaking, onderstations, EMS-systemen |
| Water | Gemalen en pompstations, telemetrie, procesvisualisatie |
| Gebouwautomatisering | HVAC-integratie, energiemanagement, gebouwmonitoring |
| Labs en simulatie | Testopstellingen, OPC-simulators, trainingssystemen |
In al deze sectoren draaien nog OPC DA-servers uit de jaren 2000. DCOM zelf is nog steeds onderdeel van actuele Windows-versies, dus het verdwijnt pas als de laatste OPC Classic-toepassing is uitgefaseerd.
❓ Veelgestelde vragen
Waar staat DCOM voor?
DCOM staat voor Distributed Component Object Model. Het is de netwerkuitbreiding van het Component Object Model (COM) van Microsoft, waarmee softwarecomponenten op verschillende Windows-computers elkaar via RPC aanroepen.
Welke poorten moet ik openzetten voor DCOM?
DCOM gebruikt TCP-poort 135 voor de RPC Endpoint Mapper en daarna een dynamische poort, standaard tussen 49152 en 65535 sinds Windows Vista. Perk dat bereik in via het register en sta het alleen toe tussen vaste IP-adressen, in beide richtingen vanwege OPC-callbacks.
Waarom werkt mijn OPC DA-verbinding niet meer na een Windows-update?
Sinds de DCOM-hardening KB5004442, die op 14 maart 2023 definitief werd, weigert een bijgewerkte server DCOM-activatie onder het niveau Packet Integrity. OPC-clients op ongepatchte of verouderde Windows-versies verhogen hun niveau niet automatisch en moeten daarom worden bijgewerkt, vervangen of via een lokale tunnel worden ontsloten.
Is DCOM versleuteld?
DCOM kan het RPC-verkeer versleutelen met het authenticatieniveau Packet Privacy, maar in OPC-installaties stond dat zelden aan. DCOM kent geen TLS of certificaten, dus voor vertrouwelijke verbindingen over netwerkgrenzen is OPC UA met SignAndEncrypt de betere keuze.
Kan DCOM door een firewall met NAT?
Nee, DCOM werkt niet door netwerkadresvertaling, omdat het echte IP-adres van de server in de objectreferentie staat. Voor verbindingen via NAT of over een WAN zijn een OPC-tunnel of een migratie naar OPC UA de gangbare oplossingen.
Moet ik DCOM helemaal uitschakelen?
DCOM uitschakelen via dcomcnfg verkleint het aanvalsoppervlak, maar breekt alle netwerk-OPC
Classic-koppelingen en sommige beheertools. Schakel netwerk-DCOM daarom alleen uit op systemen die het
aantoonbaar niet nodig hebben, en harden de rest.
📌 Samengevat
DCOM is de Microsoft-technologie die sinds 1996 OPC Classic over het netwerk mogelijk maakt, maar met dynamische poorten, NAT-problemen en een zwak standaard-securitymodel een bekend risico in OT-netwerken is. Houd DCOM binnen één zone, perk poorten en rechten in, houd rekening met KB5004442 en migreer stap voor stap naar OPC UA of MQTT.
