69
Active Worms, Buffer Overflow Attacks, and BGP Attacks CSE 4471: Information Security Instructor: Adam C. Champion, Ph.D. Course Coordinator: Prof. Dong Xuan 1 This lecture uses materials from U. of Washington [15], U. Central Florida [16], Clarkson U. [17], Princeton U. [19], and U. of Pennsylvania [20]. We gratefully acknowledge their contributions.

Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Active Worms, Buffer Overflow Attacks, and

BGP AttacksCSE 4471: Information Security

Instructor: Adam C. Champion, Ph.D.Course Coordinator: Prof. Dong Xuan

1

This lecture uses materials from U. of Washington [15], U. Central Florida [16], Clarkson U. [17], Princeton U. [19], and U. of Pennsylvania [20]. We gratefullyacknowledge their contributions.

Page 2: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Outline

• Active Worms• Buffer Overflow Attacks• BGP Attacks

2

Page 3: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Active Worm vs. Virus

• Active Worm– A program that propagates itself over a network,

reproducing itself as it goes• Virus– A program that searches out other programs and

infects them by embedding a copy of itself in them

3

Page 4: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Active Worm vs. DDoS

• Propagation– Active worm: from few hosts to many targets– DDoS: from many hosts to few targets

• Relationship– Active worm can be used for network

reconnaissance, preparation for DDoS

4

Page 5: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Instances of Active Worms (1)• Morris Worm (1988) [1]

– First active worm; took down several thousand UNIX machines on Internet

• Code Red v2 (2001) [2]– Targeted, spread via MS Windows IIS servers– Launched DDoS attacks on White House, other IP addresses

• Nimda (2001, NetBIOS, UDP) [3]– Targeted IIS servers; slowed down Internet traffic

• SQL Slammer (2003, UDP) [4]– Targeted MS SQL Server, Desktop Engine– Substantially slowed down Internet traffic

• MyDoom (2004–2009, TCP) [5]• Fastest spreading email worm (by some estimates)• Launched DDoS attacks on SCO Group

5

Page 6: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Instances of Active Worms (2)• Jan. 2007: Storm [6]– Email attachment downloaded malware– Infected machine joined a botnet

• Nov. 2008–Apr. 2009: Conficker [7]– Spread via vulnerability in MS Windows servers– Also had botnet component

• Jun.–Jul. 2009, Mar.–May 2010: Stuxnet [8–9]– Aim: destroy centrifuges at Natanz, Iran nuclear facility– “Escaped” into the wild in 2010

• Aug. 2011: Morto [10]– Spread via Remote Desktop Protocol– OSU Security shut down RDP to all OSU computers

6

Page 7: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

How an Active Worm Spreads

• Autonomous: human interaction unnecessary

7

Infected machine machine

(1) Scan(2) Probe

(3) Transfer copy

Page 8: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Conficker Worm Spread

8

Data normalized for each country.

Source: [7]

Page 9: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Scanning Strategies• Random scanning– Probes random addresses in the IP address space (Code

Red v2)• Hitlist scanning– Probes addresses from an externally supplied list

• Topological scanning– Uses information on compromised host (Email worms,

Stuxnet)• Local subnet scanning– Preferentially scans targets that reside on the same

subnet. (Code Red v2, Nimda)

9

Page 10: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Techniques for Exploiting Vulnerabilities

• Morris Worm– fingerd (buffer overflow)– sendmail (bug in “debug mode”)– rsh/rexec (guess weak passwords)

• Code Red, Nimda, etc. (buffer overflows)• Tricking users into opening malicious email

attachments

10

Page 11: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Worm Exploit Techniques

• Case study: Conficker worm– Issues malformed RPC (TCP, port 445) to Server

service on MS Windows systems – Exploits buffer overflow in unpatched systems–Worm installs backdoor, bot software invisibly– Downloads executable file from server, updates

itself• Workflow: see backup slides (1), (2)

11

Page 12: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Worm Behavior Modeling (1)

• Propagation model mirrors epidemic:

12

V : total # of vulnerable nodesN : size of address spacei(t): percentage of infected nodes among Vr : an infected node’s scanning speed

