WEBVTT - Defense against the Dark DDoS Arts

0:00:04.120 --> 0:00:07.160
<v Speaker 1>Get in touch with technology with tech Stuff from how

0:00:07.200 --> 0:00:13.640
<v Speaker 1>stuff works dot com. Hey there, and welcome to tech Stuff.

0:00:13.720 --> 0:00:17.360
<v Speaker 1>I'm your host, Jonathan Strickland, and I love all things tech,

0:00:17.440 --> 0:00:21.520
<v Speaker 1>and today we're going to continue our discussion about deeds

0:00:21.600 --> 0:00:27.080
<v Speaker 1>attacks distributed denial of service attacks. In the last episode,

0:00:27.080 --> 0:00:30.680
<v Speaker 1>I talked about them from a very high level, right,

0:00:30.680 --> 0:00:32.919
<v Speaker 1>I gave a very high level explanation of what they

0:00:32.960 --> 0:00:34.720
<v Speaker 1>are and how they work. And today we're going to

0:00:34.800 --> 0:00:39.000
<v Speaker 1>get into a little bit more granular specific discussion, though

0:00:39.040 --> 0:00:43.200
<v Speaker 1>not exhaustive, because honestly, to get into a truly exhaustive

0:00:43.200 --> 0:00:49.040
<v Speaker 1>discussion about the DOS attacks requires an incredible amount of groundwork.

0:00:49.120 --> 0:00:51.680
<v Speaker 1>You have delay in order to get the technical understanding,

0:00:51.760 --> 0:00:54.640
<v Speaker 1>and and to be honest, there are certainly elements of

0:00:54.720 --> 0:00:59.560
<v Speaker 1>de DOS attacks, particular implementations that go well beyond my understanding,

0:01:00.040 --> 0:01:03.440
<v Speaker 1>so I don't want to reveal the depth of my

0:01:03.560 --> 0:01:07.199
<v Speaker 1>ignorance too quickly. But first, a distributed denial of service attack,

0:01:07.200 --> 0:01:09.280
<v Speaker 1>in case you don't remember, it's a it's a tough

0:01:09.280 --> 0:01:11.880
<v Speaker 1>thing to defend against. It's because it's really hard to

0:01:11.920 --> 0:01:15.360
<v Speaker 1>tell the difference between legit communication from people who are

0:01:15.400 --> 0:01:19.160
<v Speaker 1>trying to access a an online service, whether it's a

0:01:19.160 --> 0:01:23.680
<v Speaker 1>website or an app or whatever, and an attack it's

0:01:23.720 --> 0:01:27.120
<v Speaker 1>it's hard to tell because the way the Internet works,

0:01:27.600 --> 0:01:30.200
<v Speaker 1>it tries to be agnostic towards the kind of data

0:01:30.240 --> 0:01:33.399
<v Speaker 1>that's going across the system. In many ways, that's a

0:01:33.440 --> 0:01:35.959
<v Speaker 1>great thing, but in other ways it can make it

0:01:36.080 --> 0:01:40.240
<v Speaker 1>very challenging when people are using data itself as a

0:01:40.280 --> 0:01:44.279
<v Speaker 1>way to attack a target. So let's say you've landed

0:01:44.280 --> 0:01:47.520
<v Speaker 1>a job and you are the personal assistant of a

0:01:47.560 --> 0:01:53.360
<v Speaker 1>really powerful, really polarizing entrepreneur. One of your jobs is

0:01:53.400 --> 0:01:57.040
<v Speaker 1>to open this entrepreneurs mail. And whether this is a

0:01:57.400 --> 0:02:01.760
<v Speaker 1>man entrepreneur or a woman entrepreneur, it's your choice. But

0:02:01.840 --> 0:02:04.480
<v Speaker 1>this entrepreneur gets a lot of mail, and you're to

0:02:04.600 --> 0:02:08.800
<v Speaker 1>forward anything important to the entrepreneur, and then you have

0:02:08.840 --> 0:02:13.600
<v Speaker 1>to handle everything else yourself. But this particular entrepreneur has

0:02:13.639 --> 0:02:16.160
<v Speaker 1>ticked off a lot of folks because they're so polarizing,

0:02:16.440 --> 0:02:19.000
<v Speaker 1>and some of those folks have decided that the best

0:02:19.000 --> 0:02:23.520
<v Speaker 1>way to respond is to send hate mail, like a

0:02:23.600 --> 0:02:27.200
<v Speaker 1>lot of hate mail, Like like one person hates this

0:02:27.560 --> 0:02:31.840
<v Speaker 1>entrepreneur so much that not only has this person written

0:02:31.840 --> 0:02:34.920
<v Speaker 1>a letter, but also went out to make hundreds or

0:02:35.040 --> 0:02:38.880
<v Speaker 1>thousands of copies of that hate letter and then mailed

0:02:39.240 --> 0:02:42.320
<v Speaker 1>all of those copies off to the entrepreneur. And your

0:02:42.400 --> 0:02:44.840
<v Speaker 1>job is to go through the mail. So you're spending

0:02:44.880 --> 0:02:48.320
<v Speaker 1>all of your time opening up envelopes and looking to

0:02:48.360 --> 0:02:50.400
<v Speaker 1>see if it's an important piece of mail or if

0:02:50.400 --> 0:02:53.160
<v Speaker 1>it's just another hate mail message. But you're smart, you

0:02:53.160 --> 0:02:55.120
<v Speaker 1>know you catch onto what's going on after you know

0:02:55.560 --> 0:02:58.320
<v Speaker 1>a couple of hours, so you realize, hey, I'll just

0:02:58.360 --> 0:03:01.360
<v Speaker 1>look at the return address because if it's from that person,

0:03:02.040 --> 0:03:04.600
<v Speaker 1>I know it's just hate mail. So I'll just toss

0:03:04.639 --> 0:03:07.640
<v Speaker 1>those letters aside, unopened. I already know what's inside of

0:03:07.639 --> 0:03:10.440
<v Speaker 1>it already. I'll stop wasting time, or at least as

0:03:10.520 --> 0:03:13.760
<v Speaker 1>much time. But then this person who hates your entrepreneur,

0:03:14.639 --> 0:03:18.240
<v Speaker 1>they begin to start sending these letters from different addresses,

0:03:18.760 --> 0:03:21.080
<v Speaker 1>So now you have to start making a list of

0:03:21.120 --> 0:03:23.560
<v Speaker 1>addresses that you should be on the lookout for. It's

0:03:23.600 --> 0:03:26.320
<v Speaker 1>not just this one now, it's a group of them.

0:03:26.360 --> 0:03:29.359
<v Speaker 1>Either this person is traveling around and sending mail, or

0:03:29.520 --> 0:03:32.320
<v Speaker 1>he or she is just making up addresses willy nilly.

0:03:32.360 --> 0:03:35.600
<v Speaker 1>Either way, it's making your job harder. So now you're

0:03:35.600 --> 0:03:37.240
<v Speaker 1>starting to keep a list every time you open a

0:03:37.240 --> 0:03:39.400
<v Speaker 1>piece of mail, you look in, Oh, it's another copy

0:03:39.440 --> 0:03:41.640
<v Speaker 1>that hate letter, but it's a new address. While just

0:03:41.680 --> 0:03:45.200
<v Speaker 1>add it to the list. Then this person goes a

0:03:45.240 --> 0:03:48.320
<v Speaker 1>step further and starts to recruit other people to send

0:03:48.400 --> 0:03:51.680
<v Speaker 1>more copies of the same hate letter to you, and

0:03:51.680 --> 0:03:55.560
<v Speaker 1>they're using other return addresses, and it's different types of

0:03:55.600 --> 0:03:58.440
<v Speaker 1>handwriting too, And now you're back to where you started.

0:03:58.600 --> 0:04:01.080
<v Speaker 1>Every piece of mail comes in, you don't know what's

0:04:01.120 --> 0:04:03.240
<v Speaker 1>inside it until you open it, and you spend that

0:04:03.280 --> 0:04:05.720
<v Speaker 1>time and effort doing it. Now, you could try to

0:04:05.800 --> 0:04:07.920
<v Speaker 1>keep an up to date list of all the bad

0:04:07.960 --> 0:04:11.200
<v Speaker 1>addresses out there, but that could get cumbersome really quickly,

0:04:11.280 --> 0:04:14.120
<v Speaker 1>and eventually that list might be so long that you're

0:04:14.160 --> 0:04:17.880
<v Speaker 1>unable to consult it efficiently. You are spending so much

0:04:17.920 --> 0:04:20.840
<v Speaker 1>time looking to see if a new letter is on

0:04:20.960 --> 0:04:24.119
<v Speaker 1>that list, and if a new return addresses on that list,

0:04:24.600 --> 0:04:26.440
<v Speaker 1>that you're just wasting more time than you would if

0:04:26.480 --> 0:04:29.120
<v Speaker 1>you opened it and looked in it anyway. Or maybe

0:04:29.440 --> 0:04:31.880
<v Speaker 1>some of those same people who have sent you hate

0:04:31.920 --> 0:04:36.080
<v Speaker 1>mail have other messages, really relevant ones that have been

0:04:36.120 --> 0:04:38.560
<v Speaker 1>sent in the mail, or maybe they used an address

