Wat is S7 Comm?

S7 Comm (S7-communicatie, ook S7comm) is het eigen communicatieprotocol van Siemens waarmee SIMATIC S7-PLC’s gegevens uitwisselen met HMI’s, SCADA-systemen, engineeringsoftware en andere controllers, zonder ingebouwde authenticatie of versleuteling. Siemens gebruikt het protocol sinds de introductie van de SIMATIC S7-reeks in 1994. Op Ethernet loopt het via ISO-on-TCP op TCP-poort 102, maar het werkt ook over MPI en PROFIBUS. Omdat het protocol de basis is van de S7-300 en S7-400 en nog steeds in veel installaties draait, is kennis van S7 Comm onmisbaar voor iedereen die OT-netwerken beheert of beveiligt.

S7 Comm vormt de kern van veel Siemens-gebaseerde OT-infrastructuren, met name in productie, waterbeheer, chemie en energie.


🧠 Hoe werkt S7 Comm technisch?

S7 Comm is een request/response-protocol: een client (HMI, SCADA-server, engineeringstation of een andere PLC) stuurt een opdracht, de PLC antwoordt. Op Ethernet ligt het protocol bovenop een stapel van drie lagen uit de OSI-wereld:

Laag Protocol Functie
Transport TCP, poort 102 Betrouwbare verbinding tussen client en PLC of communicatieprocessor
ISO-on-TCP TPKT (RFC 1006) Verpakt ISO-transportpakketten in een TCP-stroom
Verbinding COTP (ISO 8073, RFC 905) Opzetten van de verbinding met TSAP-adressen
Applicatie S7 Comm (protocol-ID 0x32) Lezen, schrijven, programmabeheer en diagnose

Een verbinding komt in drie stappen tot stand. De client opent TCP-poort 102, stuurt een COTP Connect Request met een bestemmings-TSAP en onderhandelt daarna met de functie Setup communication (code 0xF0) over onder meer de PDU-grootte. Het eerste byte van de TSAP geeft het type verbinding aan (1 = PG of programmeerapparaat, 2 = OP of bedienpaneel), het tweede byte het rack en het slot van de CPU. Een S7-300-CPU in rack 0, slot 2 is zo bereikbaar als TSAP 0x0102. De onderhandelde PDU-grootte ligt tussen 240 en 960 bytes, afhankelijk van de CPU; grotere overdrachten worden in meerdere telegrammen opgeknipt.

Elk S7-bericht heeft een header met een berichttype (ROSCTR): Job (0x01) voor een opdracht, Ack (0x02) en Ack_Data (0x03) voor antwoorden en Userdata (0x07) voor diagnose- en hulpfuncties zoals het uitlezen van de systeemstatuslijst, de klok of de foutbuffer.


🔧 Welke functies biedt S7 Comm?

De functiecode in een Job bepaalt wat de PLC doet. De belangrijkste:

Functiecode Functie Betekenis in de praktijk
0xF0 Setup communication Verbinding opzetten en PDU-grootte afspreken
0x04 Read Var Variabelen lezen uit datablokken, ingangen, uitgangen, merkers, timers en tellers
0x05 Write Var Variabelen schrijven, bijvoorbeeld setpoints of commando’s
0x1A–0x1C Request download, Download block, Download ended Programmablokken naar de PLC laden
0x1D–0x1F Start upload, Upload, End upload Programmablokken uit de PLC lezen
0x28 PLC Control Diensten zoals een warme start of het kopiëren van RAM naar ROM
0x29 PLC Stop De CPU in STOP zetten

Adressering is absoluut: een client vraagt bijvoorbeeld “DB10, byte 4, lengte 2” op. Dat maakt het protocol snel en eenvoudig, maar betekent ook dat elke client die de verbinding opent direct in het geheugen van de PLC kan lezen en schrijven.


🏭 Waar wordt S7 Comm toegepast?

S7 Comm zit in vrijwel elke Siemens-installatie van de afgelopen dertig jaar:

Toepassing Voorbeeld
Data-acquisitie SCADA of een historian leest procesdata (temperatuur, flow, statusbits) van de PLC
Bediening Een operatorpaneel stuurt setpoints of schakelt actuatoren
PLC-PLC-koppeling Twee CPU’s wisselen gegevens uit met PUT/GET of S7-verbindingen
Diagnostiek Uitlezen van CPU-status, foutbuffer of firmwareversie
Engineering Programma’s laden en uitlezen met STEP 7 Classic of TIA Portal vanaf een Engineering Station