Page 13: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Worm Behavior Modeling (2)

Multiply (*) by V ⋅ dt and collect terms:

13

The total number of scans launched by infected nodes The total number of newly infected nodes

The percentage of vulnerable uninfected nodes

Page 14: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Modeling the Conficker Worm

• This model’s predicted worm propagation similar to Conficker’s actual propagation

14

Figure 3: Observed Code Red propagation — num-ber of deactivated hosts (from Caida.org)

In epidemiology area, both stochastic models and deter-ministic models exist for modeling the spreading of infec-tious diseases [1, 2, 3, 15]. Stochastic models are suitablefor small-scale system with simple virus dynamics; deter-ministic models are suitable for large-scale system under theassumption of mass action, relying on the law of large num-ber [2]. When we model Internet worms propagation, weconsider a large-scale network with thousands to millions ofcomputers. Thus we will only consider and use determinis-tic models in this paper. In this section, we introduce twoclassical deterministic epidemic models, which are the basesof our two-factor Internet worm model. We also point outtheir problems when we try to use them to model Internetworm propagation.

In epidemiology modeling, hosts that are vulnerable tobe infected by virus are called susceptible hosts; hosts thathave been infected and can infect others are called infectioushosts; hosts that are immune or dead such that they can’tbe infected by virus are called removed hosts, no matterwhether they have been infected before or not. A host iscalled an infected host at time t if it has been infected byvirus before t, no matter whether it is still infectious or isremoved [2] at time t. In this paper, we will use the sameterminology for computer worms modeling.

3.1 Classical simple epidemic modelIn classical simple epidemic model, each host stays in one

of two states: susceptible or infectious. The model assumesthat once a host is infected by a virus, it will stay in infec-tious state forever. Thus state transition of any host canonly be: susceptible → infectious [15]. The classical simpleepidemic model for a finite population is

dJ(t)dt

= βJ(t)[N −J(t)], (1)

where J(t) is the number of infected hosts at time t; N is thesize of population; and β is the infection rate. At beginning,t = 0, J(0) hosts are infectious and the other N −J(0) hostsare all susceptible.

Let a(t) = J(t)/N be the fraction of the population thatis infectious at time t . Dividing both sides of (1) by N2

yields the equation used in [31]:

da(t)dt

= ka(t)[1 −a(t)], (2)

where k = βN . Using the same value k = 1.8 as what usedin [31], the dynamic curve of a(t) is plotted in Fig. 4.

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1Classical simple epidemic model

time: t

a(t)

Figure 4: Classical simple epidemic model (k = 1.8)

Let S(t) = N −J(t) denote the number of susceptiblehosts at time t. Replace J(t) in (1) by N −S(t) and we get

dS(t)dt

= −βS(t)[N −S(t)]. (3)

Equation (1) is identical with (3) except for a minus sign.Thus the curve in Fig. 4 will remain the same when werotate it 180 degrees around the (thalf , 0.5) point whereJ(thalf ) = S(thalf ) = N/2. Fig. 4 and Eq. (2) show thatat the beginning when 1 −a(t) is roughly equal to 1, thenumber of infectious hosts is nearly exponentially increased.The propagation rate begins to decrease when about 80% ofall susceptible hosts have been infected.

Staniford et al. [31] presented a Code Red propagationmodel based on the data provided by Eichman [18] up to21:00 UTC July 19th. The model captures the key behaviorof the first half part of the Code Red dynamics. It is essen-tially the classical simple epidemic model (1). We provide,in this paper, a more detailed analysis that accounts for twoimportant factors involved in Code red spreading. Part ofour effort is to explain the evolution of Code Red spreadingafter the beginning phase of its propagation. Although theclassical epidemic model can match the beginning phase ofCode Red spreading, it can’t explain the later part of CodeRed propagation: during the last five hours from 20:00 to00:00 UTC, the worm scans kept decreasing (Fig. 1).

