This is not your traditional SCADA, ICS, IIoT security course! How many courses send you home with lifetime access to course updates and a $500 kit including your own PLC and a set of hardware RF hacking tools?!? This course teaches hands-on penetration testing techniques used to test individual components of a control system, including embedded electronic field devices, network protocols, RF communications, Human Machine Interfaces (HMIs), and various forms of master servers and their ICS applications. Skills you will learn in this course will apply directly to systems such as the Smart Grid, PLCs, RTUs, smart meters, building management, manufacturing, Home Area Networks (HAN), smart appliances, SCADA, substation automation, synchrophasors, and even IoT.

This course is structured around the formal penetration testing methodology created by UtiliSec for the United States Department of Energy. Using this methodology and the ControlThings Platform (previously SamuraiSTFU), an open source Linux distribution for pentesting energy sector systems and other critical infrastructure, we will perform hands-on penetration testing tasks on user interfaces (on master servers and field device maintenance interfaces), control system protocols (modbus, DNP3, IEC 60870-5-104), proprietary RF communications (433MHz, 869MHz, 915MHz), and embedded circuit attacks (memory dumping, bus snooping, JTAG, and firmware analysis). We will tie these techniques and exercises back to control system devices that can be tested using these techniques. The course exercises will be performed on a mixture of real world and simulated devices to give attendees the most realistic experience possible in a portable classroom setting.

Advances in modern control systems, including initiatives such as the Smart Grid and Industry 4.0, have brought great benefits for asset owners/operators and customers alike, however these benefits have often come at a cost from a security perspective. With increased functionality and additional inter-system communication, modern control systems bring a greater risk of compromise that vendors, asset owners/operators, and society in general must accept to realize the desired benefits. To minimize this risk, penetration testing in conjunction with other security assessment types must be performed to minimize vulnerabilities before attackers can exploit critical infrastructures that exist in all countries around the world. Ultimately, this is the goal of this course, to help you know how, when, and where this can be done safely in your control systems.

Course Length and Content:

This course is broken into individual modules, with each being offered individually or combined into course lengths from 1-5 days in length. Here is a list of the current modules and their approximate length, which can be slightly increased or decreased depending on conference or client needs.

Assessing and Exploiting Control System Architectures - 0.5 Days
Assessing and Exploiting Control Network Captures - 1.0 Days
Assessing and Exploiting Production Control Networks - 0.5 Days
Assessing and Exploiting Controller Logic - 0.5 Days
Assessing and Exploiting Control Protocols - 0.5 Days
Assessing and Exploiting Proprietary Serial Protocols - 0.5 Days
Assessing and Exploiting Proprietary RF Protocols - 1.0 Days
Assessing and Exploiting Embedded Memory - 0.5 Days
Assessing and Exploiting Embedded Firmware - 0.5 Days

Read more +


This course is designed for intermediate level security professionals, be they engineers, technicians, analysts, managers, or penetration testers. Basic penetration testing experience is desirable, but not required. It is assumed that attendees will have no knowledge of ICS, Smart Grid, SCADA, or critical infrastructure.

Recommended Reading before the Course:

For those with little or no ICS experience, these Wikipedia articles provide a brief introduction to the concepts and history of control systems that will be helpful to know for class.

NIST 800-82 is a great introduction to industrial control systems, the security issues surrounding them, and basic cyber defenses

Since this course will be getting very deep into the technical weeds of communications, it would be helpful to have a basic understanding of the following encoding methods: ASCII, Unicode, UTF-8, UTF-16, and UTF-32

Read more +

Learning Outcomes

  • Attendees will be able to explain the steps and methodology used in performing penetration tests on Industrial Control Systems and Industrial Internet of Things.
  • Attendees will be able to use the free and open source tools in ControlThings Platform to discover and identify vulnerabilities in web applications.
  • Attendees will be able to exploit several hardware, network, serial, user interface, RF, and server-side vulnerabilities.