0:04:38.560 --> 0:04:43.400
<v Speaker 1>from someone who is a relevant uh communicator, and your

0:04:43.440 --> 0:04:46.280
<v Speaker 1>boss might think it's really important, so you run the

0:04:46.360 --> 0:04:49.520
<v Speaker 1>risk of throwing away a legitimate message while trying to

0:04:49.560 --> 0:04:51.880
<v Speaker 1>get rid of all these fake ones. Well to a

0:04:51.920 --> 0:04:55.640
<v Speaker 1>targeted computer being on the receiving end of ADDOS attack

0:04:55.880 --> 0:04:59.719
<v Speaker 1>is kind of similar to this. An administrator might notice

0:04:59.839 --> 0:05:02.960
<v Speaker 1>the there's an unusual amount of traffic coming from a

0:05:02.960 --> 0:05:07.200
<v Speaker 1>specific IP address, and that that IP address appears to

0:05:07.279 --> 0:05:10.400
<v Speaker 1>be belonging to someone who's trying to bring down the

0:05:10.440 --> 0:05:13.400
<v Speaker 1>computer system, whatever it may be, and so they might

0:05:13.440 --> 0:05:16.680
<v Speaker 1>try and block that specific I P address from being

0:05:16.720 --> 0:05:19.360
<v Speaker 1>able to send messages to the server or the router

0:05:19.560 --> 0:05:23.880
<v Speaker 1>or whatever. But if it's an actual distributed denial of

0:05:23.960 --> 0:05:27.000
<v Speaker 1>service attack, the number of attacking machines could be in

0:05:27.000 --> 0:05:29.800
<v Speaker 1>the hundreds of thousands. So at some point you have

0:05:29.839 --> 0:05:32.680
<v Speaker 1>to worry that you're blocking legitimate traffic, that you're you

0:05:32.720 --> 0:05:35.800
<v Speaker 1>can't block everything, but then you can't be certain that

0:05:35.880 --> 0:05:39.240
<v Speaker 1>every You know that any given IP address isn't a

0:05:39.240 --> 0:05:42.160
<v Speaker 1>compromised one, so you might try to mitigate it by

0:05:42.240 --> 0:05:45.520
<v Speaker 1>rolling out a system whereby legitimate users are identified in

0:05:45.560 --> 0:05:48.880
<v Speaker 1>some way, So instead of trying to identify illegitimate users

0:05:48.920 --> 0:05:51.479
<v Speaker 1>like the ones that are coming from an attacker. You

0:05:52.120 --> 0:05:55.400
<v Speaker 1>roll out some new policy so that anyone who's making

0:05:55.480 --> 0:05:58.960
<v Speaker 1>legitimate use of your service has a particular marker associated

0:05:58.960 --> 0:06:01.600
<v Speaker 1>with them in some way. But then there's the possibility

0:06:01.640 --> 0:06:03.320
<v Speaker 1>that the bad guys figure this out and they just

0:06:03.360 --> 0:06:07.120
<v Speaker 1>disguise their own traffic as legit, which sets you right

0:06:07.120 --> 0:06:09.800
<v Speaker 1>back to square one again. So let's cover some of

0:06:09.800 --> 0:06:12.640
<v Speaker 1>the specific types of de dos attacks out there and

0:06:12.720 --> 0:06:15.840
<v Speaker 1>what they do. First. As I mentioned in the last episode,

0:06:16.080 --> 0:06:19.479
<v Speaker 1>you have volumetric attacks. These are the easiest to understand

0:06:19.520 --> 0:06:22.960
<v Speaker 1>and explain because it's all about overwhelming your target with

0:06:23.080 --> 0:06:27.719
<v Speaker 1>just messages. The target receives so many messages, so much data,

0:06:27.760 --> 0:06:30.080
<v Speaker 1>that it gets bogged down just trying to respond, which

0:06:30.120 --> 0:06:33.200
<v Speaker 1>slows down everything else and can even cause the system crash.

0:06:33.720 --> 0:06:35.840
<v Speaker 1>There are several different ways to do this. I mentioned

0:06:35.839 --> 0:06:38.640
<v Speaker 1>the ping flood in the last episode, but that's really

0:06:38.680 --> 0:06:42.200
<v Speaker 1>just one example. Some attackers might use a clever system

0:06:42.240 --> 0:06:45.880
<v Speaker 1>to not only increase their own effectiveness, but reduce the

0:06:45.960 --> 0:06:49.080
<v Speaker 1>chance that they would be identified or caught. So you

0:06:49.160 --> 0:06:51.360
<v Speaker 1>might remember in that last episode I talked about the

0:06:51.440 --> 0:06:55.039
<v Speaker 1>IP addresses and if there were no way to change

0:06:55.040 --> 0:06:58.440
<v Speaker 1>your IP address, carrying out an attack directly against a

0:06:58.480 --> 0:07:01.960
<v Speaker 1>target would be really dangerous. Like if my IP address

0:07:02.040 --> 0:07:06.080
<v Speaker 1>was was tied directly to my identity all the time,

0:07:06.680 --> 0:07:09.760
<v Speaker 1>then it would be crazy for me to make any

0:07:09.760 --> 0:07:12.720
<v Speaker 1>sort of attack against a prepared target because they would

0:07:12.800 --> 0:07:17.080
<v Speaker 1>know who who came from. But your target uh might

0:07:17.120 --> 0:07:20.080
<v Speaker 1>not be able to identify the attacker because there's a

0:07:20.080 --> 0:07:23.800
<v Speaker 1>technique called i P spoofing that gets around this. So

0:07:24.240 --> 0:07:27.240
<v Speaker 1>in i P spoofing, an attacker impersonates the user of

0:07:27.280 --> 0:07:32.520
<v Speaker 1>another machine by manipulating IP packet headers. Remember, data passes

0:07:32.600 --> 0:07:36.440
<v Speaker 1>over the Internet inside packets bundles of data called packets,

0:07:36.440 --> 0:07:40.280
<v Speaker 1>and each packet has a header that contains meta information,

0:07:40.320 --> 0:07:44.560
<v Speaker 1>including where the data supposedly originated from. So it's sort

0:07:44.560 --> 0:07:47.600
<v Speaker 1>of like writing down someone else's return address on a

0:07:47.680 --> 0:07:49.640
<v Speaker 1>letter before you send it off. When you do i

0:07:49.800 --> 0:07:53.960
<v Speaker 1>P spoofing, you're creating a fake or you're duplicating an

0:07:54.000 --> 0:07:56.800
<v Speaker 1>IP address, whatever, it's not one that belongs to you.

0:07:57.320 --> 0:08:00.680
<v Speaker 1>So someone looks at the incoming IP address, they don't

0:08:00.680 --> 0:08:03.840
<v Speaker 1>know for sure that the computer sending all that traffic

0:08:04.000 --> 0:08:06.840
<v Speaker 1>is the one that's actually identified in that address. Now,

0:08:06.880 --> 0:08:10.239
<v Speaker 1>i P spoofing is relatively simple in the grand scheme

0:08:10.280 --> 0:08:13.120
<v Speaker 1>of things, But clever hackers will even go further. Let's

0:08:13.120 --> 0:08:15.120
<v Speaker 1>say a hacker has managed to get control of a

0:08:15.200 --> 0:08:18.440
<v Speaker 1>large collection of compromise machines, also known as a boton neet.

0:08:18.560 --> 0:08:20.960
<v Speaker 1>The hacker plans to use the botton net to overwhelm

0:08:21.000 --> 0:08:23.840
<v Speaker 1>the target with a direct approach. The target might be

0:08:23.880 --> 0:08:26.240
<v Speaker 1>able to identify some of the machines belonging to this

0:08:26.320 --> 0:08:28.360
<v Speaker 1>boton net, but it would be much more difficult to

0:08:28.480 --> 0:08:31.120
<v Speaker 1>make the leap between the boton net and the hacker

0:08:31.160 --> 0:08:34.040
<v Speaker 1>who's actually pulling the strings. Right, you'd be able to

0:08:34.080 --> 0:08:36.440
<v Speaker 1>see the incoming traffics coming from all these machines, but

0:08:36.440 --> 0:08:39.640
<v Speaker 1>you wouldn't know who's who's actually behind it all. But wait,

0:08:39.760 --> 0:08:42.800
<v Speaker 1>you can get even more clever than that. So imagine

0:08:42.840 --> 0:08:45.439
<v Speaker 1>you have a hacker who has control of a bot net,

0:08:45.760 --> 0:08:48.000
<v Speaker 1>and the hacker wants to send a ton of messages

0:08:48.040 --> 0:08:51.160
<v Speaker 1>to a target web server. But instead of directing all

0:08:51.200 --> 0:08:55.079
<v Speaker 1>those compromise machines in a direct attack, instead of saying army,

0:08:55.280 --> 0:08:59.959
<v Speaker 1>go sick them, the hacker instead has the machines under

0:09:00.160 --> 0:09:04.800
<v Speaker 1>his or her control send messages to uninfected computers that

0:09:04.880 --> 0:09:07.840
<v Speaker 1>are not the target. So these are outside the button net,

0:09:08.000 --> 0:09:11.360
<v Speaker 1>and they also are not your ultimate target. In other words,

