SlideShare une entreprise Scribd logo
1  sur  67
Télécharger pour lire hors ligne
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.

Contenu connexe

Similaire à [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. 2013Azul 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 StudiesInsideScientific
 
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 applicationsKonrad Malawski
 
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 StandardsSensorUp
 
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
 
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 APISensorUp
 
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 SpringVMware Tanzu
 
Heart beat detector using arduino
Heart beat detector using arduinoHeart beat detector using arduino
Heart beat detector using arduinoVarshaa 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 ExperimentJulie 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) TechnologiesAlejandro 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
 

Similaire à [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...
 

Plus de 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
RetrospectivaTI Safe
 
Pacote TI Safe ONS Ready v1
Pacote TI Safe ONS Ready v1Pacote TI Safe ONS Ready v1
Pacote TI Safe ONS Ready v1TI Safe
 

Plus de 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
 

Dernier

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Dernier (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

[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.