4840 - Pentesting OPC UA
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Basic Information
OPC UA, što znači Open Platform Communications Unified Access, je važan otvoreni protokol koji se koristi u raznim industrijama kao što su proizvodnja, energetika, vazduhoplovstvo i odbrana za razmenu podataka i kontrolu opreme. Omogućava interoperabilnost opreme različitih proizvođača, naročito sa PLCs.
Njegova konfiguracija može podržati jake bezbednosne mere, ali se često, zbog kompatibilnosti sa starijim uređajima, te mere ublažavaju, izlažući sisteme rizicima. Takođe, pronalaženje OPC UA servisa može biti teško jer network skeneri možda neće detektovati servise ako su na nestandardnim portovima.
Podrazumevani port: 4840 (binary opc.tcp). Mnogi proizvođači izlažu odvojene discovery endpoint-e (/discovery), HTTPS binding-e (4843/443), ili proizvođački specifične slušačke portove kao što su 49320 (KepServerEX), 62541 (OPC Foundation reference stack) i 48050 (UaGateway). Očekujte više endpoint-a po hostu, pri čemu svaki reklamira transport profile, security policy i podršku za user-token.
| Built-in NodeId | Why it matters |
|---|---|
i=2253 (0:Server) | Sadrži ServerArray, vendor/product stringove i namespace URI-e. |
i=2256 (ServerStatus) | Otkriva uptime, trenutno stanje, i opcionalno build informacije. |
i=2267 (ServerDiagnosticsSummary) | Prikazuje brojeve sesija, abortirane zahteve, itd. Odlično za fingerprinting brute-force pokušaja. |
i=85 (ObjectsFolder) | Ulazna tačka za pretraživanje izloženih tagova uređaja, metoda i alarme. |
PORT STATE SERVICE REASON
4840/tcp open unknown syn-ack
Pentesting OPC UA
Da biste otkrili bezbednosne probleme u OPC UA serverima, skenirajte ih pomoću OpalOPC.
opalopc -vv opc.tcp://$target_ip_or_hostname:$target_port
Discovery & Enumeration Playbook
- Locate all OPC UA transports
nmap -sV -Pn -n --open -p 4840,4843,49320,48050,53530,62541 $TARGET
Ponovite na UDP grupnim adresama ako okruženje koristi LDS-ME multicast discovery.
- Fingerprint endpoints
- Pozovite
FindServers/GetEndpointspreko svakog transporta da zabeležiteSecurityPolicyUri,SecurityMode,UserTokenType, application URI i product stringove. - Enumerišite namespace-ove kako biste mogli da razrešite vendor-specifične NodeId-ove; iskoristite kolizije namespace-a da naterate klijente da učitaju šeme koje kontroliše napadač.
- Walk the address space
- Počnite od
ObjectsFolder (i=85)i rekurzivnoBrowse/Readda pronađete promenljive koje se mogu upisivati,Methodnode-ove i historian/log node-ove. - Upitajte
ServerStatus.BuildInfoda razumete poreklo firmware-a, iServerCapabilities.OperationLimitsda procenite koliko je lako iscrpeti resurse servera. - Ako je dozvoljen anonimni pristup, odmah testirajte
Callna maintenance metodama (npr.ns=2;s=Reset,ns=2;s=StartMotor). Mnogi vendori zaborave da vežu role/permissions za custom metode.
- Session abuse
- Ponovo upotrebite ili klonirajte vrednosti
AuthenticationTokeniz drugih sesija (uhvaćene putem MITM ili izloženih dijagnostika) da hijack-ujete postojeće subscriptions. - Primorajte server na
SessionDiagnosticsflooding kreiranjem desetina neaktivnih sesija; neki stacks se sruše kada se premašiMaxSessionCountlimit.
Automated assessment with OpalOPC
- Skener može raditi interaktivno ili headless, što je zgodno za CI/CD stil OT baseline-a. Prosledite njegova mašinski čitljiva otkrića u vaš reporting pipeline da u par minuta istaknete anonymous logins, weak policies, certificate validation errors i writable variables.
- Kombinujte OpalOPC output sa manualnim browsingom: vratite pronađenu listu endpoint-a u vaše custom alate, pa selektivno weaponizujte visokoprivilegovane node-ove (npr.
MotorControl/StartStop,RecipeManager/Upload).
Attacking legacy security policies (Basic128Rsa15)
- Bleichenbacher-style oracle: Sistemi koji i dalje dopuštaju zastarelu
Basic128Rsa15politiku (često uključenu preko build flagova kaoCMPOPCUASTACK_ALLOW_SHA1_BASED_SECURITY) otkrivaju razlike u validaciji padding-a. Iskoristite ovo tako što ćete preplavitiCreateSession/OpenSecureChannelhandshakes sa crafted PKCS#1 v1.5 blob-ovima da povratite privatni ključ serverovog sertifikata, a zatim se predstavljate kao server ili dešifrujete saobraćaj. - Authentication bypass: OPC Foundation-ov .NET Standard stack pre 1.5.374.158 (CVE-2024-42512) i zavisni proizvodi dozvoljavaju neautentifikovanim napadačima da forsiraju tu legacy politiku i potom preskoče application-level authentication. Kada ste u posedu key material-a možete prezentovati arbitrarne
UserIdentityTokens, replay-ovati potpisaneActivateSessionzahteve i upravljati postrojenjem kao pouzdana engineering workstation. - Operational workflow:
- Enumerišite politike sa
GetEndpointsi zabeležite sveBasic128Rsa15unose. - Dogovorite tu politiku eksplicitno (
SecurityPolicyUriuCreateSession), zatim pokrenite svoj oracle loop dok se povraćeni ključ ne verifikuje. - Iskoristite ključ da falsifikujete sesiju sa visokim privilegijama, promenite role, ili tiho downgrade-ujete druge klijente delujući kao rogue reverse proxy.
- CODESYS Runtime Toolkit (<3.5.21.0) ponovo je omogućavao Basic128Rsa15 kad integratori kompajliraju sa
CMPOPCUASTACK_ALLOW_SHA1_BASED_SECURITY. Promenite taj flag, ponovo pokrenite oracle workflow iznad i možete doći u posed runtime privatnog ključa da biste se predstavljali kao pouzdane engineering workstation sve dok nije primenjen patch 3.5.21.0 ili noviji. - OPC Foundation je istovremeno objavio CVE-2024-42513 za HTTPS bindings. Čak i ako meta tvrdi da koristi TLS, proverite da li tiho ne pada na Basic128Rsa15 za binary transport iza proxy-ja.
2024-2025 exploit watchlist
- open62541 fuzz_binary_decode (CVE-2024-53429): SecureChannel chunk-ovi koji prijavljuju prevelike
ExtensionObjectbody-je nateraju decoder da dereferencira oslobođenu memoriju, tako da pre-auth napadač može ponavljano srušiti UA servere koji embeduju open62541 ≤1.4.6. Ponovo iskoristite Claroty corpus (opcua_message_boofuzz_db) ili kreirajte sopstveni Boofuzz harness da spam-ujete mutiraneOpenSecureChannelzahteve dok watchdog ne ubije proces, zatim re-enumerišite jer se mnogi integratori vraćaju na anonymous mode nakon reboot-a. - Softing OPC UA C++ SDK / edgeConnector / edgeAggregator (CVE-2025-7390): TLS client-auth pipeline prihvata bilo koji sertifikat koji replay-uje trusted Common Name, pa možete izraditi disposable cert, kopirati CN od plant engineer-a i prijaviti se sa arbitrarim
UserNameIdentityTokeniliIssuedIdentityTokenpodacima. Kombinujte ovo sa downgrade-om na Basic128Rsa15 da uklonite integrity checks i perzistentno se predstavljate kao operatori dok se trustlist-i ne obnove.
Crafting OPC UA clients for exploitation
- Custom clients: Drop-in libraries (python-opcua/asyncua, node-opcua, open62541) omogućavaju da sami implementirate exploit logiku. Uvek nametnite odgovarajući namespace index cilja da izbegnete slučajne cross-namespace write-ove kada vendori prerasporede namespace-ove posle firmware update-a.
- Node abuse checklist:
HistoryReadna produkcionim tag-ovima za snapshot-ovanje proprietarnih recepata.TranslateBrowsePathsToNodeIdsda prevedete ljudski čitljiva imena asset-a u NodeId-ove koji se mogu ubaciti u gadget-e poput Claroty framework-a.Call+Methodnode-ovi da pokrenu maintenance zadatke (upload firmware-a, kalibracija, reboot uređaja).RegisterNodeszloupotreba da pinujete često pristupane node-ove i onda izgladnjete legitimne klijente tako što nikada ne oslobodite handle-ove.- Session hardening tests: Pokušajte da vezujete desetine subscriptions sa izuzetno niskim publishing intervalima (ispod 50 ms) plus prevelikim monitored-item redovima. Mnogi stacks pogrešno izračunavaju
RevisedPublishingIntervali ruše se zbog scheduler overflow-a.
Fuzzing & exploit development tooling
Claroty Team82 je objavio open-source opcua-exploit-framework koji pakuje godine Pwn2Own-grade istraživanja u ponovo upotrebljive module:
- Modes:
sanity(lagana čitanja/browse),attacks(npr. thread pool starvation, file upload DoS),corpus(replay fuzzing payload-e),server(rogue OPC UA server za backdoor-ovanje klijenata). - 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: Bundlovani asyncua-based server vam omogućava da targetirate client softver služeći malicious address space-ove (na primer, odgovore sa oversized
ExtensionObject-ima da biste pokrenuli parsing bugove u UA Expert klonovima). - Target coverage: Ugrađeni profili mapiraju na Kepware, Ignition, Unified Automation, Softing SIS, Triangle Microworks, Node-OPCUA, Python OPC UA, Milo, open62541, itd., tako da brzo možete menjati stack-ove bez prepisivanja payload-ova.
- Integration tips: Povežite njegov output sa sopstvenim fuzzer-ima—prvo prskajte
corpuspayload-e, zatim pustite OpalOPC da re-verifikuje da li se crash vratio u insecure defaults (anonymous login, setpoint write access, itd).
Exploiting authentication bypasses
Ako se otkriju authentication bypass ranjivosti, možete konfigurisati OPC UA client u skladu sa tim i videti šta možete pristupiti. Ovo može omogućiti sve, od prostog čitanja process vrednosti do stvarnog upravljanja teškom industrijskom opremom.
Da biste dobili nagoveštaj o uređaju kojem imate pristup, pročitajte vrednosti node-a “ServerStatus” u address space-u i guglujte za uputstvo za upotrebu.
Shodan
port:4840port:62541 "OPC UA"ssl:"urn:opcua"product:"opc ua"
Kombinujte pretragu sa vendor string-ovima ("Ignition OPC UA", "KepServerEX") ili sertifikatima ("CN=UaServerCert") da prioritetizujete visokovredne asset-e pre nego što započnete intruzivno testiranje.
References
- https://opalopc.com/how-to-hack-opc-ua/
- https://github.com/claroty/opcua-exploit-framework
- https://certvde.com/en/advisories/VDE-2025-022/
- https://nvd.nist.gov/vuln/detail/CVE-2024-53429
- https://industrial.softing.com/fileadmin/psirt/downloads/2025/CVE-2025-7390.html
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.


