Proces Automatisering (PA) – Intro
Nog niet zo lang geleden was mijn focusgebied voor digitale veiligheid vooral gericht op kantoorautomatisering (KA). Echter sinds ongeveer 18 maanden is er een belangrijk speelveld toegevoegd aan mijn focusgebied en dat is PA ofwel “Proces Automatisering”. PA kent ook vele andere termen zoals IA (Industrial Automation), ICS (Industrial Control System) en vele andere termen. In deze post wil ik graag kort ingaan op het begrip “Proces Automatisering”, wat de verschillen zijn met kantoor automatisering en waarom dit een ontzettend interessant speelveld is. Deze post is als het ware een intro voor meer specifieke toekomstige posts die betrekking hebben op PA zoals b.v. een post over het “ModBus” protocol welke we alleen tegenkomen binnen de proces automatisering.
Wanneer we het over proces automatisering hebben dan hebben we het met name over de volgende onderdelen:
- PLC – Programmable Logic Controllers
- PCS – Process Control Systems
- DCS – Distributed Control Systems
- SCADA – Supervisory Control And Data Acquisition
In sommige gevallen kun je ook robots erbij plaatsen in bovenstaande lijst maar wat mij betreft behoort dit meer tot de “Robotica” tak. Wat opvalt in bovenstaande 4 systemen (welke ik later in deze post nader toelicht) is dat er heel vaak het woordje “Control” in voorkomt. De meeste van deze systemen controleren het industriële proces en kom je in de praktijk vaak tegen bij industriële en civieltechnische toepassingen om een proces te volgen, te sturen en te controleren. In veel gevallen hebben we het hier over systemen die bestaan uit sensoren en andere meetinstrumenten welke met bedrading verbonden zijn met een bus (transportmedium voor elektronische signalen.), een multiplexer (apparaat om verschillende gegevensstromen te leiden over een gemeenschappelijke communicatielijn) en/of A/D-convertors (zet een analoog signaal, bijvoorbeeld een spraaksignaal, om in een digitaal signaal). Uiteindelijk zijn deze PA systemen verbonden met een procescomputer welke zorgt voor de virtualisatie en bediening van het systeem.
Vroeger waren deze systemen volledig gescheiden en vaak alleen handmatig te bedienen. Men moest aanwezig zijn bij het apparaat. Later zijn er netwerkfaciliteiten toegevoegd waardoor apparaten op afstand bediend konden worden en waarmee apparaten onderling konden communiceren. Het toevoegen van deze netwerkfunctionaliteit heeft een nieuwe aanvalsvector geopend voor deze proces systemen welke potentieel desastreuze gevolgen kan hebben. Deze systemen kennen vrijwel allemaal de volgende problemen:
- Ze zijn duur
- Ze zijn zeer betrouwbaar (uptime is essentieel)
- Ze controleren belangrijke systemen die voor aanzienlijke problemen zorgen als deze down gaan
- Ze zijn niet ontworpen met security in het achterhoofd
- Netwerkfunctionaliteit is vaak niet goed geïmplementeerd
- De systemen zelf zijn vaak slecht geïmplanteerd (denk b.v. aan het niet toepassen van netwerkscheiding).
Bovenstaande opsomming van feiten vormt een vicieuze cirkel. PA apparaten zijn ontzettend belangrijk. De apparaten zijn ook erg duur en kwalitatief erg goed in wat ze moeten doen. PA apparaten hebben een levensduur van 15+ jaar en kunnen dus minder makkelijk vervangen worden dan KA apparatuur. Ook is het daarom lastiger om een representatief lab op te zetten met identieke PA apparatuur. Ook zijn patches op PA apparaten minder gebruikelijk omdat het doorvoeren van een patch downtime vereist en soms onverwachte gevolgen kan hebben. In 15+ jaar kan veel gebeuren en vrijwel alle PA apparaten hebben last van security issues, zeker als deze netwerkfunctionaliteit hebben. In sommige gevallen zijn PA netwerken niet afdoende beveiligd waardoor deze vanaf het KA netwerk, of erger nog, vanaf het internet bereikbaar zijn. Kijk maar eens op Shodan hoeveel PA apparaten en publiekelijk beschikbaar en gevonden zijn door Shodan.
Veel leveranciers houden tegenwoordig veel beter rekening met security tijdens de ontwikkeling van een apparaat. Maar men gaat niet zomaar alle PA apparaten in het netwerk vervangen. Goede ontwikkelingen zijn o.a. het dubbel uitvoeren van PA omgevingen, het PA apparaat voorzien van een failover OS en (basis) firewalling. De belangrijkste beveiliging blijft echter de scheiding van netwerken en het monitoren van een PA netwerk door een SOC en/of door een appliance welke werkt met een blacklist/whitelist en eveneens gedetailleerde logbestanden bijhoudt en een alarmfunctie heeft. Voor alle oplossingen geldt dat een goede inrichting belangrijk is.
Laten we eens kijken naar de eerder genoemde belangrijke PA onderdelen, PLC’s, PCSen, DCSen en SCADA systemen.
PLC
PLC staat voor “Programmable Logic Controller”. Een PLC is een industriële digitale computer speciaal ontwikkeld is om productieprocessen te besturen. Denk hierbij aan b.v. assemblagelijnen, pompen, keringen of robotapparatuur. Feitelijk worden PLC’s gebruikt voor elke activiteit welke een hoge betrouwbaarheid vereist en programmeerbaar is.
PLC’s zijn gemakkelijk programmeerbare controllers welke oorspronkelijk ontwikkeld zijn ter vervanging van bedrade relais, timers en sequencers. PLC’s worden alom toegepast als zeer betrouwbare automatiseringscontrollers die geschikt zijn voor allerlei soorten omgevingen. Een PLC is een een “hard” real-time systeem omdat de output van een PLC wordt geproduceerd op basis van verkregen inputcondities. Dit alles moet plaatsvinden binnen een beperkte tijd.
PLC’s staat vaak in verbinding met andere PLC systemen of SCADA systemen en komen in allerlei soorten en (for)maten voor. PLC’s werken met zowel digitale als analoge I / O en komen voor in omgevingen met uitgebreide temperaturen. PLC’s zijn , immuniteit voor elektrische ruis en goed bestand tegen trillingen en stoten. De programma’s om die de werking van de PLC besturen worden meestal opgeslagen in een batterijgeheugen of niet-vluchtig geheugen (non-volatile memory) zoals NAND, ROM en EEPROM. PLC programma’s worden meestal geschreven in een speciale applicatie op een PC en vervolgens met een kabel (meestal USB, Ethernet, RS-232, RS-485 of RS-422) overgedragen naar de PLC. De meest gebruikte programmeertaal voor PLC’s is LD (Ladder Diagram).
Een PLC bestaat meestal uit diverse sensoren en contacten, een microcontroller, geheugen (RAM en ROM), voeding en verschillende elektronica zoals isolators, PCB, resistors etc.
Om te communiceren met een PLC ben je afhankelijk van de gebruikte interfaces en gebruikte protocollen. De volgende komen we vaak tegen:
Interfaces:
- Serieel
- Ethernet
- WiFi
- JTAG
Protocollen:
- Modbus
- Ethernet
- Profinet
- RS-232
- WirelessHART
- ZigBee
In een toekomstige post duiken we dieper in de verschillende protocollen.
PCS, DCS en ICS
PCS staat voor “Process Control System”. Een PCS is een automatiseringssysteem welke bestaat uit elektronische circuits en toegespitst is op het besturen van industriële processen binnen de procestechniek. Vaak bestuurd een PCS meerdere PCL’s. Een PCS staat ook wel bekend onder andere namen zoals een DCS (Distributed Control System) of ICS (Industrial Control System). PCS systemen zijn er in verschillende soorten en maten. In essentie is een PCS systeem een geautomatiseerd systeem welke een industrieel proces ondersteund. Deze ondersteuning is er in verschillende soorten en maten. Denk aan een sensor waarvan de output gebruikt wordt voor de input van een proces (PCL) of een systeem welke de industriële data ontvangt en gebruikt om b.v. deze data inzichtelijk te maken, als alarmfunctie om om de data door te zetten naar een SCADA system of het KA netwerk voor gebruik in b.v. het ERP pakket. Ook kunnen PCS systemen gebruikt worden voor het bewaken van het proces. PCS systemen hebben vooral een controlerende en bewakende taak over (een deel van) het proces.
SCADA
SCADA staat voor “Supervisory Control And Data Acquisition”. Een SCADA systeem bestaat uit een computer waarop een SCADA systeem geïnstalleerd is (software). Dit SCADA systeem is speciaal ontwikkeld om het uitwisselen van diverse soorten gegevens welke afkomstig zijn uit de industriële procesautomatisering. Het SCADA systeem maakt het proces (grafisch) inzichtelijk zodat de operator het proces op de juiste manier kan sturen. Deze (aan)sturing wordt ook vaak gefaciliteerd vanuit het SCADA systeem. Vervolgens kan een SCADA systeem de gegevens doorzetten naar andere systemen of verwerken tot rapportages of een alarmerende functie bieden mocht er iets in het proces niet goed gaan.
Hoewel een PCS en een SCADA systeem eenzelfde functie lijken te hebben is dat niet zo. Het belangrijkste verschil tussen een PCS en een SCADA systeem is dat een SCADA systeem event-driven is en een PCS systeem is state-driven. Dit betekend dat een PCS systeem zich richt op het proces en een SCADA systeem op de data die het aangeleverd krijgt. Vervolgens kan een SCADA systeem meerdere geografisch gescheiden gebieden in de gaten houden terwijl een PCS meestal bedoeld is voor 1 proceslijn / 1 locatie. Een PCS kan wel data aanleveren aan een SCADA systeem. Een SCADA systeem bestaat voornamelijk uit software terwijl een PCS uit elektronische circuits bestaat. Ze functioneren beide simpelweg op een ander niveau en hebben een verschillende functie met overlappende taken welke op een andere manier aangestuurd worden.
SCADA systemen draaien vaak alleen op een specifiek OS omdat de leverancier de SCADA programmatuur vaak niet up-to-date houdt (development / maintenance kosten). Dit betekend dat er in de praktijk vaak verouderde systemen staan welke niet uit het proces verwijderd kunnen worden. Dit zorgt ervoor dat SCADA systemen een belangrijk doelwit zijn voor hackers. Het controleren van een verouderd systeem is relatief makkelijk en de mogelijk impact kan aanzienlijk zijn.
SCADA kent veel overeenkomsten met een HMI (Human Machine Interface) maar deze worden eveneens onterecht door elkaar gebruikt. Een HMI is onderdeel van een SCADA systeem omdat de scope van een HMI vaak beperkt is tot 1 machine zoals b.v. een LCD scherm op de machine waarmee deze bestuurd kan worden. Een SCADA systeem kan een grote scope van apparaten besturen.
Final Toughts
Proces Automatisering is een prachtig speelveld voor security researchers, pentesters en uiteraard ook voor hackers. PA kent hele andere uitdagingen dan kantoor automatisering. Zo is het testen in een PA omgeving een stuk lastiger omdat zaken echt defect kunnen gaan (nmap verkeer op een firmware upload poort is geen goede combinatie) en omdat downtime vaak een vergaande impact heeft. Het beveiligen is juist daarom zo belangrijk. In toekomstige posts gaan we zeker dieper in op specifieke aspecten in de proces automatisering. Stay Tuned.
Wil je meer posts over proces automatisering, heb je een specifiek onderwerk of vond je deze post gewoon leuk? Throw me a high-five! Like en deel mijn post of stuur een leuk bericht! Hier help je me ontzettend veel mee!! Dankjewel!