Giter VIP home page Giter VIP logo

solymx / grficsv2 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fortiphyd/grficsv2

0.0 0.0 0.0 195.66 MB

Version 2 of the Graphical Realism Framework for Industrial Control Simulation (GRFICS)

C++ 56.02% Makefile 0.44% Python 0.76% Shell 10.28% JavaScript 0.88% CSS 0.05% HTML 0.77% PHP 0.01% Dockerfile 0.01% C 13.83% Objective-C 4.05% Emacs Lisp 0.01% M4 0.39% Yacc 10.26% LLVM 2.26%

grficsv2's Introduction

GRFICSv2

Version 2 of the Graphical Realism Framework for Industrial Control Simulation (GRFICS)

Overview

This version of GRFICS is organized as 4 VirtualBox VMs (a 3D simulation, a soft PLC, a HMI, and a pfsense firewall) communicating with each other on a host-only virtual networks. For a more detailed explanation of the entire framework and some background information on ICS networks, please refer to the workshop paper located at https://www.usenix.org/conference/ase18/presentation/formby

A video series walking through VM setup and example attacks is available on the Fortiphyd YouTube channel at https://www.youtube.com/playlist?list=PL2RSrzaDx0R670yPlYPqM51guk3bQjFG5

A commercial version of GRFICS with more scenarios, advanced features, and streamlined usability is being offered by Fortiphyd Logic. Find out more at https://www.fortiphyd.com/training

Simulation

The simulation VM runs a realistic simulation of a chemical process reaction that is controlled and monitored by simulated remote IO devices through a simple JSON API. These remote IO devices are then monitored and controlled by the PLC VM using the Modbus protocol. This VM is located in the ICS network subnet (192.168.95.0/24) with the IP addresses 192.168.95.10-192.168.95.15 simulation

Programmable Logic Controller

The PLC VM is a modified version of OpenPLC (https://github.com/thiagoralves/OpenPLC_v2) that uses an older version of the libmodbus library with known buffer overflow vulnerabilities. This VM is located in the ICS network subnet (192.168.95.0/24) at 192.168.95.2

Human Machine Interface

The HMI VM primarily contains an operator HMI created using the free ScadaBR software. This HMI is used to monitor the process measurements being collected by the PLC and send commands to the PLC. This VM is located in the DMZ network subnet (192.168.90.0/24) at 192.168.90.5 hmi

PfSense Firewall/Router

The firewall VM provides routing and firewall features between the DMZ and ICS network. The WAN interface is on the DMZ subnet (192.168.90.0/24) at 192.168.90.100 and the LAN interface is on the ICS subnet (192.168.95.0/24) at 192.168.95.1

Engineering Workstation

The workstation VM is an Ubuntu 16.04 machine with software used for programming the OpenPLC. The workstation is located in the ICS network (192.168.95.0/24) at 192.168.95.5.

Installing from scratch

  1. Download and install the latest version of VirtualBox.

  2. Create a host-only interface in VirtualBox.

  3. Download an image for both the desktop and server versions of 64-bit Ubuntu 16.04.

  4. See instructions for each VM in corresponding directories.

Pre-built VMs

  1. Download VMs:

    • Simulation VM - MD5=02af6c2502ecaab6c6d138deb560b27d
    • HMI VM - MD5=20ef1ff9e36f80ea3e257806bec09274
    • pfsense VM - MD5=521745220cd2f6e268eb188934d6b0ad
    • PLC VM - MD5=0fbb1254fb166466496f2a48780ae774
    • Workstation - MD5=68c21a9057d68c637c358b05f1f816e8
  2. Add 2 host-only adapters in VirtualBox:

    • VirtualBox Host-Only Ethernet Adapter #2: 192.168.95.111 and 255.255.255.0 netmask
    • VirtualBox Host-Only Ethernet Adapter #3: 192.168.90.111 and 255.255.255.0 netmask

Your VirtualBox settings should look something like the below screenshot.

netset3

  1. Import each VM into VirtualBox using File->Import Appliance

  2. VM credentials

    • Simulation (Chemical Plant): simulation | Fortiphyd
    • HMI (ScadaBR): scadabr | scadabr web console: admin | admin
    • Pfsense: admin | pfsense
    • PLC: user | password
  3. If you downloaded a VM, the simulation scripts should start on boot. If not, log into the simulation VM and open 2 terminals. In one, cd into the "simulation" directory and run ./simulation. In the second terminal, cd into the "simulation/remote_io/modbus" directory and run sudo bash run_all.sh.

  4. If you downloaded a VM, the PLC should start on boot. If not, log into plc VM, cd into the OpenPLC_v2 directory, and run "sudo nodejs server.js"

  5. Point your internet browser to the ip address of the simulation VM (default 192.168.95.10) to view the visualization.

grficsv2's People

Contributors

sam-bryce avatar djformby avatar nickfortiphyd avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.