SlideShare a Scribd company logo
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
Jason Larsen 
Class 2014 
“Why, sometimes I've believed as many as six 
impossible things before breakfast.” 
― Lewis Carroll, Alice in Wonderland
Who I am? 
 Jason Larsen – Principal Security Consultant at 
IOActive 
 Cyber-security researcher specializing in critical 
infrastructures 
 Lately I’ve been studying remote physical 
damage 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Attacks on Cyber-Physical Systems 
• We’ve been talking about attack on the critical 
infrastructure for a while 
• Most of what demonstration and almost all of the 
real-world attacks invade the IT systems use to 
control the process 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Eleven years ago 
(and yes, it was lame even then) 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
VIDEO COMES HERE 
Doing something like this can usually be done from the IT gear 
(Needed to force some points in a PLC)
Seven years ago 
(Still pretty lame) 
Doing something like this can’t be done from IT gear 
(Requires subsecond timing and overriding sanity check directly) 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Could you hide… 
an entire attack in a pressure meter? 
 Small microcontroller 
o Kilobytes of memory (total) 
o Very little CPU power 
o Kilobytes of flash (total) 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
When you tear apart a sensor, you’ll see something like this. 
Notice there aren’t any big external flash or memory chips. 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
The TODO List 
• OK. It’s small but what functionality do we 
really need to put in there? 
– Spoofing 
– Process State Detection 
– Process Manipulation Logic 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
Water Flow 
Shock Wave 
Valve Physical 
Movement 
Reflected Shock Wave 
Valve Closes Shockwave 
Reflected Wave 
The scenario
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
t = L / A 
* * 
+ 
Ewater Tpipe Epipe 
Tpipe Epipe Dpipe Ewater 
E 
* * 
= 
2X +Y 
*Fluid Dynamics. Professional Publications Inc. 
The scenario 
 The shockwave travels at the 
speed of sound in water 
 Or, if pipe is elastic 
 The optimal interval to cycle the 
valve 
o X is the time between valve closing 
o Y is the time between the pressure 
wave and the reflected wave
Spoofing sensor noise 
(This isn’t going to fool anyone) 
Anyone looking at this will think “dead sensor” 
The forensics team will zoom on this immediately 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Sensor noise 
 Humans are really good at spotting differences in 
“randomness” 
 Even on graphical displays, operators get used to 
the “jiggle” in the visualization 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Scaling and shifting 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
Scaling can increase 
magnitude of the noise 
These are solvable problems but they grow bigger as you try 
to get it right 
Shifting requires an averaging 
function to eliminate stair steps 
during adjustments
Sensor noise: A random walk 
 Just adding randomness 
o It’s easy for a human to spot where the spoof starts 
o This doesn’t preserve the “spikiness”, “width”, and 
“gaps” of the original 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Total Flash 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
Your Favorite FFT Library 
Sensor noise 
 If you’re a math major, you’re probably shouting 
“Yeah! FFT!”
Runs analysis 
 Most of these techniques require that the attacker 
have access to previously recorded data to get the 
algorithm right 
o What if we don’t get to see the sensor noise 
before we start 
 Runs analysis can spoof the sensor noise with no 
pre-knowledge of the data 
 Sensor noise can be treated as a random walk 
 Random walks can be characterized through an 
analysis of the length and frequency of runs 
 What if we want to go down into the sensors? 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Runs analysis 
 During the learning phase, count the runs 
390.3 
390.4 
390.6 
390.3 
390.5 
390.9 
391.1 
391.2 
390.9 
390.9 
390.8 
+3 increasing (moved 0.3) 
-1 decreasing (moved -0.3) 
+3 increasing (moved 0.6) 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
As expected this gives a nice 
normal distribution 
-1 decreasing (moved -0.8)
+5 -1 +4 Chaining line 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
segments together 
reproduces the noise 
Runs analysis 
 Taking the average movement of a runs bucket 
turns into a slope and a length
Runs analysis 
 The playback algorithm is really simple 
o Add up all the positive/negative buckets 
o Choose a random number 0xsum(buckets) 
o Move by average bucket value for bucket 
samples 
o If desired is above current, choose from positive 
buckets otherwise choose from negative 
buckets 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Runs analysis 
 We get nice, believable sensor noise with 
no prior knowledge of the system 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Spoofing Disturbances 
 Even with the noise floor simulated, process data 
isn’t a flat line 
 We need to transfer the disturbances from the 
real signal to the spoofed signal 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Spoofing Disturbances 
We need to transfer 
this artifact 
But not this trend 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
The Wrong Way 
Moving averages 
 Everyone starts with a moving average to smooth 
out the noise 
 Even simple algorithms can be large when the 
size of the data taken into account 
 Let’s take a look at quickly to understand why 
these types of algorithms don’t work 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Moving average 2 point 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
Where is the peak? 
Will this detect 50 peaks? 
4 Bytes to store the data
Moving average 50 point 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
These will still get 
in the way 
200 Bytes to store the data
Moving average 50 point 
Fitting curves to the data 
Looking good, 
but at what cost? 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
800 Bytes to store the data 
Peaks are detected 100 samples late
Beyond moving averages 
Fitting curves to the data 
 A moving average is an example of a scale-dependent 
algorithm 
 How many points should be applied to smooth out 
the curve? 
o It’s not possible to know without an example of the data 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Beyond moving averages 
Forget sine waves. Your trig 
library isn’t going to fit either 
Don’t forget all those 
nasty sensor glitches 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Triangles 
 Triangles are a good-enough approximation of the 
process data 
 We just need a very small algorithm to fit triangles 
onto the process data 
 How big is the optimal triangle? 
o The largest features are the ones you care about 
o We need an algorithm that will produce triangles that is 
scale independent 
o The triangles should all cover similar area 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Triangles 
Think of the process data as a set 
of triangles. Triangles are cheap 
and easy 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Triangles 
 We can make some assumptions about the data 
o The process is not running out of control therefore, it 
will oscillate as the feedback mechanisms control the 
process 
o Artifacts smaller than the noise are too small to affect 
the process 
o There isn’t significant hysteresis in the system 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
1. Declare a vertex at the first value 
2. Choose an arbitrary starting window n. Calculate or estimate a smoothing 
factor s=log(n). 
3. Note the minimum and the maximum values in the window. 
4. Draw a triangle from the origin through the minimum and maximum values 
and ending in a vertical line at n. 
5. Declare a vertex at the midpoint of the vertical line at n. 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
(Still tweaking this one) 
Triangles: A sample algorithm 
6. Start drawing a second triangle from the vertex using the slopes of the 
previous triangle. 
7. Count y,z samples that are above/below the triangle. 
8. When y or z  s, declare a vertex at the midpoint of the vertical line 
through the current sample 
9. If yz, increase the slope of the top and decrease the slope of the bottom 
line otherwise do the opposite 
10. If the number of samples between the current sample and the last vertex 
 4n. then increase n 
11. If at any time there has been no vertex in 4n samples, declare a vertex at 
the midpoint of the line through the current sample and decrease n. 
12.Go to step 6
Triangles 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
Triangles!
Triangles 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Spoofing Disturbances 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Artifact extraction 
 We need to spot the pressure wave and the 
reflected wave. 
 We can extract the state of the process using the 
triangles 
 This saves CPU time because we’re only running 
this logic when we declare a new vertex 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Artifact extraction 
Something has happened: 
o Slopes changed 
o Lengths changed 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Artifact extraction 
 For our attack model we only need two Values 
o When did the pressure wave hit? 
o When did the reflected wave hit? 2X +Y 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Artifact extraction 
 Lots of code needed to deal with scaling 
o MM-HG, CM-H2O, Pascals 
o More than the rest of the code combined 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
20 
10 
0 
-10 
-20 
-30 
-40 
-50 
-60 
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 1,1 1,2 1,3 1,4 1,5 1,6 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
Modeling says it 
should look like this 
It actually looks like this 
 We need to cycle the valve at: 
