WEBVTT

00:00.000 --> 00:02.800
Our first presenter today is Paz Miller.

00:02.960 --> 00:07.960
Paz started his professional career by hacking games and developing tools for his teams.

00:07.960 --> 00:13.320
He has led multidisciplinary systems development as a systems engineer for the aerospace industry.

00:13.500 --> 00:17.620
Today, he will be speaking about what is a little radiotron, and how to operate it.

00:17.620 --> 00:20.680
Let's start today off with a round of applause for Paz.

00:22.420 --> 00:23.720
Thank you.

00:24.560 --> 00:25.940
Thank you.

00:27.560 --> 00:33.360
Hi everyone, my name is Paz Miller and I will talk about the problem of the weather.

00:35.120 --> 00:41.360
There is no need for the initial introduction since I was just right now introduced.

00:42.240 --> 00:54.100
The work I did was about attacking the channel between the weather balloons that are being sent every day and their reception stations.

00:54.420 --> 00:57.180
And I will go over the work.

00:58.620 --> 01:02.600
First thing that needs to be done is to introduce the weather balloon.

01:02.600 --> 01:11.900
And you can see here on the right, on the upper side of the photo, you can see the partially filled balloon.

01:11.900 --> 01:14.200
It's partially filled with helium.

01:14.200 --> 01:27.260
On the lower side you can see the payload, which is an instrumentation box that samples the data from the air and transmits it to a ground station.

01:27.260 --> 01:44.500
And in the middle you can see a small parachute because when the balloon pops, everything falls down and you don't want to get hit by your head by something that fell from 100,000 feet up high.

01:47.260 --> 01:53.840
Oh, I forgot to mention in the last line of the slide, the payload is called Radiosonde.

01:53.840 --> 01:58.980
And from here on, now I will speak only about the Radiosonde.

01:58.980 --> 02:09.440
Here you can see several quotes from a senior meteorologist at Vandenberg Space Force Base, where they are doing satellite launches.

02:09.680 --> 02:19.800
And he is saying that the data from the weather balloons go directly into the databases and to the national weather model.

02:19.880 --> 02:28.400
Which is great for me as a hacker to know that if I succeed disrupting the data, it will go directly into the databases and into the models.

02:29.140 --> 02:39.180
Next thing he is mentioning that they are doing a lot of launches while doing the launch count, doing a lot of releases of weather balloons during the launch count.

02:39.180 --> 02:45.360
They really need updated information to take the decision if to do a satellite launch or not.

02:45.600 --> 03:01.900
And the last thing he is emphasizing how critical it is for the launch mission, because as we have all seen in movies, eventually there is a bunch of guys who are sitting in a room and each one needs to raise his thumb and say, I'm okay, we are all good to go.

03:01.900 --> 03:10.520
And there is an officer there, a weather officer, and he examines the data from the weather balloon, the last weather balloon that was released.

03:10.640 --> 03:14.560
And he needs to decide if the weather is good, he is going to approve the launch.

03:14.560 --> 03:17.220
If the weather is bad, he will delay the launch.

03:17.580 --> 03:32.480
And for me as a hacker it is very important to understand that, because if I can falsify the data that he is looking at, then I can make him cancel launch in good weather, or in the worst case, approve a launch in bad weather.

03:35.080 --> 03:53.680
I might be intimidated to attack an army base, but NASA is helping here and saying that they not only demand that the weather about the launch site will be great, but they also demand that the weather on the down range will be great.

03:53.720 --> 04:02.680
And it means that there are a lot of civil stations, weather balloons, launching stations, that need to approve the launch.

04:02.680 --> 04:10.460
And if I'm intimidated to attack an army base, I might not be intimidated to attack a simple civil station.

04:12.060 --> 04:15.680
Okay, so I have my malicious intentions.

04:16.040 --> 04:19.600
And now I need to choose my path to attack.

04:19.600 --> 04:24.760
And you can see here the list of the most common radiosounds that are being launched.

04:25.020 --> 04:30.720
And leading the market is the Vaisela RS-41, so I focused my work on that model.

04:32.460 --> 04:38.100
Here you can see the major properties of the transmission frame.

04:38.100 --> 04:41.940
There are two common models of the RS-41 submodels.

04:42.000 --> 04:45.080
One is the SG and the other one is the SGP.

04:45.080 --> 04:49.120
The SGP comprises a pressure sensor and the SG does not.

04:49.120 --> 04:51.340
That's the only difference between the two.

