This repository contains a testbed to conduct security experiments within programmable logic controllers (PLC) networks. It is built with docker and a number of open source components (OpenPLC, FUXA, TICK stack, open62541 and more.) It encompasses a small network with a PLC, a human machine interface (HMI), a simulated industrial process, a historian stack, an attacking host. The testbed can be accessed through a web interface which aggregates the hosts.
For a Screenshot scroll down below.
This project is not actively maintained, however it is possible that it will receive fixes in the future.
Contributions are welcome via pull requests. Check out CONTRIBUTING.md
for more details.
TBA
The script testbed.py
provides functionality such as setting dependencies (Docker, etc.),
building the containers and starting/stopping.
The installation script supports Debian, Ubuntu and ArchLinux.
It is essentially a wrapper around the official instructions provided by Docker.
The flag --dont-ask-sudo
can be used to skip the script from asking everytime before running a sudo command.
./testbed.py --install debian # options are 'debian', 'ubuntu' and 'arch'
You can build the local version and start it the following way:
./testbed.py --build local
./testbed.py --start local -d
You can replace local
with one of {local, prod, dev}
,
however most of the time you will want the local version.
If you want to stop it again you can with:
./testbed.py --stop
Documentation about usage is available in this subdirectory, ideally this should be viewed with mdBook or accessed from the hosted docs here
This work was funded by the German Federal Ministry of Education of Research (BMBF) under the grant number 16KIS0933K.