X = (0.55-0.4) 
Y = (0.65-0.55) 
2X+Y = 0.4 seconds 
Scale free description
20 
10 
0 
-10 
-20 
-30 
-40 
-50 
-60 
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 1,1 1,2 1,3 1,4 1,5 1,6 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
Triangle strips 
Ratio of areas between adjacent triangles 
(I could have also used ratios of the angles) 
Scale Free Description- 
Ratio of areas of adjacent 
triangles 
------------------------------ 
1.0 : 0.86 : 0.61 
Line segments
Inserting the Code into the 
Firmware 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Inserting the rootkit into the firmware 
 I still need to make my payload smaller 
o To make is smaller, I need to reuse the existing code 
 Debugging 
o If I’m reusing existing code, how do I debug it? 
o What if the existing code has side effects? 
 Portability 
o I don’t want to recode my rootkit for every single sensor I want 
to invade 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Inserting the rootkit into the firmware 
• Most of the work of a biological virus is done by existing cell mechanisms 
• We can do the same with firmware 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Example code 
int CalcSomething(int x){ 
int total = 0; 
int i; 
for (i=0;ix;i++){ 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
total=total+i; 
} 
return total; 
}
MSP430 Assembly 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
ARM Assembly 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
VS. 
Are they different? 
 We can’t directly compare the two assemblies
