Difference between revisions of "Training 2015 - Assessing and Exploiting Control Systems"
From BruCON 2017
(→Course Description) |
(→Trainer Biography) |
||
(10 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | = | + | =Assessing and Exploiting Control Systems= |
This is not your traditional SCADA security course! How many courses send you home with 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, and master servers. Skill learned 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, and synchrophasors. This course is structured around the formal penetration testing methodology created by UtiliSec for the United States Department of Energy. Using this methodology and SamuraiSTFU (Security Testing Framework for Utilities), an open source Linux distribution for pentesting energy sector systems and other critical infrastructure, we'll 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), RF communications (433MHz, 869MHz, 915MHz), and embedded circuit attacks (memory dumping, bus snooping, JTAG, and firmware analysis). We’ll 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 students the most realistic experience as possible in a portable classroom setting. | This is not your traditional SCADA security course! How many courses send you home with 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, and master servers. Skill learned 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, and synchrophasors. This course is structured around the formal penetration testing methodology created by UtiliSec for the United States Department of Energy. Using this methodology and SamuraiSTFU (Security Testing Framework for Utilities), an open source Linux distribution for pentesting energy sector systems and other critical infrastructure, we'll 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), RF communications (433MHz, 869MHz, 915MHz), and embedded circuit attacks (memory dumping, bus snooping, JTAG, and firmware analysis). We’ll 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 students the most realistic experience as possible in a portable classroom setting. | ||
Line 13: | Line 13: | ||
vulnerabilities | vulnerabilities | ||
− | =Course | + | =Course Content= |
− | == Introduction == | + | ==Introduction to the NESCOR methodology for penetration testing== |
+ | * Preparing for a penetration test | ||
+ | * Architecture reviews | ||
+ | * Pentesting the master servers | ||
+ | * Pentesting the user interfaces | ||
+ | * Pentesting the network communications | ||
+ | * Pentesting the embedded field devices | ||
+ | * End-‐to-‐end assessment | ||
+ | * Reporting | ||
+ | |||
+ | ==Introduction to SamuraiSTFU (Security Testing Framework for Utilities)== | ||
+ | * Setting up the virtual machine | ||
+ | * Walk through the tools and functionality | ||
+ | * Introduction to the student hardware kits | ||
+ | |||
+ | ==Performing traditional network pentests on control systems == | ||
+ | * Overview of a traditional network penetration test methodology | ||
+ | * Dangers of port and vulnerability scanning | ||
+ | * Strategies to perform port and vulnerability scanning | ||
+ | |||
+ | ==Types of ICS user interfaces == | ||
+ | * Traditional applications | ||
+ | * Web applications | ||
+ | * Terminal interfaces | ||
+ | |||
+ | ==Pentesting Different Communication Layers == | ||
+ | * Testing of communication mediums vs communication protocols | ||
+ | * Where security defenses should be place …… and tested | ||
+ | |||
+ | ==Serial communications == | ||
+ | * RS-485 and RS-232 | ||
+ | * Modbus RTU | ||
+ | * 16-bit unsigned registers and single bit coils | ||
+ | |||
+ | ==Pentesting RF communications between master servers and field devices == | ||
+ | * Hands-on RF spectrum analysis and signal capture | ||
+ | * Spread Spectrum types and strategies | ||
+ | * Hands-on signal demodulation with GNU Radio | ||
+ | * Hands-on network traffic extraction | ||
+ | * Traffic transmission and exploitation | ||
+ | |||
+ | ==Pentesting TCP/IP based ICS protocols == | ||
+ | * Protocol capture and analysis | ||
+ | * modbus, DNP3, IEC 61850, ICCP, ZigBee, C37.118, and C12.22 | ||
+ | * Dealing with unknown protocols | ||
+ | * Hands-on entropy analysis of network payloads | ||
+ | * Reverse engineering unknown protocols | ||
+ | * Hands-on ICS protocol fuzzing | ||
+ | |||
+ | ==Pentesting technician interfaces on ICS field and floor devices == | ||
+ | * Functional analysis of field technician interfaces | ||
+ | * Hands-on exercise capturing USB communications to tech interfaces | ||
+ | * Hands-on exercise analyzing captured USB communications | ||
+ | * Impersonating endpoints in field tech interface communications | ||
+ | * Hands-on exercises fuzzing AMI Smart Meter c12.18 optical interfaces | ||
+ | * Exploiting vulnerabilities found during analysis | ||
+ | |||
+ | ==Analyzing field and floor device firmware == | ||
+ | * Obtaining field and floor device firmware | ||
+ | * Hands-on exercise disassembling firmware | ||
+ | * Hands-on exercise analyzing disassembled firmware | ||
+ | * Exploiting firmware flaws | ||
+ | |||
+ | ==Overview of pentesting field and floor device embedded circuits == | ||
+ | * Local attack through physically exposed devices | ||
+ | * Expanding physical attacks to remote attacks | ||
+ | * Cryptographic keys and firmware | ||
+ | |||
+ | ==Analysis of embedded electronics in ICS field and floor devices == | ||
+ | * Discussion of device disassembly | ||
+ | * Component analysis on embedded circuits | ||
+ | * Datasheet acquisition and analysis for target components | ||
+ | |||
+ | ==Dumping data at rest on embedded circuits == | ||
+ | * Using the Bus Pirate and other similar tools | ||
+ | * Overview of I2C or two-wire serial protocol | ||
+ | * Hands-on exercise dumping I2C EEPROMs | ||
+ | * Overview of SPI serial protocol | ||
+ | * Hands-on exercise dumping SPI EEPROMs | ||
+ | * Overview of JTAG | ||
+ | * Hands-on exercise interfacing with JTAG | ||
+ | |||
+ | ==Bus Snooping on embedded circuits == | ||
+ | * Overview of bus snooping | ||
+ | * Hands-on exercise snooping busses | ||
+ | |||
+ | ==Analyzing data obtained from data dumping and bus snooping == | ||
+ | * Hands-on exercise doing string analysis of datasets | ||
+ | * Hands-on exercise doing entropy analysis of datasets | ||
+ | * Hands-on exercise doing systematic key searches through datasets | ||
+ | * Hands-on exercise doing file carving from datasets | ||
= Requirements = | = Requirements = | ||
− | + | 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. This course is designed for intermediate level security professionals, be they engineers, technicians, analysts, managers, or penetration testers. | |
− | * | + | |
− | * | + | == Recommended read == |
− | + | 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. | |
+ | * http://en.wikipedia.org/wiki/ICS | ||
+ | * http://en.wikipedia.org/wiki/SCADA | ||
+ | * http://en.wikipedia.org/wiki/Distributed_control_system | ||
+ | * http://en.wikipedia.org/wiki/Smart_grid | ||
+ | |||
+ | http://nostarch.com/xboxfree - While this has nothing to do with control systems, it provides a great introduction to the concepts and techniques taught in this class to pentest embedded electronic hardware in ICS field/floor devices. | ||
+ | |||
+ | http://csrc.nist.gov/publications/nistir/ir7628/nistir-‐7628_vol3.pdf -‐ Chapter 7 of the NIST interagency | ||
+ | Report 7628, titled Bottom-‐up Security Analysis of the Smart Grid, provides a great overview of the challenges faced in Smart Grid and energy sector systems, many of which we are testing for and exploiting in this class. | ||
== Software and hardware requirements == | == Software and hardware requirements == | ||
− | + | * Laptop with at least two USB ports (three ports preferred). If only two USB ports exist on the Laptop and they are right next to each other (such as found on a Macbook Air), a USB extension cable must be brought as well | |
− | + | * Latest VMware Player, VMware Workstation, VWware Fusion installed. Other virtualization software such as Parallels or VirtualBox may work if the attendee is familiar with its functionality, however VMware Player should be prepared as a backup just in case | |
− | + | * Access to an account with administrative permissions and the ability to disable all security software on their laptop such as Antivirus and/or firewalls if needed for the class | |
− | + | * A DVD drive to copy the course files | |
+ | * At least thirty (30) GB of free hard drive space | ||
+ | * At least four (4) GB of RAM, optimally eight (8) GB of RAM | ||
+ | |||
+ | == Provided at the course == | ||
+ | * Latest version of SamuraiSTFU (Security Testing Framework for Utilities) | ||
+ | * PDF version of the course slide deck | ||
+ | * Student hardware/RF pentest kits to use in class and take home | ||
=Trainer Biography= | =Trainer Biography= | ||
− | [[File: | + | [[File:Searle_snapshot.jpg|thumb|125px]] |
− | + | Justin Searle, the author of the course, will replace Don C. Weber as trainer for this course. | |
− | |||
− | |||
− | + | Justin Searle is a Managing Partner of UtiliSec, specializing in Smart Grid security architecture design and penetration testing. Justin 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. | |
− | + | Mr. Searle is currently a certified instructor for the SANS Institute. 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 co-leads prominent open source projects including the Samurai Web Testing Framework (SamuraiWTF), the Samurai Security Testing Framework for Utilities (SamuraiSTFU), Yokoso!, and Laudanum. Justin has an MBA in International Technology and is a CISSP and SANS GIAC certified Incident Handler (GCIH), Intrusion Analyst (GCIA), and Web Application Penetration Tester (GWAPT). | |
− | + | More information on his security [http://www.meeas.com/ blog]. | |
− | |||
+ | <br>[[Image:300px-twitter-icon.jpg|17px]] [https://twitter.com/meeas @meeas] | ||
+ | <br>[http://www.utilisec.com http://www.utilisec.com] | ||
''Mon. 5 - 7 October 2015 (09:00 - 17:00)'' | ''Mon. 5 - 7 October 2015 (09:00 - 17:00)'' |
Latest revision as of 21:00, 29 August 2015
Contents
- 1 Assessing and Exploiting Control Systems
- 2 Course Content
- 2.1 Introduction to the NESCOR methodology for penetration testing
- 2.2 Introduction to SamuraiSTFU (Security Testing Framework for Utilities)
- 2.3 Performing traditional network pentests on control systems
- 2.4 Types of ICS user interfaces
- 2.5 Pentesting Different Communication Layers
- 2.6 Serial communications
- 2.7 Pentesting RF communications between master servers and field devices
- 2.8 Pentesting TCP/IP based ICS protocols
- 2.9 Pentesting technician interfaces on ICS field and floor devices
- 2.10 Analyzing field and floor device firmware
- 2.11 Overview of pentesting field and floor device embedded circuits
- 2.12 Analysis of embedded electronics in ICS field and floor devices
- 2.13 Dumping data at rest on embedded circuits
- 2.14 Bus Snooping on embedded circuits
- 2.15 Analyzing data obtained from data dumping and bus snooping
- 3 Requirements
- 4 Trainer Biography
Assessing and Exploiting Control Systems
This is not your traditional SCADA security course! How many courses send you home with 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, and master servers. Skill learned 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, and synchrophasors. This course is structured around the formal penetration testing methodology created by UtiliSec for the United States Department of Energy. Using this methodology and SamuraiSTFU (Security Testing Framework for Utilities), an open source Linux distribution for pentesting energy sector systems and other critical infrastructure, we'll 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), RF communications (433MHz, 869MHz, 915MHz), and embedded circuit attacks (memory dumping, bus snooping, JTAG, and firmware analysis). We’ll 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 students the most realistic experience as possible in a portable classroom setting.
Advances in modern control systems such as the energy sector’s “Smart Grid” brings great benefits for asset owners/operators and customers alike, however these benefits come at a cost from a security perspective. With increased functionality and addition inter-‐system communication, modern control systems bring a greater risk of compromise that both asset owners/operators and customers 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.
Objectives
- Attendees will be able to explain the steps and methodology used in performing penetration tests on
Industrial Control and Smart Grid systems.
- Attendees will be able to use the free and open source tools in SamuraiSTFU to discover and identify
vulnerabilities in web applications.
- Attendees will be able to exploit several hardware, network, user interface, and server-‐side
vulnerabilities
Course Content
Introduction to the NESCOR methodology for penetration testing
- Preparing for a penetration test
- Architecture reviews
- Pentesting the master servers
- Pentesting the user interfaces
- Pentesting the network communications
- Pentesting the embedded field devices
- End-‐to-‐end assessment
- Reporting
Introduction to SamuraiSTFU (Security Testing Framework for Utilities)
- Setting up the virtual machine
- Walk through the tools and functionality
- Introduction to the student hardware kits
Performing traditional network pentests on control systems
- Overview of a traditional network penetration test methodology
- Dangers of port and vulnerability scanning
- Strategies to perform port and vulnerability scanning
Types of ICS user interfaces
- Traditional applications
- Web applications
- Terminal interfaces
Pentesting Different Communication Layers
- Testing of communication mediums vs communication protocols
- Where security defenses should be place …… and tested
Serial communications
- RS-485 and RS-232
- Modbus RTU
- 16-bit unsigned registers and single bit coils
Pentesting RF communications between master servers and field devices
- Hands-on RF spectrum analysis and signal capture
- Spread Spectrum types and strategies
- Hands-on signal demodulation with GNU Radio
- Hands-on network traffic extraction
- Traffic transmission and exploitation
Pentesting TCP/IP based ICS protocols
- Protocol capture and analysis
- modbus, DNP3, IEC 61850, ICCP, ZigBee, C37.118, and C12.22
- Dealing with unknown protocols
- Hands-on entropy analysis of network payloads
- Reverse engineering unknown protocols
- Hands-on ICS protocol fuzzing
Pentesting technician interfaces on ICS field and floor devices
- Functional analysis of field technician interfaces
- Hands-on exercise capturing USB communications to tech interfaces
- Hands-on exercise analyzing captured USB communications
- Impersonating endpoints in field tech interface communications
- Hands-on exercises fuzzing AMI Smart Meter c12.18 optical interfaces
- Exploiting vulnerabilities found during analysis
Analyzing field and floor device firmware
- Obtaining field and floor device firmware
- Hands-on exercise disassembling firmware
- Hands-on exercise analyzing disassembled firmware
- Exploiting firmware flaws
Overview of pentesting field and floor device embedded circuits
- Local attack through physically exposed devices
- Expanding physical attacks to remote attacks
- Cryptographic keys and firmware
Analysis of embedded electronics in ICS field and floor devices
- Discussion of device disassembly
- Component analysis on embedded circuits
- Datasheet acquisition and analysis for target components
Dumping data at rest on embedded circuits
- Using the Bus Pirate and other similar tools
- Overview of I2C or two-wire serial protocol
- Hands-on exercise dumping I2C EEPROMs
- Overview of SPI serial protocol
- Hands-on exercise dumping SPI EEPROMs
- Overview of JTAG
- Hands-on exercise interfacing with JTAG
Bus Snooping on embedded circuits
- Overview of bus snooping
- Hands-on exercise snooping busses
Analyzing data obtained from data dumping and bus snooping
- Hands-on exercise doing string analysis of datasets
- Hands-on exercise doing entropy analysis of datasets
- Hands-on exercise doing systematic key searches through datasets
- Hands-on exercise doing file carving from datasets
Requirements
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. This course is designed for intermediate level security professionals, be they engineers, technicians, analysts, managers, or penetration testers.
Recommended read
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.
- http://en.wikipedia.org/wiki/ICS
- http://en.wikipedia.org/wiki/SCADA
- http://en.wikipedia.org/wiki/Distributed_control_system
- http://en.wikipedia.org/wiki/Smart_grid
http://nostarch.com/xboxfree - While this has nothing to do with control systems, it provides a great introduction to the concepts and techniques taught in this class to pentest embedded electronic hardware in ICS field/floor devices.
http://csrc.nist.gov/publications/nistir/ir7628/nistir-‐7628_vol3.pdf -‐ Chapter 7 of the NIST interagency Report 7628, titled Bottom-‐up Security Analysis of the Smart Grid, provides a great overview of the challenges faced in Smart Grid and energy sector systems, many of which we are testing for and exploiting in this class.
Software and hardware requirements
- Laptop with at least two USB ports (three ports preferred). If only two USB ports exist on the Laptop and they are right next to each other (such as found on a Macbook Air), a USB extension cable must be brought as well
- Latest VMware Player, VMware Workstation, VWware Fusion installed. Other virtualization software such as Parallels or VirtualBox may work if the attendee is familiar with its functionality, however VMware Player should be prepared as a backup just in case
- Access to an account with administrative permissions and the ability to disable all security software on their laptop such as Antivirus and/or firewalls if needed for the class
- A DVD drive to copy the course files
- At least thirty (30) GB of free hard drive space
- At least four (4) GB of RAM, optimally eight (8) GB of RAM
Provided at the course
- Latest version of SamuraiSTFU (Security Testing Framework for Utilities)
- PDF version of the course slide deck
- Student hardware/RF pentest kits to use in class and take home
Trainer Biography
Justin Searle, the author of the course, will replace Don C. Weber as trainer for this course.
Justin Searle is a Managing Partner of UtiliSec, specializing in Smart Grid security architecture design and penetration testing. Justin 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.
Mr. Searle is currently a certified instructor for the SANS Institute. 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 co-leads prominent open source projects including the Samurai Web Testing Framework (SamuraiWTF), the Samurai Security Testing Framework for Utilities (SamuraiSTFU), Yokoso!, and Laudanum. Justin has an MBA in International Technology and is a CISSP and SANS GIAC certified Incident Handler (GCIH), Intrusion Analyst (GCIA), and Web Application Penetration Tester (GWAPT).
More information on his security blog.
@meeas
http://www.utilisec.com
Mon. 5 - 7 October 2015 (09:00 - 17:00)