0:09:11.840 --> 0:09:16.120
<v Speaker 1>computers that are are just completely innocent, but the messages

0:09:16.160 --> 0:09:19.320
<v Speaker 1>that your button net is sending to these computers have

0:09:19.600 --> 0:09:23.360
<v Speaker 1>a spoofed IP address. Specifically, they have a spoofed IP

0:09:23.440 --> 0:09:25.480
<v Speaker 1>address that make it look like they all come from

0:09:25.520 --> 0:09:30.520
<v Speaker 1>the targeted computer. The innocent computers out there, thinking they

0:09:30.520 --> 0:09:33.960
<v Speaker 1>have just received a message from the target, respond because

0:09:34.040 --> 0:09:36.000
<v Speaker 1>that's the way the internet works. They say, hey, got

0:09:36.080 --> 0:09:38.520
<v Speaker 1>your message, what do you want? And then you have

0:09:38.600 --> 0:09:41.320
<v Speaker 1>this target computer, the one that the hackers wanted to

0:09:41.360 --> 0:09:44.439
<v Speaker 1>take down, starting to get hit by thousands or hundreds

0:09:44.480 --> 0:09:47.240
<v Speaker 1>of thousands of responses to a message it did not

0:09:47.600 --> 0:09:50.440
<v Speaker 1>send out. It's a bunch of people saying, hey, I

0:09:50.480 --> 0:09:52.480
<v Speaker 1>got your I got your text, and you're like, I

0:09:52.480 --> 0:09:54.599
<v Speaker 1>didn't send a text, except you're getting it from a

0:09:54.679 --> 0:09:58.240
<v Speaker 1>hundred thousand people all at once. These innocent computers are

0:09:58.280 --> 0:10:01.600
<v Speaker 1>called reflectors. They are refle electing this message back at

0:10:01.600 --> 0:10:05.240
<v Speaker 1>a target, and this makes finding the responsible hacker even

0:10:05.280 --> 0:10:08.760
<v Speaker 1>more challenging because when you do that first trace of

0:10:08.800 --> 0:10:12.079
<v Speaker 1>the message back to the individual machines, they are all

0:10:12.160 --> 0:10:14.880
<v Speaker 1>uninfected devices. They're not part of that bot net To

0:10:14.920 --> 0:10:17.520
<v Speaker 1>begin with, all they did was respond to a computer

0:10:17.640 --> 0:10:21.400
<v Speaker 1>they thought had messaged them. It's evil, I tells you evil.

0:10:22.400 --> 0:10:26.520
<v Speaker 1>But again, these are all variations on volumetric attacks. There

0:10:26.520 --> 0:10:29.600
<v Speaker 1>are other approaches as well. For example, there are TCP

0:10:29.880 --> 0:10:35.080
<v Speaker 1>state exhaustion attacks. What the what? Well that requires some explanation.

0:10:35.360 --> 0:10:39.760
<v Speaker 1>TCP stands for Transmission Control Protocol, and with the Internet Protocol,

0:10:40.000 --> 0:10:41.920
<v Speaker 1>it is one of the main sets of rules that

0:10:42.000 --> 0:10:46.439
<v Speaker 1>determine how computers communicate across the Internet. Internet protocol is

0:10:46.480 --> 0:10:48.840
<v Speaker 1>all about making sure data gets from one point to

0:10:48.880 --> 0:10:52.640
<v Speaker 1>another in bundles of data packets, and Transmission Control Protocol

0:10:52.679 --> 0:10:55.240
<v Speaker 1>is more about making sure all that data gets reassembled

0:10:55.280 --> 0:10:58.120
<v Speaker 1>properly and that none of it goes missing. So it's

0:10:58.160 --> 0:11:00.520
<v Speaker 1>a set of rules that checks to make sure messages

0:11:00.559 --> 0:11:04.439
<v Speaker 1>being sent across the Internet our whole and properly reassembled.

0:11:05.120 --> 0:11:08.720
<v Speaker 1>During a communication between devices on the Internet, TCP goes

0:11:08.760 --> 0:11:13.719
<v Speaker 1>through numerous states or phases. Elements on networks, such as

0:11:13.840 --> 0:11:16.920
<v Speaker 1>load balancers, which help make sure traffic on the Internet

0:11:17.040 --> 0:11:20.960
<v Speaker 1>is balanced properly. It's it's no one section of the

0:11:21.000 --> 0:11:24.320
<v Speaker 1>network is getting too much traffic and getting congested. It

0:11:24.400 --> 0:11:26.880
<v Speaker 1>helps move some of that traffic around. To keep things

0:11:27.200 --> 0:11:31.800
<v Speaker 1>nice and efficient, have what are called connection state tables,

0:11:31.880 --> 0:11:35.760
<v Speaker 1>and these tables include information about every single connection going

0:11:35.840 --> 0:11:40.000
<v Speaker 1>through that point. Information includes the source address for the connection,

0:11:40.400 --> 0:11:44.240
<v Speaker 1>the port used by that source, the destination address, and

0:11:44.280 --> 0:11:46.680
<v Speaker 1>the port that the destination is using for the and

0:11:46.760 --> 0:11:49.719
<v Speaker 1>also the connection state such as whether it's an established

0:11:49.760 --> 0:11:53.720
<v Speaker 1>connection or not. A TCP state exhaustion attack attempts to

0:11:53.760 --> 0:11:57.040
<v Speaker 1>fill up those tables with garbage traffic in an effort

0:11:57.040 --> 0:12:00.120
<v Speaker 1>to overload the system, whether it might be a firewall

0:12:00.200 --> 0:12:03.040
<v Speaker 1>or a load balancer or some other component. And then

0:12:03.040 --> 0:12:06.640
<v Speaker 1>there are application layer attacks. These are the most complicated

0:12:06.640 --> 0:12:09.320
<v Speaker 1>to explain, and so I'll go into further detail in

0:12:09.400 --> 0:12:12.040
<v Speaker 1>just a moment. But first, how might I take a

0:12:12.160 --> 0:12:23.000
<v Speaker 1>quick break to thank our sponsor. Okay, what is an

0:12:23.040 --> 0:12:27.400
<v Speaker 1>application layer attack? Well, they focus on the application or

0:12:27.600 --> 0:12:30.200
<v Speaker 1>service at layer seven, but that's not really helpful if

0:12:30.240 --> 0:12:32.679
<v Speaker 1>you don't know about layers. So let's talk about that.

0:12:32.960 --> 0:12:35.319
<v Speaker 1>And as I said in the last episode back in November,

0:12:36.280 --> 0:12:38.760
<v Speaker 1>I did an episode title Dip into the Seven Layers

0:12:38.760 --> 0:12:41.960
<v Speaker 1>of the OSI model. The OSI model is a conceptual

0:12:42.120 --> 0:12:45.440
<v Speaker 1>model to help describe the various communications functions in a

0:12:45.480 --> 0:12:48.560
<v Speaker 1>telecommunication system, and it's really just a way for us

0:12:48.600 --> 0:12:51.040
<v Speaker 1>to think about all the different elements that work together

0:12:51.440 --> 0:12:55.079
<v Speaker 1>to allow for the complex communication we can do over networks.

0:12:55.559 --> 0:12:59.360
<v Speaker 1>They do not refer to actual physical layers so much,

0:12:59.760 --> 0:13:03.160
<v Speaker 1>even though each layer serves all layers above it and

0:13:03.360 --> 0:13:06.800
<v Speaker 1>is served by all layers below it. Layer seven is

0:13:06.840 --> 0:13:09.960
<v Speaker 1>the topmost layer, meaning it does not serve any other

0:13:10.080 --> 0:13:12.920
<v Speaker 1>layers because it's at the top of the heat, but

0:13:13.000 --> 0:13:15.559
<v Speaker 1>it is served by all the layers that are underneath.

0:13:15.960 --> 0:13:18.240
<v Speaker 1>So let's go from the bottom and work our way up.

0:13:18.520 --> 0:13:21.079
<v Speaker 1>At layer one, you have the physical layer that consists

0:13:21.080 --> 0:13:25.640
<v Speaker 1>of the actual physical specifications of data connections, whether they're electrical, optical,

0:13:25.760 --> 0:13:29.480
<v Speaker 1>or whatever, and the processes associated with them. Layer two

0:13:29.600 --> 0:13:32.000
<v Speaker 1>is the data link layer, which is a direct link

0:13:32.040 --> 0:13:37.320
<v Speaker 1>between any two nodes, so you've got two computing devices

0:13:37.360 --> 0:13:40.440
<v Speaker 1>on the same network. Layer two is that direct link.

0:13:40.840 --> 0:13:44.040
<v Speaker 1>Layer three is the network layers, so this goes one

0:13:44.080 --> 0:13:47.640
<v Speaker 1>step beyond having a direct link between two computers. This

0:13:47.720 --> 0:13:50.920
<v Speaker 1>includes both the process any functional means to send data

0:13:50.960 --> 0:13:54.920
<v Speaker 1>across two nodes in separate but connected networks. Layer four

0:13:55.000 --> 0:13:58.319
<v Speaker 1>is the transport layer, which allows for the communication between

0:13:58.400 --> 0:14:02.720
<v Speaker 1>processes running on different hosts on different networks, so you

