Concepts Used

This project aims at emulating OT setup of a lab and simulate various cyber attacks.

Concepts Used

1. Introduction to PLCs

  • What is a PLC?
  • PLC Applications in Industry
  • PLC Programming Languages

2. Docker and Containerization

  • Docker Basics

    • What is Docker?
    • Docker Containers and Images
    • Docker Networking (Bridge, Host, Overlay)
  • Docker Compose

    • Defining Multi-container Applications
    • Configuration Management
  • Networking in Docker

    • Bridge Network
    • Virtual Ethernet (veth) Interfaces

3. OpenPLC

  • Introduction to OpenPLC

    • What is OpenPLC?
    • OpenPLC Software Stack and Runtime
    • OpenPLC Code Examples
  • Configuring OpenPLC in Docker

    • Installing OpenPLC on Docker
    • Running OpenPLC Containers
    • Configuring Communication Between Containers

4A. OPC UA Protocol

  • Introduction to OPC UA

    • What is OPC UA?
    • OPC UA Security Features

      • Authentication
      • Encryption
      • Data Integrity
  • Implementing OPC UA in Docker Containers

    • OPC UA Servers and Clients
    • Configuring OPC UA Communication
  • Introduction to Modbus Protocol
    • Default communication protocol behind OpenPLC.
  • Format and content of Modbus data

    • Different types of data storage locations within a slave device.
    • Coils are single-bit, discrete outputs that can be read and written, while registers are 16-bit values that can also be read and written, or read-only depending on the register type.

Coils

  • Represent discrete (boolean), on/off (binary) values, like the state of a switch or a relay.
  • Can be read to determine their current state (on or off).
  • Can be written to change their state (e.g., turn a relay on or off).
  • Modbus function codes for coils include reading multiple coils (01), reading a single coil (05), and writing a single coil (05).

Registers

  • Represent numerical values, typically 16-bit integers.
  • Can be read to retrieve the current value.
  • Can be written to change the value (with some registers being read-only).
  • Modbus function codes for registers include reading multiple holding registers (03), reading multiple input registers (04), writing a single holding register (06), and writing multiple holding registers (16).
  • Two types of registers:

    • Holding Registers (4x): These are general-purpose registers that can be both read and written. They are often used to store configuration parameters or setpoints.
    • Input Registers (3x): These registers are read-only and typically used to store sensor readings or other measured values.

Addressing

  • Each coil or register has a unique address within the Modbus slave device.
  • These addresses are used in Modbus messages to specify which data element is being accessed.
  • The specific addressing scheme (e.g., the starting address for coils or registers) is defined by the Modbus slave device.

5. Networking and Communication in PLC Emulation

  • Docker Bridge Networking

    • How Docker Bridge Works
    • Container-to-Container Communication
  • Ethernet Communication (eth0)

    • Connecting Containers to External Networks

6. Cybersecurity for PLC Systems

  • PLC Vulnerabilities

    • Common PLC Security Threats
    • Known Cyberattacks on PLCs
  • Types of Attacks

    • Man-in-the-Middle (MITM) Attacks
    • Dictionary Attacks
    • Worms and Malware
  • Securing PLC Communications

    • OPC UA Security Features (Authentication, Encryption, Data Integrity)
    • Best Practices for Securing Industrial Networks

7. Cybersecurity Emulation Setup

  • Simulating Cyber Attacks

    • Setting Up MITM Attacks
    • Brute Force and Dictionary Attacks on PLC Systems
    • Worm Simulation in Docker Containers
  • Emulation Infrastructure

    • Configuring Docker Containers for Attack Simulations
    • Secure Configuration of Ports and Network Settings

8. Docker Container Security

  • Securing Docker Containers

    • User Permissions
    • Network Isolation
    • Image Security Best Practices
  • Using Docker Compose for Secure Configurations

    • Multi-Container Security Considerations
    • Managing Exposed Ports

9. Future Work and Optimizations

  • Enhancements in Cybersecurity Emulation

    • Adding New Attack Scenarios
    • Enhancing Security Protocols
  • System Optimization

    • Scaling Docker Containers for Larger Systems
    • Performance Tuning for Docker and OpenPLC