Resources Provided on the Course:

The following items (or rough equivalents depending on availability) are provided to each attendee to use in class and keep after course completion:

  • Velocio Ace 1600 PLC (Programmable Logic Controller)
  • vBuilder software to program the PLC to keep (non-expiring)
  • vFactory software to program an HMI for the PLC (non-expiring)
  • RTL-SDR (Software Defined Radio)
  • Great Scott Gadgets Yardstick sub-GHz Radio
  • Great Scott Gadgets GreatFET
  • Breadboard with SPI and I2C EEPROMs
  • TivaC Launchpad (ARM m4) for Firmware exercises
  • Latest version of the ControlThings Platform on USB
  • PDF version of the course slide deck
  • Lifetime access to future updates to the course modules presented in class, restricted to the individual that attended the course
Read more +

Course Outline

Assessing and Exploiting Control System Architectures

  • Examples when to use
  • Overview of methodology
  • Different security assessment types and their respective benefits and risks
    • Passive vs active assessments
    • Manual vs automated
    • Reasons why architecture reviews should always be performed first
  • Basic control system concepts, systems, and devices
  • Control system architectures
  • PLCs, RTUs, and IEDs
  • Understanding RTOS
  • Industrial and non-Industrial
  • What is IIoT and how it differs from IoT
  • Field devices, buses, and loops
  • Plant neworks
  • SCADA networks
  • Purdue model and IEC 62443
  • DCS vs SCADA

Assessing and Exploiting Control Network Captures

  • Examples when to use
  • Overview of methodology
  • Traffic Capture
    • Hardware and software to use
    • Suggested configurations
  • Endpoint and Flow Analysis
  • Common TCP/IP based ICS protocols
  • Exercise: Using Wireshark for endpoint and flow analysis
  • Exercise: Using GrassMarlin
  • Deepdive into Modbus TCP
  • Exercise: Analysing 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
  • Exercise: Finding unknown protocols with Wireshark
  • Exercise: Entropy analysis of network payloads
  • Exercise: Using GrassMarlin on unknown protocols
  • Known Protocol Analysis
  • Unknown Protocol Analysis
  • Gap Analysis with Security Architecture Review

Assessing and Exploiting Production Control Networks

  • Examples when to use
  • Overview of methodology
  • DNS interrogation
    • When DNS is and when it is not available
    • Using but not abusing DNS
  • Port Scanning
  • How and why control systems break on port scans
  • Nmap options to avoid
  • General Nmap recommendations
  • Recommended Nmap scans from low to high risk
  • Safe and unsafe fingerprinting technologies
  • Alternatives to traditional fingerprinting
  • Common IT protocols that are generally safe to enumerate on control systems
  • Avoiding automatic enumerating of web interfaces on control systems
  • Dangers of enumeration control protocols in production
  • Plugins and configuration that break control systems
  • Recommended settings for Nessus
  • Using audits
  • Again, the dangers of automated tools on web apps and services
  • Technology Fingerprinting
  • Protocol Enumeration
  • Vulnerability Scanning
  • Vulnerability validation
  • Exploitation
  • Post Exploitation / Cleanup

Assessing and Exploiting Controller Logic

  • Examples 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
  • Exercise: Leveraging the HMI for proof of concept attacks
  • Testing business logic flaws

Assessing and Exploiting Control Protocols

  • Examples 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
  • 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
  • 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 Fuzzing
  • Protocol Exploitation

Assessing and Exploiting Proprietary Serial Protocols

  • Examples 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
  • 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
  • Exercise: Creating serial connections with Python
  • Exercise: Using ctserial to impersonate our vendor tools
  • Exercise: Using ctserial for manual fuzzing on our PLC
  • Capture analysis
  • Testing harness creation
  • Endpoint fuzzing
  • Exploitation