From the simple epidemic model (Fig. 4), the authors in[31] concluded that Code Red came to saturating around19:00 UTC — almost all susceptible IIS servers online onJuly 19th had been infected around that time. The numer-ical solution of our model in Section 6, however, shows thatonly about 60% of all susceptible IIS servers online havebeen infected around 19:00 UTC on July 19th.

3.2 Classical general epidemicmodel: Kermack-Mckendrick model

In epidemiology area, Kermack-Mckendrick model consid-ers the removal process of infectious hosts [15]. It assumesthat during an epidemic of a contagious disease, some infec-tious hosts either recover or die; once a host recovers fromthe disease, it will be immune to the disease forever — thehosts are in “removed” state after they recover or die fromthe disease. Thus each host stays in one of three states atany time: susceptible, infectious, removed. Any host in the

Sources: [7], Fig. 2; [8], Fig. 4

Conficker’s propagation

Page 15: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Practical Considerations• This model assumes machine state: vulnerable →

infected– In reality, countermeasures slow worm infection

• Infected machines can be “cleaned” (removed from epidemic)

• State: vulnerable → infected → removed– Attackers may limit, vary worm scan rate– Complicates mathematical models

• Need time-varying parameters for number of removed hosts R(t), worm scan rate r(t)

• Resulting differential equations are complex, cannot be solved using calculus alone

15

Page 16: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Summary: Active Worms• Worms can spread quickly:– 359,000 hosts in under 14 hours

• Home / small business hosts play significant role in global internet health– No system administrator ⇒ slow response– Can’t estimate infected machines by # of

unique IP addresses: DHCP effect apparently real, significant

• Active Worm Modeling

16

Page 17: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Outline

• Active Worms• Buffer Overflow Attacks• BGP Attacks

17

Page 18: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

18

What is a Buffer Overflow?• Intent– Arbitrary code execution• Spawn a remote shell or infect with worm/virus

– Denial of service• Cause software to crash

– E.g., ping of death attack

• Steps– Inject attack code into buffer– Overflow return address– Redirect control flow to attack code– Execute attack code

Page 19: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

19

Attack Possibilities• Targets– Stack, heap, static area– Parameter modification (non-pointer data)• Change parameters for existing call to exec()• Change privilege control variable

• Injected code vs. existing code• Absolute vs. relative address dependence

Page 20: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

The Problemvoid foo(char *s) {char buf[10];strcpy(buf,s);printf(“buf is %s\n”,s);

}…foo(“thisstringistoolongforfoo”);

20

Page 21: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Exploitation

• The general idea is to give servers very large strings that will overflow a buffer.

• For a server with sloppy code, it’s easy to crash the server by overflowing a buffer (SEGV typically).

• It’s sometimes possible to actually make the server do whatever you want (instead of crashing).

21

Page 22: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Background Necessary

• C functions and the stack.• A little knowledge of assembly/machine

language.• How system calls are made (at the machine

code level).• exec() system calls • How to “guess” some key parameters.

22

Page 23: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

C Function and the Stack

• When a function call is made, the return address is put on the stack.

• Often the values of parameters are put on the stack.

• Usually the function saves the stack frame pointer (on the stack).

• Local variables are on the stack.

23

Page 24: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Process’s Virtual Memory Address Space

24

0x000000000x08048000code

static data

bssheap

shared library

stack

kernel space

0x42000000

0xC0000000

0xFFFFFFFF

Source: Dawn Song, RISE: http://research.microsoft.com/projects/SWSecInstitute/slides/Song.ppt

Page 25: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Stack Basics• A stack is contiguous block of memory containing data.• Stack pointer (SP) – a register that points to the top of the

stack.• The bottom of the stack is a fixed address.• Its size is dynamically adjusted by kernel at run time.• CPU implements instructions to PUSH onto and POP off the

stack.

25

Page 26: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

A Stack Frame

ParametersReturn Address

Calling Stack PointerLocal Variables

00000000

Addresses

SP

SP + offset

low

high

26

Page 27: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

SampleStack

18addressof(y=3) return addresssaved stack pointeryxbuf

x=2;foo(18);y=3;

void foo(int j) {int x,y;char buf[100];x=j;…

}

27

