Course Module Outlines
Overview of the Course and Control System Architectures
- Examples of when to use these assessments
- Overview of methodology
- ICS Processes
- Control system architectures
- PLCs, RTUs, and IEDs
- Understanding RTOS
- Industrial and non-Industrial
- What is IIoT, and how does it differ from IoT
- Field devices, buses, and loops
- ICS Site-wide and Region-wide Supervisory
- Plant neworks
- SCADA networks
- Purdue model and IEC 62443
Assessing and Exploiting Controller Logic
- Examples of when to use
- Overview of methodology
- Understanding controller logic
- Exercise: Understanding tags
- Exercise: Understanding ladder logic
- Exercise: Understanding sequential function charts
- Velocio PLCs vs other PLCs
- Exercise: Programming a PLC
- Exercise: Debugging a PLC
- Testing business logic flaws
- Exercise: Leveraging the HMI for proof of concept attacks
Assessing and Exploiting Control Protocols
- Examples of when to use
- Overview of methodology
- Traffic Capture
- Communication mediums vs communication protocols
- Serial communications like RS-232, TIA-422, and TIA-485
- Fieldbus Protocols and Protocol Families
- Understanding USB and serial interfaces on Windows
- Methods to capture serial traffic in Windows and Linux
- Exercise: Capturing serial traffic
- Exercise: Manual decode of Modbus RTU
- Understanding the common 1-off address issue of ICS protocols
- Exercise: Using Wireshark to decode Modbus RTU
- Endpoint and Flow Analysis
- Common TCP/IP-based ICS protocols
- Exercise: Using Wireshark for endpoint and flow analysis
- Exercise: Using GrassMarlin
- Known Protocol Analysis
- Deep dive into Modbus TCP
- Exercise: Analyzing Modbus TCP captures
- Exercise: Using Zeek with Modbus TCP
- Exercise: Using strings on control protocols
- Overview of ProfiNet, EnternetIP/CIP, OPC, DNP3, IEC 104, IEC 61850, ICCP
- Unknown Protocol Analysis
- Exercise: Finding unknown protocols with Wireshark
- Exercise: Entropy analysis of network payloads
- Exercise: Using GrassMarlin on unknown protocols
- Protocol Enumeration
- The severe lack of availability of ICS protocol tools
- Repurposing an engineer’s troubleshooting tools
- Exercise: Using Python to interact with Modbus RTU on our PLC
- Exercise: Enumeration with ctmodbus on our PLC
- Understanding data types and 2’s complement
- Protocol Fuzzing
- Reasons to avoid fuzzing protocols on embedded devices
- Exercise: Writing protocol fuzzers with boofuzz
- Exercise: Fuzzing Modbus TCP on our PLC
- Exercise: Manual fuzzing with ctmodbus
- Protocol Exploitation
Assessing and Exploiting Proprietary Serial Protocols
- Examples of when to use
- Overview of methodology
- Functional analysis
- Using ICS vendor maintenance software and hardware
- Exercise: Functional analysis of PLC’s vendor tools
- Communication capture
- Capturing USB with hardware, software, and virtualization layers
- Understanding USB and serial interfaces on Windows
- Exercise: Capture of our vendor tool interactions with our PLC
- Capture analysis
- Exercise: Analysis of our vendor’s proprietary protocol
- Exercise: Reverse engineering our vendor’s proprietary protocol
- Exercise: Using Wireshark’s column, comment, and coloring rules for RE
- Testing harness creation
- Exercise: Creating serial connections with Python
- Exercise: Using ctserial to impersonate our vendor tools
- Endpoint fuzzing
- Exercise: Using ctserial for manual fuzzing on our PLC
- Exploitation