Assessing and Exploiting Proprietary RF Protocols

  • Examples when to use
  • Overview of methodology
  • Capturing RF Signals
    • Hardware used for different RF protocols
    • When to use SDR vs rfcat
    • Comparison of different SDR hardware
    • Finding the right frequencies
    • Using the right antenna and using it correctly
    • Exercise: RF spectrum analysis with RTL-SDR and GQRX
    • Exercise: RF signal capture with RTL-SDR and Universal Radio Hacker (URH)
    • Basic analysis of the captured signal
  • Spread Spectrum types and strategies
  • Strategies for recovering frequency hopping
  • Visual identification of basic modulation types
  • Online samples of basic and complex modulation types
  • Exercise: ASK-OOK demodulation with RTL-SDR and URH
  • Exercise: 2FSK demodulation with RTL-SDR and URH
  • Exercise: Using rfcat and Yardstick One to generate our own RF packets
  • Understanding how data streams are assembled
  • Exercise: Analysis of packets URH
  • Exercise: Defining a protocol inside URH
  • Traffic transmission and exploitation
  • Hardware needed for transmission
  • Signal transmission with URH
  • Exercise: Replaying captured packets with URH and rfcat
  • Modulation and Demodulation
  • Bitstream to Packets
  • RF Transmission

Assessing and Exploiting Embedded Memory

  • Examples when to use
    • Local attack through physically exposed devices
    • Expanding physical attacks to remote attacks
    • Cryptographic keys and firmware
  • Overview of methodology
  • Device disassembly
  • Component analysis on embedded circuits
  • Understanding engineer speak
  • Exercise: Reading an EEPROM datasheet
  • Tools and software to use
  • Overview of SPI serial protocol
  • How SPI is generally used on EEPROMs
  • Exercise: Using GreatFET to interact with SPI EEPROMs
  • Exercise: Writing Python functions for SPI in GreatFET software
  • Tools and software to use
  • Dangers of voltage and current to your tool and attached computer
  • Exercise: Using GreatFET to capture SPI traffic
  • Exercise: Doing string analysis of datasets
  • Exercise: Doing entropy analysis of datasets
  • Exercise: Doing systematic key searches through datasets
  • Exercise: Doing file carving from datasets
  • Exercise: Dumping I2C EEPROMs with buspirate
  • Exercise: I2C bus capture with buspirate
  • Exercise: I2C bus capture with Saleae Logic
  • Exercise: Dumping SPI EEPROMs with buspriate
  • Exercise: SPI bus capture with buspriate
  • Exercise: SPI bus capture with Saleae Logic
  • Datasheet acquisition and analysis
  • Dumping data at rest
  • Capturing bus data
  • Analyzing data obtained from data dumping and bus snooping
  • Bonus material in the appendix (not covered in class)

Assessing and Exploiting Embedded Firmware

  • Examples when to use
  • Overview of methodology
  • Obtaining the firmware
    • Overview of JTAG
    • Exercise: Using OpenOCD to debug our ARM Cortex m4 Launchpad
    • Exercise: Using OpenOCD to dump our ARM Cortex Launchpad memory
    • Exercise: Identifying where the firmware is in the dump
  • Firmware disassembly
  • Code object analysis
  • Code functional analysis
  • Exploiting firmware flaws
  • Exercise: Dumping memory and firmware from MSP430 LaunchPad
  • Exercise: Firmware encoding types and converting between them
  • Exercise: Disassembling MSP430 firmware
  • Firmware exploitation
  • Bonus material in the appendix (not covered in class)

Exercise: MSP430 firmware crypto challenge

Author & Lead Instructor Bio

Justin Searle is the Director of ICS Security at InGuardians, specializing in ICS security architecture design and penetration testing. He led the Smart Grid Security Architecture group in the creation of NIST Interagency Report 7628 and has played key roles in the Advanced Security Acceleration Project for the Smart Grid (ASAP-SG), National Electric Sector Cybersecurity Organization Resources (NESCOR), and Smart Grid Interoperability Panel (SGIP).

