CISA Says Log Everything. OT Protocols Can't. Here's What Actually Works.

Jeff Gray · July 13, 2026 · 18 min read
Analysis · Cyborama OT Intelligence · CISA GUIDANCE vs OT REALITY

RESEARCH PRODUCT: LOTL Detection Feasibility Assessment

CLASSIFICATION: Analysis + Commentary

BASIS: CISA Joint Guidance (March 2025) + OT Protocol Specifications

The Problem

CISA's March 2025 guidance on Living Off The Land (LOTL) detection tells defenders:

"Implement detailed logging and aggregate logs in an out-of-band, centralized location."

"Establish and continuously maintain baselines of network, user, administrative, and application activity."

"Build or acquire automation (such as machine learning models) to continually review all logs."

Solid advice. For IT networks.

For OT networks? Fundamentally broken.

Why CISA Guidance Fails in OT

1. OT Protocols Don't Log by Design

CISA assumes every protocol logs every action.

OT reality:

Protocol Default Logging What's Logged What's NOT Logged
Modbus TCP None Nothing Everything (reads, writes, who, when)
S7COMM Optional Sometimes logic uploads Read operations, connection metadata
DNP3 Minimal Critical commands (if enabled) Normal operations, query patterns
BACnet None Nothing All property reads/writes
EtherNet/IP None Nothing CIP commands, register access

Why OT Protocols Don't Log

These protocols were designed in the 1970s-1990s when:

CISA says: "Log everything"

OT reality: "We log nothing by default"

2. Baselining Requires Data You Don't Have

CISA guidance:

"Establish baselines of network, user, administrative, and application activity."

OT reality check:

Question: What's the normal Modbus read/write ratio for your SCADA system?

Defender: "I don't know."


Question: How many historian queries per hour is normal?

Defender: "I don't know."


Question: Which engineering workstations should connect to which PLCs?

Defender: "I don't know. The vendor does maintenance remotely sometimes?"

Why defenders don't know:

  1. No logging - Can't baseline what you don't measure
  2. No monitoring - OT networks often have zero visibility tools
  3. Legacy systems - Some PLCs been running 20+ years, nobody documented normal behavior
  4. Vendor access - Remote support sessions happen ad-hoc, no central tracking

CISA says: "Baseline first, alert on anomaly"

OT reality: "We don't know what normal looks like"

3. Logging Everything = Alert Fatigue (Unusable)

Let's do the math for a medium-sized facility:

Scenario: 100 PLCs, 10 SCADA workstations, 5 historians

Normal operations (per hour):

If we log EVERY operation:

If we alert on "unusual" activity:

Result: 1,000+ false positive alerts per day. Defenders tune them out. Real attack gets buried.

CISA says: "Review all logs continuously"

OT reality: "Alert fatigue makes this unusable"

4. Legitimate Tools = Attack Tools (Can't Distinguish)

CISA guidance focuses on IT LOLBins (PowerShell, WMI, PsExec).

OT equivalent: Every legitimate tool IS an attack tool.

Legitimate Activity Attack Activity How to Tell the Difference?
Vendor uploads new PLC logic Attacker uploads malicious logic You can't. Same protocol, same commands.
Engineer batch-updates setpoints Attacker modifies setpoints You can't. Same write commands.
Historian pulls data for dashboard Attacker exfiltrates data You can't. Same query pattern.
Operator connects via HMI Attacker connects via captured session You can't. Same credentials, same protocol.

Why OT LOTL is Harder Than IT LOTL

IT: PowerShell spawning from Excel = suspicious

OT: Modbus write from engineering workstation = could be legitimate OR attack

No signatures. No malware. No obvious IOC.

CISA says: "Monitor LOLBins usage"

OT reality: "Every tool is a LOLBin. Legitimate and attack look identical."

What Actually Works (Given OT Protocol Limitations)

Since we CAN'T implement CISA guidance as written, here's what defenders CAN do:

1. Protocol-Level Anomaly Detection (Not Volume-Based)

Don't: Log every Modbus read (13 million/day = unusable)

Do: Log protocol ANOMALIES:

# Example: Modbus anomaly detection (not volume logging)
IF write_command AND register IN read_only_list:
    ALERT("Write to read-only register")

IF logic_upload AND time NOT IN maintenance_window:
    ALERT("Logic upload outside maintenance window")

IF command_source_ip NOT IN whitelist:
    ALERT("Command from unknown source")
        

Result: 10-50 alerts/day (actionable) instead of 1,000+ (noise)

2. Asset-Level Baselining (Not Activity-Level)

Don't: Try to baseline "normal" Modbus traffic (you don't have the data)

Do: Baseline WHAT devices exist and WHAT they're allowed to do:

# Allowlist-based detection (no baseline needed)
IF upload_command AND source_ip NOT IN engineering_workstation_list:
    ALERT("Logic upload from unauthorized source")

IF modbus_write AND source_ip NOT IN scada_workstation_list:
    ALERT("Write command from unauthorized source")
        

Result: Detects LOTL without needing "normal" activity baseline