Ook veel software van derden spreekt het protocol: OPC-servers, IIoT-gateways, en open-sourcebibliotheken zoals Snap7. Moderne S7-1200- en S7-1500-CPU’s gebruiken onderling en met TIA Portal het opvolgerprotocol S7 Comm Plus, maar ondersteunen het klassieke S7 Comm nog voor PUT/GET-toegang. Die toegang staat standaard uit en moet in TIA Portal expliciet worden ingeschakeld; voor absolute adressering moet bovendien de geoptimaliseerde bloktoegang van het datablok uit staan.


🔐 Welke beveiligingsrisico’s heeft S7 Comm?

S7 Comm is ontworpen voor gesloten netwerken en heeft geen authenticatie, versleuteling of integriteitsbescherming op protocolniveau. Wie TCP-poort 102 kan bereiken, kan in principe lezen, schrijven, programma’s laden en de CPU stoppen.

Kwetsbaarheid Gevolg
Geen versleuteling Alle verkeer is leesbaar met tools als Wireshark, dat sinds versie 2.0 een S7comm-dissector bevat
Geen authenticatie Elke client met netwerktoegang kan Read Var, Write Var of PLC Stop sturen
Gevoelig voor replay-aanvallen Opgenomen commando’s kunnen ongewijzigd worden herhaald
Man-In-The-Middle Verkeer kan onderweg worden aangepast zonder dat de PLC dat merkt
Geen gebruikersidentiteit Het protocol kent geen gebruikers, dus geen RBAC op protocolniveau
Zwakke wachtwoordbescherming Bij S7-300/400 met beschermingsniveau 2 kan een aanvaller via poort 102 of PROFIBUS inloggegevens achterhalen (CVE-2016-9159)

Dat dit geen theorie is, laten bekende incidenten en onderzoek zien. Stuxnet (ontdekt in 2010) manipuleerde de communicatiebibliotheek van STEP 7 en WinCC om ongemerkt code in S7-300- en S7-400-PLC’s te laden en de echte waarden voor de operator te verbergen. Op Black Hat 2011 toonde onderzoeker Dillon Beresford hoe S7-PLC’s met opgenomen en herhaalde pakketten konden worden gestopt. Zoekmachines voor internetapparaten vinden nog altijd PLC’s met een open poort 102. Ook S7 Comm Plus is niet onfeilbaar: in 2019 lieten Israëlische onderzoekers met Rogue7 zien dat een nagebootst engineeringstation een S7-1500 kon starten, stoppen en programmeren, waarna Siemens de integriteitsbescherming verbeterde (CVE-2019-10929).


🛡️ Hoe beveiligt u S7 Comm in de praktijk?

Omdat het protocol zelf niet te beveiligen is, moet de bescherming uit het netwerk en de configuratie komen. Een praktische aanpak in vijf stappen:

  1. Inventariseer - breng met een asset-inventaris en passieve monitoring in kaart welke systemen poort 102 gebruiken, welke CPU’s (S7-300, S7-400, S7-1200, S7-1500) er zijn en welke firmware ze draaien.
  2. Segmenteer - plaats PLC’s in een eigen zone volgens het zones-en-conduitsmodel van IEC 62443 en het Purdue-model. Gebruik netwerksegmentatie met VLAN’s en een firewall die alleen vaste HMI-, SCADA- en engineeringadressen naar TCP/102 toelaat.
  3. Filter op inhoud - een industriële firewall met DPI kan S7-functiecodes herkennen en bijvoorbeeld alleen Read Var toestaan vanaf de historian, terwijl Download en PLC Stop alleen vanaf het engineeringstation mogen.
  4. Hard de PLC - zet PUT/GET alleen aan waar het nodig is, stel een toegangsniveau met wachtwoord in, gebruik de bedrijfsstandschakelaar (RUN in plaats van RUN-P bij oudere CPU’s) en laat engineering alleen via een jumpserver in een beveiligde beheerzone lopen.
  5. Detecteer - laat een OT-IDS op S7-patronen letten (onverwachte downloads, STOP-commando’s, nieuwe clients) en stuur meldingen naar het SIEM.

Op langere termijn is migratie de echte oplossing: van S7-300/400 naar S7-1500, waarbij communicatie verloopt via S7 Comm Plus met TLS of via OPC UA met certificaten. Zo’n migratie hoort bij het beheer van legacy systemen en vraagt vaak jaren planning. Hanteer tot die tijd het principe van Zero Trust: verleen geen impliciet vertrouwen binnen OT-segmenten.