Justin has taught courses in hacking techniques, forensics, networking, and intrusion detection for multiple universities, corporations, and security conferences. He is currently a Senior Instructor for the SANS Institute and a faculty member at IANS. In addition to electric power industry conferences, Justin frequently presents at top international security conferences such as Black Hat, DEFCON, OWASP, Nullcon, and AusCERT.

Justin leads prominent open source projects including the The Control Thing Platform, Samurai Web Testing Framework (SamuraiWTF), Samurai Security Testing Framework for Utilities (SamuraiSTFU). He has an MBA in International Technology and is a CISSP and SANS GIAC certified Incident Handler (GCIH), Intrusion Analyst (GCIA), Web Application Penetration Tester (GWAPT), and GIAC Industrial Control Security Professional (GICSP).

Read more +

QA is proud to be the UK partner for In.Guardians SCADA ICS and IIoT training.

In.Guardians Advanced Persistent Testing logo

Why choose QA

Cyber Security learning paths

Want to boost your career in cyber security? Click on the roles below to see QA's learning pathways, specially designed to give you the skills to succeed.

= Required
= Certification
AI Security
Application Security
Cloud Security
Cyber Blue Team
DFIR Digital Forensics & Incident Response
Industrial Controls & OT Security
Information Security Management
NIST Pathway
Offensive Security
Privacy Professional
Reverse Engineer
Secure Coding
Security Auditor
Security Architect
Security Risk
Cyber Tech Generalist
Vulnerability Assessment & Penetration Testing
Need to know

Frequently asked questions

How can I create an account on myQA.com?

There are a number of ways to create an account. If you are a self-funder, simply select the "Create account" option on the login page.

If you have been booked onto a course by your company, you will receive a confirmation email. From this email, select "Sign into myQA" and you will be taken to the "Create account" page. Complete all of the details and select "Create account".

If you have the booking number you can also go here and select the "I have a booking number" option. Enter the booking reference and your surname. If the details match, you will be taken to the "Create account" page from where you can enter your details and confirm your account.

Find more answers to frequently asked questions in our FAQs: Bookings & Cancellations page.

How do QA’s virtual classroom courses work?

Our virtual classroom courses allow you to access award-winning classroom training, without leaving your home or office. Our learning professionals are specially trained on how to interact with remote attendees and our remote labs ensure all participants can take part in hands-on exercises wherever they are.

We use the WebEx video conferencing platform by Cisco. Before you book, check that you meet the WebEx system requirements and run a test meeting (more details in the link below) to ensure the software is compatible with your firewall settings. If it doesn’t work, try adjusting your settings or contact your IT department about permitting the website.

How do QA’s online courses work?

QA online courses, also commonly known as distance learning courses or elearning courses, take the form of interactive software designed for individual learning, but you will also have access to full support from our subject-matter experts for the duration of your course. When you book a QA online learning course you will receive immediate access to it through our e-learning platform and you can start to learn straight away, from any compatible device. Access to the online learning platform is valid for one year from the booking date.

All courses are built around case studies and presented in an engaging format, which includes storytelling elements, video, audio and humour. Every case study is supported by sample documents and a collection of Knowledge Nuggets that provide more in-depth detail on the wider processes.

When will I receive my joining instructions?

Joining instructions for QA courses are sent two weeks prior to the course start date, or immediately if the booking is confirmed within this timeframe. For course bookings made via QA but delivered by a third-party supplier, joining instructions are sent to attendees prior to the training course, but timescales vary depending on each supplier’s terms. Read more FAQs.

When will I receive my certificate?

Certificates of Achievement are issued at the end the course, either as a hard copy or via email. Read more here.

Let's talk

By submitting this form, you agree to QA processing your data in accordance with our Privacy Policy and Terms & Conditions. You can unsubscribe at any time by clicking the link in our emails or contacting us directly.