3. Time-Based + Source-Based Detection

Don't: Alert on every vendor remote access session (too many false positives)

Do: Alert on CONTEXT:

# Context-based detection
IF vendor_session AND time BETWEEN 00:00-05:00 AND no_maintenance_ticket:
    ALERT("Vendor access at unusual time without ticket")

IF vendor_session AND commands_per_minute > 50:
    ALERT("Automated command script detected")
        

Result: Catches LOTL abuse without flagging legitimate vendor work

4. Unidirectional Gateways for Historian/Monitoring

Don't: Let historians query production network bidirectionally (LOTL pivot path)

Do: Force historian data OUT via unidirectional gateway (data diode):

Why this works:

  1. Attacker compromises historian (common LOTL target)
  2. Attacker tries to pivot to production PLC
  3. Unidirectional gateway blocks reverse traffic
  4. Attack stops at historian layer

Result: LOTL lateral movement blocked by physics (not signatures)

5. Authentication ABOVE Protocol Layer

Don't: Try to add auth to Modbus/S7COMM/DNP3 (protocols don't support it)

Do: Force ALL OT access through authenticated gateway:

Why this works:

Result: LOTL detection via access layer, not protocol layer

DIY LOTL Detection for OT (Practical Guide)

Step 1: Deploy Protocol-Aware Monitoring (30 days)

Tools (open source):

Goal: Learn what devices exist and what protocols they speak

Step 2: Build Allowlists (Not Baselines) (7 days)

Document:

  1. Which IPs are engineering workstations (may upload logic)
  2. Which IPs are SCADA/HMI (may issue writes)
  3. Which IPs are historians (may query registers)
  4. Which IPs are vendors (remote access)

Store in CSV:

IP,Role,Allowed_Actions,Maintenance_Window
XXX.XXX.XX.10,engineering_ws,modbus_write|s7_upload,any
XXX.XXX.XX.20,scada_hmi,modbus_write,any
XXX.XXX.XX.30,historian,modbus_read,any
XXX.XXX.XXX.XX,vendor_remote,s7_upload,Mon-Fri 08:00-17:00
        

Goal: Know who SHOULD be doing what (not "normal" volume)

Step 3: Deploy Anomaly Alerts (Not Volume Alerts) (7 days)

Alert rules (Zeek/Suricata):

# Write from unknown source
alert modbus any any -> $OT_NETWORK any (
    msg:"Modbus write from unauthorized source";
    flow:to_server;
    modbus_func:write;
    !src_ip:$ALLOWED_WRITE_IPS;
    sid:1000001;
)

# Logic upload outside maintenance window
alert s7comm any any -> $OT_NETWORK any (
    msg:"S7 logic upload outside maintenance window";
    flow:to_server;
    s7_func:upload;
    time:!maintenance_window;
    sid:1000002;
)

# Rapid command sequence (automation/script)
alert modbus any any -> $OT_NETWORK any (
    msg:"Rapid Modbus commands detected (potential automation)";
    flow:to_server;
    threshold:type both,track by_src,count 50,seconds 60;
    sid:1000003;
)
        

Goal: Catch LOTL without alert fatigue

Step 4: Session Recording for Engineering Access (14 days)

Deploy jump box for all engineering access:

Why:

Goal: Post-incident forensics when LOTL is detected

Step 5: Unidirectional Gateway for Monitoring (30 days)

Force all historian/dashboard data through data diode:

Why:

Goal: Block LOTL lateral movement

The Honest Assessment

CISA guidance is correct for IT networks.

For OT networks:

  1. Principle is right - Baseline, log anomalies, detect LOTL
  2. Implementation is wrong - OT protocols can't do what CISA assumes

What defenders need:

The gap between CISA guidance and OT reality is real.

This guide bridges it.

Key Takeaways

  1. CISA says log everything → OT protocols log nothing by default
  2. CISA says baseline normal activity → OT defenders don't know normal (no data)
  3. CISA says alert on anomalies → OT logging everything = 13M alerts/day (unusable)
  4. CISA says detect LOLBins → OT: every tool is a LOLBin (legitimate = attack)

What Works

CISA guidance + OT protocol reality = this article.


References

  1. CISA Joint Guidance: Identifying and Mitigating Living Off the Land Techniques (March 2025)
    https://www.cisa.gov/sites/default/files/2025-03/Joint-Guidance-Identifying-and-Mitigating-LOTL508.pdf
  2. Modbus Protocol Specification - No authentication, no logging by design
  3. IEC 61850 / S7COMM - Optional logging, rarely enabled in practice
  4. DNP3 Secure Authentication - Exists but rarely deployed (legacy compatibility)

Analysis by Jeff Gray, Cyborama OT Intelligence
Published: July 13, 2026
Basis: CISA Joint Guidance + OT Protocol Reality
For defensive use by OT security professionals.

← Back to Control Systems Security · Previous: The 2% Problem

OT Remote Access Playbook

103-page guide: jump-host architectures, MFA for SCADA, vendor session recording, 9 Excel tools.

View Playbook — $39