Project File Infection

Adversaries may attempt to infect project files with malicious code. These project files may consist of objects, program organization units, variables such as tags, documentation, and other configurations needed for PLC programs to function.[1] Using built in functions of the engineering software, adversaries may be able to download an infected program to a PLC in the operating environment enabling further Execution and Persistence techniques.[2]

Adversaries may export their own code into project files with conditions to execute at specific intervals.[3] Malicious programs allow adversaries control of all aspects of the process enabled by the PLC. Once the project file is downloaded to a PLC the workstation device may be disconnected with the infected project file still executing.[2]

ID: T0873
Sub-techniques:  T0873.001
ⓘ
Tactic: Persistence
ⓘ
Platforms: Linux, Windows
Version: 1.1
Created: 21 May 2020
Last Modified: 13 October 2026

Targeted Assets

ID Asset
A0001 Workstation

Mitigations

ID Mitigation Description
M0947 Audit

Review the integrity of project files to verify they have not been modified by adversary behavior. Verify a cryptographic hash for the file with a known trusted version, or look for other indicators of modification (e.g., timestamps).

M0945 Code Signing

Allow for code signing of any project files stored at rest to prevent unauthorized tampering. Ensure the signing keys are not easily accessible on the same system.

M0941 Encrypt Sensitive Information

When at rest, project files should be encrypted to prevent unauthorized changes.[4]

M0922 Restrict File and Directory Permissions

Ensure permissions restrict project file access to only engineer and technician user groups and accounts.

Detection Strategy

ID Name Analytic ID Analytic Description
DET0766 Detection of Project File Infection AN1898

Configured Windows object-access monitoring identifies a write to an Industrial Control System (ICS) engineering project file by a process that is not the recognized vendor engineering software, or by the vendor engineering software immediately after loading a project file from an untrusted source. Documented mechanism in Havex (trojanized vendor software/installers distributed via compromised vendor websites). 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. Collection requirement: use Windows Security Event ID 4663 with Object Access auditing and SACLs on approved project repositories; Sysmon FileCreate events can corroborate writes/overwrites but do not report generic file-open/read activity.

AN2116

Real-time monitoring identifies a write to Industrial Control System (ICS) project file paths on a Linux engineering station from a User Identifier (UID) not associated with the ICS engineering tool, or from the tool after loading a file from a removable media or network path not in the approved software distribution list. 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.

References