0:14:02.800 --> 0:14:06.800
<v Speaker 1>go from the computers being connected across different networks to

0:14:06.880 --> 0:14:10.760
<v Speaker 1>the processes running on computers being connected through different networks.

0:14:10.760 --> 0:14:13.240
<v Speaker 1>This gets a little confusing because it sounds a bit

0:14:13.320 --> 0:14:15.960
<v Speaker 1>like layer three, but think about Layer three is allowing

0:14:16.000 --> 0:14:18.600
<v Speaker 1>for the connection between the machines, and layer four goes

0:14:18.640 --> 0:14:22.280
<v Speaker 1>a step further and allows actual programs or processes running

0:14:22.320 --> 0:14:25.520
<v Speaker 1>on those machines to communicate with each other. Layer five

0:14:25.760 --> 0:14:29.160
<v Speaker 1>is the session layer that creates the actual communication channels

0:14:29.200 --> 0:14:32.800
<v Speaker 1>between computers, and it's all about actually establishing, maintaining, and

0:14:32.920 --> 0:14:37.520
<v Speaker 1>terminating communication sessions. Layer six is the presentation layer, which

0:14:37.560 --> 0:14:39.800
<v Speaker 1>is kind of like a translator, so it handles stuff

0:14:39.840 --> 0:14:43.640
<v Speaker 1>like encryption and decryption of data being sent or received

0:14:43.680 --> 0:14:46.800
<v Speaker 1>from a network. It's usually part of an operating system.

0:14:47.000 --> 0:14:50.200
<v Speaker 1>And then we get the layer seven, the application layer. Now,

0:14:50.440 --> 0:14:53.040
<v Speaker 1>the name could be a little misleading, as the application

0:14:53.120 --> 0:14:57.520
<v Speaker 1>layer does not actually include the applications themselves. Instead, it

0:14:57.560 --> 0:15:01.000
<v Speaker 1>includes the services that applications can access when they need

0:15:01.040 --> 0:15:04.000
<v Speaker 1>to send data or to receive data from a network.

0:15:04.600 --> 0:15:07.440
<v Speaker 1>Applications can include any kind of software, so a web

0:15:07.480 --> 0:15:10.680
<v Speaker 1>browser is a type of application, but the browser itself

0:15:10.800 --> 0:15:14.120
<v Speaker 1>is not part of layer seven. Instead, the web browser

0:15:14.160 --> 0:15:18.080
<v Speaker 1>taps into these services offered by layer seven whenever it

0:15:18.080 --> 0:15:20.680
<v Speaker 1>needs to communicate with a network, such as when you

0:15:20.760 --> 0:15:23.240
<v Speaker 1>need to click on a link in a web page,

0:15:23.640 --> 0:15:28.160
<v Speaker 1>and that way it sends that message through Layer seven

0:15:28.440 --> 0:15:31.360
<v Speaker 1>further down the stack, so that I can go out

0:15:31.560 --> 0:15:34.680
<v Speaker 1>and actually retrieve the information and come back up and

0:15:34.720 --> 0:15:38.200
<v Speaker 1>then be displayed in your web browser. At this top

0:15:38.280 --> 0:15:41.200
<v Speaker 1>layer of the OSI model you have the processes that

0:15:41.280 --> 0:15:44.800
<v Speaker 1>handle some of the most common Internet requests, such as

0:15:44.960 --> 0:15:48.760
<v Speaker 1>um will HTTP get an h T t P post.

0:15:49.520 --> 0:15:52.800
<v Speaker 1>Get and post are two of the most common commands

0:15:53.120 --> 0:15:56.640
<v Speaker 1>common requests that go across the Internet. So what the

0:15:56.640 --> 0:15:59.000
<v Speaker 1>heck are those? Well? First of all, h T t

0:15:59.120 --> 0:16:03.080
<v Speaker 1>P stands for Hypertext Transfer Protocol. This is the set

0:16:03.120 --> 0:16:06.000
<v Speaker 1>of rules designed to make it possible for client computers

0:16:06.200 --> 0:16:10.720
<v Speaker 1>to communicate with server computers across the Internet. HTTP works

0:16:10.840 --> 0:16:15.080
<v Speaker 1>as a request response protocol, so sticking with web browsers,

0:16:15.320 --> 0:16:17.760
<v Speaker 1>a simple example is when you type in a U

0:16:17.880 --> 0:16:20.440
<v Speaker 1>r L to your web browsers address bar, your web

0:16:20.480 --> 0:16:23.920
<v Speaker 1>browser makes this, takes this information, it interprets it as

0:16:23.920 --> 0:16:27.240
<v Speaker 1>a request, sends that request out to the Internet, which

0:16:27.280 --> 0:16:30.800
<v Speaker 1>relays the request to the appropriate server computer that hosts

0:16:30.840 --> 0:16:33.480
<v Speaker 1>the website you want to see. The server returns a

0:16:33.560 --> 0:16:36.320
<v Speaker 1>response to your web browser, which hopefully contains the web

0:16:36.400 --> 0:16:40.360
<v Speaker 1>page you wanted in the first place. HTTP get is

0:16:40.360 --> 0:16:43.120
<v Speaker 1>pretty much what sounds like. It's a request to get

0:16:43.280 --> 0:16:47.600
<v Speaker 1>data from a specific resource. The get request is used

0:16:47.600 --> 0:16:51.800
<v Speaker 1>to ask for data, but it does not modify data. POST,

0:16:51.880 --> 0:16:55.120
<v Speaker 1>on the other hand, is used to send data to

0:16:55.520 --> 0:16:59.320
<v Speaker 1>a server, typically to update or to create a resource

0:16:59.560 --> 0:17:03.440
<v Speaker 1>on that server. Now, these attacks don't require the same

0:17:03.840 --> 0:17:08.080
<v Speaker 1>bandwidth as a volumetric approach, so remember volumetric is where

0:17:08.080 --> 0:17:12.159
<v Speaker 1>you're trying to get as many different UH in incoming

0:17:12.200 --> 0:17:16.000
<v Speaker 1>messages to flood a a recipient as you possibly can,

0:17:16.040 --> 0:17:19.239
<v Speaker 1>which means you're taking up a lot of bandwidth in

0:17:19.280 --> 0:17:21.520
<v Speaker 1>the In this kind of application layer approach, you don't

0:17:21.560 --> 0:17:23.720
<v Speaker 1>have to do that as much if you're trying to

0:17:23.800 --> 0:17:27.560
<v Speaker 1>overload a specific computer UH. With the application layer, you

0:17:27.600 --> 0:17:31.919
<v Speaker 1>rely less on data being sent from the attacker to

0:17:31.960 --> 0:17:35.080
<v Speaker 1>the target and more about the actual request because the

0:17:35.119 --> 0:17:38.080
<v Speaker 1>target has to do more work with a layer seven

0:17:38.119 --> 0:17:41.200
<v Speaker 1>attack than a network level attack. On network level, we're

0:17:41.240 --> 0:17:44.240
<v Speaker 1>just talking about the underlying infrastructure having to deal with traffic.

0:17:44.760 --> 0:17:47.280
<v Speaker 1>But at the application layer, we're talking about the target

0:17:47.320 --> 0:17:51.199
<v Speaker 1>computer having to actually do something. It has to reference something,

0:17:51.240 --> 0:17:54.400
<v Speaker 1>which is easier to understand if we use a specific example.

0:17:54.480 --> 0:17:56.719
<v Speaker 1>So let's say I want to target a web based

0:17:56.840 --> 0:18:00.400
<v Speaker 1>email service, and so I create an attack that will

0:18:00.400 --> 0:18:03.280
<v Speaker 1>make a relatively small botton net send a series of

0:18:03.359 --> 0:18:06.560
<v Speaker 1>login requests to the to the web mail service. So

0:18:07.040 --> 0:18:10.280
<v Speaker 1>it's as if all these different zombie computers are coming

0:18:10.280 --> 0:18:12.639
<v Speaker 1>to this service and saying, Hey, I've got an email

0:18:12.640 --> 0:18:15.760
<v Speaker 1>account with you, guys, here's my log in, here's my password,

0:18:15.800 --> 0:18:18.200
<v Speaker 1>give me access to that email. Each time the service

0:18:18.240 --> 0:18:21.120
<v Speaker 1>receives one of these requests, it has to reference its

0:18:21.160 --> 0:18:26.320
<v Speaker 1>system to verify the login credentials and either allow access

0:18:26.440 --> 0:18:29.399
<v Speaker 1>or deny the request, probably denying. They're probably sending a

0:18:29.400 --> 0:18:33.080
<v Speaker 1>lot of bogus login requests that this still requires the

0:18:33.160 --> 0:18:37.640
<v Speaker 1>system to reference its database every single time. It has

0:18:37.680 --> 0:18:40.960
<v Speaker 1>to verify whether or not that's a legitimate request to

0:18:41.040 --> 0:18:43.480
<v Speaker 1>get access to email. Then it has to send a

0:18:43.520 --> 0:18:46.520
<v Speaker 1>response to the requesting computer. So think of a time

0:18:46.560 --> 0:18:48.879
<v Speaker 1>when you went to log into a service but you

0:18:49.000 --> 0:18:51.679
<v Speaker 1>typed in the wrong password, and typically you would get

