Automated Scada Systems
Automated Scada Systems
Automated
security analysis
of a SCADA
system
Akzharkyn Duisembiyeva
Author
Akzharkyn Duisembiyeva <[email protected]>
Communication Systems
KTH Royal Institute of Technology.
Examiner
Mathias Ekstedt
KTH Royal Institute of Technology,
Division of Network and Systems Engineering.
Abstract
Supervisory control and data acquisition (SCADA) is a computer system for
analysing, and monitoring data, as well as, controlling a plant in industries
such as power grids, oil, gas refining, and water control. SCADA belongs to
the category of critical systems that are needed to maintain the infrastructure
of cities and households. Therefore, the security aspect of such a system has
a significant role. The early SCADA systems were designed with the opera-
tion as the primary concern rather than security since they were a monolithic
networked system without external access. However, the systems evolved, and
SCADA systems were embedded with web technologies for users to moni-
tor the data externally. These changes improved the efficiency of monitoring
and productivity; however, this caused a problem of potential cyber-attacks to
a SCADA system. One such example was Ukraine’s power grid blackout in
2015. Therefore, it is beneficial for the security of a SCADA system to cre-
ate a threat modeling technique that can understand the critical components
of SCADA, discover potential threats, and propose possible mitigation strate-
gies.
One issue when creating a threat model is the significant difference of SCADA
from traditional Operational Technology (OT) systems. Another significant is-
sue is that SCADA is a highly customisable system, and each SCADA instance
can have different components. Therefore, for this work, we implemented a
threat modeling language scadaLang, which is specific to the domain of a
SCADA system. We started by defining the major assets of a SCADA sys-
tem, attackers, entry surfaces, and built attacks and defense strategies. Then
we developed a threat modeling domain-specific language scadaLang that can
create a threat model for a particular instance of SCADA taking the differ-
ences in components and connections into account. As a result, we achieved a
threat modeling language for SCADA, ensured the reliability of the results by
peer-reviewing of an engineer familiar with the domain of the problem, and
proposed a Turing test to ensure the validity of the result of scadaLang as the
future development of the project.
Keywords: threat modeling, DSL, MAL, cyber security, SCADA
iv
Sammanfattning
Supervisory control and data acquisition (SCADA) är ett datorsystem för att
analysera och monitorera data samt kontrollera anläggningar för industrier
såsom energisystem, olja, raffinering av gas och vatten. SCADA tillhör den
kategori av kritiska system som krävs för att bibehålla städer och hushålls in-
frastruktur. Därför är säkerhetsaspekten av ett sådant system av stor roll. De
tidiga SCADA systemen var utformade med funktionen som huvudsaklig oro
istället för säkerheten då de var monolitiska nätverkssystem utan extern åt-
komst. Systemen utvecklades emellertid och SCADA systemen blev inbyggda
med webbteknologier så att användare kan monitorera data externt. De här för-
ändringarna förbättrade effektiviteten av monitorering och produktivitet men
skapade problemet med potentiella cyber-attacker mot SCADA systemen. Ett
sådant exempel är Ukrainas energy systems elavbrott som skedde 2015. Därför
är det fördelaktigt för säkerheten av SCADA systemen att skapa en hotmodel-
leringsteknik för att bättre förstå de kritiska komponenterna av SCADA, hitta
potentiella hot och föreslå potentiella förmildrande strategier.
Ett problem för utvecklingen av en hotmodell är den stora skillnaden mellan
SCADA från traditionella nätverkssystem inom industri. Ett annat stort pro-
blem är att SCADA är ett justerbart system och varje SCADA instans kan ha
olika komponenter. Därför utvecklar vi i detta arbete ett språk för hotmodelle-
ring scadaLang som är specifikt för domänen SCADA system. Vi började med
att definiera de huvudsakliga komponenterna av SCADA system, angriparna,
attack ytorna och även bygga attacker samt försvarsstrategier. Sen utveckla-
de vi ett språk för hotmodelleringen som är domänspecifikt, scadaLang som
kan skapa en hotmodell för en specifik instans av SCADA där skillnaderna på
komponenter och sammankopplingar tas till hänsyn. Som resultat har vi ska-
pat ett språk för hotmodellering för SCADA,verifierat resultat med hjälp av en
ingenjör med domänkännedom och föreslagit ett Turing test för att förbättra
verifieringen av resultatet som ett framtida arbete.
Nykelord: hotmodellering, DSL, MAL, cybersäkerhet, SCADA
v
0.1 Acknowledgement
I would like to thank my supervisor Engla Ling at KTH, Prof. Mathias Ek-
stedt at KTH and Prof. Jan-Erik Ekberg at Aalto University for advising and
supervision of this work. I would like to thank Engla Ling for helping with
the report and dedicating her time to not only polish our writing skills but also
help throughout the thesis writing process. I would like to thank the SECCLO
programme course staff for administrative guidance and supervision through-
out the project. In addition, I appreciate my family and friends for supporting
me during my degree project.
Akzharkyn Duisembiyeva
Contents
0.1 Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . . v
1 Introduction 1
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Problem Statement . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Goals of the Thesis Work . . . . . . . . . . . . . . . . . . . . 3
1.4 Research Question . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Ethics and Sustainability . . . . . . . . . . . . . . . . . . . . 3
1.6 Delimitation . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.7 Structure of the Report . . . . . . . . . . . . . . . . . . . . . 5
2 Background 6
2.1 SCADA Overview . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Threat Modeling . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Meta Attack Language (MAL) . . . . . . . . . . . . . . . . . 18
2.4 Related Works . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3 Methodology 28
3.1 Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 Data Collection . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Risk Assessment Strategy Design . . . . . . . . . . . . . . . . 31
3.4 Assessing the Reliability and Validity of DSL for Threat Mod-
eling based on MAL . . . . . . . . . . . . . . . . . . . . . . . 34
4 Implementation of scadaLang 36
4.1 Scope and Assumptions . . . . . . . . . . . . . . . . . . . . . 36
4.2 Assets and Categories . . . . . . . . . . . . . . . . . . . . . . 37
4.3 Actors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.4 Attacker Profiles . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.5 Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.6 Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.7 Potential Mitigation for SCADA . . . . . . . . . . . . . . . . 67
vi
CONTENTS vii
8 Conclusions 109
Bibliography 111
List of Figures
viii
LIST OF FIGURES ix
x
LIST OF TABLES xi
AD Active Directory
API Application Program Interface
CC Control centre
CIA Confidentially, Integrity, Availability
CII Critical information infrastructure
Comm Communication
CVE Common Vulnerabilities Enumeration
CWE Common Weaknesses Enumeration
CVSS Common Vulnerability Scoring System
CNI Critical National Infrastructure
CDIO Conceive, Design, Implement, Operate
CDITO Conceive, Design, Implement, Test, Operate
DB Database
DBMS Database Management System
DE Data Engineering
DMZ Demilitarised Zone
DNP3 Distributed Network Protocol 3
DNS Domain Name Space
DoS Denial-of-Service
DDoS Distributed denial-of-service
xii
LIST OF TABLES xiii
CIA properties of the system that relate to the confidentiality, integrity, and
availability of communication between entities of this system. 40
CISA: Industrial Control Systems US governmental standard for homeland
security. 4, 67, 109
CNI (the UK), a term used by governments to group the fields of industries,
sectors, and assets necessary for the economy, the daily life of society
and security. 1
IEC 60870-5-104 IEC standard used for control in electrical engineering and
power system automation applications.. 74
IEC 622443-1 IEC standard used for the security of Industrial Control Sys-
tem (ICS) networks. 12, 13
IEC 62254-1 IEC standard used for the manufacturing operations manage-
ment domain (reference model for computer integrated manufacturing).
12, 13
xv
xvi Glossary
KTH threat modeling method Adaptation of the PASTA, and FAIR method-
ologies with the following phases: 0. Scope and Delimitations; 1. Busi-
ness Analysis; 2. System Definition and Decomposition; 3. Threat
Analysis; 4. Attack and Resilience Analysis; 5. Risk Assessment and
Recommendations.. 30
Sandia National Laboratories Part of the PCS security project of the In-
stitute for Information Infrastructure Protection (http://thei3p.
org). 12, 13
SCADA is a computer system for analysing, monitoring data and controlling
a plant in industries as electricity, oil, gas refining, and water control.. 1
Service accounts type of a non-human account dedicated to automation of
services. These accounts are more privileged than a user, but do not
have admin privileges. 30
STRIDE threat modeling framework proposed by Microsoft. 14, 16
Trust boundary an abstract logical zones that are different from another trust
boundary due to access levels. 63
User accounts type of account that offers the least privilege level and allows
to have limited read permission only. 30
Chapter 1
Introduction
1.1 Motivation
The Ministry of Justice of Sweden [3] states that the electric power indus-
try, which utilizes systems like SCADA, has a major impact on national well-
being. The security topic of SCADA has national importance, which was
stressed by the Protective Security Act (SOU 2015:25). Early SCADA was
a standalone, isolated system where cyber-security attacks were less priority
than operation security. The significant change in the security of the SCADA
system happened from the 2000s when these systems became embedded with
1
2 CHAPTER 1. INTRODUCTION
web technologies for efficient monitoring [5]. These drastic shifts lead to a
host of desirable advantages like the increase of data inter-exchange and easy
management of production capabilities [5]. However, these drastic shifts also
lead to disadvantages, the most important of which was the rise of cyber-
attacks.
According to Ahmed et al. [6], the architecture of SCADA systems drasti-
cally evolved compared to their earlier predecessors. The early-stage SCADA
systems consisted of input/output devices, and the signals were transmitted
between the master and remote units. Later, the communication between units
became wireless and relied on IP. The key change occurred when the internal
network and external components started to integrate, allowing the SCADA
to connect with the corporate intranet. These internal components had direct
access to the Internet, making the previously closed system available for con-
necting to the outside world, which led to potential threats.
One popular approach towards mitigating potential security vulnerabilities
is a threat modeling. Threat modeling is a risk assessment technique that
identifies potential threats to the system. Threat modeling consists of several
phases. First of all, we assess the system and identify assets that are compo-
nents of the system and actors who interact with the system. The next phase
is to define potential attackers and their capabilities. This phase is followed
by building attack graphs to identify potential threats for each attacker. Fi-
nally, a threat model proposes a protection strategy and generates a risk as-
sessment for the system. Creating threat models can be time-consuming, as
the attack graphs grow larger and become more complex. To mitigate this
drawback, we can use Domain-specific language (DSL) for attack simulations.
Domain-specific language (DSL) for attack simulations provides a way to au-
tomate the generation of attack graphs. One such language is Meta Attack
Language (MAL) [7].
In this work, we extend MAL to build a threat modeling language for SCADA,
and create a tool that can generate a threat model for an instance of SCADA
using our language.
all instances of the same SCADA system. How can we assess the security of
SCADA? We can find important information in configuration files. However,
to our best knowledge, no threat modeling tool can make use of this informa-
tion. Can we utilize important information in configuration files to build a
threat modeling tool for a generalised SCADA system?
security knowledge bases. We take all the data for attack steps from the open-
source MITRE knowledge base. The general assets for the work correlate with
assets described in MITRE knowledge base. There was no fabrication while
taking the images of attack steps or reporting of results. The report and the
degree work do not have plagiarised content. All the materials in this work
are properly cited. The work does not leak any confidential information about
a SCADA system.
The work output cannot be exploited with bad intent by attackers. Threat mod-
eling provides the analysis of the system and the theoretical description of po-
tential attack steps. At first glance, these attack steps could leak information
on how the system could be exploited. However, the work uses attacks from
open-source MITRE, which is publicly accessible. If the attacker prefers so, he
or she can use the attack techniques from the MITRE knowledge base directly
as a guideline. In addition to that, the names of assets and associations that
were described in this work are not unique terms for a particular company, but
rather an obfuscation. The protection mechanisms are also taken from MITRE
knowledge base, or CISA: Industrial Control Systems, in case the protection
mechanism are not available in MITRE. All these measures solve the problem
of using this work as a directive of breaking into the SCADA system.
On the economic and sustainability front, we made the best effort to reduce
time and computation while creating a threat model. In other words, time and
complexity required for proposing a threat model. For example, our proposed
solution’s main idea is to generate a threat model for a particular SCADA in-
stance considering the proper assets. The instance might have a different setup
from another instance, and, therefore, we propose attack steps that match only
the needed asset. This avoids building unnecessary and redundant attack steps
that do not possess a value for a threat model.
Our work contributes to making the SCADA system more secure and sus-
tainable. The insecure SCADA systems could be categorised as unsustainable
systems in terms of operation and environmental impact. SCADA suffers from
inefficient patch delivery, time-consuming maintenance, and expensive hard-
ware and software repair [8]. In addition to that, the system is geographically
distributed with weak protection, and a successful exploit on one of the sites
could spread on others [9]. Other issues connected with the impact of security
breaches is the environmental pollution caused by SCADA incidents [10]. Ex-
amples of such breaches took place in Siberian Pipeline (1982), Bellingham,
WA Gas Pipeline (1999), Maroochy Water System(2000), and others [10].
Contributing to the security of SCADA would benefit the sustainability of this
CHAPTER 1. INTRODUCTION 5
1.6 Delimitation
The work has the following delimitation due to time constraints. The following
is not in the focus of this work:
• This work does not consider attacks against safety systems and protec-
tion against manual misconfiguration.
• This work does not consider any attacks toward field units. We consider
field units to be an entry surface in this work.
• This work proposes a Turing test for enhancing the validation of results
but does not implement it. Turing test for enhancing of the validation of
results is a future extension of work.
Background
This chapter gives the necessary background information for the reader to get
familiar with the main notion and terms used in this work. Section 2.1 gives in-
formation about SCADA systems, security issues in SCADA, communication
media in SCADA and the notion of zones. Section 2.2 explains the important
definitions for threat modeling that are used for this work, as well as gives
information about Common Vulnerability Scoring System (CVSS), a secu-
rity metric used in threat modeling for describing criticality of an attack step.
Section 2.3 dives into the MAL language framework. Section 2.4 provides
information about previous work in this topic.
6
CHAPTER 2. BACKGROUND 7
Protocol Description
Modbus A widely used, industrial control protocol
which relies on a simple request/reply proce-
dure between a CC and field devices. There
are two main variants Serial and TCP [18].
DNP3 The primary SCADA protocol used in the
electrical power grid [19]. The protocol sup-
ports three main communication models be-
tween a CC and field devices, unicast, broad-
cast, and a mode for unsolicited responses
from field devices [20].
ICCP The standard CC-to-CC communication pro-
tocol. The protocol can run on top a range of
transport layer protocols, but it is often used
on top of TCP/IP to establish a point to point
connection between to CCs [21].
IEC60870 − 5 − 101/104 Communication between components of a
SCADA system relies on IEC 60870-5-
101 and IEC 60870-5-104 international stan-
dards [22]. These standards were designed
by International Electrotechnical Commission
(IEC), and enable message transmission be-
tween CC and remote field units. These stan-
dards also include remote control protocols
IEC 60870-5-101 and IEC 60870-5-104 which
use dedicated optical fibers, digital radio links
or mobile networks [23]. These protocols de-
fine a communication between CC to field
units.
Table 2.1.1: SCADA protocols overview.
Secure Production Zone (ProdZone) has the highest priority, and it is respon-
sible for processes handling. This zone is also termed as Process Control Net-
work (PCN). Byres, Karsch, and Carter [26] mentions that this zone should be
isolated from both Corporate (Enterprise) Zone and Internet systems through
the firewalls.
definition 2.2.5), mitigation strategy, and how it can reduce the damage or
possibility of an attack.
Definition 2.2.2. Asset - in general, can relate to “component of the system,
function or process, data" which value can be “associated with business criti-
cally" [27].
The assets can be divided into groups or categories based on different factors.
For the categorisation of assets in this paper, we selected the KTH Threat Mod-
eling Method (KTMM) categorisation of assets. KTMM has convenient and
simple asset types. Below are categories of the assets that we use for this
paper:
• Function - this category includes components “that feature some kind
of behaviour".
– Services - this subcategory includes applications and features that
face users (actors).
– Platforms - this subcategory includes non-end user-facing appli-
cations and software, unlike services subcategory. These assets
build an infrastructure for services, e.g., Operating System (OS),
middleware, Database Management System (DBMS), and servers.
– Hardware - this subcategory includes all physical assets that serve
as deployment infrastructure for platforms and services, e.g., com-
puters, work stations.
• Data - this category includes assets that constitute some information in
the system, e.g., log files, credentials, configuration data.
• Networks - these assets include communication media that connect func-
tions and transmit data, e.g., Ethernet, firewalls, routers.
Definition 2.2.3. Attacker (adversary) - a malicious actor with the intent to
disrupt the Confidentially, Integrity, Availability (CIA) properties of the sys-
tem.
Attackers use vulnerabilities to exploit the system. Attackers can differ based
on their motivation, skills, and resources. Script kiddies have beginner skills
with a motivation to learn and limited resources. They do not impose a critical
risk to the SCADA system. On the contrary, cyber-criminals and government-
sponsored groups of attackers have high motivation, skills, financial resources,
time, and equipment. Therefore, these types of attackers are a serious threat to
16 CHAPTER 2. BACKGROUND
the SCADA system. As for SCADA, the attacks from the second category have
a higher possibility of occurrence based on previous attacks described in 2.1.2.
As an example, Sandworm Team is a cyber-espionage group of attackers that
is related to the Ukrainian energy sector attack (2015) [32].
Definition 2.2.4. Attack tree - a threat modeling technique popularised by
Bruce Schneider in 1999 [33] that places the attacks in a tree form where the
root is a goal of an attack and leaves are the starting point to achieve it [33].
The nodes in a tree are divided into OR and AND nodes. When the node is
marked with OR label, any attack branch of this node could be used (e.g.,
cheapest attack branch). In the case of AND label of the node, all the attack
branches must be fulfilled [33]. Other risk assessment techniques adopted the
method of building attack trees as STRIDE and PASTA.
Definition 2.2.5. Risk assessment - “is a process of identifying the risks to sys-
tem security and determining the probability of occurrence, the resulting im-
pact, and additional safeguards that would mitigate this impact" [34]. PASTA
model is integrated with a generic risk assessment process as NIST Risk As-
sessment Methodology in Special Publication 800-30.
After building a risk assessment based on potential attacks, we can suggest
mitigation for the particular issue.
The CVSS v3 model uses three categories of metrics: base, temporal and
environmental. Base metrics are the characteristics of a vulnerability that are
constant, regardless of time or user environments. On the other hand, temporal
metrics take into account properties of a vulnerability that might change over
time, like patches. Environmental metrics gives the option to customise the
score based on desired user environment factors. For this work, we only take
into account the Base metrics. Table 2.2.1 represents the severity scores in
Base metrics in CVSS v3.
18 CHAPTER 2. BACKGROUND
Figure 2.2.1: Summary of CVSS v3 Base Metrics. Figure taken from [38]
category System {
asset Computer {
let allFolders = folder.subFolder*
1
https://github.com/mal-lang/mal-documentation/wiki/
MAL-Code-Examples. Accessed on 29.06.2020
CHAPTER 2. BACKGROUND 19
| connect
-> access
E firewallExists
<- firewall
-> firewall.bypass
E! noFirewall
<- firewall
-> firewallBypassed
| firewallBypassed @hidden
-> access
| vulnerability
-> compromise
& access
-> compromise
& compromise
-> allFolders().accessFolder
// Let substitution
}
asset Folder {
| accessFolder
-> stealSecrets
| stealSecrets
}
}
category Security {
asset Firewall {
& bypass [Bernoulli(0.2)]
-> computer.firewallBypassed
# hardened
-> bypass
}
}
associations {
Computer [computers] * <-- Protect --> 0..1 [firewall] Firewall
Computer [computer] * <-- Contains --> * [folder] Folder
Folder [folder] 1 <-- Contains --> * [subFolder] Folder
}
asset OperatingSystem
{
[OperatingSystem logic]
}
2
The code was slightly modified because of a typo in the original resource. The authors
were notified about the error.
20 CHAPTER 2. BACKGROUND
Attacks are the ways to access the assets. For the work, one of the ways to
get these attacks are using the adversarial attack model at MITRE Industrial
Control Systems (ICS) knowledge base. MAL files contain the attack steps.
Each step is either logical conjunction (OR in attack trees in 2.2.4, | in MAL)
or disjunction of other steps (AND in attack trees in 2.2.4, & in MAL). One
attack step can lead to another attack step, which is denoted as -> in MAL. In
other words, to reach the attack step “stealSecrets" in asset “Folder", we need
to perform “accessFolder" attack step first.
asset Folder {
| accessFolder
-> stealSecrets
| stealSecrets
}
Association is MAL defines the connection between two assets that can lead to
an attack from one asset to another. In other words, the association provides in-
formation about how one sensitive asset could be reached from another.
associations {
Computer [computers] * <-- Protect --> 1 [firewall] Firewall
Computer [computer] * <-- Contains --> * [folder] Folder
Folder [folder] 1 <-- Contains --> * [subFolder] Folder
}
In the example above, we can observe associations between two assets Com-
puter and Firewall, Computer and Folder, Folder and Folder. The associa-
tions are called Protect and Contains. MAL language supports following rela-
tions between assets (denoted as multiplicities in associations in MAL):
• Many-to-Many (e.g., * <– Contains –> *),
• One-to-Many (e.g., 1 <– Contains –> *),
• Many-to-One (e.g., * <– Contains –> 1),
• One-to-One (e.g., 1 <– Contains –> 1),
A Firewall can be connected to zero or more assets Computer through the role
computers ([computers]) and a Computer can be connected to one Fire-
wall through the role firewall. The roles are denoted as [role], or in this case
([computers]) or ([firewall]). In MAL this is known as a role.
Category in MAL is a group of assets that are connected based on the security
properties and rules. In the aforementioned example we can see two categories
“System" and “Security". MAL language allows us to choose names
for categories and grouping logic based on the developer’s judgment.
CHAPTER 2. BACKGROUND 21
Defense in MAL is the mitigation strategy that helps to fight against the poten-
tial attack. Defense against a particular attack step is denoted as # in MAL.
category Security {
asset Firewall {
& bypass [Bernoulli(0.2)]
-> computer.firewallBypassed
# hardened
-> bypass
}
}
asset Host {
| connect
-> access
| authenticate
-> access
| guessPassword
-> guessedPassword
| guessedPassword [Exponential(0.02)]
-> authenticate
& access
}
public GuessPasswordModel() {
internet.addHosts(server);
}
}
@Test
public void testGuessPassword() {
var model = new GuessPasswordModel();
model.server.access.assertCompromisedWithEffort();
}
}
where A is Attack step, Tglob is TTC the asset starting from initial step [7].
MAL uses the probability distribution model, where given n, m, k ∈ N, n <
m < k:
• 5 % of attacks success can happen within n time (s),
• 50 % of attacks success can happen within m time (s),
• 95 % of attacks success can happen within k time (s).
24 CHAPTER 2. BACKGROUND
Here, to compromise a Computer, an attacker needs ten days with the certainty
that this attack will succeed.
overlooks the potential issues that can in the middle or end of the building.
SecDSVL is also a DSL for enterprise security modeling [45] that extends the
capabilities of UMLSec. In addition to that, Almorsy and Grundy [45] intro-
duced a way to ensure the changes to the deployed system after finding security
issues. The disadvantage of these languages, however, is a lack of automated
analysis. Instead, these languages focus on producing security properties with
manual analysis [42].
One way of addressing such a lack of automated analysis is an attack graphs-
based DSL. Topological Vulnerability Analysis (TVA) system is one exam-
ple of such a tool which models the security conditions in the network for
multi-step network penetration, and applies the attacks from the database of
exploits [46]. TVA system also proposes the computation of hardening mea-
sures and assess the alerts. Another example of attack graphs-based DSL is
Meta Attack Language (MAL). MAL produces the probabilistic attack graph
from a given system specification. This DSL combines the attack graphs-based
DSL with a model-driven security engineering approach.
There are good examples of how MAL could be extended for creating threat
modeling languages for various domains: vehicleLang and corelang. vehicle-
Lang is dedicated for modeling of cyber-attacks towards the domain of ve-
hicles, and corelang is a core threat modeling language designed for mod-
eling standard attacks towards an abstract Information Technology (IT) sys-
tem [42].
The main limitations of a VIKING project was a focus on data exchange be-
tween a CC and other components of SCADA, and application layer secu-
rity [47].
INcreasing Security and Protection through Infrastructure REsilience (INSPIRE)
is another project which focuses on the security of SCADA.INSPIRE provides
directives for properly configuring, managing, and securing Critical informa-
tion infrastructure (CII), such as SCADA [48]. INSPIRE presents a simulation
tool PSS-Cincal CRISP, which could be used in various industries. Neverthe-
less, the main disadvantage of this project is the high-level approach in finding
potential threats, which does not provide any concrete action points or protec-
tion mechanisms [48].
Recently, MITRE created a knowledge base for attacks against Industrial Con-
trol Systems (ICS), ATT&CK for Industrial Control Systems (ICS) [49]. Ac-
cording to MITRE knowledge base for attack adversaries towards ICS, the
attacks towards these systems are different from attacks from other MITRE
knowledge bases [49]. First of all, attackers focus on disturbing the system and
causing harm to human operators. Secondly, ICS operators are working con-
tinuously 24/7 and are responsible for collecting information about the state
of the system. This makes them a target for attackers to incorrectly accept the
incoming information about the state of the system. The third difference is the
heterogeneous nature of ICS. Unlike other systems, SCADA has various envi-
ronments, hardware, software, and communication protocols, which compli-
cates the process of creating the attack adversaries and collecting the unified
techniques applicable for all SCADA systems. The main advantages of this
knowledge base are giving a full vision of the system, information about previ-
ous attacks and attackers, and covering all the possible security threats.
Chapter 3
Methodology
This chapter describes the process of collecting and analysing data that is
needed for creating a threat modeling language for a SCADA system based
on MAL, as well as building a specific SCADA system threat model based on
the proposed language. Section 3.1 describes the selected methodology tech-
nique and the reasoning for its selection. Section 3.2 describes how we col-
lect the data from available sources and process it. In section 3.3, we present
our suggested risk assessment strategy to incorporate Common Vulnerability
Scoring System (CVSS) to MAL. Section 3.4 outlines the results assessment
and validation process.
3.1 Method
This work follows Engineering Conceive, Design, Implement, Test, Operate
(CDITO) method. CDITO enhances Conceive, Design, Implement, Oper-
ate (CDIO) [50] framework with additional testing process. This method con-
centrates on creating and operating new products or systems focusing on the
strategic importance of research and understanding the industry needs [51].
This method suits our needs, since we first of all design our language (choose
the scope of assets and TTC), implement (gather all needed data and create a
language based on MAL), perform available tests (MAL unit tests) and then
operate. Method of surveying can be used for enhancing the validity of output
using Turing tests. This is elaborated further in section 3.4.
28
CHAPTER 3. METHODOLOGY 29
Table 3.2.1: List of assets in a SCADA and their categorisation for this work
based on KTMM
CHAPTER 3. METHODOLOGY 31
In this work, we map CVSS scoring system, which measures the severity
of a vulnerabilities, into probabilistic model of MAL. As described in sec-
tion 2.3.3, probabilistic model of MAL uses TTC metric. TTC is computed
as
TTC = attack difficulty ∗ certainty of attack success
.
There is an explicit relation between attack difficulty and CVSS score. The
Base score and Environmental score of CVSS scoring system considers the
Attack Complexity as a factor that determines the score. Keramati, Akbari, and
Keramati [53] performed a similar mapping with regards to CVSS temporal
scoring and attack difficulty. Keramati, Akbari, and Keramati [53] stated that
the higher the temporal score is, the easier it is for an attacker to make an
exploit. We consider this relation in this work.
Since the attack difficulty offered by MAL describe the Time-To-Compromise
(TTC) for an attack step, we map the Attack Complexity of CVSS into TTC
supported by MAL discussed in more details in section 2.3.3. First of all, we
define which factors are considered for Attack Complexity of CVSS. Attack
complexity describes the situation when there exist any conditions that can
prevent an attacker from exploiting a vulnerability. Whenever such conditions
exist, an attacker needs to dedicate more time to collect additional information
about the target asset or prepare an exploit [54].
Holm, Ekstedt, and Andersson [55] describe the relation between security met-
rics using CVSS information and TTC as a Pearson correlation1 . Researchers
took into consideration several security metrics that use CVSS data and con-
cluded that the more CVSS data is taken into consideration, the higher the
Pearson correlation coefficient is between security metrics using CVSS infor-
mation and TTC.
For this work, we implicitly derive the certainty of the success of an attack
from CVSS score. Sawilla and Ou [56] explains that the “likelihood the attack
path can lead to a successful exploit" is a necessary factor in determining the
criticality of an attack.
1
Pearson correlation coefficient is a statistic that measures linear correlation between two
variables
CHAPTER 3. METHODOLOGY 33
tructure devices, lower than medium difficulty. For the scope of this
work, an attacker would require ten days to complete an attack step since
an attacker needs to perform a straightforward exploit without any spe-
cial authentication credentials or obtaining valid accounts through time-
consuming phishing or social engineering campaign.
• Severity Level: High -> difficult to exploit. For the scope of this work, it
takes 100 days for an attacker to complete an attack step, as an attacker
needs to perform time-consuming attack preparation as a phishing cam-
paign or obtain root access to the system.
• Severity Level: Medium -> less difficult than hard but still difficult, re-
quire user authentication. For the scope of this work, it takes 100 days
for an attacker to complete an attack step, as an attacker needs to per-
form time-consuming attack preparation as a phishing campaign to get
the user account. This attack takes the same time as a high severity at-
tack. However, the probability of success is only 50 percent.
• Severity Level: Low -> requires local or physical system access, little
impact on the organization, the least difficult. For the scope of this work,
it takes ten days for an attacker to complete an attack step as an attacker
already has local or physical system access.
Table 3.3.1 summarises the mapping of CVSS score to attack difficulty and
certainty and describes which probability function was selected to map the
CVSS score.
with MAL, and engineer experts in SCADA. Experts can guarantee that the
language could be applied to generate a threat model for a domain of SCADA
using scadaLang.
The enhancement of formal validation of scadaLang can strengthen the re-
sults and ensure that scadaLang is applicable for threat modeling of SCADA
in real-life scenario. One example of such enhancement of validation is us-
ing the Turing test by inviting experts in the industry (in our work, experts of
SCADA). DSL for threat modeling based on MAL fall under the definition and
categorisation of Expert System (ES) because it aims to offer a solution for a
complex problem in a specific domain (which needs a human expert in solving
issues for this domain) “at the level of human expert performance" [57].
Turing test is a method to estimate whether a program can perform a “thinking
like a human expert" [58]. Typically, in the case of validating ES, we can run
numerous tests and compare the output with the output from an expert in this
domain based on his/her judgment and opinion. The success rate of ES can
be calculated subjectively and objectively by an expert [57]. In our case, an
expert needs to compare the attack path prepared by a human and the attack
path generated from the language towards the same goal, starting from the
same entry point. These experiments can be repeated with several experts.
Then, these two outputs can be given to another independent expert that needs
to distinguish whether a human expert or an ES proposed the specific solution.
This independent expert compares two attack paths and gives an independent
judgment used as a success rate.
The output of such a Turing test can enhance the validity of the threat model
generated by DSL based on MAL for a particular SCADA instance.
Chapter 4
Implementation of scadaLang
This chapter present a DSL for language of a SCADA system called scadaLang
based on MAL. Section 4.1 describes the scope and assumption for a scadaLang.
Section 4.2 presents the assets that we selected for scadaLang. Section 4.3
and section 4.4 describe the actors in the system, accounts and potential at-
tackers. Section 4.5 lists all potential attacks per each general asset in SCADA
in scadaLang. Section 4.6 demonstrate the associations between assets and
attacks encoded in the asset. Section 4.7 proposes mitigation strategy for
aforementioned attacks. Section 4.8 generates a risk assessment for proposed
attacks in a SCADA system. The code for scadaLang can be found in ap-
pendix D
36
CHAPTER 4. IMPLEMENTATION OF SCADALANG 37
• This work focuses on the attacker with relatively high skills and mo-
tivation that targets SCADA system with malicious intent. One such
example is a rogue employee (both current or former employees).
4.2.1 Categories
As described in section 2.3.1, categories are used for grouping of assets. For
scadaLang, we divide the assets into three category: System, Communica-
tion and Security. As mentioned in section 3.2, all assets are categorised
into KTMM types: function/service, function/platform, data and network. In
scadaLang, the mapping from MAL types into categories is as follows:
• Function/platform -> System category
• Function/service -> Security category
• Network -> Communication category
• Data -> Data category
The naming for the categories is subjective, and based on our preferences. To
the current extend of MAL, these categories do not affect neither assets, nor
attacks, nor defense, nor risk assessment. The main purpose of categories is
to organise assets together.
User Account x
Admin Account x
Security Service Account x
Vulnerability
Firewall x
Zones x
Comm Router x
Data diodes x
Mainly, assets are obtained from configuration files mentioned in 3.2. If some
important information is missing, we can use other sources of information
about the traffic and firewall rules.
CHAPTER 4. IMPLEMENTATION OF SCADALANG 39
4.3 Actors
In this section, we describe the actors of the system. For the convenience,
we selected only actors that are key to a SCADA, since they have access to
multiple components of the system. In this work, we do not focus on all actors
in a SCADA system. Table 4.3.1 focuses on actors that primarily work with
such assets that can serve as an entry point for potential attacks.
Actor Description
HMI Operator monitoring and controlling the power
transmission network
Admin User monitoring system health and updat-
ing control system configuration
Admin Directory Service monitoring service account and access
User through Directory Service
Trainer and students running simulations
Data engineer updating the power system model
Production planner viewing historical data and creating
plans
Field engineer sending the data from RTU to Com-
munication front end
Table 4.3.1: List of main actors in SCADA
External SCADA is another system which communicates with the current SCADA
through ICCP. Having a connection to another SCADA system is necessary
to ensure the guaranteed availability of the service in case of any critical is-
sues. If the secondary SCADA fails to attacks, the primary SCADA becomes
vulnerable to attacks through ICCP.
Field units include all components of SCADA that collect information about
the state of the system in the field. Therefore, we can assume that malicious
actors could misconfigure the data that field units send to CC.
4.5 Attacks
In this section we demonstrate attack techniques and vulnerability exploits for
SCADA. This work proposes the attack techniques from ATT&CK matrix for
ICS as described in section 4.1. For mapping of ATT&CK matrix for ICS
knowledge base into our attacks we considered the following rules:
• MITRE provides a matrix of attack steps (referred as “techniques") grouped
into “tactics". Some techniques might occur in several tactics. In our
work, we renamed some attack steps. In appendix C, we give an ex-
planation of which attack step in scadaLang refer to which technique in
MITRE.
• The tactic “Impact" refers to goals of attack path in scadaLang. We do
not consider any goal of attack path outside of the tactic “Impact". We
do not modify the impact of an attack based on our judgement. Instead,
we only follow ATT&CK matrix for ICS to determine an impact for an
attack step.
• We do not have attacks that do not have a correspondence to ATT&CK
matrix for ICS.
The attack techniques vary based on target key assets. Most importantly, avail-
ability of the SCADA is the main priority from CIA properties. This is due
to necessity to continuously preserve the industrial processes putting data loss
and confidentiality aside as less priority. Overall, we summarised the goals of
attackers into the following categories:
• Manipulating sensitive data,
– Loss of view,
– Manipulation of view,
CHAPTER 4. IMPLEMENTATION OF SCADALANG 41
The starting point for an attacker in this and further attacks is compromising
the server, i.e., getting physical access to the server. The access may not be
an administrative one. In this work, we use the terms “host" and “server"
interchangeably.
After an attacker could get into the server, there are attack paths: enumer-
ating the host, uploading the file, or looking for other hosts from this host.
CHAPTER 4. IMPLEMENTATION OF SCADALANG 43
We enumerate5 the host to find any potentially useful information for gaining
administrative access [59]. To enumerate the host, an attacker could check
the logs (MITRE attack technique nr. T811) for any valid accounts (MITRE
attack technique nr. T859). As for uploading the file, an attacker can copy
the malicious files to this host (e.g., using Metasploit, an attacker can place
a Mimikatz tool in a remote host to crack the system credentials or perform
a pass-the-hash attack). This attack step corresponds to a remote file copy
(MITRE attack technique nr. T867). The third attack path is trying to look for
other hosts in the network. This attack direction corresponds to remote sys-
tem discovery (MITRE attack technique nr. T846. An attacker can use tools
like nmap/Zenmap to scan the open ports in other hosts. Such a scenario can
happen when an attacker wants to get into the App server through the ICCP
server.
The impact of Obtaining valid account, Remote system discovery and Obtain
password from memory attacks is Theft of Operation Information. Theft of
Operation Information includes obtaining valid accounts, information about
other hosts in the network, and others.
4.5.3 RTU
• RTU1.Remote System Discovery
We do not consider attacks at the field against RTU in the scope of this work.
For this work, we consider a compromised RTU as an access point. Therefore,
we obfuscate these attacks.
• CF6.Service stop
• CF7.Shut down Communication front end
• CF8.Remote System discovery
• CF9.Remote File copy
• CF10.Stealing Passwords from Memory (Mimikatz)
This asset is accessed by a Field Engineer discussed in section 4.3. The main
way to access the Communication front end discussed at this work is from
RTU. In case we consider that this field engineer can be rogue or an attacker
obtained access to an account, we have a threat that he/she can send the wrong
commands and disrupt the system. Another way to access the Communica-
tion front end is through Directory Service as Admin User. In case Admin
Directory Service User is rogue, the access to the Communication front end is
compromised. To our best knowledge, the Communication front end does not
have replicas, so shutting down a Communication front end could disrupt the
system.
Figure 4.5.2 presents the relations between attack steps and which attack steps
lead to another.
CHAPTER 4. IMPLEMENTATION OF SCADALANG 45
The starting point for an attacker is compromising the server, i.e., getting phys-
ical access to the server. The attacker can then proceed to enumerate the host,
i.e., collect relevant information about the server. An attacker can find rele-
vant information by manually inspecting logs and other interesting system files
or utilising automated enumeration tools(MITRE attack technique nr. T811).
Such an approach can lead the attacker to obtain valid accounts for some sys-
tems (MITRE attack technique nr. T859). Alternatively, an attacker can utilise
system discovery tools, e.g., using nmap, and scanning techniques to discover
46 CHAPTER 4. IMPLEMENTATION OF SCADALANG
relevant connected systems and components to pivot the attacks (MITRE at-
tack technique nr. T846). Moreover, an attacker can utilise remote file copy
techniques to bring malicious tools to the server (MITRE attack technique nr.
T867). Such tools could allow the attacker to obtain an admin account from
memory (MITRE attack technique nr. T843/T845). After getting administra-
tive access to the Communication frontend, an attacker can try to shut down
Communication frontend.
The impacts of attack paths are Theft of Operation Information, Damage to
property, Loss of availability and Denial of Control. Theft of Operation Infor-
mation includes obtaining valid accounts, information about other hosts in the
network, and others. Damage to property includes shutting down the service
to harm to operation. Loss of availability, in return, is similar to damage to
property. However, it focuses on disrupting the availability for a longer pe-
riod rather than damaging. Denial of control is a similar impact as a loss of
availability.
Figure 4.5.3 presents the relations between attack steps and which attack steps
lead to another.
The starting point for an attacker is compromising the server, i.e., getting phys-
ical access to the server. After an attacker acquires access to a server, the next
steps could be either enumerating the host (referred as checking the logs in the
figure) (MITRE attack technique nr. T811) for any valid accounts (MITRE
attack technique nr. T859), or remote system discovery (MITRE attack tech-
nique nr. T846), e.g., using nmap command to find other hosts in the network,
or Man-in-Middle attack (MiM) attack (MITRE attack technique nr. T859) to
48 CHAPTER 4. IMPLEMENTATION OF SCADALANG
sniff the communication between HMI and other SCADA components, e.g.,
Alarm. After an attacker obtains an admin account to HMI, an attacker can
place ransomware (e.g., LockerGoga, nr. S0008 in MITRE) that can erase or
corrupt a data visible for Operator in GUI.
There are ways to manipulate data other than implementing ransomware. .
Nevertheless, we follow MITRE suggested attacks, which highlighted ran-
somware as an impact for “Manipulation of view".
The impacts of attack paths are Theft of Operation Information, Manipulation
of view, and Loss of view. Theft of Operation Information includes obtaining
valid accounts, information about other hosts in the network, and others. Ma-
nipulation of view includes editing the information visible in GUI at HMI for
an Operator, while the loss of view involves shutting down the GUI.
4.5.6 Alarm
• AL1.Boot / Unboot alarm
• AL2.Start alarm
“Boot alarm" and “start alarm" are commands in configuration file given as
the input for generating a scadaLang as described in 3.2.2. Malicious use of
either of them can harm the system. The impact for both attacks AL1 and AL2
are loss of safety.
• APS9.Data exfiltration
• APS10.Man-in-the-middle-attack
• APS11.Masquerading
App server is composed of several Linux servers and replicas. All of them
constitute one asset for this work. Shutting down App server is not benefi-
cial, because there are several replicas. APS11.Masquerading is disguising a
malicious application as a standard tool.
Figure 4.5.4 presents the relations between attack steps and which attack steps
lead to another.
50 CHAPTER 4. IMPLEMENTATION OF SCADALANG
The starting point for an attacker is compromising the server, i.e., getting phys-
ical access to the server. The attacker can then proceed to enumerate the host,
i.e., collect relevant information about the server. An attacker can find rel-
evant information by manually inspecting logs and other interesting system
files or utilising automated enumeration tools (MITRE attack technique nr.
CHAPTER 4. IMPLEMENTATION OF SCADALANG 51
T811). Such an approach can lead the attacker to obtain valid accounts for
some systems (MITRE attack technique nr. T859). Alternatively, an attacker
can utilise system discovery tools, e.g., using nmap, and scanning techniques
to discover relevant connected systems and components to pivot the attacks
(MITRE attack technique nr. T846). The attacker can acquire administrative
access by utilising valid accounts from the enumeration or in case the App
server has the default username and password (MITRE attack technique nr.
T812). After accessing the administrative access to App server, an attacker
can either proceed to data exfiltration (MITRE attack technique nr. 867), or
masquerading (MITRE attack technique nr. 849), or MiM (MITRE attack
technique nr. 830) or installing rogue master device (MITRE attack technique
nr. 848). Masquerading involves techniques to disguise malicious application
as standard (genuine) software. An attacker can use this technique to install
spyware in the system that is difficult to find since it pretends to look like stan-
dard software. MiM includes sniffing the communication between App Server
and other components of a SCADA system to learn about other hosts or study
the underlying network.
The impacts of attack paths are Theft of Operation Information, Manipulation
of view, and Loss of productivity and revenue. Theft of Operation Informa-
tion includes obtaining valid accounts, information about other hosts in the
network, and others. Manipulation of view includes editing the information
visible in GUI at the App server for an App server Admin. Loss of productivity
and revenue is similar to the loss of availability. However, since the App server
focuses on monitoring and processing the data, disrupting the availability of
hosts could lead to ineffective operations in the SCADA system.
• DB8.Data corruption
SCADA has variations of DB to use. In this work, we focus on Oracle DB
and Postgre DB as the most commonly employed relational database solu-
tions for large scale systems. Since Postgre DB are open-source and do not
require licenses to purchase and renew, there is a trend to shift to open-source
and free alternatives, e.g., shifting from Oracle DB to Postgre DB. There-
fore, making specific attacks from ExploitDB instead of focusing on general
attacks from MITRE is important. The attacks for Oracle DB are from 2010,
which makes them outdated. We found fewer vulnerabilities in ExploitDB and
CVE/Common Weaknesses Enumeration (CWE) for Oracle DB. Compared
to Oracle DB, Postgre DB has more vulnerabilities recorded in ExploitDB and
CVE/CWE.
Figure 4.5.5 presents the relations between attack steps and which attack steps
lead to another.
CHAPTER 4. IMPLEMENTATION OF SCADALANG 53
The entry point for an attacker is bypassing user input validation that can occur
when the user input is not sanitised and validated on the client-side. Such vul-
nerability can lead to Structured Query Language (SQL) injection, e.g., when
54 CHAPTER 4. IMPLEMENTATION OF SCADALANG
there are no prepared statements, and an attacker could insert a malicious SQL
statement. With the help of such an attack, the attacker can delete the tables
in DB or query user and admin DB accounts. After successful SQL injec-
tion, an attacker can execute further malicious commands. One such example
is accessing logs in DBMS to obtain valid accounts to get admin access in
DBMS.
The impacts of attack paths are Theft of Operation Information, and Manipula-
tion of view. Theft of Operation Information includes obtaining valid accounts,
information about other hosts in the network, and others. Manipulation of view
includes editing the information in DB that is shown in other components of
SCADA.
• AV6.Man-in-the-middle-attack
• AV7.Modify the configuration of antivirus agents and repositories
• AV8.Remote File copy
• AV9.Stealing Passwords from Memory (Mimikatz)
The antivirus server in a SCADA system used for this work is implemented
with ePolicy (EPO) server. However, other providers are also available. EPO
server [60] is a central repository for storing all antivirus software (McAfee)
installations and configurations. To the best of our knowledge, EPO server
uses Windows OS. However, for this work, the Antivirus server is not a target
asset. Attackers would access the antivirus central repository to misconfigure
the antivirus software in other hosts. After misconfiguring the antivirus on
other hosts, an attacker can proceed further to other services or data.
Figure 4.5.6 presents the relations between attack steps and which attack steps
lead to another.
56 CHAPTER 4. IMPLEMENTATION OF SCADALANG
The starting point for an attacker is compromising the server, i.e., getting phys-
ical access to the server. The attacker can then proceed to enumerate the host,
i.e., collect relevant information about the server. An attacker can find rele-
vant information by manually inspecting logs and other interesting system files
or utilising automated enumeration tools(MITRE attack technique nr. T811).
Such an approach can lead the attacker to obtain valid accounts for some sys-
tems (MITRE attack technique nr. T859). Alternatively, an attacker can utilise
system discovery tools, e.g., using nmap, and scanning techniques to discover
CHAPTER 4. IMPLEMENTATION OF SCADALANG 57
relevant connected systems and components to pivot the attacks (MITRE at-
tack technique nr. T846). Moreover, an attacker can utilise remote file copy
techniques to bring malicious tools to the server (MITRE attack technique nr.
T867). Such tools could allow the attacker to obtain an admin account from
memory (MITRE attack technique nr. T843/T845). After getting administra-
tive access to the antivirus server, an attacker can try to modify the antivirus
configuration files. This attack step can lead to the stop of antivirus software
in other hosts. The attacker can achieve this attack if the Antivirus server is left
with the default username and password (MITRE attack technique nr. T812).
The impacts of attack paths are Theft of Operation Information, and Damage
to property. Theft of Operation Information includes obtaining valid accounts,
information about other hosts in the network, and others. Damage to property
includes shutting down a central repository to harm other hosts.
The starting point for an attacker is compromising the server, i.e., getting phys-
ical access to the server. After an attacker had access to a server, the next steps
could be accessing backup files (MITRE attack technique nr. 811) or looking
for default credentials (MITRE attack technique nr. 812) to get admin access
of backup server. The factory/manufacturer of a backup server could set de-
fault credentials. The backup files can contain valid accounts (MITRE attack
technique nr. 859), which can grant admin access for an attacker.
The impact of attack paths is Theft of Operation Information. Theft of Oper-
ation Information includes obtaining valid accounts, information about other
hosts in the network, and others.
CHAPTER 4. IMPLEMENTATION OF SCADALANG 59
4.5.13 Product
A product is a vendor software or program, residing on App Servers. Depend-
ing on the system, products might also reside on HMI [14]. In this work, we
focus on products that reside on App Servers. The functionality of products
in SCADA systems are as follows: [14]:
• Providing Open Data Base Connectivity (ODBC) for database;
• Providing libraries of Application Program Interface (API) support for
programming languages, e.g., C, C++, Visual Basic 6;
• Facilities for exporting configuration data;
• Support archiving and logging of databases;
The possible attacks against the product are as follows:
• PR1.Product infection
• PR2.Product deletion/corruption
The product itself is not a target but rather a stepping stone for further attack.
The Product asset facilitates and supports the processes in SCADA. The im-
pact of attacks PR1 and PR2 are loss of revenue and productivity.
The starting point for an attacker is compromising the server, i.e., getting phys-
ical access to the server. After an attacker had access to a server, the next
steps could be enumerating the host (referred as accessing the logs (MITRE
attack technique nr. 811)), remote file copy (MITRE attack technique nr. 867)
or looking for default credentials (left as a plain text in files or system logs)
(MITRE attack technique nr. 812) to get admin access of DE/nHMI. The ulti-
mate goal for an attacker is to get an admin account toDE/nHMI, which could
give an opportunity to either exfiltrate the data or corrupt the data (MITRE
attack technique nr. T831/T832).
The impacts of attack paths are Theft of Operation Information, and Manip-
ulation of view. Theft of Operation Information includes obtaining valid ac-
CHAPTER 4. IMPLEMENTATION OF SCADALANG 63
counts, information about other hosts in the network, and others. Manipulation
of view includes editing the information in DE/nHMI servers.
4.5.16 Accounts
• SAC1.Brute force
• SAC2.Bribing SCADA engineer described in Table 4.3.1
• AC1.Brute force
• AC2.Phishing SCADA engineer
• AC3.Bribing SCADA engineer described in Table 4.3.1
Service account is type of account given for automation purposes for auto-
mated user. The admin on the system can give such type of credential to
some automated systems, e.g. Continuous Integration (CI)/Continuous De-
livery (CD) pipeline.
4.5.17 Firewall
• FW1.Bypass Firewall
A misconfigured firewall may enable a reverse connection. A reverse con-
nection allows the attacker to establish communication from the compromised
device to the attacker’s device, rather than the typical forward connection from
the attacker’s device to the compromised device.
4.5.18 Zones
We can consider a zone as a Trust boundary. Once an attacker is inside one
zone, he/she can access servers within this zone. In this work scope, we use
Zones as assets, but do not focus on attacks towards the zone. Instead, we
focus on attacks towards the hosts located in this zone.
4.5.20 Router
Router information is not given in the configuration files, however, we consider
that the router exists in SCADA system.
4.6 Associations
Associations between assets demonstrate how we can reach one asset from
another. Associations between assets also carry information about the attack
from one asset to another. The names of associations follow the techniques
under tactics “Initial Access", “Execution" and “Discovery" in ATT&CK ma-
trix for ICS. Figure 4.6.1 represents all of the assets and associations between
assets that we consider for scadaLang.
Figure 4.6.1: General assets and associations selected for this implementation
Table 4.6.1 demonstrates the associations between assets and the attacks from
configuration files. We match naming for these associations with MITRE tech-
niques naming convention for consistency.
product infection,
Access App server Product MiM
product corruption
Access Host Zone gain initial server com-
access promise
Compromise User Ac- Host remote brute force,
count system bribing
discovery SCADA En-
gineer, phish
SCADA
Engineer
Compromise Admin Host remote brute force
Account system
discovery
Compromise Service Ac- Host remote brute force,
count system bribing
discovery SCADA
engineer
Physical ac- Diode Zone physical gain initial
cess shutdown access
Bypass Firewall Zone bypass gain initial
firewall access
Reconfigure Firewall Router access router reconfigure
router
Access Host Directory remote server com-
Service system dis- promise
covery AND
obtain valid
accounts
Attack Protection
ICCPS2 Multifactor Authentication
ICCPS5 Hardening Profile
ICCPS3 IDS, Hardening Profile
Table 4.7.1: List of protection mechanisms for Inter-control communication
protocol (ICCP) asset in SCADA
IDS is a tool to protect the system by raising the alarm whenever the security
of the system was compromised, such that a Site security officer (SSO) can
perform countermeasure actions [63]. The difference between IDS and tradi-
tional firewalls is their capabilities. The traditional firewall has a set of rules
applied to deny or allow traffic in a network. A firewall prevents the intrusion
if we define a proper set of rules for a network. Disadvantages of such a sys-
tem are the “all-or-nothing" approach [64] and lacking an alarm, and, hence,
ignoring the system’s potential vulnerability. On the contrary, IDS monitors
the network system, uses the common pattern from previous attacks (signa-
tures), and starts an alarm in case of suspicious activity. IDS reports these
activities for SSO for further investigations. Additional component and exten-
sion to IDS,Intrusion Prevention System (IPS), prevents detected intrusions
and performs access control [65].
Next Generation Firewall (NGFW) combines the functionality of both. Ad-
ditional functionality for NGFW has a deeper inspection mechanism with the
help of antivirus, anti-spam, and IDS allows it to detect more unintended ac-
tivity than a traditional firewall can do [64]. There are several products in this
68 CHAPTER 4. IMPLEMENTATION OF SCADALANG
4.7.2 RTU
In the scope of this threat model, we cannot provide a protection mechanism
for RTU, since we do not focus on attacks towards RTU. Instead we consider
only that RTU is an entry surface for attacks as mentioned in 4.5.1.
6
https://www.fortinet.com/products/next-generation-firewall.
html. Accessed on 29.06
CHAPTER 4. IMPLEMENTATION OF SCADALANG 69
Attack Protection
CF1 Multifactor Authentication
CF2 Hardening Profile
CF5 On-demand Account
CF8 IDS
CF10 Hardening Profile
Table 4.7.2: List of protection mechanisms for Communication front end asset
in SCADA
Similar to 4.7.1, the IDS could be used to detect abnormal activity in the com-
munication between App Server and Communication front end. On-demand
accounts can be done by allocating admin account for a limited period of time
and only upon a request.
Attack Protection
HMI2 Multifactor Authentication
HMI3 IDS
HMI4 Multifactor Authentication
HMI5 On-demand Account
HMI7 Hardening Profile, Scheduled Backup, Malware Detection and
Antivirus
Table 4.7.3: List of protection mechanisms for Human Machine Interface
(HMI) asset in SCADA
4.7.5 Alarm
The possible way to mitigate unauthorised access to Alarm is to use IDS and
monitor the network.
Attack Protection
APS3 Encryption
APS5 On-demand Account
APS10 Network Segregation
APS10 IDS
Table 4.7.4: List of protection mechanisms for App server asset in SCADA
As mentioned in 4.5.7, for the scope of this work, App servers are composed of
Linux servers. Security-enhanced Linux (SELinux) is an extension for Linux
Kernel that enhances the standard Linux restrictions for access permissions
by providing Mandatory Access Control (MAC) list. As for Network Segre-
gation to encounter APS10.Man-in-the-middle attack from App server, there
are protection mechanisms in MITRE T8307 . One such mitigation is that we
should ensure that ICS and IT networks cables are kept separate. IDS should
report any abnormal activity in the communication between App servers and
other SCADA components.
4.7.7 Databases
Attack Protection
DB2 Input Sensitisation
DB2 Prepared Statement
DB3 Input Sensitisation
DB3 Prepared Statement
DB5 Encryption
DB7 On-demand Account
Table 4.7.5: List of protection mechanisms for Database assets in SCADA
7
https://collaborate.mitre.org/attackics/index.php/
Technique/T830. Accessed on 29.06
CHAPTER 4. IMPLEMENTATION OF SCADALANG 71
Database assets, like Real-time database (RDB) and Postgres/Oracle DB, re-
quire constant protection as they enable the operation of SCADA. The logs
in DBMS could be encrypted and accessed by DBMS Admin user. DBMS
Admin user should be given an account and access only on demand and for a
limited period of time.
Attack Protection
AV2 Hardening Profiles
AV6 IDS
AV7 On-demand Account
Table 4.7.6: List of protection mechanisms for Antivirus Server asset in
SCADA
Attack Protection
BS4 Data Encryption for a Storage
BS4 On-demand Account
BS5 IDS
Table 4.7.7: List of protection mechanisms for Backup Server asset in SCADA
In SCADA all the previous information about the state of the system and met-
rics are preserved in a backup server. This asset has a high value for an at-
tacker, as it contains the sensitive industrial information. The access should
be granted only upon a request for a limited period of time. Moreover, it is nec-
essary to constantly check the data in the backup servers and monitor server
failures. IDS should monitor the traffic to back up server especially on off-hour
times, when the traffic is not expected.
72 CHAPTER 4. IMPLEMENTATION OF SCADALANG
Attack Protection
AD1 On-demand Admin Account
Table 4.7.8: List of protection mechanisms for Directory Service asset in
SCADA
As for the defense mechanisms for Directory Service, the most important is to
protect the access to admin account on Directory Service.This can be achieved
through on-demand accounts.
4.7.11 Product
Attack Protection
PR1, PR2 Application Security Guidelines
Table 4.7.9: List of protection mechanisms for Product asset in SCADA
Attack Protection
DE/nHMI6 Whitelists
Table 4.7.10: List of protection mechanisms for Data Engineering (DE)/new
Human Machine Interface (nHMI) asset in SCADA
CHAPTER 4. IMPLEMENTATION OF SCADALANG 73
4.7.14 Accounts
Attack Protection
AC1, AC2 Multi-factor Authentication for User Account
Table 4.7.11: List of protection mechanisms for Accounts asset in SCADA
4.7.15 Firewall
The majority of SCADA implementations have the security gateways located
at the border of the zone to manage the traffic flow. Security gateways (for
instance, firewalls) resolve the features as the network traffic management and
security screening of the zone [68]. Firewalls are general and standard so-
lutions for security between zones, but have security flaws, e.g., missed se-
curity patches, configuration mistakes, A lack of deep packet inspection or
Distributed denial-of-service (DDoS) attacks. More advanced and stronger
security solutions between zones include data diodes.
Stouffer, Falco, and Scarfone [36] defines data diode as “is a network ap-
pliance or device allowing data to travel only in one direction". Since data
diodes are hardware solutions without connection to the Internet, we can elim-
inate any possible software-based attacks [69]. Nevertheless, this solution is
expensive and mainly used for the military, where the network zones are cat-
egories into low and high-security zones [70]. In addition to that, the solu-
tion of using data diodes has some drawbacks: using a one-directional User
datagram protocol (UDP) protocol over two-directional Transmission control
protocol (TCP), which does not ensure the safety and reliability of data trans-
mission [71]. Therefore, we cannot guarantee that this solution can work as a
panacea for all issues related to communication systems.
74 CHAPTER 4. IMPLEMENTATION OF SCADALANG
4.7.16 Zones
Giani et al. [17] mentioned that the prevalent protocols used for communica-
tion between components in SCADA lack authentication and confidentiality
mechanisms. In order to resolve this issue, IEC 60870-5-104 suggests pro-
tection mechanism as constant monitoring for abnormal activity [22]. Nev-
ertheless, Maynard, McLaughlin, and Haberler [72] raise a concern that in a
real-life case, the protection mechanism is delayed due to legacy equipment,
operation, and cost management.
The importance of protecting the physical layer is connected with the robust
capabilities of Adversary when it has physical access to the system and com-
munication networks [5]. Such attacks towards a physical layer have an impact
on the whole SCADA. The primary strategy in this category is IDS and ap-
propriate firewall policies.
4.8.2 RTU
4.8.6 Databases
4.8.10 Product
4.8.12 Accounts
4.8.13 Firewall
public IccpEntryModel() {
appServer.addIccpserver(iccpServer);
iccpServer.addAppservers(appServer);
}
}
In the first scenario, we assume that there exists a vulnerability known for an
attacker, while the second scenario is without having a vulnerability.
public CommFrontendModel() {
appServer.addPcus(cf1);
appServer.addPcus(cf2);
cf1.addAppservers(appServer);
}
}
public RtuModel() {
rtu.addPcus(cf);
pcu.addRtus(rtu);
}
}
4.9.3 HMI
The test model look as follows:
private static class HmiEntryModel {
public final AppServer appServer = new AppServer("testAppServer");
public final HumanMachineInterface hmi = new HumanMachineInterface("testHMI");
public final HumanMachineInterface hmi2 = new HumanMachineInterface("testHMI");
CHAPTER 4. IMPLEMENTATION OF SCADALANG 83
public HmiEntryModel() {
appServer.addHmis(hmi);
appServer.addHmis(hmi2);
hmi.addAppservers(appServer);
}
}
4.9.4 Alarm
The test model look as follows:
private static class AlarmModel {
public final Alarm alarm = new Alarm("alarm");
public final HumanMachineInterface testMMI = new HumanMachineInterface("hmi");
public final AppServer appServer = new AppServer("appServer");
public AlarmModel() {
alarm.addAppservers(appServer);
alarm.addHmis(testMMI);
}
}
public AppserversModel() {
appServer.addIccpserver(iccpServer);
iccpServer.addAppservers(appServer);
}
}
4.9.6 Database
The test model look as follows:
private static class DatabasesModel {
public final OracleDatabase oracleDatabase = new OracleDatabase("testOracleDB");
public final PostgreDatabase postgreDatabase = new PostgreDatabase("testPostgreDB");
public final RealTimeDatabase realTimeDatabase = new RealTimeDatabase("testRDB");
public final AppServer appServer = new AppServer("testAppServer");
public DatabasesModel() {
oracleDatabase.addAppservers(appServer);
postgreDatabase.addAppservers(appServer);
realTimeDatabase.addAppservers(appServer);
appServer.addOracledatabases(oracleDatabase);
appServer.addPostgredatabases(postgreDatabase);
appServer.addRealtimedatabases(realTimeDatabase);
}
}
CHAPTER 4. IMPLEMENTATION OF SCADALANG 85
public ADModel() {
humanMachineInterface.addActivedirectory(activeDirectory);
directoryService.addHmis(humanMachineInterface);
cf.addDirectoryService(activeDirectory);
directoryService.addCfs(cf);
}
}
4.9.8 Product
The test model look as follows:
private static class ProductsModel {
public final Product product = new Product("testProduct");
public final Product product2 = new Product("testProduct");
public final AppServer appServer = new AppServer("testAppServer");
public ProductsModel() {
appServer.addProducts(product);
appServer.addProducts(product2);
product.addAppservers(appServer);
CHAPTER 4. IMPLEMENTATION OF SCADALANG 87
product2.addAppservers(appServer);
}
}
Same as 4.9.4 and 4.9.5, in this test we start from attacks PR1.ProductInfection
and PR2.ProductCorruption. It does not require any further or previous steps
for this attacks, and, therefore, we can instantly perform this attack.
4.9.9 Account
The test model look as follows:
private static class AccountsModel {
public final DirectoryService ad = new DirectoryService("testAD");
public final ADLinuxAccount accountAdLinux = new ADLinuxAccount("sadmin");
public final ADWindowsAccount accountAdWindows = new ADWindowsAccount("Administrator");
public final HumanMachineInterface hmi = new HumanMachineInterface("testHMI");
public AccountsModel() {
ad.addAdministrator(accountAdWindows);
ad.addSadmin(accountAdLinux);
accountAdLinux.addDirectoryservice(ad);
accountAdWindows.addDirectoryservice(ad);
}
}
4.9.10 Network
The test model look as follows:
private static class CommunicationsModel {
public final ProductionZone prodZone = new ProductionZone("testProd");
public final DemilitarizedZone dmZone = new DemilitarizedZone("testDMZ");
public final Firewall firewall = new Firewall("testFirewall");
public final Diod diod = new Diod("testDiod");
public final UnidirectionalGateway unidirectionalGateway = new UnidirectionalGateway("testUDG");
public CommunicationsModel() {
prodZone.addDiod(diod);
prodZone.addFirewall(firewall);
prodZone.addUnidirectionalgateway(unidirectionalGateway);
dmZone.addDiod(diod);
dmZone.addFirewall(firewall);
dmZone.addUnidirectionalgateway(unidirectionalGateway);
diod.addDemilitarizedzone(dmZone);
diod.addProductionzone(prodZone);
firewall.addDemilitarizedzone(dmZone);
firewall.addProductionzone(prodZone);
unidirectionalGateway.addDemilitarizedzone(dmZone);
unidirectionalGateway.addProductionzone(prodZone);
}
}
configuration files.
• DNS, NTP, NIS servers are excluded due to their lower importance in
scadaLang.
Chapter 5
In this chapter we provide an explanation for the tool that generates a threat
model for an instance of SCADA using scadaLang.
Figure 5.0.1: Creating a threat model for a particular SCADA instance based
on scadaLang
Figure 5.0.1 presents how we can get generate a threat model for a particu-
lar SCADA instance from configuration files, and IP packets routes described
90
CHAPTER 5. CREATING A THREAT MODEL FOR A SCADA INSTANCE
USING SCADALANG 91
in section 3.2.2. Each SCADA instance has configuration files that describe
how the components of SCADA are connected with each other. We use the
information in configuration files to map into assets and associations defined
by scadaLang in section 4.2. The MITRE attacks defined in section 4.5 is
collected into a JSON file. The Severity scores described per each attack in
section 4.8 and protection mechanisms described in section 4.7 are also col-
lected into JSON files. The output of this work are scadaLang files (*.mal)
for a SCADA instance. The generated (*.mal) file can then be packaged into
(*.scad) to be opened with be SecuriCAD software developed by Foreseeti1 .
The software allows us to make attack simulations that will be explained fur-
ther in the upcoming chapter 6.
The configuration file that we use for parsing needs to match the following
format (.JSON):
"Host":{
""<host name>":{
"IPAddr":<ip address>
"LAN":<zone name>
},
<all hosts>
}
"Network":{
<Zones>
}
"UserAccounts":{
<Accounts>
}
"appl_server":{
""<App server name>":{
"account":<account name>
"additional_nodes": <host names>
"applications":<product names>
"dbi":<database name>
"supervised_by":<app server name>
}
<all app servers>
}
"backup_server":{
<backup servers>
}
"de_server":{
"DATAENG":{
"PRODUCTS":{
<products>
}
"account":<account name>
"appl_servers":<app server name>
"databaseId":<database name>
"normal_nodes":<host names>
}
}
"mmi_server":{
<HMIs>
}
"networkServices":{
"Inhouse":{
"DNSServers":<host name>
"KerberosServers":<host name>
"NISServers":<host name>
"NTPServers":<host name>
}
}
1
https://www.foreseeti.com. Accessed on 29.06
92 CHAPTER 5. CREATING A THREAT MODEL FOR A SCADA
INSTANCE USING SCADALANG
"routing":{
"Inhouse":{
"default":{
""<Zone name>":<host name>
}
}
}
The configuration file that matches such format is parsed into assets. In up-
coming sections 5.1, 5.2 and 5.3, we discuss the parsed assets. The associa-
tions between assets are also defined in the configuration file. For the conve-
nience, we grouped the assets into categories as explained in section 4.2.1.
One example of how the tool parses the configuration data into assets and
associations is as follows:
• We have the aliases (<App server name>) for application servers under
appl_server. We create an Asset App server for each app server that
we parse.
• We parse the values from keys account, additional_nodes, applica-
tions, dbi, supervised_by to establish the association between an app
server and other SCADA components.
Other assets and associations are also created based on parsed information
from the configuration file.
This tool needs to get an input configuration file. If the vendor does not have
a configuration file, this tool might not be fit. Hence, the vendor needs to fill
the information according to the aforementioned structure.
The information file from MITRE knowledge base is collected into the follow-
ing JSON file:
{
"assetsAttackTags":{
<asset name1>: [<asset tag1>, <asset tag2>]
<asset name2>: [<asset tag1>, <asset tag2>]
...
}
"attacks": {
<asset tag>: [
<attacks>
},
...
},
"potentialAttacksInAssociation": {
<association name>: [<attack asset 1>, <attack asset 2>],
...
},
"attacksChain": {
<asset tag>: [
<attack name>: [<attacks>]
],
...
}
CHAPTER 5. CREATING A THREAT MODEL FOR A SCADA INSTANCE
USING SCADALANG 93
In this chapter, we discuss the results of the attack simulations. Each attack
has an entry point as described in section 4.5.1, and leads to an impact defined
by MITRE as explained in section 4.5. Section 6.1 describe an attack scenario
with an impact on availability of SCADA. In section 6.2, we can see an ex-
ample of attack simulation that leads to theft of operation information, while
in section 6.3 we can examine an attack simulating with the purpose of loss of
control. Section 6.4 demonstrates one example of the loss of safety, however,
in this work, we do not cover manual system misconfigurations that could lead
to harm to a human operator due to the loss of safety.
95
96 CHAPTER 6. RESULTS OF ATTACK SIMULATIONS
In Figure 6.1.1, we can observe the attack simulation result produced by Se-
curiCAD. According to the documentation of SecuriCAD, the yellow paths
are more difficult to perform than red ones. Moreover, the thick lines are more
important than thin ones. As for the exclamation mark, the attack steps that
have it can be reached with additional paths [73].
Figure 6.1.2 demonstrates additional paths that were not selected by an at-
tacker.
In this scenario, an attacker could access the files stored in a backup server,
which leads to disrupting the confidentiality properties of the system.
Same as Figure 6.1.1, in Figure 6.2.1, we can observe the attack simulation re-
sult produced by SecuriCAD. According to the documentation of SecuriCAD,
the yellow paths are more difficult to perform than red ones. Moreover, the
thick lines are more important than thin ones. As for the exclamation mark,
the attack steps that have it can be reached with additional paths [73].
Figure 6.2.2 summarises the full path depicted in Figure 6.2.1, where an at-
tacker could choose to go through ICCP server. SecuriCAD did not generated
additional paths for this attack. The red path in the figure demonstrates the
least difficult and most certain attack path. The grey and yellow paths denote
the alternative path that was not selected for this simulation.
CHAPTER 6. RESULTS OF ATTACK SIMULATIONS 99
Figure 6.4.3 describes the full attack paths to Alarm. The red attack steps de-
note the path that is more likely to be chosen by an attacker, as it is less difficult
and more certain. The grey and yellow attack steps constitute an alternative
attack path described in Figure 6.4.2
104 CHAPTER 6. RESULTS OF ATTACK SIMULATIONS
In this chapter, we discuss our work, state the limitations, and propose some
improvements. In section 7.1, we discuss if our solution is valid or not, if
our approach and methodology were right, and address related work. In sec-
tion 7.2, we state the limitations of our work and explain we decided not to
include them in this work. In section 7.3, we propose some improvements and
future work.
7.1 Discussion
This work presents a scadaLang and a tool for generating a threat model for
a specific instance of SCADA using scadaLang. SCADA experts validated
scadaLang, and an example of a threat model that a tool can generate. scadaLang
combines the research and technical knowledge, since we use MITRE knowl-
edge base with attacks specific for a SCADA system, and use configuration
files from a real SCADA system to understand the components and their con-
nections. Therefore, scadaLang resolves the problem of previous works in
this field, where the tools could not either match SCADA requirements or pro-
posed attacks that are not suitable for a SCADA system. Regarding the ap-
proach and methodology for this work, we used the CDITO method for this
work and found it convenient and applicable for creating scadaLang and the
tool. Moreover, we propose other methods as surveying for enhancing the va-
lidity of scadaLang.
105
106 CHAPTER 7. DISCUSSION, LIMITATIONS, AND FUTURE WORK
As for mapping of the Attack severity score into TTC for an attack in scadaLang,
we generated our own model. The mapping is based on many assumptions and
simplifications. We compute an average of CVSS scores of CVE vulnerabili-
ties from NVD that could lead to this particular attack. Computing average has
limitations, which could give us a change in the Attack severity score. In ad-
dition to that, CVE vulnerabilities of products depend on the version, model,
and vendor, which also affects the Attack severity score.
7.2 Limitations
This work had some limitations in the implementation that is the topic of fur-
ther improvement. First of all, the work did not include any manual configur-
ing of safety instructions. As mentioned in MITRE, one of the attacker goals
is causing an outrage that could potentially lead to harm for a SCADA engi-
neer [74]. Therefore, SCADA systems have safety instructions on the com-
ponents of the system, e.g., tags attached to hardware, or Safety Instrumented
Systems (SIS) to automate actions to keep safety in a plant. An attacker might
try to misconfigure these safety systems manually. However, in this work, we
do not consider such types of attacks. Secondly, the scope of the work is lim-
ited to assets and attacks in the CC. Any attacks towards field units, RTUs,
are not considered in the language specification. In this work, we focus on a
single attack from RTU to the Communication front end and consider RTU as
an entry point for attackers.
Additional limitations of this work include suggested mapping of CVSS score
into attack difficulty and certainty. A possible further improvement to this
work might be enhancing the proposed model of computing the Time-To-
Compromise (TTC) with considering additional factors that are relevant to
SCADA, e.g., zones and required availability of critical components.
cover further metrics for attacks and mitigation strategies, which would in-
crease its accuracy.
The other future work is an enhancing of validation of scadaLang through the
Turing test. To ensure that the attacks presented in this works are not distin-
guished from attacks made by a human, this work can utilize a Turing test. A
Turing test relies on the judgment and analysis of experts on how this work
performs. For achieving better results, it is vital to access the proposed model
over time continuously.
The third future work is multiple attacker profiles. In this work, we only con-
sider a single attacker profile, choosing depth over breadth. A future work pro-
posal would be to explore the other attacker profiles interested in cyber-attacks
towards SCADA. Table 7.3.1 proposes a number of those attackers profiles to
considered for SCADA threat modeling. Script kiddies are less motivated to
attack SCADA due to the low return value and high complexity of the system
compared to their low skills and resources. On the other hand, ethical hackers
are more motivated by the complexity of the system and aim to document and
disclose their findings. Hacktivists, in particular political hacktivists, have a
higher motivation to perform malicious actions on SCADA due to its critical
importance. State-sponsored groups, Cyber-criminals and Rogue Employees
pose the highest risk to SCADA due to their high skill level, vast resources,
and strong motivation towards malicious intent. State-sponsored groups tar-
get critical infrastructure systems, like SCADA, in order to politically attack a
country.
1
https://collaborate.mitre.org/attackics/index.php/Groups
Accessed on 25.06.2020
Chapter 8
Conclusions
The security of SCADA has great importance since this category of systems
belong to Critical National Infrastructure (CNI). The early SCADA was an
isolated monolithic system relying on hardware security. The availability of
SCADA was more priority over confidentiality and integrity. Nevertheless, the
development of technologies and the necessity of more efficient managing of
SCADA led to making the system more comprehensive. In return, this made
the system vulnerable to cyber-attacks.
This work presents the scadaLang, threat modeling DSL based on Meta At-
tack Language (MAL). In particular, the work presents the MAL specifica-
tion of the language prepared for SCADA addressing the potential attacks and
present vulnerabilities that are specific to a SCADA system. We use MITRE
knowledge base for the attacks and proposed mitigation strategies. In case a
mitigation strategy for an attack is not given in MITRE, we use other sources,
e.g., CISA: Industrial Control Systems.
Another focus of this work was automating the security analysis of a SCADA
system. SCADA is a highly customisable system and can have different setups.
This work utilized the information given in configuration files and documents
per each system to generate a threat model for each setup. As a result, we de-
veloped a software that can create a threat model using scadaLang per specific
given instance of SCADA.
We collected assets from different configuration files. We discovered that the
assets vary per each configuration. Some assets are present in all configu-
rations (App server), while other assets as Backup Server are only available
in some of them. To examine how to reach one asset from another, we used
109
110 CHAPTER 8. CONCLUSIONS
[1] Eduardo B Fernandez et al. “On building secure SCADA systems us-
ing security patterns”. In: Proceedings of the 5th Annual Workshop on
Cyber Security and Information Intelligence Research: Cyber Security
and Information Intelligence Challenges and Strategies. 2009, pp. 1–4.
[2] Yulia Cherdantseva et al. “A review of cyber security risk assessment
methods for SCADA systems”. In: Computers & security 56 (2016),
pp. 1–27.
[3] Ministry of Justice of Sweden. “A national cyber security strategy”. In:
(2016). Accessed: 18.04.2020, https://www.government.se/
4ada5d/contentassets/d87287e088834d9e8c08f28d0b9dda5b/
a-national-cyber-security-strategy-skr.-201617213.
[4] Eric J Byres, Matthew Franz, and Darrin Miller. “The use of attack trees
in assessing vulnerabilities in SCADA systems”. In: Proceedings of
the international infrastructure survivability workshop. Citeseer. 2004,
pp. 3–10.
[5] Simon Duque Anton et al. “Two decades of SCADA exploitation: A
brief history”. In: 2017 IEEE Conference on Application, Information
and Network Security (AINS). IEEE. 2017, pp. 98–104.
[6] Irfan Ahmed et al. “SCADA Systems: Challenges for Forensic Investi-
gators”. In: ABB Corporate Research (2012).
[7] Pontus Johnson, Robert Lagerstrom, and Mathias Ekstedt. “A Meta Lan-
guage for Threat Modeling and Attack Simulations”. In: ARES 2018:
Proceedings of the 13th International Conference on Availability, Reli-
ability and Security. 2018, pp. 1–8.
[8] Robert E Johnson. “Survey of SCADA security challenges and potential
attack vectors”. In: 2010 International Conference for Internet Technol-
ogy and Secured Transactions. IEEE. 2010, pp. 1–5.
111
112 BIBLIOGRAPHY
[9] Jason Stamp et al. “Sustainable security for infrastructure SCADA”. In:
Sandia National Laboratories, Albuquerque, New Mexico (www. san-
dia. gov/scada/documents/SustainableSec urity. pdf) (2003).
[10] Bill Miller and Dale Rowe. “A survey SCADA of and critical infras-
tructure incidents”. In: Proceedings of the 1st Annual conference on
Research in information technology. 2012, pp. 51–56.
[11] Jian Guan, James H Graham, and Jeffrey L Hieb. “A digraph model
for risk identification and mangement in SCADA systems”. In: Pro-
ceedings of 2011 IEEE International Conference on Intelligence and
Security Informatics. IEEE. 2011, pp. 150–155.
[12] Johannes Schneider, Sebastian Obermeier, and Roman Schlegel. “Cy-
ber Security Maintenance for SCADA Systems”. In: ABB Corporate
Research (2017).
[13] Wang Yong et al. “Stuxnet Vulnerabilities Analysis of SCADA Sys-
tems”. In: ABB Corporate Research (2012).
[14] Axel Daneels and Wayne Salter. “What is SCADA?” In: (1999).
[15] Saurabh Amin et al. “Cyber security of water SCADA systems—Part I:
Analysis and experimentation of stealthy deception attacks”. In: IEEE
Transactions on Control Systems Technology 21.5 (2012), pp. 1963–
1970.
[16] Jiaping Men et al. “Finding sands in the eyes: vulnerabilities discovery
in IoT with EUFuzzer on human machine interface”. In: IEEE Access 7
(2019), pp. 103751–103759.
[17] Annarita Giani et al. “A testbed for secure and robust SCADA systems”.
In: ACM SIGBED Review 5.2 (2008), pp. 1–4.
[18] Peter Huitsing et al. “Attack taxonomies for the Modbus protocols”.
In: International Journal of Critical Infrastructure Protection 1 (2008),
pp. 37–44.
[19] Samuel East et al. “A Taxonomy of Attacks on the DNP3 Protocol”. In:
International Conference on Critical Infrastructure Protection. Springer.
2009, pp. 67–81.
[20] Gordon Clarke, Deon Reynders, and Edwin Wright. Practical modern
SCADA protocols: DNP3, 60870.5 and related systems. Newnes, 2004.
[21] György Dán et al. “Challenges in power system information security”.
In: IEEE Security & Privacy Magazine 10.4 (2012), pp. 62–70.
[22] Yi Yang et al. “Intrusion detection system for IEC 60870-5-104 based
SCADA networks”. In: 2013 IEEE power & energy society general
meeting. IEEE. 2013, pp. 1–5.
BIBLIOGRAPHY 113
[37] Umesh Kumar Singh and Chanchala Joshi. “Quantitative security risk
evaluation using CVSS metrics by estimation of frequency and maturity
of exploit”. In: Proceedings of the World Congress on Engineering and
Computer Science. Vol. 1. 2016, pp. 19–21.
[38] Luca Allodi et al. “Estimating the assessment difficulty of CVSS en-
vironmental metrics: an experiment”. In: International Conference on
Future Data and Security Engineering. Springer. 2017, pp. 23–39.
[39] MAL-lang. “Instantiating Language Models”. In: (2020). Accessed: 16.07.2020,
https://github.com/mal-lang/mal-documentation/
wiki/Instantiating-Language-Models.
[40] MAL Compiler. “Supported distribution functions”. In: (2020). Accessed:
18.04.2020, https://github.com/mal-lang/malcompiler/
wiki/Supported-distribution-functions.
[41] Linzhang Wang, Eric Wong, and Dianxiang Xu. “A threat model driven
approach for security testing”. In: Third International Workshop on Soft-
ware Engineering for Secure Systems (SESS’07: ICSE Workshops 2007).
IEEE. 2007, pp. 10–10.
[42] Simon Hacks et al. “Creating Meta Attack Language Instances using
ArchiMate: Applied to Electric Power and Energy System Cases”. In:
2019 IEEE 23rd International Enterprise Distributed Object Comput-
ing Conference (EDOC). IEEE. 2019, pp. 88–97.
[43] Mass Soldal Lund, Bjørnar Solhaug, and Ketil Stølen. Model-driven
risk analysis: the CORAS approach. Springer Science & Business Me-
dia, 2010.
[44] Jan Jürjens. “Towards development of secure systems using UMLsec”.
In: International Conference on Fundamental Approaches to Software
Engineering. Springer. 2001, pp. 187–200.
[45] Mohamed Almorsy and John Grundy. “Secdsvl: A domain-specific vi-
sual language to support enterprise security modelling”. In: 2014 23rd
Australian Software Engineering Conference. IEEE. 2014, pp. 152–
161.
[46] Sushil Jajodia and Steven Noel. “Topological vulnerability analysis: A
powerful new approach for network attack prevention, detection, and
response”. In: Algorithms, architectures and information systems secu-
rity. World Scientific, 2009, pp. 285–305.
[47] Network and Systems Engineering. “Summary of VIKING results”. In:
(2020). Accessed: 18.07.2020, https://www.kth.se/polopoly_
fs / 1 . 407987 . 1550158302 ! /Menu / general / column -
BIBLIOGRAPHY 115
content/attachment/FinalProjectReport_WEBversion.
pdf.
[48] Salvatore D’Antonio et al. “INcreasing Security and Protection through
Infrastructure REsilience: The INSPIRE Project”. In: Critical Infor-
mation Infrastructure Security: Third International Workshop, CRITIS
2008, Rome, Italy, October 13-15, 2008. Vol. 5508. Springer. 2009,
p. 109.
[49] MITRE foundation. “Overview of MITRE ICS”. In: MITRE ICS (2020).
Accessed: 18.04.2020, https://collaborate.mitre.org/
attackics/index.php/Overview.
[50] CDIO. “Worldwide CDIO initiative”. In: (2020). Accessed: 30.07.2020,
http://www.cdio.org.
[51] Helene Leong. “Designing a CDIO Programme: The CDIO Syllabus
and Standards”. In: (2020). Accessed: 30.07.2020, http : / / www .
kanazawa - it . ac . jp / cdio / english / file / slide10 _
leong.pdf.
[52] MITRE foundation. “Assets in MITRE ICS”. In: MITRE ICS (2020).
Accessed: 18.04.2020, https://collaborate.mitre.org/
attackics/index.php/All_Assets.
[53] Marjan Keramati, Ahmad Akbari, and Mahsa Keramati. “CVSS-based
security metrics for quantitative analysis of attack graphs”. In: ICCKE
2013. IEEE. 2013, pp. 178–183.
[54] First. “Common Vulnerability Scoring System version 3.1: User Guide”.
In: (2020). Accessed: 18.04.2020, https://www.first.org/
cvss/user-guide.
[55] Hannes Holm, Mathias Ekstedt, and Dennis Andersson. “Empirical anal-
ysis of system-level vulnerability metrics through actual attacks”. In:
IEEE Transactions on dependable and secure computing 9.6 (2012),
pp. 825–837.
[56] Reginald E Sawilla and Xinming Ou. “Identifying critical attack assets
in dependency attack graphs”. In: European Symposium on Research in
Computer Security. Springer. 2008, pp. 18–34.
[57] Osman Balci and Eric P Smith. Validation of expert system perfor-
mance. Tech. rep. Department of Computer Science, Virginia Polytech-
nic Institute & State . . ., 1986.
[58] Ayse Pinar Saygin, Ilyas Cicekli, and Varol Akman. “Turing test: 50
years later”. In: Minds and machines 10.4 (2000), pp. 463–518.
[59] Infosec. “What is Enumeration?” In: (2020). Accessed: 10.08.2020, https:
//resources.infosecinstitute.com/what-is-enumeration.
116 BIBLIOGRAPHY
[71] Boo-Sun Jeon and Jung-Chan Na. “A study of cyber security policy in
industrial control system using data diodes”. In: 2016 18th International
Conference on Advanced Communication Technology (ICACT). IEEE.
2016, pp. 314–317.
[72] Peter Maynard, Kieran McLaughlin, and Berthold Haberler. “Towards
understanding man-in-the-middle attacks on iec 60870-5-104 scada net-
works”. In: 2nd International Symposium for ICS & SCADA Cyber Se-
curity Research 2014 (ICS-CSR 2014) 2. 2014, pp. 30–42.
[73] SecuriCAD. “Attack Paths”. In: (2020). Accessed: 18.07.2020, https:
//community.securicad.com/attack-paths/.
[74] MITRE. “MITRE ATT&CK® for Industrial Control Systems: Design
and Philosophy”. In: (2020). Accessed: 30.07.2020, https://collaborate.
mitre . org / attackics / img _ auth . php / 3 / 37 / ATT %
26CK_for_ICS_-_Philosophy_Paper.pdf.
[75] Marshall Abrams and Joe Weiss. “Malicious control system cyber secu-
rity attack case study–Maroochy Water Services, Australia”. In: McLean,
VA: The MITRE Corporation (2008).
Appendix A
118
APPENDIX A. OVERALL ATTACK GRAPH 119
In this example, we create a test model DatabasesModel with several test cases.
For this work, we use the Java language. Let us review how the user can bypass
input validation and access data in a database. We assume that the attacker is
already in a server and is trying to corrupt data in a database. For this scenario,
bypassing put validation is an entry point. As we can see after this attack
succeeded, we managed to perform further attack steps as accessing logs to
collect information, administrative access to the DB, and data corruption. The
situation can be different when the defense mechanisms as sanitising client-
side input and validating client-side input are enabled. In this case, the attacker
needs some effort to perform further attack steps.
public DatabasesModel() {
oracleDatabase . addAppservers(appServer) ;
120
APPENDIX B. EXAMPLE OF UNIT TESTING A DSL BASED ON MAL
121
postgreDatabase . addAppservers(appServer) ;
realTimeDatabase.addAppservers(appServer) ;
appServer . addOracledatabases ( oracleDatabase ) ;
appServer . addPostgredatabases ( postgreDatabase ) ;
appServer . addRealtimedatabases (realTimeDatabase) ;
}
}
@Test
public void testOracleDatabasesBypassInputValidation () {
var model = new DatabasesModel();
attacker . attack () ;
model.oracleDatabase . sqlInjection . assertUncompromised();
model.oracleDatabase
. commandLineExecutionThroughSQLInjection.assertUncompromised();
model.oracleDatabase . dataExfiltration . assertUncompromised();
model.oracleDatabase . accessingLogsToCollectInformation . assertUncompromised();
model.oracleDatabase . obtainValidAccount . assertUncompromised();
model.oracleDatabase . administrativeAccessToDatabase . assertUncompromised();
model.oracleDatabase . dataCorruption . assertUncompromised();
@Test
public void testOracleDatabasesBypassInputValidationWithDefense () {
var model = new DatabasesModel();
attacker . attack () ;
model.oracleDatabase
. commandLineExecutionThroughSQLInjection.assertUncompromised();
model.oracleDatabase . dataExfiltration . assertUncompromised();
model.oracleDatabase . accessingLogsToCollectInformation . assertUncompromised();
model.oracleDatabase . obtainValidAccount . assertUncompromised();
model.oracleDatabase . administrativeAccessToDatabase . assertUncompromised();
model.oracleDatabase . dataCorruption . assertUncompromised();
}
@Test
public void testPostgreDatabasesBypassInputValidation () {
var model = new DatabasesModel();
attacker . attack () ;
model.postgreDatabase . sqlInjection . assertUncompromised();
model.postgreDatabase
. commandLineExecutionThroughSQLInjection.assertUncompromised();
model.postgreDatabase . dataExfiltration . assertUncompromised();
model.postgreDatabase . accessingLogsToCollectInformation . assertUncompromised();
model.postgreDatabase . obtainValidAccount . assertUncompromised();
model.postgreDatabase . administrativeAccessToDatabase . assertUncompromised();
model.postgreDatabase . dataCorruption . assertUncompromised();
}
@Test
public void testPostgreDatabasesBypassInputValidationWithDefense () {
var model = new DatabasesModel();
attacker . attack () ;
model.postgreDatabase
. commandLineExecutionThroughSQLInjection.assertUncompromised();
model.postgreDatabase . dataExfiltration . assertUncompromised();
model.postgreDatabase . accessingLogsToCollectInformation . assertUncompromised();
model.postgreDatabase . obtainValidAccount . assertUncompromised();
model.postgreDatabase . administrativeAccessToDatabase . assertUncompromised();
model.postgreDatabase . dataCorruption . assertUncompromised();
}
@Test
public void testRealTimeDatabasesBypassInputValidation () {
var model = new DatabasesModel();
attacker . attack () ;
model.realTimeDatabase. sqlInjection . assertUncompromised();
model.realTimeDatabase
. commandLineExecutionThroughSQLInjection.assertUncompromised();
model.realTimeDatabase. dataExfiltration . assertUncompromised();
model.realTimeDatabase. accessingLogsToCollectInformation . assertUncompromised();
model.realTimeDatabase. obtainValidAccount . assertUncompromised();
model.realTimeDatabase. administrativeAccessToDatabase . assertUncompromised();
model.realTimeDatabase. dataCorruption . assertUncompromised();
}
@Test
public void testRealTimeDatabasesBypassInputValidationWithDefense () {
var model = new DatabasesModel();
attacker . attack () ;
model.realTimeDatabase
. commandLineExecutionThroughSQLInjection.assertUncompromised();
model.realTimeDatabase. dataExfiltration . assertUncompromised();
model.realTimeDatabase. accessingLogsToCollectInformation . assertUncompromised();
model.realTimeDatabase. obtainValidAccount . assertUncompromised();
model.realTimeDatabase. administrativeAccessToDatabase . assertUncompromised();
model.realTimeDatabase. dataCorruption . assertUncompromised();
}
}
Appendix C
125
126 APPENDIX C. ALL ATTACKS AND MAPPING MITRE INTO
THREAT MODELING OF SCADA
Code of scadaLang
category Networking{
abstract asset Zone{
| gainInitialAccess [ Exponential (1) ]
−> bypassFirewall
| bypassFirewall
}
128
APPENDIX D. CODE OF SCADALANG 129
}
asset DemilitarizedZone extends Zone
{ | gainInitialAccess [ Exponential (1) ]
−> accessToDMZ
| accessToDMZ
| bypassFirewall [ Bernoulli (0.5) ]
−> firewall . bypassFirewall
| physicalShutdownDiod [Exponential (0.1) ]
−> diod .physicalShutdownDiod
}
{ | exploitVulnerableFunction
}
asset DNSServer extends Host
{ | serverCompromise [Bernoulli (0.5) ]
−> shutdownDNSService,
poisonDNS
| shutdownDNSService
| poisonDNS
| remoteSystemDiscovery [ Bernoulli (0.5) ]
−> serverCompromise
}
asset NISServer extends Host
{ | serverCompromise [Bernoulli (0.5) ]
| remoteSystemDiscovery [ Bernoulli (0.5) ]
−> serverCompromise
}
asset NTPServer extends Host
{ | serverCompromise [Bernoulli (0.5) ]
−> alterClockConfigurations ,
stopService
| alterClockConfigurations [ Bernoulli (0.5) ]
| stopService
| remoteSystemDiscovery [ Bernoulli (0.5) ]
−> serverCompromise
}
}
category Security {
category System{
abstract asset Host {
| serverCompromise [Bernoulli (0.5) ]
}
asset DirectoryService extends Host
{ | serverCompromise [Bernoulli (0.5) ]
−> obtainPasswordFromMemory,
remoteSystemDiscovery,
accessLogs
| obtainPasswordFromMemory [Bernoulli(0.5)]
−> obtainValidAccount
& remoteSystemDiscovery [ Bernoulli (0.5) ]
−> cfs .serverCompromise,
hmis.serverCompromise,
obtainValidAccount
| accessLogs
−> obtainValidAccount
& obtainValidAccount [ Bernoulli (0.5) ]
−> obtainAdminAccount
| obtainAdminAccount
}
asset AppServer
{ | serverCompromise [Bernoulli (0.5) ]
−> remoteSystemDiscovery,
accessingLogsToCollectInformation ,
useDefaultCredentials
& remoteSystemDiscovery [ Bernoulli (0.5) ]
| useDefaultCredentials [ Bernoulli (0.5) ]
−> administrativeAccessToAppServer,
serviceStop
& obtainValidAccount [ Bernoulli (0.5) ]
−> administrativeAccessToAppServer ,
dataExfiltration ,
132 APPENDIX D. CODE OF SCADALANG
goToOtherSystemComponents
| dataExfiltration [ Exponential (0.1) ]
−> dataCorruption
& serviceStop [ Bernoulli (0.5) ]
| accessingLogsToCollectInformation [ Exponential (1) ]
−> serviceDiscovery ,
obtainValidAccount
& serviceDiscovery [ Exponential (1) ]
−> serviceStop ,
manInTheMiddle
& manInTheMiddle [Exponential(1)]
−> goToOtherSystemComponents
| administrativeAccessToAppServer [ Exponential (0.1) ]
−> dataExfiltration ,
installRogueMasterDevice ,
masquerade
| installRogueMasterDevice [ Bernoulli (0.5) ]
−> collectData
| collectData
| dataCorruption [ Exponential (0.1) ]
| goToOtherSystemComponents
−> audiblealarm. startAlarm ,
audiblealarm .unbootAlarm,
products . productInfection ,
iccpserver .serverCompromise,
postgredatabases . bypassInputValidation ,
oracledatabases . bypassInputValidation ,
backupserver .serverCompromise,
realtimedatabases . bypassInputValidation ,
products . productCorruption ,
products . productInfection ,
cfs .serverCompromise,
antivirus .serverCompromise,
hmis.serverCompromise
| masquerade [ Bernoulli (0.5) ]
# onDemandAccount
−> administrativeAccessToAppServer
# networkSegregation
−> manInTheMiddle
APPENDIX D. CODE OF SCADALANG 133
# logsDataEncryption
−> accessingLogsToCollectInformation
}
asset OracleDatabase
{ | bypassInputValidation [ Bernoulli (0.5) ]
−> sqlInjection
| sqlInjection [ Exponential (0.1) ]
−> commandLineExecutionThroughSQLInjection
| commandLineExecutionThroughSQLInjection [Bernoulli(0.5)]
−> accessingLogsToCollectInformation
| accessingLogsToCollectInformation [ Exponential (1) ]
−> obtainValidAccount
& obtainValidAccount [ Bernoulli (0.5) ]
−> administrativeAccessToDatabase
| administrativeAccessToDatabase [ Exponential (0.1) ]
−> dataCorruption,
dataExfiltration
& dataCorruption [ Exponential (0.1) ]
& dataExfiltration [ Exponential (0.1) ]
# sanitizeClientSideInput
−> sqlInjection ,
commandLineExecutionThroughSQLInjection,
bypassInputValidation
# validateClientSideInput
−> bypassInputValidation
# usePreparedStatement
−> sqlInjection ,
commandLineExecutionThroughSQLInjection
# onDemandAccount
−> administrativeAccessToDatabase
}
asset PostgreDatabase
{ | bypassInputValidation [ Bernoulli (0.5) ]
−> sqlInjection
| sqlInjection [ Exponential (0.1) ]
−> commandLineExecutionThroughSQLInjection
| commandLineExecutionThroughSQLInjection [Bernoulli(0.5)]
−> accessingLogsToCollectInformation
134 APPENDIX D. CODE OF SCADALANG
−> sqlInjection ,
commandLineExecutionThroughSQLInjection,
bypassInputValidation
# validateClientSideInput
−> bypassInputValidation
# usePreparedStatement
−> sqlInjection ,
commandLineExecutionThroughSQLInjection
# onDemandAccount
−> administrativeAccessToDatabase
}
asset BackupServer
{ | serverCompromise [Bernoulli (0.5) ]
−> accessBackupFiles ,
useDefaultCredentials
| accessBackupFiles [ Bernoulli (0.5) ]
−> obtainValidAccount
| useDefaultCredentials [ Bernoulli (0.5) ]
−> administrativeAccess
& obtainValidAccount [ Bernoulli (0.5) ]
−> administrativeAccess ,
dataExfiltration
| administrativeAccess [ Exponential (0.1) ]
−> dataExfiltration
| dataExfiltration [ Exponential (0.1) ]
# encryptStorageData
−> administrativeAccess
}
asset IccpServer extends Host
{ | serverCompromise [Bernoulli (0.5) ]
−> remoteFileCopy,
remoteSystemDiscovery,
accessingLogsToCollectInformation
| remoteFileCopy [ Bernoulli (0.5) ]
−> obtainPasswordFromMemory
& remoteSystemDiscovery [ Bernoulli (0.5) ]
| accessingLogsToCollectInformation [ Exponential (1) ]
−> obtainValidAccount
& obtainValidAccount [ Bernoulli (0.5) ]
136 APPENDIX D. CODE OF SCADALANG
−> goToOtherSystemComponents
| goToOtherSystemComponents
−> appservers .serverCompromise
| obtainPasswordFromMemory [Bernoulli(0.5)]
−> obtainValidAccount
# hardenProfile
−> appservers .serverCompromise
# intrusionDetectionSystem
−> remoteSystemDiscovery
}
asset DataEngineeringServer extends Host
{ | serverCompromise [Bernoulli (0.5) ]
−> remoteFileCopy,
accessLogs,
useDefaultCredentials
| remoteFileCopy [ Bernoulli (0.5) ]
| accessLogs
| useDefaultCredentials [ Bernoulli (0.5) ]
| obtainPasswordFromMemory [Bernoulli(0.5)]
| stealingPasswordsFromMemory [Bernoulli(0.5) ]
| obtainValidAccount [ Bernoulli (0.5) ]
−> administrativeAccess
| administrativeAccess [ Exponential (0.1) ]
| accessingLogsToCollectInformation [ Exponential (1) ]
| serviceDiscovery [ Exponential (1) ]
| administrativeAccessToDEServer [ Exponential (0.1) ]
| dataExfiltration [ Exponential (0.1) ]
# whitelistHosts
−> serviceDiscovery
# onDemandAccount
−> administrativeAccessToDEServer
}
asset Product
{ | productInfection [ Bernoulli (0.5) ]
| productCorruption [ Exponential (0.1) ]
# applyApplicationSecurityGuidelines
−> productInfection ,
productCorruption
}
APPENDIX D. CODE OF SCADALANG 137
asset Alarm
{ | unbootAlarm [Bernoulli (0.5) ]
| startAlarm [ Bernoulli (0.5) ]
}
asset HumanMachineInterface
{ | serverCompromise [Bernoulli (0.5) ]
−> accessingLogsToCollectInformation ,
manInTheMiddle
| accessingLogsToCollectInformation [ Exponential (1) ]
−> obtainValidAccount
& obtainValidAccount [ Bernoulli (0.5) ]
−> modifyAlarmSettings,
administrativeAccessToHMI
| modifyAlarmSettings [ Exponential (0.1) ]
−> audiblealarm.unbootAlarm,
audiblealarm . startAlarm
| manInTheMiddle [Exponential(1)]
−> modifyAlarmSettings,
remoteSystemDiscovery
& remoteSystemDiscovery [ Bernoulli (0.5) ]
−> appservers .serverCompromise,
directoryservice .serverCompromise
| administrativeAccessToHMI [ Exponential (0.1) ]
−> placeRansomware
| placeRansomware [Bernoulli (0.5) ]
# hardenProfile
−> placeRansomware
# intrusionDetectionSystem
−> remoteSystemDiscovery,
manInTheMiddle
# scheduleBackup
−> placeRansomware
# malwareDetectionAndAntivirus
−> placeRansomware
# onDemandAccount
−> administrativeAccessToHMI
}
asset AntivirusServer extends Host
{ | serverCompromise [Bernoulli (0.5) ]
138 APPENDIX D. CODE OF SCADALANG
−> remoteFileCopy,
remoteSystemDiscovery,
accessingLogsToCollectInformation ,
useDefaultCredentials
| remoteFileCopy [ Bernoulli (0.5) ]
−> obtainPasswordFromMemory
& remoteSystemDiscovery [ Bernoulli (0.5) ]
| useDefaultCredentials [ Bernoulli (0.5) ]
−> serviceStop ,
administrativeAccess
& obtainValidAccount [ Bernoulli (0.5) ]
−> appservers .serverCompromise
& serviceStop [ Bernoulli (0.5) ]
| administrativeAccess [ Exponential (0.1) ]
−> manInTheMiddle,
modifyConfigurationOfAntivirusAgentsAndRepositories
| accessingLogsToCollectInformation [ Exponential (1) ]
−> serviceDiscovery ,
obtainValidAccount
| serviceDiscovery [ Exponential (1) ]
−> manInTheMiddle,
serviceStop
& manInTheMiddle [Exponential(1)]
−> appservers .serverCompromise
| modifyConfigurationOfAntivirusAgentsAndRepositories
[ Exponential (0.1) ]
| obtainPasswordFromMemory [Bernoulli(0.5)]
−> obtainValidAccount
| stealingPasswordsFromMemory [Bernoulli(0.5) ]
}
asset CommunicationFrontend extends Host
{ | serverCompromise [Bernoulli (0.5) ]
−> remoteFileCopy,
remoteSystemDiscovery,
accessingLogsToCollectInformation ,
useDefaultCredentials ,
rtus .remoteSystemDiscovery
| remoteFileCopy [ Bernoulli (0.5) ]
−> obtainPasswordFromMemory
APPENDIX D. CODE OF SCADALANG 139
associations {
DirectoryService [ directoryservice ] 1
<−−LinuxDirectoryServiceAccess−−> 1 [ useraccount ]
UserAccount
DataEngineeringServer [dataeng] 1
<−−DataEngineeringAccess−−> 1 [ serviceaccount ]
ServiceAccount
DirectoryService [ directoryservice ] 1
<−−WindowsDirectoryServiceAccess−−> 1 [administrator]
AdminAccount
140 APPENDIX D. CODE OF SCADALANG
HumanMachineInterface [humanmachineinterfaces] ∗
<−−MMIAccess−−> 1 [appserveraccounts] AdminAccount
AppServer [ appservers ] 1 <−−AntivirusAccess−−> ∗
[ antivirus ] AntivirusServer
AppServer [ appservers ] ∗ <−−AlarmAccessFromAppServer−−> 1
[audiblealarm] Alarm
CommunicationFrontend [ cfs ] 1 <−−DirectoryServiceAccess−−> 1
[ directoryservice ] DirectoryService
BackupServer [ backupserver ] 1 <−−BackupServerAccess−−> 1
[appservers ] AppServer
HumanMachineInterface [hmis] 1 <−−DirectoryServiceAccess−−>
1 [ directoryservice ] DirectoryService
AppServer [ appservers ] ∗ <−−AppServerAccess−−> ∗ [hmis]
HumanMachineInterface
HumanMachineInterface [hmis] ∗ <−−AlarmAccessFromMMI−−>
1 [audiblealarm] Alarm
Product [ products ] 1 <−−ProductAccess−−> 1 [appservers]
AppServer
CommunicationFrontend [ cfs ] ∗ <−−RtuAccess−−> ∗ [ rtus ]
RemoteTerminalUnit
AppServer [ appservers ] ∗ <−−DatabaseAccess−−> ∗
[realtimedatabases] RealTimeDatabase
AppServer [ appservers ] ∗ <−−DatabaseAccess−−> ∗
[postgredatabases] PostgreDatabase
IccpServer [ iccpserver ] ∗ <−−AppServerAccess−−> ∗
[appservers ] AppServer
AppServer [ appservers ] ∗ <−−DatabaseAccess−−> ∗
[oracledatabases] OracleDatabase
CommunicationFrontend [ cfs ] ∗ <−−RtuAccess−−> 1
[ appservers ] AppServer
Firewall [ firewall ] ∗ <−−SupportZoneAccess−−> ∗ [supportzone]
SupportZone
AppServer [ appservers ] 1 <−−AppServerAccess−−> 1
[supportzone] SupportZone
Diod [diod] 1 <−−DiodAccess−−> 1 [demilitarizedzone]
DemilitarizedZone
ProductionZone [ lans ] ∗ <−−NISServerAccess−−> ∗ [ nisserver ]
NISServer
ProductionZone [ lans ] ∗ <−−NTPServerAccess−−> ∗ [ntpserver]
APPENDIX D. CODE OF SCADALANG 141
NTPServer
Firewall [ firewall ] 1 <−−RouterAccess−−> 1 [ router ] Router
ProductionZone [ lans ] ∗ <−−DNSServerAccess−−> ∗ [dnsserver]
DNSServer
Diod [diod] 1 <−−DiodAccess−−> 1 [productionzone]
ProductionZone
Firewall [ firewall ] ∗ <−−ProductionZoneAccess−−> ∗
[productionzone] ProductionZone
Diod [diod] 1 <−−DiodAccess−−> 1 [supportzone] SupportZone
ProductionZone [ lans ] ∗ <−−DirectoryServiceAccess−−> ∗
[ directoryservice ] DirectoryService
AppServer [ appservers ] 1 <−−AppServerAccess−−> 1
[productionzone] ProductionZone
Firewall [ firewall ] ∗ <−−DemilitarizedZoneAccess−−> ∗
[demilitarizedzone] DemilitarizedZone
AppServer [ appservers ] 1 <−−AppServerAccess−−> 1
[ demilitarizedzone ] DemilitarizedZone
}
TRITA-EECS-EX-2020:622
www.kth.se