STR R11, [SP,#-4+var_s0]! 
ADD R11, SP, #0 
SUB SP, SP, #0x14 
STR R0, [R11,#var_10] 
MOV R3, #0 
STR R3, [R11,#var_8] 
MOV R3, #0 
STR R3, [R11,#var_C] 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
Preamble 
Stack allocation 
Argument linking 
Local variable 
initialization 
Actual logic 
Argument linking 
Postamble 
B loc_40 
LDR R2, [R11,#var_8] 
LDR R3, [R11,#var_C] 
ADD R3, R2, R3 
STR R3, [R11,#var_8] 
LDR R3, [R11,#var_C] 
ADD R3, R3, #1 
STR R3, [R11,#var_C] 
LDR R2, [R11,#var_C] 
LDR R3, [R11,#var_10] 
CMP R2, R3 
LDR R3, [R11,#var_8] 
MOV R0, R3 
SUB SP, R11, #0 
LDR R11, [SP+var_s0],#4 
BX LR 
push.w R4 
mov.w SP, R4 
incd.w R4 
add.w #0FFFAh, SP 
mov.w R15, 0FFFCh(R4) 
clr.w 0FFF8h(R4) 
clr.w 0FFFAh(R4) 
jmp loc_22 
add.w 0FFFAh(R4),0FFF8h(R4) 
inc.w 0FFFAh(R4) 
cmp.w 0FFFCh(R4),0FFFAh(R4) 
jl loc_18 
mov.w 0FFF8h(R4), R15 
add.w #6, SP 
pop R4 
ret
Transforms 
 MicroOps 
 Binary Normal Form 
 Infinite Register File 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
ESP:=ESP-4 
[ESP]:=EAX 
PUSH EAX
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
TMP1:=0 
[R4+8]:=TMP1 
[R4+10]:=TMP1 
PC:=loc_22 
TMP1:=[R4+8] 
TMP2:=[R4+10] 
TMP3:=TMP1+TMP2 
[R4+8]:=TMP3 
TMP1:=[R4+10] 
TMP1:=TMP1+1 
[R4+10]:=TMP1 
TMP1:=[R4+8] 
TMP2:=[R4+10] 
IF TMP1TMP2 THEN PC:=loc_18 
R3:=0 
[R11+8]:=R3 
[R11+C]:=R3 
PC:=loc_40 
R3:=[R11+8] 
R2:=[R11+C] 
R3:=R2+R3 
[R11+8:]:=R3 
R3:=[R11+C] 
R3:=R3+1 
[R11+C]:=R3 
R2:=[R11+C] 
R3:=[R11+10] 
IF R2R3 THEN PC:=loc_24 
It’s not an exact 
match. They use 
different registers 
and different 
stack offsets. 
Compilers may 
have ordered 
things differently 
Excellent! They kinda match!! 
Transforms
Modified code 
int CalcSomething(int x){ 
int total = 0; 
int i; 
for (i=0;ix;i++){ 
total=total+i; 
} 
return total; 
} 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
int EvilSomething(int x){ 
int total = 0; 
int i; 
for (i=0;ix;i++){ 
total=total+i+4; 
} 
return total; 
} 
What if I made some changes?
Edit distance 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
S1:=0 
S2:=0 
PC:=PC+3 
S3:=S2+4 
S1:=S1+S3 
S2:=S2+1 
IF S2ARG1 THEN PC:=PC-3 
S1:=0 
S2:=0 
PC:=PC+2 
S1:=S1+S2 
S2:=S2+1 
IF S2 ARG1 THEN PC:=PC-2 
 How close are these two functions? 
 One way to measure that is the edit distance 
o How many IF statements would it take to 
make them the same?
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
S1:=0 
S2:=0 
PC:=PC+3 
S3:=S2+4 
S1:=S1+S3 
S2:=S2+1 
IF S2ARG1 THEN PC:=PC-3 
S1:=0 
S2:=0 
PC:=loc_40 
S1:=S1+S2 
S2:=S2+1 
IF S2ARG1 THEN PC:=loc_24 
S1:=0 
S2:=0 
PC:=PC+6 
IF ARG2 THEN 
S1:=S1+S2 
ELSE 
S3:=S2+4 
S1:=S1+S3 
S2:=S2+1 
IF S2ARG1 THEN PC:=PC-6 
These two functions 
differ with an edit 
distance of 1 
Edit distance
Edit distance 
 That was a trivial example 
 How can we find the edit distance between two peaces 
of code in a more generic way? 
 We can steal from the biologists and use protein 
matching algorithms 
o Needleman-Wunsch can used to find the edit 
distance between two strings 
 We can adapt that for our uses 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Needleman Wunsch 
Inserting Code is Fun 
Inserting Rootkits is Fun 
Inserting _Co___de is Fun 
Inserting Rootkits is Fun 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Needleman Wunsch 
Inserting Code is Fun 
Inserting Rootkits is Fun 
Inserting _Co___de is Fun 
Inserting Rootkits is Fun 
The strings have an edit distance of 2 
18 Characters the same - 10 characters different 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Edit distances between functions 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
S1:=0 
S2:=0 
PC:=PC+3 
S3:=S2+4 
S1:=S1+S3 
S2:=S2+1 
IF S2ARG1 THEN PC:=PC-3 
S1:=0 
S2:=0 
PC:=PC+2 
S1:=S1+S2 
S2:=S2+1 
IF S2ARG1 THEN PC:=PC-2 
 What if we turned these MicroOps into letters? 
 We could calculated the edit distance between 
any two functions 
 It would even tell us where to put the IF 
statements
distances between functions 
0 MS0 
S2:=0 MS0 
PC:=PC+3 MR+ 
S3:=S2+4 AS4 
S1:=S1+S3 ASS 
S2:=S2+1 AS1 
IF S2ARG1 THEN PC:=PC-3 CLTSAMR-S1:= 
0 MS0 
S2:=0 MS0 
PC:=PC+2 MR+ 
S1:=S1+S2 ASS 
S2:=S2+1 AS1 
IF S2ARG1 THEN PC:=PC-2 ICLTSAMR-MS0MS0MR+___ 
MS0MS0MR+ASSAS1ICLTSARM-MS0MS0MR+ 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
AS4ASSAS1ICLTSARM-S1:= 
ASSAS1ICLTSARM-MS0MS0MR+ 
AS4ASSAS1ICLTSARM-Edit
Edit distances between functions 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
S1:=0 MS0 
S2:=0 MS0 
PC:=loc_40 MR+2 
S3:=S2+4 AS4 
S1:=S1+S3 ASS 
S2:=S2+1 AS1 
IF S2ARG1 THEN PC:=loc_24 ICLTSAMR-2 
S1:=0 MS0 
S2:=0 MS0 
PC:=loc_40 MR+2 
S1:=S1+S2 ASS 
S2:=S2+1 AS1 
IF S2ARG1 THEN PC:=loc_24 CLTSAMR-2 
MS0MS0MR+2___ASSAS1ICLTSARM-2 
MS0MS0MR+2AS4ASSAS1ICLTSARM-2 
 The strings shows where to add the IF 
statements to make the functions the same
MS0MS0MR+2___ASSAS1ICLTSARM-2 
MS0MS0MR+2AS4ASSAS1ICLTSARM-2 
S1:=0 
S2:=0 
PC:=loc_40 
IF ARG2 THEN 
S1:=S1+S2 
ELSE 
S3:=S2+4 
S1:=S1+S3 
S2:=S2+1 
IF S2ARG1 THEN PC:=loc_24 
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
If we know how costly an IF 
statement is in the target 
architecture, we can figure 
out if merging these two 
function will save space in 
the final firmware 
Edit distances
Matching call trees 
 Now that we can match two functions, why not 
something bigger? 
 We can take each of our leaf functions and see if 
the parents of that leaf function also match 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
IOActive, Inc. Copyright ©2014. All Rights Reserved. 
0 
3 
1 
1 1 
2 
0 
1 
1 
3 
2 
1 
Distance: 8 
Matching call trees 
 After matching, it is now possible to calculate 
the edit distance of an entire subsystem
Finally!! 
Inserting the rootkit into the firmware! 
 For each function in the rootkit, I have found a best 
match function in the target firmware 
o If mine has a CRC-16 and the target has a CRC-16, they will 
have a small edit distance and get merged together 
o Any orphans that simply don’t match will need to be 
uint16_t crc16_update(uint16_t crc, uint8_t a){ 
int i; 
crc ^= a; 
for (i = 0; i  8; ++i){ 
if (crc  1) 
crc = (crc  1) ^ 0xA001; 
else 
crc = (crc  1); 
} 
return crc; 
} 
added to the end 
 I can even merge two functions in the 
target together to gain even more space 
 Now simply reverse the process from 
BNF back to the target assembly 
 Instant firmware rootkit!
Random code from the Internet 
 Nobody would ever just 
copy code from the 
Internet, would they? 
 Since we can compare 
code, we can search to 
see if this code is in that 
firmware 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Future: Metasploit for firmware 
 There are common pieces of software used 
throughout industrial control systems 
o i.e. SquareD DNP stack 
 As long as our rootkit only needs functionality 
from the common piece of code, the merge will 
be self-contained 
o It can be inserted automatically without a human 
o No need to understand the CPU 
o No need to deal with the version differences 
IOActive, Inc. Copyright ©2014. All Rights Reserved.
Questions 
 Jason Larsen 
 IOActive 
IOActive, Inc. Copyright ©2014. All Rights Reserved.

More Related Content

Similar to [CLASS 2014] Palestra Técnica - Jason Larsen

How NOT to Measure Latency, Gil Tene, London, Oct. 2013
How NOT to Measure Latency, Gil Tene, London, Oct. 2013How NOT to Measure Latency, Gil Tene, London, Oct. 2013
How NOT to Measure Latency, Gil Tene, London, Oct. 2013
Azul Systems Inc.
 
Artificial Neural Network Tutorial | Deep Learning With Neural Networks | Edu...
Artificial Neural Network Tutorial | Deep Learning With Neural Networks | Edu...Artificial Neural Network Tutorial | Deep Learning With Neural Networks | Edu...
Artificial Neural Network Tutorial | Deep Learning With Neural Networks | Edu...
Edureka!
 
Unum Computing: An Energy Efficient and Massively Parallel Approach to Valid ...
Unum Computing: An Energy Efficient and Massively Parallel Approach to Valid ...Unum Computing: An Energy Efficient and Massively Parallel Approach to Valid ...
Unum Computing: An Energy Efficient and Massively Parallel Approach to Valid ...
inside-BigData.com
 
Automated Analysis of Behavioral Data – Examples from Fear Conditioning Studies
Automated Analysis of Behavioral Data – Examples from Fear Conditioning StudiesAutomated Analysis of Behavioral Data – Examples from Fear Conditioning Studies
Automated Analysis of Behavioral Data – Examples from Fear Conditioning Studies
InsideScientific
 
Making is fun!
Making is fun!Making is fun!
Making is fun!
Design Tree
 
The math behind big systems analysis.
The math behind big systems analysis.The math behind big systems analysis.
The math behind big systems analysis.
Theo Schlossnagle
 
Need for Async: Hot pursuit for scalable applications
Need for Async: Hot pursuit for scalable applicationsNeed for Async: Hot pursuit for scalable applications
Need for Async: Hot pursuit for scalable applications
Konrad Malawski
 
Prestentation
PrestentationPrestentation
Prestentation
Saurabh Nair
 
SensorThings API Webinar - #2 of 4 - IoT Data Modeling with Open Standards
SensorThings API Webinar - #2 of 4 - IoT Data Modeling with Open StandardsSensorThings API Webinar - #2 of 4 - IoT Data Modeling with Open Standards
SensorThings API Webinar - #2 of 4 - IoT Data Modeling with Open Standards
SensorUp
 
Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE
Rundeck
 
Is this normal?
Is this normal?Is this normal?
Is this normal?
Theo Schlossnagle
 
BDW16 London - Chris von Csefalvay, Helioserv - Cats and What They Tell us Ab...
BDW16 London - Chris von Csefalvay, Helioserv - Cats and What They Tell us Ab...BDW16 London - Chris von Csefalvay, Helioserv - Cats and What They Tell us Ab...
BDW16 London - Chris von Csefalvay, Helioserv - Cats and What They Tell us Ab...
Big Data Week
 
Sense Your Smart City: Connect Environmental Sensors to SensorThings API
Sense Your Smart City: Connect Environmental Sensors to SensorThings APISense Your Smart City: Connect Environmental Sensors to SensorThings API
Sense Your Smart City: Connect Environmental Sensors to SensorThings API
SensorUp
 
Everybody Lies
Everybody LiesEverybody Lies
Everybody Lies
Tomasz Kowalczewski
 
Observability: Beyond the Three Pillars with Spring
Observability: Beyond the Three Pillars with SpringObservability: Beyond the Three Pillars with Spring
Observability: Beyond the Three Pillars with Spring
VMware Tanzu
 
Heart beat detector using arduino
Heart beat detector using arduinoHeart beat detector using arduino
Heart beat detector using arduino
Varshaa Khandagale
 
The "Ops" Side of DevSecOps
The "Ops" Side of DevSecOps The "Ops" Side of DevSecOps
The "Ops" Side of DevSecOps
Rundeck
 
Periplaneta Americana Experiment
Periplaneta Americana ExperimentPeriplaneta Americana Experiment
Periplaneta Americana Experiment
Julie Brown
 
Brain Waves Surfing - (In)security in EEG (Electroencephalography) Technologies
Brain Waves Surfing - (In)security in EEG (Electroencephalography) TechnologiesBrain Waves Surfing - (In)security in EEG (Electroencephalography) Technologies
Brain Waves Surfing - (In)security in EEG (Electroencephalography) Technologies
Alejandro Hernández
 
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
Yuji Kubota
 

Similar to [CLASS 2014] Palestra Técnica - Jason Larsen (20)

How NOT to Measure Latency, Gil Tene, London, Oct. 2013
How NOT to Measure Latency, Gil Tene, London, Oct. 2013How NOT to Measure Latency, Gil Tene, London, Oct. 2013
How NOT to Measure Latency, Gil Tene, London, Oct. 2013
 
Artificial Neural Network Tutorial | Deep Learning With Neural Networks | Edu...
Artificial Neural Network Tutorial | Deep Learning With Neural Networks | Edu...Artificial Neural Network Tutorial | Deep Learning With Neural Networks | Edu...
Artificial Neural Network Tutorial | Deep Learning With Neural Networks | Edu...
 
Unum Computing: An Energy Efficient and Massively Parallel Approach to Valid ...
Unum Computing: An Energy Efficient and Massively Parallel Approach to Valid ...Unum Computing: An Energy Efficient and Massively Parallel Approach to Valid ...
Unum Computing: An Energy Efficient and Massively Parallel Approach to Valid ...
 
Automated Analysis of Behavioral Data – Examples from Fear Conditioning Studies
Automated Analysis of Behavioral Data – Examples from Fear Conditioning StudiesAutomated Analysis of Behavioral Data – Examples from Fear Conditioning Studies
Automated Analysis of Behavioral Data – Examples from Fear Conditioning Studies
 
Making is fun!
Making is fun!Making is fun!
Making is fun!
 
The math behind big systems analysis.
The math behind big systems analysis.The math behind big systems analysis.
The math behind big systems analysis.
 
Need for Async: Hot pursuit for scalable applications
Need for Async: Hot pursuit for scalable applicationsNeed for Async: Hot pursuit for scalable applications
Need for Async: Hot pursuit for scalable applications
 
Prestentation
PrestentationPrestentation
Prestentation
 
SensorThings API Webinar - #2 of 4 - IoT Data Modeling with Open Standards
SensorThings API Webinar - #2 of 4 - IoT Data Modeling with Open StandardsSensorThings API Webinar - #2 of 4 - IoT Data Modeling with Open Standards
SensorThings API Webinar - #2 of 4 - IoT Data Modeling with Open Standards
 
Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE Incident Management in the Age of DevOps and SRE
Incident Management in the Age of DevOps and SRE
 
Is this normal?
Is this normal?Is this normal?
Is this normal?
 
BDW16 London - Chris von Csefalvay, Helioserv - Cats and What They Tell us Ab...
BDW16 London - Chris von Csefalvay, Helioserv - Cats and What They Tell us Ab...BDW16 London - Chris von Csefalvay, Helioserv - Cats and What They Tell us Ab...
BDW16 London - Chris von Csefalvay, Helioserv - Cats and What They Tell us Ab...
 
Sense Your Smart City: Connect Environmental Sensors to SensorThings API
Sense Your Smart City: Connect Environmental Sensors to SensorThings APISense Your Smart City: Connect Environmental Sensors to SensorThings API
Sense Your Smart City: Connect Environmental Sensors to SensorThings API
 
Everybody Lies
Everybody LiesEverybody Lies
Everybody Lies
 
Observability: Beyond the Three Pillars with Spring
Observability: Beyond the Three Pillars with SpringObservability: Beyond the Three Pillars with Spring
Observability: Beyond the Three Pillars with Spring
 
Heart beat detector using arduino
Heart beat detector using arduinoHeart beat detector using arduino
Heart beat detector using arduino
 
The "Ops" Side of DevSecOps
The "Ops" Side of DevSecOps The "Ops" Side of DevSecOps
The "Ops" Side of DevSecOps
 
Periplaneta Americana Experiment
Periplaneta Americana ExperimentPeriplaneta Americana Experiment
Periplaneta Americana Experiment
 
Brain Waves Surfing - (In)security in EEG (Electroencephalography) Technologies
Brain Waves Surfing - (In)security in EEG (Electroencephalography) TechnologiesBrain Waves Surfing - (In)security in EEG (Electroencephalography) Technologies
Brain Waves Surfing - (In)security in EEG (Electroencephalography) Technologies
 
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
 

More from TI Safe

CLASS 2022 - Luiz Fernando Roth e Matheus Tourinho - Ataques Cibernéticos a A...
CLASS 2022 - Luiz Fernando Roth e Matheus Tourinho - Ataques Cibernéticos a A...CLASS 2022 - Luiz Fernando Roth e Matheus Tourinho - Ataques Cibernéticos a A...
CLASS 2022 - Luiz Fernando Roth e Matheus Tourinho - Ataques Cibernéticos a A...
TI Safe
 
CLASS 2022 - Júlio Omori (COPEL) e Tânia Marques (consultora independente) - ...
CLASS 2022 - Júlio Omori (COPEL) e Tânia Marques (consultora independente) - ...CLASS 2022 - Júlio Omori (COPEL) e Tânia Marques (consultora independente) - ...
CLASS 2022 - Júlio Omori (COPEL) e Tânia Marques (consultora independente) - ...
TI Safe
 
CLASS 2022 - Rodrigo Riella (Lactec) e Claudio Hermeling (TI Safe) - A impor...
 CLASS 2022 - Rodrigo Riella (Lactec) e Claudio Hermeling (TI Safe) - A impor... CLASS 2022 - Rodrigo Riella (Lactec) e Claudio Hermeling (TI Safe) - A impor...
CLASS 2022 - Rodrigo Riella (Lactec) e Claudio Hermeling (TI Safe) - A impor...
TI Safe
 
CLASS 2022 - Thiago Branquinho (TI Safe) - Como implementar e certificar um S...
CLASS 2022 - Thiago Branquinho (TI Safe) - Como implementar e certificar um S...CLASS 2022 - Thiago Branquinho (TI Safe) - Como implementar e certificar um S...
CLASS 2022 - Thiago Branquinho (TI Safe) - Como implementar e certificar um S...
TI Safe
 
CLASS 2022 - Sergio Sevileanu (Siemens) e Felipe Coelho (Claroty) - Habilitan...
CLASS 2022 - Sergio Sevileanu (Siemens) e Felipe Coelho (Claroty) - Habilitan...CLASS 2022 - Sergio Sevileanu (Siemens) e Felipe Coelho (Claroty) - Habilitan...
CLASS 2022 - Sergio Sevileanu (Siemens) e Felipe Coelho (Claroty) - Habilitan...
TI Safe
 
CLASS 2022 - Eduardo Valério (Ternium) - Uma década de cibersegurança em OT, ...
CLASS 2022 - Eduardo Valério (Ternium) - Uma década de cibersegurança em OT, ...CLASS 2022 - Eduardo Valério (Ternium) - Uma década de cibersegurança em OT, ...
CLASS 2022 - Eduardo Valério (Ternium) - Uma década de cibersegurança em OT, ...
TI Safe
 
CLASS 2022 - Felipe Jordão (Palo Alto Networks) - Boas práticas de operações ...
CLASS 2022 - Felipe Jordão (Palo Alto Networks) - Boas práticas de operações ...CLASS 2022 - Felipe Jordão (Palo Alto Networks) - Boas práticas de operações ...
CLASS 2022 - Felipe Jordão (Palo Alto Networks) - Boas práticas de operações ...
TI Safe
 
CLASS 2022 - Abilio Franco e Bryan Rivera (Thales) - Privacidade de dados e c...
CLASS 2022 - Abilio Franco e Bryan Rivera (Thales) - Privacidade de dados e c...CLASS 2022 - Abilio Franco e Bryan Rivera (Thales) - Privacidade de dados e c...
CLASS 2022 - Abilio Franco e Bryan Rivera (Thales) - Privacidade de dados e c...
TI Safe
 
CLASS 2022 - Roberto Engler Jr. (IBM) - Gestão e monitoramento de alto nível ...
CLASS 2022 - Roberto Engler Jr. (IBM) - Gestão e monitoramento de alto nível ...CLASS 2022 - Roberto Engler Jr. (IBM) - Gestão e monitoramento de alto nível ...
CLASS 2022 - Roberto Engler Jr. (IBM) - Gestão e monitoramento de alto nível ...
TI Safe
 
CLASS 2022 - Maiko Oliveira (Microsoft) - Convergência TO E TI, proteção tota...
CLASS 2022 - Maiko Oliveira (Microsoft) - Convergência TO E TI, proteção tota...CLASS 2022 - Maiko Oliveira (Microsoft) - Convergência TO E TI, proteção tota...
CLASS 2022 - Maiko Oliveira (Microsoft) - Convergência TO E TI, proteção tota...
TI Safe
 
Vitor Sena e Daniel Quintão (Gerdau) - Projeto, implantação, gestão e monitor...
Vitor Sena e Daniel Quintão (Gerdau) - Projeto, implantação, gestão e monitor...Vitor Sena e Daniel Quintão (Gerdau) - Projeto, implantação, gestão e monitor...
Vitor Sena e Daniel Quintão (Gerdau) - Projeto, implantação, gestão e monitor...
TI Safe
 
CLASS 2022 - Marty Edwards (Tenable) - O perigo crescente de ransomware crimi...
CLASS 2022 - Marty Edwards (Tenable) - O perigo crescente de ransomware crimi...CLASS 2022 - Marty Edwards (Tenable) - O perigo crescente de ransomware crimi...
CLASS 2022 - Marty Edwards (Tenable) - O perigo crescente de ransomware crimi...
TI Safe
 
CLASS 2022 - Júlio Cezar de Oliveira (Hitachi Energy) - Cibersegurança na era...
CLASS 2022 - Júlio Cezar de Oliveira (Hitachi Energy) - Cibersegurança na era...CLASS 2022 - Júlio Cezar de Oliveira (Hitachi Energy) - Cibersegurança na era...
CLASS 2022 - Júlio Cezar de Oliveira (Hitachi Energy) - Cibersegurança na era...
TI Safe
 
CLASS 2022 - Denis Sousa, Abner Bueno e Eduardo Pontes (Norte Energia) - Anál...
CLASS 2022 - Denis Sousa, Abner Bueno e Eduardo Pontes (Norte Energia) - Anál...CLASS 2022 - Denis Sousa, Abner Bueno e Eduardo Pontes (Norte Energia) - Anál...
CLASS 2022 - Denis Sousa, Abner Bueno e Eduardo Pontes (Norte Energia) - Anál...
TI Safe
 
CLASS 2022 - Nycholas Szucko (Nozomi Networks) - Antifragilidade Cibernética ...
CLASS 2022 - Nycholas Szucko (Nozomi Networks) - Antifragilidade Cibernética ...CLASS 2022 - Nycholas Szucko (Nozomi Networks) - Antifragilidade Cibernética ...
CLASS 2022 - Nycholas Szucko (Nozomi Networks) - Antifragilidade Cibernética ...
TI Safe
 
CLASS 2022 - Gustavo Merighi (Energisa) e Alessandro Moretti (Thales) - O Des...
CLASS 2022 - Gustavo Merighi (Energisa) e Alessandro Moretti (Thales) - O Des...CLASS 2022 - Gustavo Merighi (Energisa) e Alessandro Moretti (Thales) - O Des...
CLASS 2022 - Gustavo Merighi (Energisa) e Alessandro Moretti (Thales) - O Des...
TI Safe
 
CLASS 2022 - Marcelo Branquinho (TI Safe) - Ameaças Modernas e Ataques às red...
CLASS 2022 - Marcelo Branquinho (TI Safe) - Ameaças Modernas e Ataques às red...CLASS 2022 - Marcelo Branquinho (TI Safe) - Ameaças Modernas e Ataques às red...
CLASS 2022 - Marcelo Branquinho (TI Safe) - Ameaças Modernas e Ataques às red...
TI Safe
 
Webinar cci por que nao se deve contratar so cs de ti hibridos para proteg...
Webinar cci    por que nao se deve contratar so cs de ti hibridos para proteg...Webinar cci    por que nao se deve contratar so cs de ti hibridos para proteg...
Webinar cci por que nao se deve contratar so cs de ti hibridos para proteg...
TI Safe
 
Retrospectiva
RetrospectivaRetrospectiva
Retrospectiva
TI Safe
 
Pacote TI Safe ONS Ready v1
Pacote TI Safe ONS Ready v1Pacote TI Safe ONS Ready v1
Pacote TI Safe ONS Ready v1
TI Safe
 

More from TI Safe (20)

CLASS 2022 - Luiz Fernando Roth e Matheus Tourinho - Ataques Cibernéticos a A...
CLASS 2022 - Luiz Fernando Roth e Matheus Tourinho - Ataques Cibernéticos a A...CLASS 2022 - Luiz Fernando Roth e Matheus Tourinho - Ataques Cibernéticos a A...
CLASS 2022 - Luiz Fernando Roth e Matheus Tourinho - Ataques Cibernéticos a A...
 
CLASS 2022 - Júlio Omori (COPEL) e Tânia Marques (consultora independente) - ...
CLASS 2022 - Júlio Omori (COPEL) e Tânia Marques (consultora independente) - ...CLASS 2022 - Júlio Omori (COPEL) e Tânia Marques (consultora independente) - ...
CLASS 2022 - Júlio Omori (COPEL) e Tânia Marques (consultora independente) - ...
 
CLASS 2022 - Rodrigo Riella (Lactec) e Claudio Hermeling (TI Safe) - A impor...
 CLASS 2022 - Rodrigo Riella (Lactec) e Claudio Hermeling (TI Safe) - A impor... CLASS 2022 - Rodrigo Riella (Lactec) e Claudio Hermeling (TI Safe) - A impor...
CLASS 2022 - Rodrigo Riella (Lactec) e Claudio Hermeling (TI Safe) - A impor...
 
CLASS 2022 - Thiago Branquinho (TI Safe) - Como implementar e certificar um S...
CLASS 2022 - Thiago Branquinho (TI Safe) - Como implementar e certificar um S...CLASS 2022 - Thiago Branquinho (TI Safe) - Como implementar e certificar um S...
CLASS 2022 - Thiago Branquinho (TI Safe) - Como implementar e certificar um S...
 
CLASS 2022 - Sergio Sevileanu (Siemens) e Felipe Coelho (Claroty) - Habilitan...
CLASS 2022 - Sergio Sevileanu (Siemens) e Felipe Coelho (Claroty) - Habilitan...CLASS 2022 - Sergio Sevileanu (Siemens) e Felipe Coelho (Claroty) - Habilitan...
CLASS 2022 - Sergio Sevileanu (Siemens) e Felipe Coelho (Claroty) - Habilitan...
 
CLASS 2022 - Eduardo Valério (Ternium) - Uma década de cibersegurança em OT, ...
CLASS 2022 - Eduardo Valério (Ternium) - Uma década de cibersegurança em OT, ...CLASS 2022 - Eduardo Valério (Ternium) - Uma década de cibersegurança em OT, ...
CLASS 2022 - Eduardo Valério (Ternium) - Uma década de cibersegurança em OT, ...
 
CLASS 2022 - Felipe Jordão (Palo Alto Networks) - Boas práticas de operações ...
CLASS 2022 - Felipe Jordão (Palo Alto Networks) - Boas práticas de operações ...CLASS 2022 - Felipe Jordão (Palo Alto Networks) - Boas práticas de operações ...
CLASS 2022 - Felipe Jordão (Palo Alto Networks) - Boas práticas de operações ...
 
CLASS 2022 - Abilio Franco e Bryan Rivera (Thales) - Privacidade de dados e c...
CLASS 2022 - Abilio Franco e Bryan Rivera (Thales) - Privacidade de dados e c...CLASS 2022 - Abilio Franco e Bryan Rivera (Thales) - Privacidade de dados e c...
CLASS 2022 - Abilio Franco e Bryan Rivera (Thales) - Privacidade de dados e c...
 
CLASS 2022 - Roberto Engler Jr. (IBM) - Gestão e monitoramento de alto nível ...
CLASS 2022 - Roberto Engler Jr. (IBM) - Gestão e monitoramento de alto nível ...CLASS 2022 - Roberto Engler Jr. (IBM) - Gestão e monitoramento de alto nível ...
CLASS 2022 - Roberto Engler Jr. (IBM) - Gestão e monitoramento de alto nível ...
 
CLASS 2022 - Maiko Oliveira (Microsoft) - Convergência TO E TI, proteção tota...
CLASS 2022 - Maiko Oliveira (Microsoft) - Convergência TO E TI, proteção tota...CLASS 2022 - Maiko Oliveira (Microsoft) - Convergência TO E TI, proteção tota...
CLASS 2022 - Maiko Oliveira (Microsoft) - Convergência TO E TI, proteção tota...
 
Vitor Sena e Daniel Quintão (Gerdau) - Projeto, implantação, gestão e monitor...
Vitor Sena e Daniel Quintão (Gerdau) - Projeto, implantação, gestão e monitor...Vitor Sena e Daniel Quintão (Gerdau) - Projeto, implantação, gestão e monitor...
Vitor Sena e Daniel Quintão (Gerdau) - Projeto, implantação, gestão e monitor...
 
CLASS 2022 - Marty Edwards (Tenable) - O perigo crescente de ransomware crimi...
CLASS 2022 - Marty Edwards (Tenable) - O perigo crescente de ransomware crimi...CLASS 2022 - Marty Edwards (Tenable) - O perigo crescente de ransomware crimi...
CLASS 2022 - Marty Edwards (Tenable) - O perigo crescente de ransomware crimi...
 
CLASS 2022 - Júlio Cezar de Oliveira (Hitachi Energy) - Cibersegurança na era...
CLASS 2022 - Júlio Cezar de Oliveira (Hitachi Energy) - Cibersegurança na era...CLASS 2022 - Júlio Cezar de Oliveira (Hitachi Energy) - Cibersegurança na era...
CLASS 2022 - Júlio Cezar de Oliveira (Hitachi Energy) - Cibersegurança na era...
 
CLASS 2022 - Denis Sousa, Abner Bueno e Eduardo Pontes (Norte Energia) - Anál...
CLASS 2022 - Denis Sousa, Abner Bueno e Eduardo Pontes (Norte Energia) - Anál...CLASS 2022 - Denis Sousa, Abner Bueno e Eduardo Pontes (Norte Energia) - Anál...
CLASS 2022 - Denis Sousa, Abner Bueno e Eduardo Pontes (Norte Energia) - Anál...
 
CLASS 2022 - Nycholas Szucko (Nozomi Networks) - Antifragilidade Cibernética ...
CLASS 2022 - Nycholas Szucko (Nozomi Networks) - Antifragilidade Cibernética ...CLASS 2022 - Nycholas Szucko (Nozomi Networks) - Antifragilidade Cibernética ...
CLASS 2022 - Nycholas Szucko (Nozomi Networks) - Antifragilidade Cibernética ...
 
CLASS 2022 - Gustavo Merighi (Energisa) e Alessandro Moretti (Thales) - O Des...
CLASS 2022 - Gustavo Merighi (Energisa) e Alessandro Moretti (Thales) - O Des...CLASS 2022 - Gustavo Merighi (Energisa) e Alessandro Moretti (Thales) - O Des...
CLASS 2022 - Gustavo Merighi (Energisa) e Alessandro Moretti (Thales) - O Des...
 
CLASS 2022 - Marcelo Branquinho (TI Safe) - Ameaças Modernas e Ataques às red...
CLASS 2022 - Marcelo Branquinho (TI Safe) - Ameaças Modernas e Ataques às red...CLASS 2022 - Marcelo Branquinho (TI Safe) - Ameaças Modernas e Ataques às red...
CLASS 2022 - Marcelo Branquinho (TI Safe) - Ameaças Modernas e Ataques às red...
 
Webinar cci por que nao se deve contratar so cs de ti hibridos para proteg...
Webinar cci    por que nao se deve contratar so cs de ti hibridos para proteg...Webinar cci    por que nao se deve contratar so cs de ti hibridos para proteg...
Webinar cci por que nao se deve contratar so cs de ti hibridos para proteg...
 
Retrospectiva
RetrospectivaRetrospectiva
Retrospectiva
 
Pacote TI Safe ONS Ready v1
Pacote TI Safe ONS Ready v1Pacote TI Safe ONS Ready v1
Pacote TI Safe ONS Ready v1
 

Recently uploaded

Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
LizaNolte
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
Fwdays
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
christinelarrosa
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
Vadym Kazulkin
 

Recently uploaded (20)

Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
 

[CLASS 2014] Palestra Técnica - Jason Larsen

  • 1. IOActive, Inc. Copyright ©2014. All Rights Reserved. Jason Larsen Class 2014 “Why, sometimes I've believed as many as six impossible things before breakfast.” ― Lewis Carroll, Alice in Wonderland
  • 2. Who I am? Jason Larsen – Principal Security Consultant at IOActive Cyber-security researcher specializing in critical infrastructures Lately I’ve been studying remote physical damage IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 3. Attacks on Cyber-Physical Systems • We’ve been talking about attack on the critical infrastructure for a while • Most of what demonstration and almost all of the real-world attacks invade the IT systems use to control the process IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 4. Eleven years ago (and yes, it was lame even then) IOActive, Inc. Copyright ©2014. All Rights Reserved. VIDEO COMES HERE Doing something like this can usually be done from the IT gear (Needed to force some points in a PLC)
  • 5. Seven years ago (Still pretty lame) Doing something like this can’t be done from IT gear (Requires subsecond timing and overriding sanity check directly) IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 6. Could you hide… an entire attack in a pressure meter? Small microcontroller o Kilobytes of memory (total) o Very little CPU power o Kilobytes of flash (total) IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 7. When you tear apart a sensor, you’ll see something like this. Notice there aren’t any big external flash or memory chips. IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 8. The TODO List • OK. It’s small but what functionality do we really need to put in there? – Spoofing – Process State Detection – Process Manipulation Logic IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 9. IOActive, Inc. Copyright ©2014. All Rights Reserved. Water Flow Shock Wave Valve Physical Movement Reflected Shock Wave Valve Closes Shockwave Reflected Wave The scenario
  • 10. IOActive, Inc. Copyright ©2014. All Rights Reserved. t = L / A * * + Ewater Tpipe Epipe Tpipe Epipe Dpipe Ewater E * * = 2X +Y *Fluid Dynamics. Professional Publications Inc. The scenario The shockwave travels at the speed of sound in water Or, if pipe is elastic The optimal interval to cycle the valve o X is the time between valve closing o Y is the time between the pressure wave and the reflected wave
  • 11. Spoofing sensor noise (This isn’t going to fool anyone) Anyone looking at this will think “dead sensor” The forensics team will zoom on this immediately IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 12. Sensor noise Humans are really good at spotting differences in “randomness” Even on graphical displays, operators get used to the “jiggle” in the visualization IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 13. Scaling and shifting IOActive, Inc. Copyright ©2014. All Rights Reserved. Scaling can increase magnitude of the noise These are solvable problems but they grow bigger as you try to get it right Shifting requires an averaging function to eliminate stair steps during adjustments
  • 14. Sensor noise: A random walk Just adding randomness o It’s easy for a human to spot where the spoof starts o This doesn’t preserve the “spikiness”, “width”, and “gaps” of the original IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 15. Total Flash IOActive, Inc. Copyright ©2014. All Rights Reserved. Your Favorite FFT Library Sensor noise If you’re a math major, you’re probably shouting “Yeah! FFT!”
  • 16. Runs analysis Most of these techniques require that the attacker have access to previously recorded data to get the algorithm right o What if we don’t get to see the sensor noise before we start Runs analysis can spoof the sensor noise with no pre-knowledge of the data Sensor noise can be treated as a random walk Random walks can be characterized through an analysis of the length and frequency of runs What if we want to go down into the sensors? IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 17. Runs analysis During the learning phase, count the runs 390.3 390.4 390.6 390.3 390.5 390.9 391.1 391.2 390.9 390.9 390.8 +3 increasing (moved 0.3) -1 decreasing (moved -0.3) +3 increasing (moved 0.6) IOActive, Inc. Copyright ©2014. All Rights Reserved. As expected this gives a nice normal distribution -1 decreasing (moved -0.8)
  • 18. +5 -1 +4 Chaining line IOActive, Inc. Copyright ©2014. All Rights Reserved. segments together reproduces the noise Runs analysis Taking the average movement of a runs bucket turns into a slope and a length
  • 19. Runs analysis The playback algorithm is really simple o Add up all the positive/negative buckets o Choose a random number 0xsum(buckets) o Move by average bucket value for bucket samples o If desired is above current, choose from positive buckets otherwise choose from negative buckets IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 20. Runs analysis We get nice, believable sensor noise with no prior knowledge of the system IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 21. Spoofing Disturbances Even with the noise floor simulated, process data isn’t a flat line We need to transfer the disturbances from the real signal to the spoofed signal IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 22. Spoofing Disturbances We need to transfer this artifact But not this trend IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 23. The Wrong Way Moving averages Everyone starts with a moving average to smooth out the noise Even simple algorithms can be large when the size of the data taken into account Let’s take a look at quickly to understand why these types of algorithms don’t work IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 24. Moving average 2 point IOActive, Inc. Copyright ©2014. All Rights Reserved. Where is the peak? Will this detect 50 peaks? 4 Bytes to store the data
  • 25. Moving average 50 point IOActive, Inc. Copyright ©2014. All Rights Reserved. These will still get in the way 200 Bytes to store the data
  • 26. Moving average 50 point Fitting curves to the data Looking good, but at what cost? IOActive, Inc. Copyright ©2014. All Rights Reserved. 800 Bytes to store the data Peaks are detected 100 samples late
  • 27. Beyond moving averages Fitting curves to the data A moving average is an example of a scale-dependent algorithm How many points should be applied to smooth out the curve? o It’s not possible to know without an example of the data IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 28. Beyond moving averages Forget sine waves. Your trig library isn’t going to fit either Don’t forget all those nasty sensor glitches IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 29. Triangles Triangles are a good-enough approximation of the process data We just need a very small algorithm to fit triangles onto the process data How big is the optimal triangle? o The largest features are the ones you care about o We need an algorithm that will produce triangles that is scale independent o The triangles should all cover similar area IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 30. Triangles Think of the process data as a set of triangles. Triangles are cheap and easy IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 31. Triangles We can make some assumptions about the data o The process is not running out of control therefore, it will oscillate as the feedback mechanisms control the process o Artifacts smaller than the noise are too small to affect the process o There isn’t significant hysteresis in the system IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 32. 1. Declare a vertex at the first value 2. Choose an arbitrary starting window n. Calculate or estimate a smoothing factor s=log(n). 3. Note the minimum and the maximum values in the window. 4. Draw a triangle from the origin through the minimum and maximum values and ending in a vertical line at n. 5. Declare a vertex at the midpoint of the vertical line at n. IOActive, Inc. Copyright ©2014. All Rights Reserved. (Still tweaking this one) Triangles: A sample algorithm 6. Start drawing a second triangle from the vertex using the slopes of the previous triangle. 7. Count y,z samples that are above/below the triangle. 8. When y or z s, declare a vertex at the midpoint of the vertical line through the current sample 9. If yz, increase the slope of the top and decrease the slope of the bottom line otherwise do the opposite 10. If the number of samples between the current sample and the last vertex 4n. then increase n 11. If at any time there has been no vertex in 4n samples, declare a vertex at the midpoint of the line through the current sample and decrease n. 12.Go to step 6
  • 33. Triangles IOActive, Inc. Copyright ©2014. All Rights Reserved. Triangles!
  • 34. Triangles IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 35. Spoofing Disturbances IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 36. Artifact extraction We need to spot the pressure wave and the reflected wave. We can extract the state of the process using the triangles This saves CPU time because we’re only running this logic when we declare a new vertex IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 37. Artifact extraction Something has happened: o Slopes changed o Lengths changed IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 38. Artifact extraction For our attack model we only need two Values o When did the pressure wave hit? o When did the reflected wave hit? 2X +Y IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 39. Artifact extraction Lots of code needed to deal with scaling o MM-HG, CM-H2O, Pascals o More than the rest of the code combined IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 40. 20 10 0 -10 -20 -30 -40 -50 -60 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 1,1 1,2 1,3 1,4 1,5 1,6 IOActive, Inc. Copyright ©2014. All Rights Reserved. Modeling says it should look like this It actually looks like this We need to cycle the valve at: X = (0.55-0.4) Y = (0.65-0.55) 2X+Y = 0.4 seconds Scale free description
  • 41. 20 10 0 -10 -20 -30 -40 -50 -60 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 1,1 1,2 1,3 1,4 1,5 1,6 IOActive, Inc. Copyright ©2014. All Rights Reserved. Triangle strips Ratio of areas between adjacent triangles (I could have also used ratios of the angles) Scale Free Description- Ratio of areas of adjacent triangles ------------------------------ 1.0 : 0.86 : 0.61 Line segments
  • 42. Inserting the Code into the Firmware IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 43. Inserting the rootkit into the firmware I still need to make my payload smaller o To make is smaller, I need to reuse the existing code Debugging o If I’m reusing existing code, how do I debug it? o What if the existing code has side effects? Portability o I don’t want to recode my rootkit for every single sensor I want to invade IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 44. Inserting the rootkit into the firmware • Most of the work of a biological virus is done by existing cell mechanisms • We can do the same with firmware IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 45. Example code int CalcSomething(int x){ int total = 0; int i; for (i=0;ix;i++){ IOActive, Inc. Copyright ©2014. All Rights Reserved. total=total+i; } return total; }
  • 46. MSP430 Assembly IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 47. ARM Assembly IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 48. IOActive, Inc. Copyright ©2014. All Rights Reserved. VS. Are they different? We can’t directly compare the two assemblies
  • 49. STR R11, [SP,#-4+var_s0]! ADD R11, SP, #0 SUB SP, SP, #0x14 STR R0, [R11,#var_10] MOV R3, #0 STR R3, [R11,#var_8] MOV R3, #0 STR R3, [R11,#var_C] IOActive, Inc. Copyright ©2014. All Rights Reserved. Preamble Stack allocation Argument linking Local variable initialization Actual logic Argument linking Postamble B loc_40 LDR R2, [R11,#var_8] LDR R3, [R11,#var_C] ADD R3, R2, R3 STR R3, [R11,#var_8] LDR R3, [R11,#var_C] ADD R3, R3, #1 STR R3, [R11,#var_C] LDR R2, [R11,#var_C] LDR R3, [R11,#var_10] CMP R2, R3 LDR R3, [R11,#var_8] MOV R0, R3 SUB SP, R11, #0 LDR R11, [SP+var_s0],#4 BX LR push.w R4 mov.w SP, R4 incd.w R4 add.w #0FFFAh, SP mov.w R15, 0FFFCh(R4) clr.w 0FFF8h(R4) clr.w 0FFFAh(R4) jmp loc_22 add.w 0FFFAh(R4),0FFF8h(R4) inc.w 0FFFAh(R4) cmp.w 0FFFCh(R4),0FFFAh(R4) jl loc_18 mov.w 0FFF8h(R4), R15 add.w #6, SP pop R4 ret
  • 50. Transforms MicroOps Binary Normal Form Infinite Register File IOActive, Inc. Copyright ©2014. All Rights Reserved. ESP:=ESP-4 [ESP]:=EAX PUSH EAX
  • 51. IOActive, Inc. Copyright ©2014. All Rights Reserved. TMP1:=0 [R4+8]:=TMP1 [R4+10]:=TMP1 PC:=loc_22 TMP1:=[R4+8] TMP2:=[R4+10] TMP3:=TMP1+TMP2 [R4+8]:=TMP3 TMP1:=[R4+10] TMP1:=TMP1+1 [R4+10]:=TMP1 TMP1:=[R4+8] TMP2:=[R4+10] IF TMP1TMP2 THEN PC:=loc_18 R3:=0 [R11+8]:=R3 [R11+C]:=R3 PC:=loc_40 R3:=[R11+8] R2:=[R11+C] R3:=R2+R3 [R11+8:]:=R3 R3:=[R11+C] R3:=R3+1 [R11+C]:=R3 R2:=[R11+C] R3:=[R11+10] IF R2R3 THEN PC:=loc_24 It’s not an exact match. They use different registers and different stack offsets. Compilers may have ordered things differently Excellent! They kinda match!! Transforms
  • 52. Modified code int CalcSomething(int x){ int total = 0; int i; for (i=0;ix;i++){ total=total+i; } return total; } IOActive, Inc. Copyright ©2014. All Rights Reserved. int EvilSomething(int x){ int total = 0; int i; for (i=0;ix;i++){ total=total+i+4; } return total; } What if I made some changes?
  • 53. Edit distance IOActive, Inc. Copyright ©2014. All Rights Reserved. S1:=0 S2:=0 PC:=PC+3 S3:=S2+4 S1:=S1+S3 S2:=S2+1 IF S2ARG1 THEN PC:=PC-3 S1:=0 S2:=0 PC:=PC+2 S1:=S1+S2 S2:=S2+1 IF S2 ARG1 THEN PC:=PC-2 How close are these two functions? One way to measure that is the edit distance o How many IF statements would it take to make them the same?
  • 54. IOActive, Inc. Copyright ©2014. All Rights Reserved. S1:=0 S2:=0 PC:=PC+3 S3:=S2+4 S1:=S1+S3 S2:=S2+1 IF S2ARG1 THEN PC:=PC-3 S1:=0 S2:=0 PC:=loc_40 S1:=S1+S2 S2:=S2+1 IF S2ARG1 THEN PC:=loc_24 S1:=0 S2:=0 PC:=PC+6 IF ARG2 THEN S1:=S1+S2 ELSE S3:=S2+4 S1:=S1+S3 S2:=S2+1 IF S2ARG1 THEN PC:=PC-6 These two functions differ with an edit distance of 1 Edit distance
  • 55. Edit distance That was a trivial example How can we find the edit distance between two peaces of code in a more generic way? We can steal from the biologists and use protein matching algorithms o Needleman-Wunsch can used to find the edit distance between two strings We can adapt that for our uses IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 56. Needleman Wunsch Inserting Code is Fun Inserting Rootkits is Fun Inserting _Co___de is Fun Inserting Rootkits is Fun IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 57. Needleman Wunsch Inserting Code is Fun Inserting Rootkits is Fun Inserting _Co___de is Fun Inserting Rootkits is Fun The strings have an edit distance of 2 18 Characters the same - 10 characters different IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 58. Edit distances between functions IOActive, Inc. Copyright ©2014. All Rights Reserved. S1:=0 S2:=0 PC:=PC+3 S3:=S2+4 S1:=S1+S3 S2:=S2+1 IF S2ARG1 THEN PC:=PC-3 S1:=0 S2:=0 PC:=PC+2 S1:=S1+S2 S2:=S2+1 IF S2ARG1 THEN PC:=PC-2 What if we turned these MicroOps into letters? We could calculated the edit distance between any two functions It would even tell us where to put the IF statements
  • 59. distances between functions 0 MS0 S2:=0 MS0 PC:=PC+3 MR+ S3:=S2+4 AS4 S1:=S1+S3 ASS S2:=S2+1 AS1 IF S2ARG1 THEN PC:=PC-3 CLTSAMR-S1:= 0 MS0 S2:=0 MS0 PC:=PC+2 MR+ S1:=S1+S2 ASS S2:=S2+1 AS1 IF S2ARG1 THEN PC:=PC-2 ICLTSAMR-MS0MS0MR+___ MS0MS0MR+ASSAS1ICLTSARM-MS0MS0MR+ IOActive, Inc. Copyright ©2014. All Rights Reserved. AS4ASSAS1ICLTSARM-S1:= ASSAS1ICLTSARM-MS0MS0MR+ AS4ASSAS1ICLTSARM-Edit
  • 60. Edit distances between functions IOActive, Inc. Copyright ©2014. All Rights Reserved. S1:=0 MS0 S2:=0 MS0 PC:=loc_40 MR+2 S3:=S2+4 AS4 S1:=S1+S3 ASS S2:=S2+1 AS1 IF S2ARG1 THEN PC:=loc_24 ICLTSAMR-2 S1:=0 MS0 S2:=0 MS0 PC:=loc_40 MR+2 S1:=S1+S2 ASS S2:=S2+1 AS1 IF S2ARG1 THEN PC:=loc_24 CLTSAMR-2 MS0MS0MR+2___ASSAS1ICLTSARM-2 MS0MS0MR+2AS4ASSAS1ICLTSARM-2 The strings shows where to add the IF statements to make the functions the same
  • 61. MS0MS0MR+2___ASSAS1ICLTSARM-2 MS0MS0MR+2AS4ASSAS1ICLTSARM-2 S1:=0 S2:=0 PC:=loc_40 IF ARG2 THEN S1:=S1+S2 ELSE S3:=S2+4 S1:=S1+S3 S2:=S2+1 IF S2ARG1 THEN PC:=loc_24 IOActive, Inc. Copyright ©2014. All Rights Reserved. If we know how costly an IF statement is in the target architecture, we can figure out if merging these two function will save space in the final firmware Edit distances
  • 62. Matching call trees Now that we can match two functions, why not something bigger? We can take each of our leaf functions and see if the parents of that leaf function also match IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 63. IOActive, Inc. Copyright ©2014. All Rights Reserved. 0 3 1 1 1 2 0 1 1 3 2 1 Distance: 8 Matching call trees After matching, it is now possible to calculate the edit distance of an entire subsystem
  • 64. Finally!! Inserting the rootkit into the firmware! For each function in the rootkit, I have found a best match function in the target firmware o If mine has a CRC-16 and the target has a CRC-16, they will have a small edit distance and get merged together o Any orphans that simply don’t match will need to be uint16_t crc16_update(uint16_t crc, uint8_t a){ int i; crc ^= a; for (i = 0; i 8; ++i){ if (crc 1) crc = (crc 1) ^ 0xA001; else crc = (crc 1); } return crc; } added to the end I can even merge two functions in the target together to gain even more space Now simply reverse the process from BNF back to the target assembly Instant firmware rootkit!
  • 65. Random code from the Internet Nobody would ever just copy code from the Internet, would they? Since we can compare code, we can search to see if this code is in that firmware IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 66. Future: Metasploit for firmware There are common pieces of software used throughout industrial control systems o i.e. SquareD DNP stack As long as our rootkit only needs functionality from the common piece of code, the merge will be self-contained o It can be inserted automatically without a human o No need to understand the CPU o No need to deal with the version differences IOActive, Inc. Copyright ©2014. All Rights Reserved.
  • 67. Questions Jason Larsen IOActive IOActive, Inc. Copyright ©2014. All Rights Reserved.