04:51.900 --> 04:55.460
The basic frame is 320 bytes divided into blocks.

04:55.460 --> 04:57.320
We'll see the blocks in the next slide.

04:57.900 --> 05:00.760
And there are two layers of error detection and correction.

05:01.700 --> 05:05.740
One is CRC-16, which is applied on each block.

05:05.740 --> 05:11.880
And RIG-Solomon, which is applied on the whole frame for forward error correction.

05:13.020 --> 05:17.600
Here you can see the blocks in the frame.

05:17.600 --> 05:19.640
The first bytes are header bytes.

05:19.640 --> 05:23.000
The next are forward error correction bytes.

05:23.000 --> 05:26.100
Then comes the frame type, which is a very simple byte.

05:26.100 --> 05:28.240
And then comes the blocks.

05:28.240 --> 05:38.200
Block 79 comprises all of the general purpose data, ID, serial numbers, calibration data, battery voltage, and so on.

05:38.200 --> 05:45.220
It also has subframes, which I will go over in the next slide.

05:45.860 --> 05:48.040
The next block is block 7A.

05:48.040 --> 05:53.040
That comprises all of the data measurements, all of the error data measurements.

05:53.040 --> 05:59.200
And then 7C, 7D, 7B are three GPS information blocks.

05:59.660 --> 06:02.660
A lot of information is in there.

06:02.660 --> 06:06.420
And the last block is an empty block, 76.

06:08.760 --> 06:14.180
In the subframes, there are 51 subframes, 16 bytes each.

06:14.180 --> 06:23.370
There's a lot of additional information, serial numbers, path numbers, diagnostic data, calibration data, and so on.

06:25.010 --> 06:28.180
Here are the RS41 RF properties.

06:28.180 --> 06:34.020
It works between 400 MHz and 406 MHz.

06:34.020 --> 06:36.060
It outputs 18 dBm.

06:36.060 --> 06:46.160
And the modulation GFSK is very, very easy to pick up the signals with a simple RTL-SDR receiver and a good antenna.

06:46.280 --> 06:55.280
And you can set up your own station at home and start picking up the signals from the radio sound that goes over your house.

06:55.360 --> 07:00.840
And there are thousands of people doing it all over the world right now.

07:00.840 --> 07:06.700
All have stations like this installed in their houses, very simple, very cheap ones.

07:06.700 --> 07:12.920
And they are all communicating with each other and passing the data that they are getting into public databases.

07:12.920 --> 07:19.500
And they develop tools for decoding and to give people access to the data.

07:19.500 --> 07:26.640
And there are several websites where you can go and view different flights right now, live in the air.

07:28.480 --> 07:33.560
Okay, so I have malicious intentions and I have my RF link to attack.

07:33.560 --> 07:37.600
So the most basic attack would be to do a jamming attack.

07:37.600 --> 07:38.660
And how do you jam?

07:38.660 --> 07:43.540
You take a strong, powerful transmitter and you transmit jamming signals.

07:44.000 --> 07:48.720
My weapon of choice was the Heltech Automation Laurel Node 151.

07:48.720 --> 07:56.760
I just searched for a certain type of transmitter on eBay and I saw the name Heltech and I said, Oh God, this is a sign.

07:56.760 --> 07:58.880
So I immediately grabbed it.

07:58.920 --> 08:00.980
It has a very good Laurel chip.

08:00.980 --> 08:03.160
It has a very good microcontroller.

08:03.400 --> 08:05.380
It transmits 20 dBm.

08:05.380 --> 08:08.500
It carries its own lithium battery, which is great.

08:08.500 --> 08:09.820
You will see it in a minute.

08:10.240 --> 08:14.280
And it costs 20 bucks on eBay and it weighs close to nothing.

08:16.660 --> 08:19.480
So, let's see a jamming attack.

08:20.260 --> 08:27.560
On the right side, you can see the computer and a transmitter that is emulating the RS-41 transmissions.

08:27.780 --> 08:32.440
On the left side, you can see a simple reception station, as I explained earlier.

08:32.880 --> 08:38.660
And in the middle, you can see the small jamming equipment, which is a board and a battery.

08:40.200 --> 08:42.700
Now I'll start the Radiosound emulation.

08:42.700 --> 08:44.520
The emulation is very simple.

08:44.520 --> 08:49.000
I have a log file of all transmissions for RS-41.

08:49.000 --> 08:54.800
And the script takes a message, transmits it, takes another message, transmits it in a cyclic manner.

08:56.120 --> 09:02.780
And here you can see the transmission being received by the RTL-SDR software.

09:05.420 --> 09:07.360
And this is the decoding software.

09:07.360 --> 09:09.140
This is what the operator sees.

09:12.180 --> 09:15.420
In the middle, you can see the Radiosound position and velocity.

09:16.980 --> 09:21.080
Here you can see some general information, such as sound ID.

09:22.640 --> 09:28.460
Here is the GPS time and the quality of reception of the space vehicles.

09:28.760 --> 09:31.380
And this is the subframe status.

09:32.620 --> 09:36.540
Here you can see the measurements that are being taken by the Radiosound.

09:37.820 --> 09:42.820
And this is the GPS navigation data that the Radiosound is sending down.

09:42.820 --> 09:50.160
The link between the decoding software and the RTL software is over the computer's audio channel.

09:50.160 --> 09:56.920
And here you can see that you can record this audio channel and look at the raw data.

09:57.100 --> 10:05.920
If I zoom in, you can see here the preamble bits, followed by the data bits inside the message.

10:05.920 --> 10:06.420
Okay

10:14.130 --> 10:22.250
, so I have a working link, I'm doing decoding, everything is great, so let's add some jamming.

10:27.750 --> 10:30.710
And you can see the immediate effect.

10:32.790 --> 10:41.510
You can see on the left the original broadcast, and on the right interfering the jamming signal.

10:41.510 --> 10:44.850
And if you look at the audio, you see it's a mess.

10:50.440 --> 10:55.640
You see here the jamming signal, it's a very simple signal, broadcasted half of the time.

10:56.180 --> 11:01.800
And when it is mixed with the message here, it totally ruins it.

11:03.680 --> 11:05.440
And there's no decoding.

11:13.700 --> 11:17.460
So remember that I talked about the weight of the transmitter?

11:17.460 --> 11:24.540
Well, you can take a birthday balloon, tie the transmitter to the birthday balloon, and release it.

11:24.540 --> 11:30.320
After the radio song, they will both fly together, so happy with each other.

11:30.860 --> 11:47.440
And what it means is that in this case, you don't only attack the local reception station, but now you are attacking all of the stations along the path of the radio song, and it means that you are doing serious damage.

11:48.520 --> 11:50.660
How serious?

11:51.060 --> 11:52.280
Well, the U.S.

11:52.280 --> 12:00.840
National Weather Service is supporting 102 sites nationwide, each launching at regular hours, twice a day.

12:01.200 --> 12:08.120
And what will happen if 50 people will decide to jam the signal from 50 radio songs?

12:08.120 --> 12:18.240
Well, it will cause serious errors in the weather models and the forecasts, which is good for me as a hacker, but bad for the nation.

12:21.200 --> 12:25.540
I developed a simulation framework for my work.

12:26.760 --> 12:29.240
This is the simulation development environment.

12:29.240 --> 12:31.080
On the right, you can see the transmission part.

12:31.080 --> 12:33.800
On the left, you can see the reception part.

12:34.060 --> 12:50.860
The main block in the transmission part is the Python script, where the attacker can generate messages, generate frames, generate blocks, or change blocks or messages that he reads from log files.

12:51.000 --> 12:57.140
This is connected to a GPS satellite file in case the attacker will choose to falsify GPS data.

12:57.140 --> 13:03.940
For example, take a year-old file and transmit the data as if it was transmitted right now in the air.

13:04.500 --> 13:16.420
He can manipulate messages from an R41 log file, and he has the simulation framework that enables him to have a very big library of functions to work with.

13:16.940 --> 13:34.980
The data that the script is building can be either sent to the decoding software over the audio, if the decoding software is installed on the same computer, or it can be sent to a radio transmitter to transmit the messages over the air to an RTL-SDR receiver and from there to the decoding software.

13:36.460 --> 13:43.760
When you are generating messages or frames, you can take one of two paths.

13:43.760 --> 13:49.360
One is to synthesize frames and subframes all by yourself.

13:49.360 --> 14:00.480
It's very hard because you need to build a behavioral model for each measurement, and you have to remember that many of the measurements have links to other measurements.

14:00.480 --> 14:08.680
So, practically, if you want to create a very good simulation, you have to build a weather simulation on your own computer.

14:10.540 --> 14:12.960
The other approach is much more easier.

14:12.960 --> 14:18.300
This is the approach that I took, was to take all the log files that I have and retransmit it.

14:18.500 --> 14:34.420
Change the serial numbers, change the ID, so no one will be able to detect that this is old data, and retransmit it with falsified GPS data that makes it look as if it was actual flight right now.

14:36.220 --> 14:41.040
So, I have the malicious intentions and now I have the means.

14:41.320 --> 14:43.800
So, let's talk about spoofing data.

14:44.120 --> 14:49.120
Again, I need a powerful transmitter and I need a technique.

14:49.120 --> 14:51.040
And the technique goes like this.

14:51.040 --> 15:07.080
I choose the radio sound that I would like to spoof, and then I receive all the subframes because I need all of the general data from it, because I want to use the same ID, serial numbers, and so on.

15:07.080 --> 15:10.980
And then I'm preparing myself for spoofing, and then I'm jamming the signal.

15:10.980 --> 15:24.240
And this is important because I'm going to use a set of messages that are changing in a certain rate but the radio sound might have a set of messages that are changing in another rate.

15:24.240 --> 15:39.760
And you don't want the operator to easily distinguish between the different types of messages, so if you jam the data, the operator will look and see that the data freezes, and then it returns and it will seem reasonable.

15:39.760 --> 15:42.040
So, it will say, okay, I lost a few packets.

15:42.040 --> 15:43.500
No harm was done.

15:43.540 --> 15:46.600
But then I'm transmitting my spoofed messages.

15:46.600 --> 15:50.400
And this is the data that I'm inserting into the system.

15:50.700 --> 16:07.860
And after I'm finishing spoofing the radio sound, I'm again transmitting jamming signals, and this is a very important part because I have no control over what the radio sound is doing while I'm spoofing.

16:07.860 --> 16:16.080
So it might drift with the wind to a different location from where I'm emulating the position of the radio sound right now.

16:16.600 --> 16:20.360
So, with jamming, I'm creating the same effect.

16:20.360 --> 16:30.800
The operator will look at the data, sees that it freezes for a few seconds, and then the original radio sound will return, and if it sees a small jump, it will say, okay, I lost a few packets.

16:30.800 --> 16:31.500
It drifted.

16:31.500 --> 16:32.380
It's fine.

16:34.580 --> 16:37.260
It works on the signal-to-noise ratio.

16:37.760 --> 16:51.000
You want to make the receiver believe that the strong, healthy signal from the spoofing transmitter is the leading signal, while the weak radio sound signal is just noise.

16:51.100 --> 17:00.060
And here you can see some thumb rules regarding signal-to-noise ratio, and if you can get 25 dB margin, then you're on the horse.

17:01.080 --> 17:10.920
And how do you get 25 dB margin, or even better, it all depends on the distance of the transmitters from the receiver.

17:11.880 --> 17:37.160
Once the radio sound drifted away with the wind and is getting further and further away from the receiver, its transmission is received with lower and lower power, while if I'm an attacker placed close to the reception station, I can keep my own power and get my 25 dB margin between me and the radio sound and take over the transmission.

17:40.080 --> 17:42.360
So, let's see some spoofing examples.

17:42.380 --> 17:47.500
This is the RS-41 emulating transmitter.

17:49.980 --> 17:52.220
This is the spoofing transmitter.

17:54.820 --> 17:57.660
And again, this is the reception station.

18:03.820 --> 18:05.840
And let's start the emulation.

18:05.960 --> 18:12.620
The script goes to the log file, get the messages out and transmit it over here.

18:15.540 --> 18:20.100
After a long time, this is what you see in the decoding software.

18:20.100 --> 18:22.200
This is after a couple of hours.

18:22.660 --> 18:28.720
And the spoofing will start when the radio sound reaches 20 km height.

18:35.440 --> 18:38.340
And here you can see jamming, jamming, jamming.

18:40.300 --> 18:43.920
And while it is jamming, I'm adjusting the data.

18:43.920 --> 18:52.400
I get the last packet from the radio sound, the active radio sound in the air, and I offset all of my data to the last known good data from the radio sound.

18:52.400 --> 18:56.340
As you can see, now I'm spoofing and it's hard to detect.

19:06.420 --> 19:09.420
And now, jamming, jamming, jamming all over again.

19:09.940 --> 19:11.980
And everything freezes.

19:13.080 --> 19:18.240
Here I see the original radio sound transmitting to the receiver.

19:18.620 --> 19:22.280
And the operator looks at it and says, OK, I lost a few packets.

19:22.280 --> 19:23.640
No harm was done.

19:24.820 --> 19:27.320
But I got my data inside.

