4840 - Pentesting OPC UA

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Basiese Inligting

OPC UA, staat vir Open Platform Communications Unified Access, is ’n belangrike open-source protokol wat in verskeie nywerhede soos Vervaardiging, Energie, Lugvaart en Verdediging gebruik word vir data-uitruiling en beheer van toerusting. Dit maak dit moontlik dat toerusting van verskillende verskaffers met mekaar kommunikeer, veral met PLC’s.

Die konfigurasie laat sterk sekuriteitsmaatreĂ«ls toe, maar dikwels word hierdie verslap vir versoenbaarheid met ouer toestelle, wat stelsels aan risiko’s blootstel. Verder kan dit moeilik wees om OPC UA-dienste te vind, aangesien netwerkskandeerders dit moontlik nie opspoor as hulle op nie-standaard poorte loop nie.

Default port: 4840 (binary opc.tcp). Baie verskaffers openbaar aparte discovery-endpunte (/discovery), HTTPS-bindings (4843/443), of verskafferspesifieke luisterpoorte soos 49320 (KepServerEX), 62541 (OPC Foundation reference stack) en 48050 (UaGateway). Verwag meerdere endpoints per gasheer, elk wat transportprofiel, sekuriteitsbeleid en user-token ondersteuning adverteer.

Ingeboude NodeIdWaarom dit saak maak
i=2253 (0:Server)Bevat ServerArray, verskaffer/produk stringe en namespace-URI’s.
i=2256 (ServerStatus)Toon uptime, huidige toestand, en opsioneel bou-inligting.
i=2267 (ServerDiagnosticsSummary)Wys sessie-aantalle, geaborteerde versoeke, ens. Baie nuttig vir fingerprinting van brute-force-pogings.
i=85 (ObjectsFolder)Ingangspunt om blootgestelde toestel-tags, metodes en alarms te deurloop.
PORT     STATE SERVICE REASON
4840/tcp open  unknown syn-ack

Pentesting OPC UA

Om sekuriteitsprobleme in OPC UA servers te ontdek, skandeer dit met OpalOPC.

opalopc -vv opc.tcp://$target_ip_or_hostname:$target_port

Ontdekking & Enumerasie Speelboek

  1. Localiseer alle OPC UA transporte
nmap -sV -Pn -n --open -p 4840,4843,49320,48050,53530,62541 $TARGET

Herhaal op UDP-groepadresse as die omgewing LDS-ME multicast discovery gebruik.

  1. Fingerprint endpoints
  • Roep FindServers/GetEndpoints oor elke transport aan om SecurityPolicyUri, SecurityMode, UserTokenType, application URI en product strings vas te lĂȘ.
  • Enumereer namespaces sodat jy vendor-spesifieke NodeIds kan oplos; misbruik namespace-botsings om clients te dwing om aanvaller-beheerde schemas te laai.
  1. Gaan die adresruimte deur
  • Begin by ObjectsFolder (i=85) en voer rekursiewe Browse/Read uit om writables prosesvariabeles, Method nodes en historian/log nodes te vind.
  • Vra ServerStatus.BuildInfo aan om firmware-herkoms te verstaan, en ServerCapabilities.OperationLimits om te evalueer hoe maklik dit is om serverhulpbronne uit te put.
  • As anonymous toegang toegelaat word, toets dadelik Call op onderhoudsmetodes (bv. ns=2;s=Reset, ns=2;s=StartMotor). Baie vendors vergeet om rol-permissies aan pasgemaakte metodes te bind.
  1. Session abuse
  • Hergebruik of kloon AuthenticationToken waardes van ander sessies (gevang via MITM of diagnostics exposure) om bestaande subscriptions te kap.
  • Forceer die server in SessionDiagnostics flooding deur doziende inaktiewe sessies te skep; sommige stacks crash sodra die MaxSessionCount limiet oorskry is.

Automated assessment with OpalOPC

  • Die scanner kan interaktief of headless loop, wat handig is vir CI/CD-styl OT baselines. Pipe sy machine-readable bevindinge in jou reporting pipeline om anonymous logins, swak policies, sertifikaat-validasie-foute en writable variables binne minute te identifiseer.
  • Kombineer OpalOPC output met handmatige browsing: voed die ontdekte endpoint-list terug in jou eie tooling, en weaponize dan selektief hoĂ«-impak nodes (bv. MotorControl/StartStop, RecipeManager/Upload).

Attacking legacy security policies (Basic128Rsa15)

  • Bleichenbacher-style oracle: Systeme wat nog die verouderde Basic128Rsa15 policy toelaat (dikwels geskakel via build flags soos CMPOPCUASTACK_ALLOW_SHA1_BASED_SECURITY) leak padding validation differences. Eksploteer dit deur CreateSession / OpenSecureChannel handshakes met vervaardigde PKCS#1 v1.5 blobs te spam om die server sertifikaat se private sleutel te herstel, en dan die server te imiteer of verkeer te ontsleutel.
  • Authentication bypass: OPC Foundation’s .NET Standard stack voor 1.5.374.158 (CVE-2024-42512) en afhanklike produkte laat ongeauthentiseerde aanvallers toe om daardie legacy policy af te dwing en daarna toepassingvlak-verifikasie oor te slaag. Sodra jy die sleutelmateriaal besit kan jy arbitrĂȘre UserIdentityTokens aanbied, gesigneerde ActivateSession versoeke replay, en die plant beheer as ’n vertroude engineering workstation.
  • Operational workflow:
  1. Enumereer policies met GetEndpoints en neem enige Basic128Rsa15 inskrywings waar.
  2. Onderhandel daardie policy eksplisiet (SecurityPolicyUri in CreateSession), en loop dan jou oracle-lus totdat die herwonne sleutel valideer.
  3. Misbruik die sleutel om ’n hoĂ«-privilege sessie te vervals, rolle te verander, of stil-stil ander clients af te gradeer deur as ’n rowwe reverse proxy op te tree.
  • CODESYS Runtime Toolkit (<3.5.21.0) heraktiveer Basic128Rsa15 wanneer integrateurs met CMPOPCUASTACK_ALLOW_SHA1_BASED_SECURITY compile. Skakel daardie vlag, herhaal die oracle-werkvloei hierbo, en jy kan die runtime se private sleutel leak om vertroude engineering workstations te imiteer totdat patchvlak 3.5.21.0 of later uitgerol is.
  • OPC Foundation het terselfdertyd CVE-2024-42513 vir HTTPS bindings gepubliseer. Selfs as jou teiken TLS beweer, maak seker dit val nie stilweg terug na Basic128Rsa15 vir die binĂȘre transport agter die proxy nie.