0:18:51.680 --> 0:18:54.000
<v Speaker 1>a message that would say, hey, dude, that's tot's not

0:18:54.080 --> 0:18:56.280
<v Speaker 1>what you set up when you made your account, but

0:18:56.520 --> 0:18:59.399
<v Speaker 1>that requires resources from the server. It actually has to

0:18:59.480 --> 0:19:02.239
<v Speaker 1>reference to log in against its table of data and

0:19:02.240 --> 0:19:05.679
<v Speaker 1>then send that appropriate response. A d DOS attack that

0:19:05.800 --> 0:19:08.679
<v Speaker 1>aims at this layer can quickly overwhelm the target. An

0:19:08.680 --> 0:19:11.399
<v Speaker 1>attacker can use an h T t P flood attack,

0:19:11.960 --> 0:19:15.040
<v Speaker 1>which might seem to be legitimate on the surface, but

0:19:15.080 --> 0:19:18.320
<v Speaker 1>in reality is a botton net attack using HTTP request

0:19:18.440 --> 0:19:22.200
<v Speaker 1>to bog down the target computer and take services offline

0:19:22.359 --> 0:19:25.119
<v Speaker 1>or at the very least slow everything down big time.

0:19:25.560 --> 0:19:28.240
<v Speaker 1>All right, So now let's get into a rundown of

0:19:28.320 --> 0:19:31.600
<v Speaker 1>some specific types of d DOS attacks. Now I'm not

0:19:31.600 --> 0:19:33.240
<v Speaker 1>going to go through all of them because some of

0:19:33.240 --> 0:19:36.199
<v Speaker 1>them require a much more involved explanation of what's going on,

0:19:36.280 --> 0:19:38.720
<v Speaker 1>and we'll get bogged down in some pretty dry material

0:19:38.760 --> 0:19:42.520
<v Speaker 1>about protocols and network architecture. But at layer three, that

0:19:42.600 --> 0:19:45.840
<v Speaker 1>network layer, you've got that ping flood that I mentioned earlier.

0:19:45.840 --> 0:19:49.119
<v Speaker 1>It's also called an ic MP flood attack. That was

0:19:49.160 --> 0:19:51.440
<v Speaker 1>what I talked about in that last episode. And you've

0:19:51.480 --> 0:19:55.240
<v Speaker 1>also got the i P slash i c MP fragmentation

0:19:55.440 --> 0:19:59.240
<v Speaker 1>style of attacks that requires a quick bit of explanation. Now,

0:19:59.240 --> 0:20:01.720
<v Speaker 1>remember when I say we send data over the Internet

0:20:01.800 --> 0:20:04.680
<v Speaker 1>using packets, we bundle it together in packets. Well, you

0:20:04.760 --> 0:20:07.040
<v Speaker 1>might have noticed I did not mention how much data

0:20:07.080 --> 0:20:09.960
<v Speaker 1>a packet can actually hold, which is because different networks

0:20:10.000 --> 0:20:14.080
<v Speaker 1>can handle different sizes of packets. The maximum sized packet

0:20:14.119 --> 0:20:18.040
<v Speaker 1>a particular network can handle is called that network's maximum

0:20:18.080 --> 0:20:23.240
<v Speaker 1>transmission unit, or MTU. If a packet is larger than

0:20:23.320 --> 0:20:26.679
<v Speaker 1>the networks MTU, it has to be broken apart, has

0:20:26.720 --> 0:20:30.920
<v Speaker 1>to be fragmented into smaller bundles of data. But only

0:20:30.960 --> 0:20:33.680
<v Speaker 1>the first fragment of the data packet has the layer

0:20:33.800 --> 0:20:38.359
<v Speaker 1>for information within that packets header. All subsequent fragments, however

0:20:38.400 --> 0:20:41.960
<v Speaker 1>many there may be, could be one of fifty. They

0:20:42.119 --> 0:20:44.640
<v Speaker 1>do not have that information in their headers, and that's

0:20:44.640 --> 0:20:48.240
<v Speaker 1>something an attacker can exploit. In a volumetric attack, there

0:20:48.240 --> 0:20:51.200
<v Speaker 1>are attacks that aim at the fourth layer, that transmission layer.

0:20:51.280 --> 0:20:55.560
<v Speaker 1>For example, there's the User Datagram Protocol flood attack. This

0:20:55.800 --> 0:20:59.080
<v Speaker 1>set of rules allows applications to send messages to a

0:20:59.119 --> 0:21:02.560
<v Speaker 1>networked host on an IP network, and the attacker used

0:21:02.840 --> 0:21:06.760
<v Speaker 1>uses a a spoofed source address to pose as the

0:21:06.800 --> 0:21:12.280
<v Speaker 1>target computers. So the attackers actually using this spoof to

0:21:12.400 --> 0:21:15.720
<v Speaker 1>appear to be the actual target, and then the attacker

0:21:15.840 --> 0:21:18.280
<v Speaker 1>sends out what is called a u d P request

0:21:18.400 --> 0:21:22.920
<v Speaker 1>to a ton of different computers on different random ports. Now,

0:21:22.960 --> 0:21:26.280
<v Speaker 1>those computers received this u DP request, and then they

0:21:26.400 --> 0:21:29.919
<v Speaker 1>look for an application that would be located on the

0:21:29.960 --> 0:21:33.960
<v Speaker 1>respective port that was associated with that request, and most

0:21:33.960 --> 0:21:35.879
<v Speaker 1>of the time there's not gonna be any sort of

0:21:35.920 --> 0:21:39.560
<v Speaker 1>application on that port, and so the computer sends off

0:21:39.600 --> 0:21:43.040
<v Speaker 1>a quick response that essentially says, hey buddy, sorry, but

0:21:43.119 --> 0:21:46.439
<v Speaker 1>there's no application in that port. Better luck next time. Except,

0:21:46.480 --> 0:21:50.080
<v Speaker 1>as I mentioned, the hacker spoofed their address to make

0:21:50.080 --> 0:21:52.520
<v Speaker 1>it look like they were sending this from whatever the

0:21:52.560 --> 0:21:56.320
<v Speaker 1>target computer is, So then the target computer starts getting

0:21:56.320 --> 0:21:59.000
<v Speaker 1>these messages, all these messages saying, hey buddy, I'm sorry,

0:21:59.040 --> 0:22:02.080
<v Speaker 1>but there aren't any applications in that port. Better like

0:22:02.240 --> 0:22:04.600
<v Speaker 1>next time. And if you've ever had your phone number

0:22:04.640 --> 0:22:07.640
<v Speaker 1>spoofed by some jerk and then started to receive angry

0:22:07.640 --> 0:22:10.320
<v Speaker 1>calls as a result, you know what this is like. Now,

0:22:10.359 --> 0:22:12.280
<v Speaker 1>I've never had that happen on my personal number, but

0:22:12.320 --> 0:22:15.000
<v Speaker 1>I actually once worked for a company that had its

0:22:15.040 --> 0:22:18.080
<v Speaker 1>main phone number spoofed by someone who was using a

0:22:18.080 --> 0:22:21.240
<v Speaker 1>fax machine, and this poor woman was getting phone calls

0:22:21.600 --> 0:22:23.359
<v Speaker 1>and she would pick up the phone and it would

0:22:23.359 --> 0:22:25.320
<v Speaker 1>clearly be a fax machine. It would be making that

0:22:25.400 --> 0:22:28.520
<v Speaker 1>terrible fax machine noise. But the telephone number that was

0:22:28.560 --> 0:22:32.280
<v Speaker 1>on her color I D was our telephone number, which

0:22:32.280 --> 0:22:35.600
<v Speaker 1>clearly wasn't coming from us. I mean, I was there.

0:22:35.720 --> 0:22:38.639
<v Speaker 1>I knew we weren't faxing her. So someone was actually

0:22:38.680 --> 0:22:41.320
<v Speaker 1>spoofing our phone number. She was justifiably getting sick and

0:22:41.320 --> 0:22:42.880
<v Speaker 1>tired of it, so she would call us and yell

0:22:42.960 --> 0:22:45.280
<v Speaker 1>at us, But we weren't actually doing anything. There was

0:22:45.320 --> 0:22:48.000
<v Speaker 1>nothing we could do. We there was someone else out

0:22:48.040 --> 0:22:50.600
<v Speaker 1>there spoofing our number. Well, hackers do that same thing

0:22:51.200 --> 0:22:54.199
<v Speaker 1>on purpose with IP addresses, and in this way you

0:22:54.240 --> 0:22:57.400
<v Speaker 1>have all these innocent computers responding to what they interpret

0:22:57.560 --> 0:23:01.560
<v Speaker 1>as a legitimate request, flooding target computer with messages. As

0:23:01.560 --> 0:23:04.680
<v Speaker 1>a result, there's another attack called the t C P

0:23:05.240 --> 0:23:08.120
<v Speaker 1>S Y N flood that's pretty ugly, And this attack,

0:23:08.240 --> 0:23:11.959
<v Speaker 1>the hacker engages all of a target servers communication ports

0:23:12.000 --> 0:23:15.320
<v Speaker 1>with a communication request that never completes the process to

0:23:15.480 --> 0:23:19.200
<v Speaker 1>establish a connection, which means the status is left half open.

0:23:19.600 --> 0:23:23.000
<v Speaker 1>So the process is called a handshake, and there should

0:23:23.000 --> 0:23:25.760
<v Speaker 1>be a three way handshake between a client and a

0:23:25.760 --> 0:23:30.760
<v Speaker 1>server that establishes communications, but this attack stops the handshake

0:23:30.880 --> 0:23:35.520
<v Speaker 1>halfway through. So every communication port gets engaged with one

0:23:35.560 --> 0:23:39.600
<v Speaker 1>of these requests, but it's never the request is never completed,

0:23:40.000 --> 0:23:42.320
<v Speaker 1>so it all gets gummed up with a half finished

0:23:42.320 --> 0:23:45.159
<v Speaker 1>handshake process and nothing can go through, Which makes me

0:23:45.200 --> 0:23:47.520
<v Speaker 1>think of those phone operators who have a rule that

0:23:47.560 --> 0:23:49.719
<v Speaker 1>states they can't be the first person to hang up

0:23:49.760 --> 0:23:51.920
<v Speaker 1>on a phone call. So if they call you and

0:23:51.960 --> 0:23:55.119
<v Speaker 1>they're following the rules, you can complete a conversation and

0:23:55.160 --> 0:23:57.600
<v Speaker 1>then you can just hold them there because they're not

0:23:57.640 --> 0:24:00.680
<v Speaker 1>allowed to hang up on you. That'll show them no,

0:24:00.880 --> 0:24:03.040
<v Speaker 1>don't do that. Those those folks, they're they're just doing

0:24:03.080 --> 0:24:06.560
<v Speaker 1>their job. Any attack that involves a request for a

0:24:06.640 --> 0:24:10.200
<v Speaker 1>secure session, such as logging into an account, falls into

0:24:10.200 --> 0:24:14.239
<v Speaker 1>the category of an s s L exhaustion attack. This

0:24:14.320 --> 0:24:15.879
<v Speaker 1>is one of those that requires the target to do

0:24:15.920 --> 0:24:18.040
<v Speaker 1>a lot of work and so it requires less traffic

0:24:18.080 --> 0:24:21.879
<v Speaker 1>to actually overtax the target. Or how about a slow

0:24:21.960 --> 0:24:25.440
<v Speaker 1>Loris attack named after the animal. This one is also

0:24:25.560 --> 0:24:28.600
<v Speaker 1>kind of ingenious. So the attacker sends out an h

0:24:28.720 --> 0:24:32.320
<v Speaker 1>T t P request in chunks to a target web server.

0:24:32.640 --> 0:24:36.280
<v Speaker 1>Now the server cannot complete this request until it gets

0:24:36.359 --> 0:24:40.000
<v Speaker 1>all of the chunks. To protect against this breaking, the

0:24:40.040 --> 0:24:43.440
<v Speaker 1>Internet servers have a time out feature, so if they

0:24:43.440 --> 0:24:46.520
<v Speaker 1>don't get the next chunk within a set amount of time,

0:24:47.040 --> 0:24:50.000
<v Speaker 1>it will time out, and then that that session will

0:24:50.000 --> 0:24:53.520
<v Speaker 1>be closed. So the slow Loris attack is a balancing act.

0:24:53.720 --> 0:24:55.920
<v Speaker 1>It's all about sending those chunks of an h t

0:24:56.040 --> 0:25:00.320
<v Speaker 1>t P request header to a target server, just asked

0:25:00.400 --> 0:25:04.160
<v Speaker 1>enough to not trigger the time out request, so as

0:25:04.200 --> 0:25:07.000
<v Speaker 1>the server is about to give up, it receives the

0:25:07.040 --> 0:25:10.159
<v Speaker 1>next chunk, and then the time out counter resets, and

0:25:10.200 --> 0:25:13.000
<v Speaker 1>the attacker aims to come up every communication port on

0:25:13.040 --> 0:25:15.879
<v Speaker 1>the server with those style requests, which clogs up the

0:25:15.920 --> 0:25:20.480
<v Speaker 1>communication system and prevents legitimate users from accessing the server. Now,

0:25:20.480 --> 0:25:22.959
<v Speaker 1>there are tons of other variants, but you get the idea.

0:25:23.160 --> 0:25:25.919
<v Speaker 1>All these strategies aim at the same goal, forcing the

0:25:25.960 --> 0:25:29.880
<v Speaker 1>target to focus on handling meaningless tasks at the expense

0:25:29.920 --> 0:25:32.080
<v Speaker 1>of what it is supposed to be doing. Kind Of

0:25:32.080 --> 0:25:34.960
<v Speaker 1>feel the same way with notifications while I'm working, whether

0:25:35.000 --> 0:25:38.480
<v Speaker 1>it's emails, Slack, base Camp, instant messages, whatever I feel

0:25:38.480 --> 0:25:40.359
<v Speaker 1>they're meant to pull my focus away from what I

0:25:40.359 --> 0:25:43.240
<v Speaker 1>should be doing, which we all know is beating tari

0:25:43.359 --> 0:25:45.440
<v Speaker 1>at pub G, and I will do it one day

0:25:45.600 --> 0:25:47.840
<v Speaker 1>when we come back, we'll talk about some of the

0:25:47.840 --> 0:25:59.320
<v Speaker 1>strategies people employ to defend against de dos attacks. So

0:25:59.359 --> 0:26:02.720
<v Speaker 1>the first step to defending against an attack is knowing

0:26:02.800 --> 0:26:05.920
<v Speaker 1>that an attack is actually happening. This is actually pretty

0:26:05.960 --> 0:26:08.320
<v Speaker 1>darn tricky because you have to be able to discern

0:26:08.359 --> 0:26:12.560
<v Speaker 1>between what is unusually heavy but legit legitimate traffic and

0:26:12.600 --> 0:26:16.000
<v Speaker 1>an outright de dos attack. So an important defense element

0:26:16.080 --> 0:26:19.600
<v Speaker 1>is the ability to detect anomalies, so outliers that go

0:26:19.720 --> 0:26:22.640
<v Speaker 1>beyond what you would typically see in your network traffic.

0:26:23.080 --> 0:26:25.919
<v Speaker 1>To do that, you first have to establish what is

0:26:26.119 --> 0:26:28.399
<v Speaker 1>the norm for your network. You have to know what

0:26:28.440 --> 0:26:31.639
<v Speaker 1>the baseline is, So you've got to figure out what

0:26:31.720 --> 0:26:34.439
<v Speaker 1>was the baseline for bandwidth usage for example, what do

0:26:34.480 --> 0:26:37.040
<v Speaker 1>you typically see across your network at different times of

0:26:37.040 --> 0:26:41.040
<v Speaker 1>the day, or CPU utilization or things like that. And

0:26:41.080 --> 0:26:44.280
<v Speaker 1>once you establish those baselines, then you can keep an

0:26:44.280 --> 0:26:47.800
<v Speaker 1>eye out for situations that exceed your baseline activity to

0:26:47.880 --> 0:26:51.320
<v Speaker 1>a level that could indicate a potential attack is happening,

0:26:51.359 --> 0:26:54.399
<v Speaker 1>and then you can take a closer look. Another step

0:26:54.840 --> 0:26:58.080
<v Speaker 1>is monitoring the actual traffic going across the network. Now,

0:26:58.119 --> 0:27:01.600
<v Speaker 1>I don't necessarily mean spying on data, although there are

0:27:01.680 --> 0:27:05.159
<v Speaker 1>companies that do recommend doing exactly that and taking a

0:27:05.200 --> 0:27:09.360
<v Speaker 1>peek inside of packets to make sure that they are legitimate. Um,

0:27:09.400 --> 0:27:12.920
<v Speaker 1>I'm a little I'm of a divided mind on that,

0:27:13.080 --> 0:27:16.040
<v Speaker 1>because on the one hand, it's a valuable tool if

0:27:16.080 --> 0:27:19.160
<v Speaker 1>you want to make sure that traffic is actually legitimate

0:27:19.200 --> 0:27:22.639
<v Speaker 1>and not, you know, part of an attack. But on

0:27:22.720 --> 0:27:25.200
<v Speaker 1>the other hand, I also don't like the idea of

0:27:25.240 --> 0:27:28.840
<v Speaker 1>people peeking into packets because that's not the way the

0:27:28.880 --> 0:27:32.639
<v Speaker 1>Internet is supposed to work anyway. The method I'm talking

0:27:32.680 --> 0:27:35.600
<v Speaker 1>about here doesn't actually tell you anything that's going on

0:27:35.840 --> 0:27:38.960
<v Speaker 1>inside the data packets. Instead, you would be able to

0:27:38.960 --> 0:27:41.920
<v Speaker 1>see things in terms like the number of packets traveling

0:27:41.960 --> 0:27:45.720
<v Speaker 1>across your network and where those packets originate. So you

0:27:45.720 --> 0:27:49.320
<v Speaker 1>would get information from the header of the packets, but

0:27:49.480 --> 0:27:52.119
<v Speaker 1>not from the internal part of the packet, so you

0:27:52.119 --> 0:27:55.200
<v Speaker 1>would know where the packet was supposed to go, where

0:27:55.240 --> 0:27:57.880
<v Speaker 1>it was coming from. And it doesn't give you any

0:27:57.880 --> 0:28:00.800
<v Speaker 1>information about what the packets actually represent. It just tells

0:28:00.840 --> 0:28:03.399
<v Speaker 1>you which I P addresses are or appear to be

0:28:03.680 --> 0:28:07.880
<v Speaker 1>sending information to a server or machine on your network.

0:28:08.359 --> 0:28:11.879
<v Speaker 1>If you've detected an abnormality and network traffic, and then

0:28:11.920 --> 0:28:14.000
<v Speaker 1>you use a tool like that to see where the

0:28:14.040 --> 0:28:16.480
<v Speaker 1>traffic is going, you might be able to suss out

0:28:16.560 --> 0:28:19.439
<v Speaker 1>an attempt to create a U d P flood attack,

0:28:19.520 --> 0:28:21.840
<v Speaker 1>for example. If you do that, you can take the

0:28:21.880 --> 0:28:24.640
<v Speaker 1>next steps to try and stop it. If you determine

0:28:24.640 --> 0:28:28.119
<v Speaker 1>that some of that traffic is in fact malicious, you

0:28:28.119 --> 0:28:31.960
<v Speaker 1>can set a firewall to block traffic from that I

0:28:32.080 --> 0:28:35.919
<v Speaker 1>P address or those addresses if it's a distributed denial

0:28:35.960 --> 0:28:39.440
<v Speaker 1>of service attack. So a firewall is a network security system.

0:28:39.520 --> 0:28:43.360
<v Speaker 1>It can be hardware, it can be software, but it's

0:28:43.360 --> 0:28:47.320
<v Speaker 1>a system that acts like a barrier between a network

0:28:47.440 --> 0:28:50.400
<v Speaker 1>and the larger internet, or a machine and a network.

0:28:50.800 --> 0:28:54.480
<v Speaker 1>It's named that because it's like a fire a physical firewall,

0:28:54.640 --> 0:28:57.080
<v Speaker 1>something that can hold up if there's a fire on

0:28:57.120 --> 0:28:58.920
<v Speaker 1>the other side of the wall, it's not going to

0:28:59.040 --> 0:29:02.640
<v Speaker 1>come through, right, same sort of idea. All traffic has

0:29:02.680 --> 0:29:05.680
<v Speaker 1>to pass through the firewall, and the firewall follows a

0:29:05.720 --> 0:29:09.680
<v Speaker 1>predetermined set of security rules, so you can actually adjust

0:29:09.800 --> 0:29:12.959
<v Speaker 1>those rules. You can change what the rules are, so

0:29:13.040 --> 0:29:17.000
<v Speaker 1>maybe you're an administrator for say a company network, and

0:29:17.040 --> 0:29:20.640
<v Speaker 1>you've identified a website that hosts malicious software. You know

0:29:21.200 --> 0:29:24.000
<v Speaker 1>this site has got some bad juju on it. You

0:29:24.040 --> 0:29:27.160
<v Speaker 1>don't want any employees to go to that site and

0:29:27.200 --> 0:29:31.080
<v Speaker 1>potentially infect their machines, which could then possibly spread malicious

0:29:31.080 --> 0:29:33.960
<v Speaker 1>code to everyone else on your network. So you set

0:29:34.000 --> 0:29:37.440
<v Speaker 1>a rule in your firewall and it blocks any computer

0:29:37.720 --> 0:29:40.760
<v Speaker 1>on the company network from being able to contact that

0:29:40.880 --> 0:29:44.400
<v Speaker 1>specific websites server. If you were to try to go there,

0:29:44.400 --> 0:29:46.680
<v Speaker 1>you would get an error message. You could do the

0:29:46.720 --> 0:29:49.840
<v Speaker 1>same thing but in reverse, by denying any incoming traffic

0:29:49.920 --> 0:29:52.680
<v Speaker 1>from a specific I P address, saying all right, well,

0:29:52.680 --> 0:29:56.920
<v Speaker 1>if you get anything from this address, block it. Of course,

0:29:56.960 --> 0:29:59.200
<v Speaker 1>if you're wrong about the nature of the traffic, you

0:29:59.240 --> 0:30:02.320
<v Speaker 1>could be blocked and innocent person's communications with your server.

0:30:03.000 --> 0:30:08.280
<v Speaker 1>They're also network infrastructure tools called intrusion prevention or intrusion

0:30:08.360 --> 0:30:12.280
<v Speaker 1>detection systems, which are really more about trying to detect

0:30:12.280 --> 0:30:15.880
<v Speaker 1>hackers that are trying to get unauthorized access to your systems,

0:30:16.480 --> 0:30:19.800
<v Speaker 1>but they can sometimes set up alerts that will let

0:30:19.800 --> 0:30:21.960
<v Speaker 1>you know that something hinky is going on in general,

0:30:21.960 --> 0:30:23.760
<v Speaker 1>and you can take a quick closer look and see

0:30:24.120 --> 0:30:26.960
<v Speaker 1>if maybe that's an indicator of Adidas attack. They also

0:30:27.000 --> 0:30:29.320
<v Speaker 1>can create a lot of false positives, however, so it's

0:30:29.320 --> 0:30:33.240
<v Speaker 1>not like it's a a full proof way of detecting

0:30:33.280 --> 0:30:37.479
<v Speaker 1>this uh. So it's just one more tool in the

0:30:37.480 --> 0:30:40.680
<v Speaker 1>toolbox for people who are trying to protect their networks.

0:30:41.040 --> 0:30:44.720
<v Speaker 1>There's also a method called reverse path forwarding sometimes that

0:30:44.760 --> 0:30:48.640
<v Speaker 1>can help out. The process involves verifying the incoming packets

0:30:48.680 --> 0:30:52.760
<v Speaker 1>are coming from legit IP addresses, because if a hacker

0:30:52.800 --> 0:30:56.240
<v Speaker 1>is spoofing addresses, they might not be careful enough to

0:30:56.240 --> 0:30:59.720
<v Speaker 1>make sure they're spoofing a legitimate IP address, right They

0:30:59.760 --> 0:31:03.480
<v Speaker 1>could be spoofing and the IP address that's in those

0:31:03.560 --> 0:31:06.960
<v Speaker 1>data packets actually doesn't connect to any real device that

0:31:07.080 --> 0:31:09.920
<v Speaker 1>is connected to the Internet. And if that's the case,

0:31:10.320 --> 0:31:15.080
<v Speaker 1>if you do this reverse path forwarding approach, and you determine, hey,

0:31:15.120 --> 0:31:17.920
<v Speaker 1>these messages are supposedly coming from this I P address,

0:31:17.960 --> 0:31:20.400
<v Speaker 1>but that IP address is not actually in use right now,

0:31:21.200 --> 0:31:24.800
<v Speaker 1>that tells me that these are not legitimate packets. This

0:31:24.960 --> 0:31:28.360
<v Speaker 1>is uh an attack that has a spoofed IP address

0:31:28.360 --> 0:31:33.000
<v Speaker 1>attached to it, So then you could discard those packets. Essentially,

0:31:33.120 --> 0:31:35.520
<v Speaker 1>you tell your firewall, hey, get rid of anything that's

0:31:35.520 --> 0:31:39.120
<v Speaker 1>coming from this address because that's not legit. Another strategy

0:31:39.280 --> 0:31:42.520
<v Speaker 1>is just compartmentalization, in which a company will make certain

0:31:42.560 --> 0:31:46.920
<v Speaker 1>that valuable services exist on separate servers, possibly on separate

0:31:47.000 --> 0:31:50.800
<v Speaker 1>but connected networks, and that way, if one service or

0:31:50.880 --> 0:31:54.560
<v Speaker 1>network is targeted in particular, the other ones could remain

0:31:54.680 --> 0:31:57.720
<v Speaker 1>viable while security teams work to mitigate the effects of

0:31:57.760 --> 0:32:00.880
<v Speaker 1>the attack. That doesn't prevent attack from happening, but it

0:32:00.960 --> 0:32:04.640
<v Speaker 1>helps limit their effect on an overall system. So again,

0:32:04.720 --> 0:32:07.479
<v Speaker 1>let's say that there's uh, let's let's use Google as

0:32:07.480 --> 0:32:11.680
<v Speaker 1>an example. Let's say that there's an attack on Google

0:32:11.720 --> 0:32:17.120
<v Speaker 1>Mail Gmail, and that attack is hitting Gmail servers really hard. Well,

0:32:17.120 --> 0:32:21.400
<v Speaker 1>Google could have those compartmentalized, so it's not affecting other

0:32:21.480 --> 0:32:24.080
<v Speaker 1>Google services. Like you would go to the web search

0:32:24.160 --> 0:32:27.440
<v Speaker 1>and everything's fine. You can't tell that Google the Gmail

0:32:27.520 --> 0:32:30.440
<v Speaker 1>is down or maybe there are other elements that are

0:32:30.480 --> 0:32:33.880
<v Speaker 1>also working just fine. It's just Gmail is being affected.

0:32:34.200 --> 0:32:37.400
<v Speaker 1>That's through compartmentalization. And again it doesn't stop an attack,

0:32:37.520 --> 0:32:41.440
<v Speaker 1>it just reduces how much damage an attack can do.

0:32:42.280 --> 0:32:46.400
<v Speaker 1>And then there are content delivery networks or c d ns.

0:32:47.280 --> 0:32:52.920
<v Speaker 1>These are not on their own an anti d DOS measure,

0:32:53.400 --> 0:32:57.520
<v Speaker 1>but they can help. Uh. These are distributed servers that

0:32:57.560 --> 0:33:00.960
<v Speaker 1>respond to requests from clients based upon a graphic location

0:33:01.200 --> 0:33:03.880
<v Speaker 1>of that client. This is more helpful if I use

0:33:03.920 --> 0:33:06.600
<v Speaker 1>an example. So let's say I'm a business owner and

0:33:06.640 --> 0:33:09.520
<v Speaker 1>I launch a new website. And when I first started out,

0:33:09.960 --> 0:33:12.760
<v Speaker 1>my website is housed on servers that I have in

0:33:12.800 --> 0:33:16.440
<v Speaker 1>my garage, right like, this is just a startup company.

0:33:16.640 --> 0:33:18.720
<v Speaker 1>It's something I wanted to do in my spare time.

0:33:18.760 --> 0:33:21.800
<v Speaker 1>But it catches on and my site people find it

0:33:21.840 --> 0:33:24.640
<v Speaker 1>amazing and they love it, and more and more users

0:33:24.640 --> 0:33:26.880
<v Speaker 1>start to visit the site. So I need to scale up.

0:33:27.440 --> 0:33:30.440
<v Speaker 1>My little server just can't handle this traffic. So soon

0:33:30.560 --> 0:33:34.840
<v Speaker 1>I'm leasing server space from large data centers. And because

0:33:34.840 --> 0:33:37.600
<v Speaker 1>folks are really wanting to use my services and they're

0:33:37.600 --> 0:33:39.720
<v Speaker 1>all across the United States, I choose to go with

0:33:39.760 --> 0:33:42.400
<v Speaker 1>a provider that has data centers and a few different

0:33:42.440 --> 0:33:46.520
<v Speaker 1>strategic locations around the country, And that way, my customers

0:33:46.680 --> 0:33:50.160
<v Speaker 1>can end up connecting to a server that's geographically close

0:33:50.200 --> 0:33:53.240
<v Speaker 1>to them, probably through some sort of automated feature in

0:33:53.280 --> 0:33:55.360
<v Speaker 1>my web service, so the user doesn't even have to

0:33:55.360 --> 0:33:57.840
<v Speaker 1>think about this. There they don't see it. They just

0:33:57.960 --> 0:34:00.360
<v Speaker 1>know that the web page is loading nice and fast

0:34:00.480 --> 0:34:03.440
<v Speaker 1>because the system is making sure they're connecting to the

0:34:03.480 --> 0:34:07.160
<v Speaker 1>instance of my website that's closest to them. But then

0:34:07.200 --> 0:34:10.120
<v Speaker 1>I scale up again and now it's time to go global,

0:34:10.400 --> 0:34:13.400
<v Speaker 1>and at this stage I need a content delivery network.

0:34:13.480 --> 0:34:16.040
<v Speaker 1>This is a larger company that can host my service

0:34:16.160 --> 0:34:20.000
<v Speaker 1>across the globe. And essentially the content delivery network just

0:34:20.080 --> 0:34:22.879
<v Speaker 1>makes a copy of my website to sit on one

0:34:23.000 --> 0:34:25.520
<v Speaker 1>or more servers in every single data center has a

0:34:25.520 --> 0:34:28.359
<v Speaker 1>deal with around the globe. Now, no matter where you are,

0:34:28.719 --> 0:34:31.040
<v Speaker 1>when you pull up my website, there's not a super

0:34:31.080 --> 0:34:34.320
<v Speaker 1>long delay while it connects to the server and pulls

0:34:34.360 --> 0:34:37.240
<v Speaker 1>that information back and loads it in your browser, unless,

0:34:37.280 --> 0:34:39.440
<v Speaker 1>of course, the data transfer speeds in the area you

0:34:39.480 --> 0:34:43.120
<v Speaker 1>are in are terrible, which that is a different matter. Now,

0:34:43.160 --> 0:34:47.080
<v Speaker 1>because c d ends are global in nature, and because

0:34:47.280 --> 0:34:49.880
<v Speaker 1>of the way that they approach this, they can actually

0:34:49.920 --> 0:34:52.319
<v Speaker 1>absorb a lot of traffic and they can balance the

0:34:52.400 --> 0:34:56.120
<v Speaker 1>load as well. So if one geographic area is being

0:34:56.200 --> 0:34:59.800
<v Speaker 1>hit really hard, the c d N could potentially redirect

0:35:00.080 --> 0:35:04.200
<v Speaker 1>quests to less traffic servers. So while the most convenient

0:35:04.239 --> 0:35:07.920
<v Speaker 1>server might normally be in your home city. If that

0:35:07.960 --> 0:35:10.800
<v Speaker 1>particular site is being hit by a di DOS attack,

0:35:10.920 --> 0:35:14.359
<v Speaker 1>the c d N could route your request to a

0:35:14.400 --> 0:35:18.080
<v Speaker 1>different server in a nearby city, and it might take

0:35:18.120 --> 0:35:21.400
<v Speaker 1>a little longer than it normally would, but it will work,

0:35:21.920 --> 0:35:24.040
<v Speaker 1>Whereas if you try to connect to the server you

0:35:24.160 --> 0:35:26.920
<v Speaker 1>usually connect to, it might not work because it's being attacked.

0:35:27.239 --> 0:35:31.240
<v Speaker 1>So cd ns do not stop attacks. They don't prevent attacks,

0:35:31.280 --> 0:35:33.880
<v Speaker 1>they just soak up the damage. They're kind of a

0:35:33.880 --> 0:35:36.600
<v Speaker 1>bullet sponge. So it's really not much of a stop

0:35:36.640 --> 0:35:41.000
<v Speaker 1>gap because we keep seeing di dos attacks increase in

0:35:41.040 --> 0:35:44.200
<v Speaker 1>the amount of data that they're throwing at their targets.

0:35:44.719 --> 0:35:47.200
<v Speaker 1>So if you're getting to this point where you're getting

0:35:47.719 --> 0:35:53.880
<v Speaker 1>exponentially larger amounts of data being shot at targets, eventually

0:35:54.040 --> 0:35:56.600
<v Speaker 1>you're gonna hit a point where, even if you're huge,

0:35:56.680 --> 0:36:00.239
<v Speaker 1>you're still gonna feel it. So it's not really a

0:36:00.360 --> 0:36:03.880
<v Speaker 1>solution so much as it it's just a way to

0:36:05.000 --> 0:36:09.680
<v Speaker 1>put off how badly dedest attacks are going to affect you.

0:36:10.040 --> 0:36:12.520
<v Speaker 1>And again, there are all sorts of people who use them.

0:36:12.560 --> 0:36:15.600
<v Speaker 1>There are activists, there are criminals who are trying to

0:36:15.719 --> 0:36:19.200
<v Speaker 1>extort money from potential targets, and there are people who

0:36:19.160 --> 0:36:22.040
<v Speaker 1>are doing it just for the lulls, so it's tough.

0:36:22.080 --> 0:36:25.160
<v Speaker 1>Because the tools are easy to get hold of, it's

0:36:25.200 --> 0:36:29.880
<v Speaker 1>relatively easy to attack using these approaches, but it's really

0:36:29.920 --> 0:36:32.759
<v Speaker 1>hard to defend against it. So it's one of those

0:36:32.760 --> 0:36:35.960
<v Speaker 1>things where it's a it's a disproportionate amount of work.

0:36:36.120 --> 0:36:38.560
<v Speaker 1>The attacker doesn't have to do very much work, and

0:36:38.600 --> 0:36:40.840
<v Speaker 1>the defender has to do a ton of work. So

0:36:40.920 --> 0:36:43.799
<v Speaker 1>even when you're successful in defending, you're still using a

0:36:43.800 --> 0:36:46.879
<v Speaker 1>lot of resources to do it well. That wraps up

0:36:46.960 --> 0:36:50.600
<v Speaker 1>these discussions about distributed denial of service attacks and what

0:36:50.680 --> 0:36:53.680
<v Speaker 1>they are and why they're so infuriating and why it's

0:36:53.680 --> 0:36:56.360
<v Speaker 1>important to know about them. If you guys have suggestions

0:36:56.360 --> 0:36:58.600
<v Speaker 1>for future episodes of tech Stuff, send me an email.

0:36:58.719 --> 0:37:01.239
<v Speaker 1>The address for the show is tech Stuff at how

0:37:01.320 --> 0:37:03.839
<v Speaker 1>stuff works dot com, or drop me a line on

0:37:03.880 --> 0:37:06.120
<v Speaker 1>Facebook or Twitter to handle it. Both of those is

0:37:06.239 --> 0:37:09.640
<v Speaker 1>text Stuff h s W. Make sure you follow us

0:37:09.680 --> 0:37:13.799
<v Speaker 1>on Instagram and I'll talk to you again really soon

0:37:20.040 --> 0:37:22.439
<v Speaker 1>for more on this and thousands of other topics. Because

0:37:22.480 --> 0:37:33.520
<v Speaker 1>it how stuff Works dot Com