Dear viewer, these subtitles were generated by a machine via the service Trint and therefore are (very) buggy. If you are capable, please help us to create good quality subtitles: https://c3subtitles.de/talk/745 Thanks!
Imagine you're running a p.l.c.
in your industry application
and.
Some attacker comes along,
twiddles a bit with your Eyo controller
and you have no chance of noticing
anything, this
sounds a bit like a bad horror story,
but our next speakers will tell you that
this is not just a story, it's real.
Please give a warm round of applause to
Ali, Abbassi and Majid.
Thanks.
Hi, everybody.
Welcome to our talk about this
modification program where you control
your pain control attack.
My name is Ali Velshi and I am a student
at Distributed and Embedded Systems
Security Group at the University of
Toronto in the Netherlands and
visiting researcher, chair of
System Security of University Baucom
in Germany right now.
And my colleague and I imagine
I'm a research and development engineer.
I studied computer science and I have my
master's in artificial intelligence.
My main area of research is reverse
engineering and I involved in
system level security of the places in
Scotland that works with Alien lately.
All right.
Actually, when I was in
it came here, I saw this
picture which was
saying, choose your site after trying
this. I have to say I choose klop matter.
OK, so
first we start with giving you a
background on process control
and some other background
on existing active attacks
and defenses against policies.
This is very essential for our attack
because it described why describe why
we are doing our attack then.
It makes sense when you are assuming that
you have active defenses.
We will also look at
which one of these defenses, generally
foreign military, can be applied for
pauses.
Then we will give you the core
part, the background and pin control.
And what is
the problem with it being control?
We introduce our rootkit variant of
our attack and nonracist variants
and will have some demos for videos
actually and discussions.
So again, before
we start, because there was lots of media
hype about our works, I want to clarify
things that what is this talk
about?
First of all, we only want to
uncover existing design flaws in places
and we believe that that can
be used in future by attackers, assuming
that you have active defenses within the
parties.
And of course,
this is not a new generation of a
Stuxnet.
So we are not going to unveil any fully
functional rootkit, just a single like
a single binary that you can run it
everywhere, no matter what is the
operating system or underlying
architecture of a device.
This is also not about any exploitation
technique or any vulnerability discovery
technique.
And also we are not going to mention any
vendor name.
So no names and shames.
First of all, we are going to start to
give you an basic overview about
industrial control system networks.
So generally
iciest networks consists of three main
part.
The first one is the technology.
This is your corporate line where you
have the active directory, your mail
server, the file sharing server.
And this is in this area of the network
that you have. The workstation is
where the users are surfing the web,
downloading files and executing them.
And then the next part is operational
technology or Ötzi.
This is our Escada network part.
This is where we have the Scotter systems
and the places.
And finally, we have the physical
application layer.
This is where we have like
our physical elements of our network,
like the sensors, the gates, the valves,
the valves and the ports.
And it's interesting to note that this is
this part of network is controlled and
monitored by the operational technology,
actually by the network part.
And when the attacker trying to attack
an industrial network, the final
goal could be to affect and
cause damage to the physical application
to get a better understanding
of this kind of attack.
It's important to understand the process
control.
Um, one of the simplest
example of the process control could be
a thermostat.
So back into the old days
when you wanted to increase or decrease
the temperature of your room, you should
do it manually.
But this is you can you can you can get
a thermostat, configure it, wants
to your desired value.
And then it's the thermostat that will do
the job for you to increase or decrease
the temperature,
the control loop and the thermostat start
by reading a value from a temperature
sensor. This value then goes an input to
the control system.
And this is in this particular part.
But the thermostat going to make a
decision about what to do next,
like what to increase or decrease the
temperature.
And then the result of this
going as a command to your physical
process, which could be your heating
system.
And this loop will continue
over and over.
The things are like
in the larger scale, the things are much
more complex than a simple thermostat.
So that's why we're using the LCD.
The p.l.c. or programable programable
logic controller is one
of the main components of every iciest
network.
The policies are simply embedded
devices, running a real time operating
operating system, and they're programed
using logic.
So the logic.
So the logic is simply a program that
appeals p.l.c.
executes and it will make the p.l.c.
to actually do something else.
It will define the rules that what the
policy should or should not do.
And as you can see, if you make a few
simple example about the logic is like
if the input from, uh, from the from
the AI 01 and the input
of two on a label or something, then it
will update some output on politics
and the other examples.
So let's take a look and how APRC
with logic can we are going to stick it
still with our team, for example,
so we have a silver temperature
sensor and, uh,
the p.l.c. actually the logic inside the
p.l.c. is read a value from
it, from the sensor.
It will make a decision based on the
on that input.
And as a result, it will update
some output to the physical IO.
But, you know,
some of small changes in the temperature
of your room may not make any problem
to you, but this a small change could
could pose a real threat, could could be
really dangerous into industrial
network. That's why
we are using the control algorithms.
This kind of algorithm is to to
calculate the risk of some operation.
For example, let's imagine that if in
your logic, you have a defined at a
temperature should not go higher than 20.
And if in the last iteration of the
control loop, the temperature is
something like nineteen ninety five
here by this kind of algorithm, for
example, espied, we are going to
calculate what what will happen
if the loop turns once more and
what and
should we just halt the process right now
or it's not really dangerous so we
can let the loop to turn once more.
OK, now that we have some basic
understanding about the ISIS network,
I'm going to give you some introduction
about the attacks and defenses against
embedded systems.
OK, so one of the simplest attacks
against almost
the whole season embedded devices is the
authentication bypass.
So dumb because it's the story of the
default passwords that's so easy to
to to change it, like to
to to to be protected against it.
But unfortunately, we're seeing it almost
like it's it's really general.
It's really common.
Then we have the framework or logic
modification when the attacker can take
a fuller image due to some modification
and then upload the malicious, uh,
firmware to the device as well,
that hackers can do the same thing with
the logic. They can manipulate the logic
and then upload the malicious logic to
the devices. But the another class
of attack. Here is the control flaw
attacks which which exist
since long time when the PCs and
like the buffer overflow the remote
code execution and or
exist as well on embedded devices.
And the last, but
not least under attack is or the easiest
malware is one of the good example.
And this about this attack is like
Stuxnet, where the malware
trying to attack the Scotter software
by installing some hoops and trying to
manipulate the process that way.
So to be protected against those attacks,
we have some defensive solutions as well
at the station or Marius's station is
one of those solution in this
technique. In this method, we are trying
to check integrity of
a state of the system, for example, the
memory.
Then we have the future integrity
verification, which can be used
for the logic as well, which before
installing a new logic or new framework
we are, the system should
verify that the firmware or the logics
are actually coming from a trusted
source.
And then we have more sophisticated
protections.
Actually, there are mostly hospital
intrusion detection systems for
detecting the hawks and control flow
anomalies.
So from all those defense, there are not
all of those are actually applicable to
the PLCC because
the proposed solution should not require
any hardware modification.
And since we have a very limited amount
of resource on these devices, so the
proposed solution also not should not
pose any extra overhead to the device.
And because, like almost
all of the already manufactured places
are not supporting virtualization
and based on what they are doing, it's
very unlikely to
see the virtualization support in the
future manufacture pulses.
So all the solutions which
require the visualizations are eliminated
as well.
So here we can divide the defensive
solutions in two category.
The first and the first
category we can put logic, checksum
and firmware integrity verification as a
trivial defense and
we can put like we have.
Another category is a hospital intrusion
detection systems, which doppelgänger
or arthroscope jars are two good
example in this category.
So we're going now we're going to take a
deeper look at this to protect
the doppelganger, actually use the
attestation solution at station,
which it takes a firmer
image is a scan that
firmware image for the exact same code,
and it will randomly install some
symbiotes or watch points.
And at the wrong time, every
every time that these
watch points are hit, it will check
integrity of the memory region.
And as far as that, this check and
the integrity of that memory is not
changed. It will consider that everything
is fine.
Then we have the PJR,
that Oscar PJR is a is a
the defense against the control for
anomalies.
It has two different phases.
In the first step, we're learning
more to try to gather some information
about the execution of the
about the execution and like the function
address, the function parameter is the
return address.
And so all of them in a TTL or
trusted location list and later
in the protection mode, it will
actually compare all the runtime
information against it is a static list.
Exactly.
And as for that, these two values are
matching it to consider that everything
is fine.
So, uh.
These two solutions lie to protect a
device against cold cooking and data
manipulation.
But what's the difference?
That's not all the rootkit
or all the attacks is about to
do with the modification in the codes or
in the memory.
For example, we use the bug registers
to just blocking the access and
monitor our hijacking access to some
values into the memory Buzenberg
registers. As I said, this technique has
been documented in Fragged magazine by
half that long ago.
And, uh, well, if you're interested, you
can go and take a look.
It's really interesting.
So Natalie going to give you some
information about the PIN console and
actually introducing our attack.
OK, so
you might ask why we gave you
lots of background on active defenses
against for the places
is because our attack much more
make sense when you consider
you have active defenses within the PRC,
which vendors right now are trying to
push their
products toward that I sing Precipices
with active defenses.
You would see it in 2020 or
maybe earlier, so.
So what is in control?
Well, generally in control of control
subsystem consists of two parts.
First, multiplexing,
which means that a single
pin and I mean real pin
in a Soucy or CPU
can have multiple functionalities,
which you can use it at once.
You can only use one of those
functionalities at once.
And they do it because the
chip vendor gives this disassociates
to different other companies, for
example, mobile like companies
that the companies which make cell
phones. But the chip developer
is somebody else.
So what they do is that they
put several functionalities in different
pins.
So based on different requirements for
different companies which are using
it, they can
it can be used literally for their
own purposes, while you can have
a general chip for different companies.
And that's what they call a pin
multiplexing. And it's like a complex
chip designing and stuff.
And not seeing
in pin control is a
pin configuration, which literally means
that you are configuring digital
all your pins and describing how
they are going to be used.
So is it an input screen or output
screen? And remember that because we are
going to use it a lot.
So there are general rule about
this. And again, you
need to remember that before we
move forward.
Is that in an input pin
or a pin, which you for example, you used
to read values, you can only use
it as a aderet, only
pin. So it means that you can never write
to a pin, which is described as
input.
OK, so General.
And if it's output pin, which means
that you are controlling some devices
with it, then you can, you can
read tweets, read
from it and write
to it too. So it's like you can have both
things in outputs in
general.
So for example, here is an example,
because you can see we have a 24
as inputs D.W.
in and then we have a pin.
Twenty two hours output or in
the Dow you can see the same
configuration.
So now we have to know
actually how actually p.l.c.
interacting with these pins.
And before I said I
want to again, like just remind you
again, like you said it, but like so
say you have a main application which is
called runtime. It's usually don't change
except by frame or update.
And then you have another part of the
application which the operators
in the power plants or in critical
infrastructure program.
And that's why you call a programable
logic. It's a program which you, for
example, describe if the temperature of
the input plant is more than this,
then do that. So that's like logic.
So the p.l.c. runtime usually what will
happen is that either the president's,
which can be a driver that like mapping
is eyewitness's for the physical memory
and then interact with.
But let's look at it in
a more accurate way and
why it is a problem, a problem which we
call as a memory illusion.
So let's assume that we have a long time
running and we are in a in a in a real
time operating system, a modern realtime
operating system. And you have a physical
your memory available.
And then what will happen is that
you're on time request or it can be a
driver. That's its request
for your memory of this physical
physical memory, which is going to be
used to be controlled.
If you ask the operating system, an
operating system mapped your memory
in a visual or your memory.
And then there is the operator
who is programing the p.l.c.
and say, OK, so I want you to do this and
that and that, and it's upload
it to the p.l.c.
logic.
Right.
So, for example, in this example, we have
the logic, which we say if
24 is true,
then every five seconds
turn on and off the ping
22.
So here in this example, we can
immediately notice that PIN twenty
four is an input ping
because we are always checking if it's
true and we are updating
ping 22, which means ping 22 is outwits
ping. What will happen is that the p.l.c.
runtime dense literally
notice about this description and then
request to change
the state of the pins in a visually
mapped IO in
something we should call it, register a
state register of this or see visually
mapped out of course.
So for exactly. Describe, say hey, ping
24 is an input.
So the state of it is zero, which means
that the same pushpin and pin
twenty two is output.
So I write value for example, one,
which means that the pin is output
and then well this value will get written
to the physical memory.
And then based on our logic,
we are going to read the values from 24,
because if 24 is true,
then we can continue with the PIN.
Twenty two.
So we will read it from visual and
memory, but actually it's coming from the
physical memory.
And then every five seconds
the runtime will request write
the value zero or one
to the visual on memory, which means that
you are going to turn on and off
something which is connected, let's say,
every five seconds. So that's
that's something that is happening every
five seconds.
And of course, the read happen all the
time.
But what is a problem with
the control is that
what if that's what we assume?
What if there is an attacker who
without p.l.c.
knowing or you never know,
just request normally that, hey,
I have a new configuration for the PIN
22, which I'm going to use.
So now I change this state of the PIN 22
from outputting to
an input pin. So remember, PIN 22
was out because you are writing to it
every five seconds, but I am writing
in a different register.
So you register that pin 22
from now on is an input.
And of course this value gets returned to
the Vitron memory.
And then in a physical memory,
what will happen next is interesting
because the p.l.c.
runtime then try to still
assume that every five seconds you'd have
to turn on and off the slide.
Right. So it's a.
Right. Right.
011 every five seconds
to the right register.
So turn on and off.
But what will happen is here's
a core problem that.
Well, you can't write to it.
Do you remember the general rule, a
pin which is imputes it can't
you cannot write to it.
OK, and the problem is that
the CPU or the association, like
almost all embedded system, they don't
give you a feedback that, hey,
you cannot write to it.
So it's like everything looks fine.
This is what we call it, the PIN
configuration attack, because you you can
just change the configuration.
I will explain again later to.
But let's change it.
So we also have
another register, which we call it
multiplexing register.
OK, so I just change
the name of the, uh, like a state
register to multiplexed register.
And then what will happen is that I am
going to say, hey, PIN 20,
for example, let's say it was connected
to a motor. So it's not a zero.
It's a.
I to support S.P.I or
W.M.
Port. OK, so let's say
now I'm going to change it.
So the logic is not anymore.
Let's say we have a motor which we are
controlling.
What I am going to do as the attacker is
that I am going to say, hey,
multiplexed 22
from out to sea or
to a kill or something else.
OK, and what
will happen is that, well,
these are all values.
Doesn't matter here.
Every five seconds p.l.c.
runtime tries Dritz.
But it can't, right, because,
well, you're physically terminated
the connection after you buy,
multiplexing the pin, which was being
used before.
And that's a problem because let's
let's let's give you an example, like
a USB drive in windows.
OK, so you are copying your files
and then suddenly you take out your USB.
What do you expect?
There is error saying boom, like this
device is not any more available.
So you can't copy.
What is happening now is that,
for example, between multiplexing it
specifically is that you're
actually the audio is not any more
available, but the visual memory of the
audio is still available.
So the operating system and the P.A.
on time is still talking with you.
But Disvalue cannot get the to the
physical memory. But there is no feedback
from the associate to tell the
p.l.c. runtime or the operating system
that, hey, this is not any more available
and that's how the problem
happens.
So I think
we just show you a quick demo about
how it's working.
Obviously not cracking.
Yeah, cool.
From from beginning,
yes,
I was confused.
So we have, for example, example process
that we say, for example, in twenty five
is the infamous nineteen twenty two.
It's twenty three outputs.
And every five seconds I want to turn on
and off dead connected to PIN twenty
three and you can see the
turning on and off every five seconds.
OK, we are using in real
time being used in more than two hundred
sixty seven dollars right now
and
yeah.
So you can see the value get false
to means it is off to value shows.
True, it means that the light is on.
So that is true and it is on and
it's false and it is off.
OK, and then what we are doing exactly
what we describe now.
So we are going to manipulate
the configuration of the pin.
When the pennies, for example, are
outputs, we change it to inputs,
but we don't want to change the process.
But actual operations happening here, we
just want to show you that there is no
failure. There is no all your failure to
feel sure on time doesn't fail.
There is no or in the current
debate going on, it's there is no oil at
top. It's like everything looking
fine.
So, professor.
Yeah,
yeah, and that's an important thing, so
we don't hook any functions
in here because we assume that
we have some active defenses.
So you still have the turning on,
on and off and
what we are going to do right now, we are
only blocking the operation.
So we want to see every time you don't
want to try to write to your pin.
We change the state of the pean related
to the LCD from output's
to input. So the audio
is only read only it's
not anymore.
You can't write to a pin anymore.
And then you see that the second time I
assume that everything's fine and nothing
happens.
In the next demo, we will show you
later that actually we change the
process, the actual process happening to.
So here, for now, we just want to show
you that we are intercepting the right
operation of the of the wrong time
every time he's trying to right
to dial.
And you can see it is not any more
flashing, but the second
time doesn't know about it.
So once you can see
me, switch now to the software,
to the programmer station
and then what we do here, if
he is still saying through five,
five seconds and then
follows five seconds or for example,
again, it's going through,
but the light is not turning on anymore
because we are actually changing
the estate of the pin from it from
outward to input every time p.l.c.
runtime tries to
write to its.
All right, so
that was the problem, actually,
everybody at the beginning, you're
assuming that there must be a termination
or something because he's not available,
for example, or the configuration.
We change the configuration and there is
some kind of order, but
nothing happens.
And I
think the original problem is the
no interrupt for configuration,
first of all. So the runtime
or the operating system knows that there
is a change in the in the configuration
of the PIN or multiplexing features.
And a second problem is that there is no
feedback after once there is a failure
that, hey, you couldn't write to it.
So so she doesn't tell you because
there's no contract for you.
And I don't know if
it's possible to put in interrupt because
it's very expensive.
So what we did was that we we decided
to create attack using spin control,
attack, assuming that we have these kind
of active defenses currently available
for use.
And we didn't want to do
function hooking, for example, because,
as Madjid said, we have some active
protections such as
PJR, which are looking actively for
function, working within the party.
OK, so and of course, we don't want to
modify the executable contents
of the PSC because some companies,
for example, can enforce like attestation
frameworks which verify the static part
of the time that is not modified.
And and again, we
assume that you have other active
defenses. For example, you have a logic
checksums. So if somebody do
the manipulation of the logic, we can
detect it.
That's how we have control attack,
which is where we manipulate
your configuration, which, for example,
a configuration of the pins, if it's
input or output, we call it being
configuration attack.
And in other way, we do
pin multiplexing attack, which means that
we are changing the multiplexing
configuration after SASE.
And of course, the US never knows about
it.
So we implemented in two variants, first
for the rootkit required
priviledge some knowledge of associate
registers and the knowledge of mapping
between our Europeans and the logic.
And second variant was a as a
Chilkoot.
So how actually the attack works, so
let's assume that we want to
appeal here on time, trying to write
to a specific point and we want to
manipulate the values in a specific
piece. So what we do is that
we use it device producers
and we put it visually,
mapped IO into the debug register
and then the second time tries to write
to it. But because we already
put it into the market, so we intercept
the right operation, what we do is that
we don't modify the right operation.
We don't divert its execution flow
or anything.
What we do is that we just go to another
register, which is a state register,
and change the configuration of the pin,
which is the second time we know he's
going to write to it.
We change it to the input machine and
the runtime right to it.
But it doesn't work because, well,
you can't write it out input.
And of course, for the read manipulation,
what you can do is that you can actually,
again, put of ideas
into the research that we already mapped
out you and then you can try
to read it. We intercepted
then what we do is that we change the pin
from input to output.
So it's like quite opposite.
And then we write the value we want, you
see. So for example, if you are reading
a, I don't know, a temperature value,
I'm just like going to change the value
of the value I want you read.
And and then I let
you continue reading.
And what will happen is that you read the
value. I tell you not the actual value
is happening.
So for the next them, we're actually we
have two other demos right
now. Sure. And then there is a certain
the fourth one.
OK, so so what we have
is that we have the same logic as we
describe. So except that every for
example, for second, we want to turn
on and off.
But this time we want to actually do
the attack. So we want to change
what's actually happening there.
So it's not just blocking something.
We want to actually change it the same
way as described in the previous page.
So we have a we have
a lead which is connected to a pin, and
then we want to turn on and off it every
force again. But me as an attacker,
I don't want it every four seconds
because I want to do it every one second.
OK, so now
this was the logic we are going to use
for the next demo.
And then there was some people were
saying that, well, what you implemented
was not in a real
policy because you were you were doing
the sauces from the Raspberry Pi VCM
28 36 to
to do that attack using
runtime. So maybe in the actual
PLCC difference. So because
we wanted to answer that, we actually
implemented it as well.
So it's like a logic.
We have a real p.l.c..
We just, I think Cobert name and stuff,
but smart people will find what
is it?
So this was the first
test that we have which saw a video of
it, and this was the second
p.l.c.
event, you know.
Yeah. So so so
in the next demo, we are actually
changing the actual physical
process without p.l.c.
runtime notes.
All right, so what we have is that every
four seconds we are turning on and off
the air so you can see through there
and then the light is on.
So through hell it is on and false
means it is off.
And then we execute our attack and
we are now changing the process.
What is happening there is that is still
runtime, assuming that is true for first
account for second and fourth, second
thoughts, but actually is not happening,
the physical process and the operator
when they are seeing it.
So assuming that an industrial plants,
what is happening is look like the black
cat movie is more complex.
So the next
video will see as well
just cover the names and every word, the
name of the event,
uh, and
what we do is that, uh, so
we are turning on and off early
so you can see every every two, three
seconds we are changing.
We had to put a thing on the screen,
too.
And
so.
Yeah, so can see this
on and off and then we kick
in our attack.
Look, this one this implementation
is not is a non rootkit variant.
So we are actually not using
channel access or anything else.
We are just actually from userspace.
We are executing this Safak.
Thanks for Andrew, if you are watching
that, he made this video for
us, so
we are it takes some second to kick
in the attack.
So then, for example, we make decisions.
We want to turn after al Qaeda without
p.l.c.. One time knows about it.
OK, so you're on time.
You can see the true value there and
false value. But actually, I decided
that you have to be a stop.
So the ability to stop is not turning on.
OK, now I decide that al Qaeda can blink,
then it can blink and then I decide no
stop anymore. But the value is through
there. But then it is not true.
OK, so it's like every time I
make a decision to stop
them from doing whatever it
is doing without the application
and the US knows about it and.
Yeah. So that's.
How is working?
I have to drink this thing that I don't
like.
And there is no you your failure or
anything happening here, so there is
in the light, you don't find anything.
You just decide that you must stop
even if the pills you're on time,
assuming that is true, Ali is
not on, but because we make
a decision that there must be a stop,
it's to stop.
So it's like so the problem
is that what actual operators
see in the physical plant
is completely different with what's
actually happening.
OK, and that's a problem.
That's that's a core problem here, that
they operate or see something else, but
actual physical process will be something
different you want.
So I did another presentation
yesterday about the security and how good
the devices are in the
terms of the mitigations and
randomize numbers.
During our research, we analyzed, um,
uh, different, uh, different binaries
from different vendors.
And this one user, uh, weren't
protected, not with the exploit
medications, at least not correctly and
not not against, uh, static or dynamic
analysis.
But a lot of the renderer has it was
quite surprising for us to see that the
binary was protected against a static
analysis. And it was you know, it was
simply a very simple technique that
like 99 percent of the file was fact.
And it was just a few functions, simple
loop that was unpacking the violence in
memory and do the final jump,
the same render use and symbol simple
on to the banking trick as well.
This apparent process of attaching to the
trial process to to block
the other debuggers, to attach, to
attach. Actually, these are not
really new techniques.
There are many bypasses are already
available on the Internet.
But it was quite surprising for us to see
them on the C section,
um, during our
our research, because we knew
after after a while we knew what what
kind of information we are looking for.
So we decided to use esterase.
And the only challenge we had using
asterisked was that because we had really
limited amount of resource on the
on the pulses and Osiris was generating
huge amount of output, we wasn't able
to handle that output.
And at the p.l.c.
was crashing like simply.
So what we did, we use a slightly
modified version of history to just
gather the information that we need.
And it was easy to exploit those
information as well.
So if you remember that
those two protection that I
introduced in the beginning of this
presentation,
those protection like the others are, um,
are there are some ways to bypass
them, like because Doppelganger
is not, uh, not
monitoring the dynamic memory.
So if you're you have any any malicious
code which loaded dynamically the dubal
gangers evaded.
And because Itescu PJR actually
comparing the runtime information against
a static list, which it was gathered
at the learning mode, and if
there is a there is a attack in some part
of the the system which was in the
monitor in the first step, so we
can evade the PJR as well.
And again, in our attack,
we do not modify any firmware
or any logic.
So now I'm going to tell us about
the overhead of our attack.
Yeah. So with the
rootkit variance, this is the Grof
for the fluctuation after Iyall.
So how how much are your
fluctuate when you are doing the attack?
Of course we are doing it some extra work
in FLC so that there might be a
fluctuation after your and it's like,
uh, around
zero zero five
milliseconds extra or
like one millisecond extra.
Uh, but
the thing is that the fluctuation of our.
You're surprising then I don't know why
is less than actual
sit on time. And that's
we.
And so we evaluated
the overhead of our attack and
it was not good, especially for rate
manipulation, because we wanted not
only change the operation, what we wanted
to also operate or never see
what's happening.
OK, so we wanted to because, well,
you know, in a process, it's like a
closed loop control.
So it's like once you change something
there, the inputs which is coming back
is changed to so we didn't want to
operate or seats, so we were doing the
manipulation.
But but the manipulation, especially
for manipulation, was not acceptable.
It was like a 22, 23 percent
overhead and that was too much for us.
So what we did
was that we talked about why we
don't do it without having roots,
without using the registries, because
that was like expensive.
So that's why we
implemented a second variant of our tax
of what we did was that we talked
about OK, here on time.
Once it received the logic, it's
configured it or like it's
describing lots of lots of things
for its operation.
So why not? We just use the privilege of
runtime and do the same.
And we did it. And it's overheads like
below one percent.
We can either remapped your or use
already mapped addresses and work
out the code you can actually use in any
standard, uh, like
CSFs or like Dev memoires
device driver request to actually, uh,
change the.
The configuration of attack and how it's
working and especially the most important
thing is something the difference with
the previous attack, with the rootkit, is
that the only the only thing you need is
that you need to find it, something we
call it reference the starting time.
So let's assume that we are turning on
and off a simple process like Leidy
every five seconds.
But what we want is that
we have to know from which five
seconds is like from which point is five
seconds starts.
OK, so I know that if it's a start, it is
every five seconds doing, but at which
moment this five seconds happening.
So that's something that you have to read
for some seconds.
The the the Europeans
and then knows how what
what is this delay or at which
certain exact time is happening.
And then once you found it, actually the
work is almost seamless or you just set
the pin to the input mode.
Right. Get ignored and then you
you're on time.
Right to it rarely fail.
And then we change back.
It's pin to something else and then we
write the value which we want.
It's similar to the to the right values
too. So we find a reference starting
time. We set up into the output mode,
then we write our what we want and then
you time read the value we give to them.
And so so far all of the things
we said was about digital stuff.
Right. And almost all of them about
configuration.
So the question is, what about
analogous stuff and what about PIN
multiplexing, which we physically
terminate the connection.
So actually we can actually use it for
analog manipulation.
Very good.
So we can actually use the PIN
multiplexing attack to
manipulate the entire analog memory
and suddenly make it unavailable
for the for the second time
or the driver.
And then later we'll
return it back to the control so you can
do it. That's one of the things you can
do or you can just be very intrusive
and change to the program counter
to Vellis intrusive, but
you can change the program counter to
jump from the right operation.
But generally the analog
audio is almost the same as physical
digital. So it's except that you have
multiple bits to
modify.
So now we have our last demo,
which is analog manipulation
of a motor and
we are doing it.
We are multiplexing attack.
Have to go very slowly.
Just stop it one second,
because so it is a motor
which is rotating every like
some seconds. Right.
And so
here this value here you see
the minus zero point
zero three two nine.
And if you look at this value, it's going
high and then go low.
This is a serious wave, which we have.
So it's like it's going high and then
it's going low. Right.
So it's showing us that's how
we are actually controlling the motor and
how the motor is actually working and
rotating based on that.
So now we are kicking our attack, yappin,
multiplexing.
What we do is that we we decide
to stop the motor whenever we want.
In analog data and
we kick in our loader
and then what will happen is that we
stop the motor, but it's still what you
see there is actually
the motor is moving forward and backward.
But actually it's not the case because
the motor is not moving forward and
backward. As you can see, mortuary's is
stopped.
So let's go back a little bit.
You're so again,
the water is moving below that attack,
water is stopped from working, but their
values are still saying that the water is
moving forward and backward.
But actually, water is not moving forward
and backward because actually we
multiplexed the pin, the physically
terminate it.
But the runtime, there is no aerial
failure.
There is nothing from the driver ever
crazy.
So.
There might be other possibilities about
attacks or some other smart
people can look at it that like,
for example, pull up and pull down
resisters.
It's worth looking at them.
What if we disable them?
And is it possible that somebody remotely
changed the values of the of your
electromagnetic field?
I don't know, you know, what happened
down there. Search and rescue service.
You want to filter the noises
coming from the environment,
but you can actually index
or disable them.
I don't know why they put this
functionality, but
overall, what we believe
is that you can, again,
cannot trust your inputs even if it's
coming from dial.
And
what we believe now is that for now,
actually, to be honest,
I think it doesn't make sense to do our
attack.
You know why?
Because, well, they are so,
so much simpler things to do
right now, which there are lots
of vulnerable places which
do not have, like, basic stuff
like like, I don't know, like having
not having Back-Door passport
or like there is
no attestation frameworks for for
executable part of the memory.
But the vendors right now, as we are
speaking, they are actually moving to our
debt. And our talk is not about
today. It's about once
they are deploying, seeing probably in
2020, then.
This is this attack makes sense for the.
And so for now, fixing
these problems, and I think it's easy
for the vendors to fix this problem, so
having not having the past for
having proper logic checks on or
like having some kind of attestation for
verifying the integrity of the suit on
time.
But once these things
are gone, then the next step
for attacker is actually modifying the
logic or on time like
like without talking functions, which
is very typical in malware.
So that's why every time when you have
like more complex and more complex
or less more active defenses
in one layer, attackers go to another
layer. And I think our attack is in
another layer.
And so at a conclusion,
I think you really need to
focus on system level security of control
devices in future because more
sophisticated techniques comes.
Because right now, we don't have very
good defenses, doesn't mean that once
we have them that don't introduce
something new.
It's always a cat and mouse game.
And so that Pinkwater
attack is just an example of such
attacks.
And and I think that
originally it's caused by lack of
interoperable configuration.
You, sir, and can have actually
significant consequences in other control
devices such as IED or even issues.
And that's it.
You have a solution for us now?
Well, before being
as I said before being worried about
such this kind of attacks, it's better to
first change your default passwords.
Right.
And and then,
uh, it's actually
hard to to give a definitive solution
right now because she's having
a good solution against this kind of
attacks. Need, um, equal
collaboration from the
software vendors and the hardware
vendors.
But we can do some stuff to make it
harder, for example, during the
iOS operation and not letting letting
the unprivileged process to do directly
to the operations.
And we can also do monitor
to the eyeballs and the pins
for the anomalies, for example, in the
kernel. So we're doing this
kind of, uh,
stuff. We can reduce the attack surface.
And yeah, this is almost pretty about
our presentation.
If you're looking for more, you can
attack at our presentation and
digital S4 in
next year actually at Miami United
States.
And yeah, everything that has a beginning
has an end.
Thank you for attending.
And if there's any questions, you're
here.
Thank you, Ali and Majid, if you
have questions, please, to line up at the
four microphones here in the halls.
If you're leaving, please leave through
the front door and
leaving, please, only through the front
door.
We have one question from the microphone
up front.
Thank you for this interesting talk of
one question.
Excuse me. If you're leaving, please do
so quietly so we can still record the
questions. Thank you.
My question is, how do you execute
the code on the real policy to
write your multiplexing request
to manipulate the things to how to
get there and execute it?
So for multiplexing register, you still
need to access routes because
multiplexing is a requirements
that you need to have to
be in the cabinet. OK, so you can't do
the multiplexing attack without having
to Texas. OK, but for
the King configuration attack,
you can easily do that because lots
of these p.l.c.
they built, so let's say it
like that. So you have different are your
busses, which is connect to the
CIO and what they have,
they have different different
kind of like different kind
of busses which communicate
over this PIN configuration.
So it's like there is some other
abstraction layer built upon this
concept.
So what you do is that, for example, you
can actually attack this abstraction
layer instead of attacking
directly to the to the to the
configuration of your which you can't do
it. And again, for PIN multiplexing you
can't do it, you need to taxes because
it's a requirement that
the colonel force you to do that so
well originally between multiplexing
happening at the time.
So it's like Yousry Bootloader does that.
But if you want to do it and nothing to
stop you, if you are in groups, then
then you need to abolish Texas for that.
We have another question from the
microphone in front here.
Hey, this is all very interesting.
In the case where you have root, it seems
like you'll you'll always be able to win.
But in the case where you're just using
Chalco and exploiting the application
process itself, it sounds like
you're Chalco is just calling a map
and kind of remapping the
memory itself in process.
So what do you what are you doing then?
No, we don't always do a remap, as I
said, for that answer.
So for actually for the demo,
which we have for actual p.l.c.,
we don't do any mapping.
We actually we actually attacking
another communication which builds
upon the,
for example, ping control subsystem.
So we are not directly
targeting. We target other abstraction
layer over the
control subsystem.
So that's how you are doing it.
But as we said,
another other things you can do is that
you can actually exploit the mapping
already existing, already mapped all
your irises to try to do
your attack.
That's it. So is that specific to
the application itself, like it has its
own internal cue for these events and
you're just hijacking that internal cue
of the process?
Yes. So for for yes.
If you don't have to taxes.
Yes. But if you do have Texas,
then you can do other things.
And one thing which I heard a lot
and lots of people which legitimately
ask question is that if I have new taxes,
why would I want to do that?
Right.
I think the point is that because
you don't consider that we have active
defenses.
So once you have, for example, you have
some hulking, hulking protection
within the p.l.c.
cannon, OK, then
what you want to do?
What is your alternative?
OK, so then what we are saying is that,
OK, don't touch this.
Don't touch anything with the software.
What we go is that we just go and change
the configuration of the pincer and then
we can actually do achieve the same
thing, for example, as Stuxnet did,
OK, without actually exploiting the
software, but just going underlying
system and like just target you directly.
That's when our attack makes sense.
As we said several times.
Yes. If you have if you don't have
defenses, if you have a backdoor password
and no checksum, why would
you go through this painful
process to, I don't know, like
manipulating the S or C registers to
to do that. Right.
But once you have active defenses, then
it totally makes sense because
then it's like you are much more limited
to do you attack.
Thank you, Erica.
We have a question from the Internet via
our signal angel.
Yeah. Crail from the I.R.S.
Ask if there's any evidence
of this sort of attack is being used in
the wild now?
I'm not sure.
I don't know.
Maybe in another Snowden.
We have a question from the microphone
in the rear over here.
Yeah. Did you see any changes in, for
example, Logitech boundaries scan or
where such things are not available?
The processor did I see
tech boundary scan. So basically checking
the status of all the pins around the
chip?
No, there is nothing.
But we actually doing that now as a
defense matter, a student and
the WHO is doing right now
this kind of stuff.
But, uh, no, we don't see such
a thing existing and currently
and systems or Artur's
or we need to ask
another question from the microphone in
the front.
I when I called my p.l.c.,
is it viable to check
Deol mode or just ask myself,
so is this a viable defense for
AP? No, because that's not the only
the only way out.
So there are lots of ways the
attacker can at target the
are your configuration.
One of the things is that one
of the things you can do is that, for
example, check how, how, how, how
much or how often the configuration
of the pins are changing because in
actual physical prices in a p.l.c.
is not that much OK.
So if you have some kind of memory
foreigns you can start, which some
people, for example, Marziano here in our
toxifying.
So those kind of like
memory forensic projections you have,
you can actually spot that.
But what you spot is a pin configuration
attack. What what pin multiplexing
because pin multiplexing, you just change
a bit and that's it.
So it's just a zero to one,
OK, and then it's totally disconnected
and it's like very, very little thing you
can do actually to spot that.
So you have to have another defense for
PIN multiplexing.
And then what about, for example, if
that's accurate, for example, remapped,
are you so very you want to look now
because. Well, I can remapped
you again and then you have to hook the
functions which are, for example,
remapping your to to a spot
that future attacks that attack a
remapped or instead of having the ability
mapped IO. So there are lots of
more things, not just looking how
how much the configuration of the pins
change I don't think is enough.
And I think there must be some push
from there. So Sirena's for
having some interrupts, especially when
the are your fail and especially I see in
pin multiplexing is stuff because you
honestly I see it's very surprising that
the IO is not available and I think
it's not expensive for the chip vendors
to have at least a interop forefend
multiplexing because in the
pre multiplexing you physically
do not talk any more video,
but there is no feedback from
this or see you saying, hey, what you
requested to write to desire is
not available. And that's crazy,
I think.
Do we have any more questions?
There is a question coming up on the
front left microphone.
I'm wondering about that interrupt,
because how should the PIN function
controller know that if I switch
from KBIO to a squishy,
for example,
and that PIN remain silent because
there's no S.A.C. transaction going on,
how should the PIN function controller
decide if there's if it's the wrong
configuration or just a syllabus?
Yes, that's totally the
what should it feedback.
And who should be listening to that at
least can be, hey, the configuration
change now.
But there is no feedback even for that.
So like as we said before, there is two
problem in here.
First is that once the configuration
changes is nothing, there is nothing
that she tells you, hey, configuration
change.
OK, so that's one problem.
And second, is that OK, once the
configuration change and the operation
fail, there is no feedback telling you
that, hey, the operation failed.
OK, so at least
what they can do is that they can say
that the configuration changed, at least,
for example, the driver, or that the
software knows now that the configuration
is changed, which they don't.
Well, I wonder if you have root access,
you could probably made that
information obsolete anyhow.
Yeah.
Another question from the same microphone
and front, did you tried
using safety policies which
are for sealevel?
So I was required
to read back its value
on some point.
If it's, uh,
controlled Zarela, you have to feedbag
and p.l.c. know so
that through you might
have some penalties that they do that.
But it's still, for example,
for both pene multiplexing an
attack and pin configuration.
If that remapped are your what the
what the, for example, operator C
or the the X is a virtually
mapped IO.
So the second time actually doesn't fail
in writing to the visually mapped.
So it's it is successful.
Everything, the data in visual memory
is there.
OK, so once you check
it is true.
It is right. The values are right.
But what is happening is that in the
physical process, what the actual
value is there is not there because
in another register which the p.l.c.
such as sealevel sees that checking,
for example, we are checking
the configuration of Duilio.
They are checking actual value.
They return if we stay or not,
which is is there, but it's not
reflecting to the physical process.
That's why we call it in-memory illusion,
because what you see is not actually
is what is happening in the physical
world. OK, thank you.
We have another question from the I.R.S.
Why our signal angel?
But what we don't have
or do we, yeah,
maybe just
have an fun like phone and such,
but again.
Come again.
As you have to emulate a process, a
process of your.
APRC.
And that works only for a couple of
seconds. Is there any
way to
extrapolate right to the philosophy
program accelerator
program?
I don't get it.
I think he wants to know if you can dump
the actual penalty called running.
Yeah, you can.
But why would you do that?
And if you are Apte, I don't think it
makes sense. You are you're delivering
your final payload.
You don't want to.
If you're exfiltrate some data for us
as a recon, then yeah, you can do that.
And I don't think it's impossible,
especially with the recent trend that you
have in the places.
I think this year I think there was like
four or five in different places.
And yeah, then it's totally
possible to do that silently.
I think we're out of time.
Thank you very much, Ali Abassi Muthee.