2024-2025 exploit watchlist

  • open62541 fuzz_binary_decode (CVE-2024-53429): SecureChannel chunks wat oorgrootte ExtensionObject liggame verklaar laat die decoder vrygemaakte geheue dereference, sodat ’n pre-auth aanvaller steeds UA servers wat open62541 ≀1.4.6 embed herhaaldelik kan laat crash. Hergebruik die Claroty corpus (opcua_message_boofuzz_db) of vervaardig jou eie Boofuzz harness om gemuteerde OpenSecureChannel versoeke te spam totdat die watchdog die proses doodmaak, en re-enumerate dan omdat baie integrateurs na anon-mode terugval nĂĄ die reboot.
  • Softing OPC UA C++ SDK / edgeConnector / edgeAggregator (CVE-2025-7390): Die TLS client-auth pipeline aanvaar enige sertifikaat wat ’n vertroude Common Name hergebruik, so jy kan ’n weggooisertifikaat mint, die CN van ’n plant engineer kopieer, en inlog met arbitrĂȘre UserNameIdentityToken of IssuedIdentityToken data. PĂȘer dit met ’n downgrade na Basic128Rsa15 om integriteitskontroles te verwyder en volhoubare operator-imitasie te handhaaf totdat trustlists herbou is.

Crafting OPC UA clients for exploitation

  • Custom clients: Drop-in biblioteke (python-opcua/asyncua, node-opcua, open62541) laat jou toe om exploit- logika self te bestuur. Forceer altyd jou teiken se namespace-index om per ongeluk kruis-namespace skryfwerke te vermy wanneer vendors namespaces na firmware-opdaterings herrangskik.
  • Node abuse checklist:
  • HistoryRead op produksietags om proprietary recipes te snapshot.
  • TranslateBrowsePathsToNodeIds om mensleesbare asset name in NodeIds op te los wat in gadgets soos Claroty’s framework gevoer kan word.
  • Call + Method nodes om onderhoudstake te aktiveer (firmware upload, kalibrasie, toestel-herstart).
  • RegisterNodes misbruik om gereeld benaderde nodes te pin en dan legitieme clients te verhonger deur die handles nooit vry te gee nie.
  • Session hardening tests: Probeer om dosyne subscriptions te bind met uiters lae publishing-intervalle (onder 50 ms) plus oorgrootte monitored-item queues. Baie stacks misbereken RevisedPublishingInterval en crash weens skeduleerder-overflows.

Fuzzing & exploit development tooling

Claroty Team82 het ’n open-source opcua-exploit-framework vrygestel wat jare se Pwn2Own-grade navorsing in herbruikbare modules inpak:

  • Modes: sanity (ligte reads/browses), attacks (bv. thread pool starvation, file upload DoS), corpus (replay fuzzing payloads), server (rogue OPC UA server om clients te backdoor).
  • Usage pattern:
# Run a DoS attack against a Prosys Simulation Server endpoint
python3 main.py prosys 10.10.10.10 53530 /OPCUA/SimulationServer thread_pool_wait_starvation

# Replay an entire Boofuzz corpus against open62541
python3 main.py open62541 192.168.1.50 4840 / opcua_message_boofuzz_db input_corpus_minimized/opcua.db
  • Rogue server scenario: Die ingeslote asyncua-gebaseerde server laat jou toe om client-software te teiken deur kwaadwillige adresruimtes te bedien (bv. responses met oorgrootte ExtensionObjects om parsing-bugs in UA Expert clones te trigger).
  • Target coverage: Ingeboude profiles kaart aan Kepware, Ignition, Unified Automation, Softing SIS, Triangle Microworks, Node-OPCUA, Python OPC UA, Milo, open62541, ens., sodat jy vinnig tussen stacks kan wissel sonder om payloads te herskryf.
  • Integration tips: Knoop sy output aan jou eie fuzzers—spray eers die corpus payloads, en laat OpalOPC dan verifieer of die crash onveilige defaults herleef het (anonymous login, setpoint write access, ens.).

Exploiting authentication bypasses

As authentication bypass kwesbaarhede gevind word, kan jy ’n OPC UA client dienooreenkomstig konfigureer en sien wat jy kan benader. Dit kan enigiets toelaat van net lees van proseswaardes tot werklik die bediening van swaar industriĂ«le toerusting.

Om ’n idee te kry van die toestel waartoe jy toegang het, lees die “ServerStatus” node-waardes in die address space en google vir ’n gebruikershandleiding.

Shodan

  • port:4840
  • port:62541 "OPC UA"
  • ssl:"urn:opcua"
  • product:"opc ua"

Kombineer die soektog met vendor-strings ("Ignition OPC UA", "KepServerEX") of sertifikate ("CN=UaServerCert") om hoë-waarde assets te prioritiseer voordat jy indringende toetsing begin.

References

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks