Real-time monitoring identifies an unsigned or unexpected process calling Windows hooking Application Programming Interfaces (APIs) (SetWindowsHookEx, SetWinEventHook) targeting an Industrial Control System (ICS) engineering or Human-Machine Interface (HMI) process, immediately followed by that target process loading a Dynamic Link Library (DLL) not present in the vendor's signed module baseline. Confirmed in the wild: Stuxnet replaced Siemens' s7otbxdx.dll on engineering workstations to intercept and falsify Programmable Logic Controller (PLC) read/write calls between WinCC/STEP7 and the controller. OT operational-fidelity gate: Alert only when execution violates an approved signer/hash/path/parent/process or tool allowlist, or originates from an unauthorized user/tool, and is tied to an OT asset or follow-on OT-relevant action. Suppress vendor-signed software, approved engineering utilities, diagnostics, patching, backup, and documented maintenance.
| Data Component | Name | Channel |
|---|---|---|
| Process Metadata (DC0034) | edr:ProcessIntegrity | Process integrity/hash mismatch detected on Industrial Control Systems (ICS) communication process post-hook-install event |
| Module Load (DC0016) | WinEventLog:Sysmon | EventCode=7 of Industrial Control Systems (ICS) vendor communication Dynamic Link Library (DLL) with hash not in signed baseline |
| Process Access (DC0035) | WinEventLog:Sysmon | EventCode=10 where SourceImage outside the approved ICS vendor/process baseline accesses TargetImage associated with an ICS application or service |
| Field | Description |
|---|---|
| ApprovedICSVendorProcessList | Allowlist of processes permitted to install window/event hooks on ICS engineering and HMI hosts. |
| ICSServiceBinaryList | List of binary paths for ICS gateway, OPC, and historian services on Linux assets that should never be launched with LD_PRELOAD set. |
| VendorPackageManifest | Package manager manifest cross-reference confirming a shared library belongs to an installed, signed package. |
| VendorSignedDLLHashBaseline | Cryptographic hash inventory of all vendor-signed ICS communication DLLs, refreshed on every legitimate vendor patch cycle. |
Real-time monitoring identifies a process setting LD_PRELOAD before launching an Industrial Control System (ICS) service binary, or writing to /etc/ld.so.preload, where the injected library path is not part of the vendor's package manifest. OT operational-fidelity gate: Alert only when execution violates an approved signer/hash/path/parent/process or tool allowlist, or originates from an unauthorized user/tool, and is tied to an OT asset or follow-on OT-relevant action. Suppress vendor-signed software, approved engineering utilities, diagnostics, patching, backup, and documented maintenance.
| Data Component | Name | Channel |
|---|---|---|
| File Modification (DC0061) | auditd:SYSCALL+PATH | Linux Audit SYSCALL+PATH records: write to /etc/ld.so.preload by User Identifier (UID) outside authorized admin list |
| Process Metadata (DC0034) | auditd:SYSCALL | Linux Audit SYSCALL/EXECVE/SOCKADDR records (configured audit rule): execve with env containing LD_PRELOAD where exe matches Industrial Control Systems (ICS) service binary list and preload library not in vendor package manifest |
| Field | Description |
|---|---|
| ApprovedICSVendorProcessList | Allowlist of processes permitted to install window/event hooks on ICS engineering and HMI hosts. |
| ICSServiceBinaryList | List of binary paths for ICS gateway, OPC, and historian services on Linux assets that should never be launched with LD_PRELOAD set. |
| VendorPackageManifest | Package manager manifest cross-reference confirming a shared library belongs to an installed, signed package. |
| VendorSignedDLLHashBaseline | Cryptographic hash inventory of all vendor-signed ICS communication DLLs, refreshed on every legitimate vendor patch cycle. |
Detect embedded hooking by correlating an independently acquired firmware/module integrity measurement that differs from the approved vendor/baseline image with protocol-response behavior that also departs from the device's known deterministic behavior. A protocol-response anomaly by itself does not prove a hook because firmware versions, device state, communications faults, and vendor-specific behavior can produce response differences. Treat network anomalies as corroboration and require independent integrity evidence or vendor/device attestation before escalating the condition as firmware-level hooking. Monitoring mode: periodic or event-triggered integrity verification plus near-real-time protocol monitoring where a capable OT protocol decoder is deployed.
| Data Component | Name | Channel |
|---|---|---|
| Network Traffic Content (DC0085) | NSM:Content | deterministic function code response content diverges from the device's established per-function response baseline without a corresponding firmware update event |
| Firmware Modification (DC0004) | assetinventory:FirmwareHash | independently acquired firmware/module hash or vendor integrity measurement differs from approved baseline; protocol-response anomalies are corroboration only |
| Field | Description |
|---|---|
| ApprovedICSVendorProcessList | Allowlist of processes permitted to install window/event hooks on ICS engineering and HMI hosts. |
| ICSServiceBinaryList | List of binary paths for ICS gateway, OPC, and historian services on Linux assets that should never be launched with LD_PRELOAD set. |
| VendorPackageManifest | Package manager manifest cross-reference confirming a shared library belongs to an installed, signed package. |
| VendorSignedDLLHashBaseline | Cryptographic hash inventory of all vendor-signed ICS communication DLLs, refreshed on every legitimate vendor patch cycle. |
Real-time monitoring identifies ICS protocol responses whose timing or payload structure deviates from the established device-specific per-function baseline in a pattern consistent with an intercepting relay or hook. OT operational-fidelity gate: Alert only when execution violates an approved signer/hash/path/parent/process or tool allowlist, or originates from an unauthorized user/tool, and is tied to an OT asset or follow-on OT-relevant action. Suppress vendor-signed software, approved engineering utilities, diagnostics, patching, backup, and documented maintenance.
| Data Component | Name | Channel |
|---|---|---|
| Network Traffic Content (DC0085) | otids:ProtocolDecoder | Protocol decoder/IDS transaction: traffic on an ICS service port fails expected protocol parsing/conformance or decodes as a different application protocol |
| Field | Description |
|---|---|
| ApprovedICSVendorProcessList | Allowlist of processes permitted to install window/event hooks on ICS engineering and HMI hosts. |
| ICSServiceBinaryList | List of binary paths for ICS gateway, OPC, and historian services on Linux assets that should never be launched with LD_PRELOAD set. |
| VendorPackageManifest | Package manager manifest cross-reference confirming a shared library belongs to an installed, signed package. |
| VendorSignedDLLHashBaseline | Cryptographic hash inventory of all vendor-signed ICS communication DLLs, refreshed on every legitimate vendor patch cycle. |