Page 28: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Another Example Piece of Code

void function(int a, int b, int c) {char buffer1[5]; char buffer2[10];

}

void main() { function(1,2,3);

}

28

Page 29: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Stack Layout for the Example Code

Bottom of memory Top of memorybuffer2 buffer1 sfp ret a b c

[ ] [ ] [ ] [ ] [ ] [ ] [ ]

Top of stack Bottom of stack

29

Page 30: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Smashing the Stack

• The general idea is to overflow a buffer so that it overwrites the return address.

• When the function is done it will jump to whatever address is on the stack.

• We put some code in the buffer and set the return address to point to it!

30

Page 31: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Before and Aftervoid foo(char *s) {

char buf[100];strcpy(buf,s);…

address of sreturn address

saved sp

buf

address of spointer to program

Small Program

31

Page 32: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

(i) Before the attack (ii) after injecting the attack code 32

Page 33: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Issues

• How do we know what value the pointer should have (the new “return address”).– It’s the address of the buffer, but how do we know

what address this is?• How do we build the “small program” and put

it in a string?

33

Page 34: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Guessing Addresses

• Typically you need the source code so you can estimate the address of both the buffer and the return-address.

• An estimate is often good enough! (more on this in a bit).

34

Page 35: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Building the Small Program

• Typically, the small program stuffed in to the buffer performs an exec().

• Sometimes it changes the password database or other files…

35

Page 36: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

exec() Example

#include <stdio.h>

char *args[] = {"/bin/ls", NULL};

void execls(void) {execv("/bin/ls",args);printf(“I’m not printed\n");

}

36

Page 37: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Generating a String

• You can take code like the previous slide, and generate machine language.

• Copy down the individual byte values and build a string.

• Performing a simple exec() requires less than 100 bytes.

37

Page 38: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

A Sample Program/String

• Calls exec() for /bin/ls:

unsigned char cde[] ="\xeb\x1f\x5e\x89\x76\x08\x31\xc0”“\x88\x46\x07\x89\x46\x0c\xb0\x0b""\x89\xf3\x8d\x4e\x08\x8d\x56\x0c”“\xcd\x80\x31\xdb\x89\xd8\x40\xcd""\x80\xe8\xdc\xff\xff\xff/bin/ls";

38

Page 39: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Some Important Issues

• The small program should be position-independent – able to run at any memory location.

• It can’t be too large, or we can’t fit the program and the new return-address on the stack!

39

Page 40: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Attacking a Real Program

• Recall that the idea is to feed a server a string that is too big for a buffer.

• This string overflows the buffer and overwrites the return address on the stack.

• Assuming we put our small program in the string, we need to know it’s address.

40

Page 41: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

NOPs

• Most CPUs have a No-Operation (NOP) instruction – it does nothing but advance the instruction pointer.

• Usually we can put a bunch of these ahead of our program (in the string).

• As long as the new return address points to a NOP we are OK.

41

Page 42: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Using NOPs

Real program (exec /bin/ls or whatever)

new return address

NOP instructions

Can point

anywhere

in here

42

Page 43: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Estimating the Stack Size

• We can also guess at the location of the return address relative to the overflowed buffer.

• Put in a bunch of new return addresses!

43

Page 44: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Estimating the Location

Real program

new return address

NOP instructions

new return address

new return addressnew return address

new return addressnew return address

44

Page 45: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Other Potential Problems

• Buffer overflow is just the most common programming problem exploited.

• Integer arithmetic can also be a problem!– foo = malloc(num * sizeof(struct blah));

–What if num is 232 – 1? What if num is –1?

45

Page 46: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Summary: Buffer Overflows• Don't use strcpy().• Check the return value on all calls to library functions

like malloc() (as well as all system calls).• Don't use multiplication (or addition).• Might as well not use subtraction or division either.• It's probably best to avoid writing programs at all…

46

Page 47: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Outline

• Active Worms• Buffer Overflow Attacks• BGP Attacks

47

Page 48: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Motivation (1)

• BGP (Border Gateway Protocol): Dominant inter-domain routing protocol– The de facto standard– Current version (4) in use for over ten years– Popular despite providing no performance/security

guarantees

48

Page 49: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Motivation (2)

• What’s the big deal?–Many critical applications rely on the Internet– e.g.: online banking, stock trading, telemedicine

• Department of Homeland Security:– BGP security critical to national strategy

• Internet Engineering Task Force:–Working Groups: Routing Protocol Security

Requirements, Secure Inter-Domain Routing

49

Page 50: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

BGP Basics: Inter-AS Routing

50

Page 51: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

BGP Basics: Internet Inter-AS Routing (1)

• Path Vector protocol:– Similar to Distance Vector protocol– Each Border Gateway broadcast to neighbors (peers)

entire path (i.e., sequence of ASs) to destination– E.g., Gateway X may send its path to dest. Z:

Path(X, Z) = X, Y1, Y2, Y3, … , Z

51

Page 52: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

BGP Basics: Internet Inter-AS Routing (2)

Suppose: gateway X sends its path to peer gateway W

• W may or may not select path offered by X– Dost, policy (don’t route via competitors’ ASs), loop

prevention reasons• If W selects path advertised by X, then:

Path(W, Z) = W, Path(X, Z)• Note: X can control incoming traffic by controlling it

route advertisements to peers:– e.g., don’t want to route traffic to Z ⟹ don’t

advertise any routes to Z 52

Page 53: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Sources of BGP Insecurity

• IP prefixes and autonomous system numbers• Using TCP as the underlying transport protocol• Routing policy and BGP route attributes

53

Page 54: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

54

IP Address Ownership and Hijacking

• IP address block assignment– Regional Internet Registries (ARIN, RIPE, APNIC)– Internet Service Providers

• Proper origination of a prefix into BGP– By the AS who owns the prefix– … or, by its upstream provider(s) in its behalf

• However, what’s to stop someone else?– Prefix hijacking: another AS originates the prefix– BGP does not verify that the AS is authorized– Registries of prefix ownership are inaccurate

Page 55: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

IP Address Delegation

55

Page 56: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Normal Route Origination

56

Page 57: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

57

Prefix Hijacking

1

2

34

5

67

12.34.0.0/1612.34.0.0/16

• Consequences for the affected ASs– Blackhole: data traffic is discarded– Snooping: data traffic is inspected, and then redirected– Impersonation: data traffic is sent to bogus destinations

Page 58: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

58

Sub-Prefix Hijacking

1

2

34

5

67

12.34.0.0/1612.34.158.0/24

• Originating a more-specific prefix– Every AS picks the bogus route for that prefix– Traffic follows the longest matching prefix

Page 59: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

59

TCP Connection Underlying BGP Session

• BGP session runs over TCP– TCP connection between neighboring routers– BGP messages sent over TCP connection–Makes BGP vulnerable to attacks on TCP

• Main kinds of attacks– Against confidentiality: eavesdropping– Against integrity: tampering– Against performance: denial-of-service

Page 60: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

TCP as the Transport Protocol

• Attacks against confidentiality– Third party can eavesdrop BGP session– Learns policy and routing information– Business relationships can be inferred

60

Page 61: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

TCP as the Transport Protocol• Attacks against message integrity– Man-in-the-middle attacks– Message insertion:

• Could inject incorrect information• Could overwhelm routers with too many messages

– Message deletion:• Could delete keep-alive messages

– Message modification– Message replay:

• Re-assert withdrawn route, withdraw valid route

61

Page 62: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

TCP as the Transport Protocol

• Denial-of-service attacks– Exploit TCP connection establishment• Three-way handshake (SYN, SYNACK, ACK)• Connection close (FIN, RST)

– Send RST packet to force connection close– SYN packet flooding• Consumes resources, overwhelms routers• Neighbors assume connection dead; route flapping upon

reconnection– Physical attacks: backhoe attack• Or swamp link with traffic 62

Page 63: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Routing Policy and BGP Attributes

• Local preference, AS path length, origin type, multi-exit discriminator

• Adversary could manipulate these values– Shorten AS path length– Lengthen AS path: make route look legit• Or use too many resources to store path

– Remove AS from path: thwart filtering– Add AS to path: causes AS path loop–Modify origin type, MED to influence decision

63

Page 64: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

64

Summary: BGP is So Hard to Fix

• Complex system– Large, with around 30,000 ASs– Decentralized control among competitive ASs– Core infrastructure that forms the Internet

• Hard to reach agreement on the right solution– S-BGP with public key infrastructure, registries, crypto?– Who should be in charge of running PKI and registries?– Worry about data-plane attacks or just control plane?

• Hard to deploy the solution once you pick it– Hard enough to get ASs to apply route filters– Now you want them to upgrade to a new protocol– … all at the exact same moment?

Page 65: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

References (1)1. Wikipedia, “Morris worm,” https://en.wikipedia.org/wiki/Morris_worm2. Wikipedia, “Code Red (computer worm),” https://en.wikipedia.org/wiki/

Code_Red_worm3. Wikipedia, “Nimda,” https://en.wikipedia.org/wiki/Nimda4. Wikipedia, “SQL Slammer”, https://en.wikipedia.org/wiki/SQL_Slammer5. Wikipedia, “MyDoom”, https://en.wikipedia.org/wiki/Mydoom6. Wikipedia, “Storm worm,” https://en.wikipedia.org/wiki/Storm_Worm7. Wikipedia, “Conficker,” https://en.wikipedia.org/wiki/Conficker8. D. E. Sanger, “Obama Order Sped Up Wave of Cyberattacks Against Iran,” The New York

Times, 1 Jun. 2012, https://www.nytimes.com/2012/06/01/world/middleeast/obama-ordered-wave-of-cyberattacks-against-iran.html

9. N. Falliere, L. O. Murchu, and E. Chien, Symantec, “W32.Stuxnet,” Feb. 2011, http://www.symantec.com/security_response/writeup.jsp?docid=2010-071400-3123-99

10. T. Bitton, “Morto Post Mortem: Dissecting a Worm,” 7 Sep. 2011, http://blog.imperva.com/2011/09/morto-post-mortem-a-worm-deep-dive.html

11. Cooperative Association for Internet Data Analysis (UCSD), “The Spread of the Code-Red Worm (CRv2),” 2001, http://www.caida.org/research/security/code-red/coderedv2_analysis.xml

65

Page 66: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

References (2)12. Cooperative Association for Internet Data Analysis (UCSD),

“Conficker/Conflicker/Downadup as seen from the UCSD Network Telescope”, 2009, http://www.caida.org/research/security/ms08-067/conficker.xml

13. C. C. Zou, W. Gong, and D. Towsley, “Code Red Worm Propagation Modeling and Analysis,” Proc. ACM CCS, 2002.

14. P. Porras, H. Saidi, and V. Yegneswaran, 19 Mar. 2009, http://mtc.sri.com/Conficker/15. https://courses.cs.washington.edu/courses/cse451/05sp/section/overflow1.ppt16. http://www.cs.ucf.edu/~czou/CAP6135-12/bufferOverFlow-1.ppt17. http://web2.clarkson.edu/class/cs457/security.sp06/labs/bufferOverflow/BufferOverflow.ppt18. James Kurose and Keith Ross, Computer Networking: A Top-Down Approach Featuring the

Internet, 7th ed., Pearson/Addison-Wesley, 2013.19. http://www.cs.princeton.edu/courses/archive/spr08/cos461/slides/16BGP-Security.ppt20. http://netdb.cis.upenn.edu/cis800-fa11/lectures/sbgp.pptx

66

Page 67: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Backup Slides

67

Page 68: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Conficker Workflow (1)

68

Conficker’s exploitation workflow.

Source: [14], Fig. 1

Page 69: Active Worms, Buffer Overflow Attacks, and BGP Attacksweb.cse.ohio-state.edu/~champion.17/4471/4471_threat_attack_example.pdf · Worm Exploit Techniques •Case study: Conficker worm

Conficker Workflow (2)

69

Conficker’s self-update workflow.

Source: [14], Fig. 3