19:32.330 --> 19:36.370
This is another example at which I'm changing two things.

19:36.370 --> 19:39.210
One is the temperature and the pressure measurements.

19:39.370 --> 19:43.110
And the other thing, if you notice, it's an audio simulation.

19:43.110 --> 19:49.930
The entire simulation, the RS41 simulation, the spoofing simulation, and the decoding are all done on the same computer.

19:49.930 --> 19:53.530
I'm using the audio path instead of the RF path.

19:58.410 --> 20:00.530
So you see the numbers are changing.

20:02.050 --> 20:06.030
Don't worry, you'll see the impact in a minute.

20:08.890 --> 20:11.550
And now, jamming, jamming, jamming.

20:15.980 --> 20:18.140
And the spoofing is done.

20:20.620 --> 20:24.740
Here is a diagram, the pressure versus temperature diagram.

20:24.740 --> 20:27.180
And you can see here, I draw a small circle.

20:27.180 --> 20:30.880
And now the poor weather officer has to decide, what is it?

20:30.880 --> 20:32.040
What does it mean?

20:32.040 --> 20:32.840
Do I launch?

20:32.840 --> 20:33.800
Do I not launch?

20:34.080 --> 20:35.260
I don't know what to do with it.

20:35.260 --> 20:40.640
And I could have done much more meaner things, but this is only an example.

20:42.600 --> 20:47.580
You'll be happy to know that there's a model intended for military use.

20:47.800 --> 20:49.560
It's called the SGN.

20:49.560 --> 20:52.280
The manufacturer claims that it will do two things.

20:52.280 --> 21:03.560
One, it will keep radio silence until a certain height or time, so it will not reveal the launching site of the balloon.

21:04.080 --> 21:15.680
And the other one is that they encrypt the data and the measurements with 128-bit key, which is not so military, but OK, 128 is fine.

21:16.500 --> 21:19.600
But it's not the only thing that is suspicious about it.

21:19.600 --> 21:23.860
It's not really military, because they didn't change any other property.

21:24.280 --> 21:26.160
It's the same frequency, same framing.

21:26.160 --> 21:31.480
If you have your own home equipment, then you can see that the SGN is flying over your head.

21:31.480 --> 21:37.180
You can be aware of it, see the frame ID, and several other data items.

21:37.180 --> 21:40.440
What you won't be able to decode is the data.

21:42.200 --> 21:49.760
But sometimes they don't even operate the encryption, and then you see the whole SGN data, and it looks like the SG model data.

21:49.760 --> 22:00.640
Except for one thing, it identifies as SGN, so you are still able to understand that the army is operating right here.

22:00.640 --> 22:05.280
It's shouting it right out in the sky, which is not so really military.

22:05.780 --> 22:21.220
And it's very easy to position it once it starts transmitting, and the claim that you cannot detect the launch site is a bit funny, because there are a lot of software today that, using wind models, can estimate where the radio sound will fall.

22:21.220 --> 22:29.500
And if you can estimate where it will fall, you can also estimate where it was launched from, so it's not really working.

22:29.500 --> 22:48.640
And if you are placed near an army base, and you start seeing the SGNs go right one after the other, even if you cannot decode the data, the frequency will tell you that the army is about to launch something, which is very not military, as far as I understand.

22:49.900 --> 22:56.180
So, if you want to cope with spoofing, what you shouldn't do, personally, this is what I believe, you shouldn't encrypt.

22:56.180 --> 23:02.260
Most of the entities that are launching weather balloons are non-military.

23:02.740 --> 23:23.200
Keys are a headache, synchronizing different stations is a headache, they probably won't want it, it's bad for the radio sound community, and you have to remember that the information is not secret, and it is being read with public money, so the public should have the opportunity to enjoy it.

23:23.800 --> 23:27.280
What you should do is to authenticate the message.

23:28.220 --> 23:38.920
Modify the messages to add an authentication tag, and whoever is using the data right now will be able to keep on using the same data, and the authentication may be done offline.

23:39.040 --> 23:51.540
So, after a flight, if you suspect that the data was falsified, you can send it to the manufacturer, he will test the data, and give you a reply saying, okay, this is okay, or this was spoofed.

23:54.580 --> 24:11.480
When I developed the framework, I used it a lot to investigate the decoding software on different platforms, and different decoding software, and it was great, and so I decided to release the code, it will be uploaded in the next few days, and that's it.

24:11.480 --> 24:12.760
Thank you very much.