Nederlandse en Europese context. Organisaties die onder NIS2 en de Nederlandse Cyberbeveiligingswet vallen (sinds 15 augustus 2026 van kracht) moeten passende maatregelen nemen voor hun netwerk- en informatiesystemen. Een onbeschermde poort 102 in een drinkwater- of energie-installatie is dan een duidelijk aandachtspunt bij audits.


🔁 Wat is het verschil tussen S7 Comm en S7 Comm Plus?

Eigenschap S7 Comm (klassiek) S7 Comm Plus
Protocol-ID 0x32 0x72
Poort TCP/102 TCP/102
Typische CPU’s S7-300, S7-400 (S7-1200/1500 via PUT/GET) S7-1200, S7-1500
Engineering STEP 7 Classic TIA Portal
Authenticatie Geen Sessiebescherming, in nieuwere versies TLS met certificaten
Versleuteling Geen Ja, in nieuwere firmware en TIA Portal-versies
Adressering Absoluut (DB, byte, bit) Symbolisch, ook bij geoptimaliseerde blokken
Analyse in Wireshark Standaard dissector Aparte plugin nodig

S7 Comm Plus is dus geen uitbreiding maar een apart protocol. Een S7-300 spreekt het niet, en een S7-1200 of S7-1500 is alleen via klassiek S7 Comm van buitenaf te benaderen als PUT/GET bewust is ingeschakeld.


❓ Veelgestelde vragen

Welke poort gebruikt S7 Comm?

S7 Comm gebruikt TCP-poort 102, de standaardpoort voor ISO-on-TCP volgens RFC 1006. Dezelfde poort wordt ook door S7 Comm Plus gebruikt. Een firewall die poort 102 openzet, laat daarom alle S7-functies door, tenzij hij met deep packet inspection op functiecode filtert.

Is S7 Comm hetzelfde als PROFINET?

Nee, S7 Comm en PROFINET zijn verschillende protocollen. PROFINET verzorgt de cyclische, realtime uitwisseling van I/O-data tussen een controller en veldapparaten, terwijl S7 Comm wordt gebruikt voor acyclische taken zoals HMI-bediening, data-uitlezing en engineering. Beide lopen vaak over hetzelfde Ethernet-netwerk.

Kan een S7-1500 nog via S7 Comm communiceren?

Ja, een S7-1500 ondersteunt klassiek S7 Comm voor PUT/GET-toegang, maar die functie staat standaard uit. U moet haar in TIA Portal inschakelen en voor absolute adressering de geoptimaliseerde bloktoegang van het datablok uitzetten. Doe dit alleen als het echt nodig is, want het opent een ongeauthenticeerde toegangsweg.

Hoe herken ik S7 Comm-verkeer in Wireshark?

S7 Comm-verkeer herkent u in Wireshark met het displayfilter s7comm, of met tcp.port == 102 voor al het ISO-on-TCP-verkeer. De dissector toont het berichttype, de functiecode en de gelezen of geschreven adressen. Voor S7 Comm Plus is een aparte plugin nodig.

Waarom is S7 Comm een cybersecurityrisico?

S7 Comm is een cybersecurityrisico omdat het protocol geen authenticatie, versleuteling of integriteitscontrole heeft. Iedereen die poort 102 bereikt, kan variabelen wijzigen, programma’s laden of de PLC stoppen. Stuxnet maakte in 2010 zichtbaar hoe ver zo’n aanval kan gaan.

Moet ik S7-300-installaties direct vervangen?

Directe vervanging van S7-300-installaties is meestal niet nodig of haalbaar, omdat migratie hertesten en stilstand vraagt. Bescherm ze in de tussentijd met segmentatie, filtering op functiecode, monitoring en strikt beheer van engineeringtoegang. Plan de migratie naar S7-1500 of een andere ondersteunde controller wel als onderdeel van uw lifecycle-beleid.


📌 Samengevat

S7 Comm is het klassieke Siemens-protocol op TCP-poort 102 waarmee HMI’s, SCADA en engineeringsoftware rechtstreeks in het geheugen van S7-PLC’s lezen en schrijven, zonder authenticatie of versleuteling.

S7 Comm is snel, eenvoudig en breed ondersteund, en daardoor nog steeds de ruggengraat van veel Siemens-installaties. Dezelfde eenvoud maakt het kwetsbaar voor afluisteren, manipulatie en sabotage. Bescherm het met segmentatie, filtering op functiecode, PLC-hardening en monitoring, en plan de overstap naar S7 Comm Plus met TLS of OPC UA.