socket overloading for fun and cache-poisoning

25
Socket Overloading for Fun and Cache-Poisoning Amir Herzberg 1 ; Haya Shulman 2 1 Bar Ilan University 2 Technische Universität Darmstadt/EC-SPRIDE 29 th Annual Computer Security Applications Conference (ACSAC 2013) 左左左 2013/12/10 Seminar @ ADLab, CSIE, NCU

Upload: kasi

Post on 23-Feb-2016

61 views

Category:

Documents


0 download

DESCRIPTION

29 th Annual Computer Security Applications Conference (ACSAC 2013). Socket Overloading for Fun and Cache-Poisoning. Amir Herzberg 1 ; Haya Shulman 2 1 Bar Ilan University 2 Technische Universität Darmstadt/EC-SPRIDE. 左昌國 2013/12/10 Seminar @ ADLab , CSIE, NCU. Outline. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Socket Overloading for Fun and  Cache-Poisoning

Socket Overloading for Fun and Cache-PoisoningAmir Herzberg1; Haya Shulman2

1Bar Ilan University2Technische Universität Darmstadt/EC-SPRIDE

29th Annual Computer Security Applications Conference (ACSAC 2013)

左昌國2013/12/10 Seminar @ ADLab, CSIE, NCU

Page 2: Socket Overloading for Fun and  Cache-Poisoning

Outline• Introduction• Socket Overloading• Evaluation• Port Derandomization via Socket Overloading• Socket-Overloading for Attacks on DNS• Defenses and Conclusions

2

Page 3: Socket Overloading for Fun and  Cache-Poisoning

Introduction• What is DNS

• Ref: http://www.csie.ncu.edu.tw/~hsufh/COURSES/FALL2013/14_dns.ppt

• Ref: Steve Friedl, http://unixwiz.net/techtips/iguide-kaminsky-dns-vuln.html

• Attacks on DNS (categorized by position of attackers)• Man-in-the-Middle

• Less than 3% of DNS resolvers enforce strict DNSSEC (cryptographic)• Off-path attacks

3

Page 4: Socket Overloading for Fun and  Cache-Poisoning

Introduction• Basic cache-poisoning (without any defense mechanism)

4

(1) query IP for“www.foo.com”

Resolver

Victim

Name Server“ns.foo.com”

(2) query IP for“www.foo.com”

(3) response “www.foo.com” == “6.6.6.7” TTL = 1 year

Attacker Server“6.6.6.6”

(4) response “6.6.6.7”

Attacker Server“6.6.6.7”

(5) access to “www.foo.com” == “6.6.6.7”

Page 5: Socket Overloading for Fun and  Cache-Poisoning

Introduction – DNS Security• Challenge-Response Defenses (to off-path attacks)

• Standardized challenges [RFC5452]• DNS transaction ID (TXID) field• Source port randomization (DJBDNS)

• Port randomization algorithms [RFC6056] (Best Current Practice)• IP address randomization

• Cryptographic Defense (DNSSEC)

5

Page 6: Socket Overloading for Fun and  Cache-Poisoning

Introduction• Attacking model

6

Page 7: Socket Overloading for Fun and  Cache-Poisoning

Introduction – Related Work• Off-Path Port Derandomization Attacks

• A. Herzberg and H. Shulman. “Security of Patched DNS”, Computer Security - ESORICS 2012

• Off-Path IP Address Derandomization Attacks• A. Herzberg and H. Shulman. “Security of Patched DNS”,

Computer Security - ESORICS 2012• O. Gudmundsson and S. D. Crocker. Observing DNSSEC

Validation in the Wild. In SATIN 2011

7

Page 8: Socket Overloading for Fun and  Cache-Poisoning

Socket Overloading• The target

• To discover the client’s (ephemeral) port in its communication to the name server

• Interrupt Driven Packet Handling• Unix and Windows use hardware interrupts for event notification

purpose (input/output on hardware)• NICs generate interrupts to notify the kernel of arrival of new

packets• These interrupts disrupt protocol processing• Under high traffic load, the socket may fill up, and subsequent

packets will be dropped

8

Page 9: Socket Overloading for Fun and  Cache-Poisoning

Socket Overloading for Port Discovery

9

Client1.2.3.6

Resolver1.2.3.4

NS5.6.7.8

Off-path Attacker6.6.6.6

s d1.2.3.6 1.2.3.4x 53A?$1.foo.org

(1) (2)

s d1.2.3.4 5.6.7.83424 53A?$1.foo.org

s d6.6.6.6 1.2.3.4x 3424AAAAAAAAAA

s d5.6.7.8 1.2.3.453 3424$1.foo.org NXD

loss (3)

Burst of Npackets

s d1.2.3.4 5.6.7.83425 53A?$1.foo.org

Timeoutretransmission

(4) s d5.6.7.8 1.2.3.453 3425$1.foo.org NXD (5)

s d1.2.3.4 1.2.3.653 x$1.foo.org NXD

(6) Report response time

Page 10: Socket Overloading for Fun and  Cache-Poisoning

Evaluation

11

Page 11: Socket Overloading for Fun and  Cache-Poisoning

Evaluation

12

Page 12: Socket Overloading for Fun and  Cache-Poisoning

Port Derandomization via Socket Overloading

• In RFC-6056• 5 algorithms to perform port randomization• Algorithm #1 and #2

• Do not vulnerable to socket overloading• Vulnerable to attacks in [12]

• Algorithm #3 – Simple Hash-Based Port Selection• Algorithm #4 – Double-Hash Port Selection• Algorithm #5 – Random-Increments Port Selection

13

Page 13: Socket Overloading for Fun and  Cache-Poisoning

Alg. #3 – Simple Hash-Based Port Selection/* Initialization at system boot time. Could be random. */ next_ephemeral = 0;

/* Ephemeral port selection function */num_ephemeral = max_ephemeral - min_ephemeral + 1; offset = F(local_IP, remote_IP, remote_port, secret_key);count = num_ephemeral;

do { port = min_ephemeral + (next_ephemeral + offset) % num_ephemeral; next_ephemeral++;

if(check_suitable_port(port)) return port;count--;

} while (count > 0);

return ERROR;

14

Page 14: Socket Overloading for Fun and  Cache-Poisoning

Port Derandomization via Socket Overloading

15

Client1.2.3.6

Resolver1.2.3.4

NS5.6.7.8

Off-path Attacker6.6.6.6

Measure response latency δ(1)

DNS RequestsrcPort : x(2) DNS Request

srcPort : y

UDP PacketdstPort : z

(3)

(4)DNS ResponsedstPort : y

DNS ResponsedstPort : x

ResponseLatency t = τ

UDP PacketdstPort : z

Burst of N UDP packets to port z

(5) Response latency t = τ

If τ > δ, then z == yElse repeat with port = z - 1

t = 0

Page 15: Socket Overloading for Fun and  Cache-Poisoning

Port Derandomization via Socket Overloading

17

Page 16: Socket Overloading for Fun and  Cache-Poisoning

Alg. #4 – Double-Hash Port Selection /* Initialization at system boot time */ for(i = 0; i < TABLE_LENGTH; i++) table[i] = random() % 65536;

/* Ephemeral port selection function */ num_ephemeral = max_ephemeral - min_ephemeral + 1; offset = F(local_IP, remote_IP, remote_port, secret_key1); index = G(local_IP, remote_IP, remote_port, secret_key2); count = num_ephemeral;

do { port = min_ephemeral + (offset + table[index]) % num_ephemeral; table[index]++;

if(check_suitable_port(port)) return port;

count--;

} while (count > 0);

return ERROR;

18

Page 17: Socket Overloading for Fun and  Cache-Poisoning

Alg. #5 – Random-Increments Port Selection /* Initialization code at system boot time. */ next_ephemeral = random() % 65536; /* Initialization value */ N = 500; /* Determines the trade-off */

/* Ephemeral port selection function */ num_ephemeral = max_ephemeral - min_ephemeral + 1;

count = num_ephemeral;

do { next_ephemeral = next_ephemeral + (random() % N) + 1; port = min_ephemeral + (next_ephemeral % num_ephemeral);

if(check_suitable_port(port)) return port;

count--; } while (count > 0);

return ERROR;

19

Page 18: Socket Overloading for Fun and  Cache-Poisoning

Alg. #5 – Random-Increments Port Selection

• Birthday Protection• Birthday attack requires multiple requests and multiple responsesno sending multiple concurrent requests for the same queries

• How to circumvent Birthday Protection?• N DNS requests

• j.foo.org where ( 0 <= j <= N)Not the same host pass the protectionThen the socket overloading attack for the correct port

20

Page 19: Socket Overloading for Fun and  Cache-Poisoning

Port Derandomization via Socket Overloading

21

Page 20: Socket Overloading for Fun and  Cache-Poisoning

Socket-Overloading for Attacks on DNS

• DNS Cache Poisoning• NS Pinning via Resolver Socket-Overloading• NS Pinning via Name Server Socket-Overloading

22

Page 21: Socket Overloading for Fun and  Cache-Poisoning

Socket-Overloading for Attacks on DNS – DNS Cache Poisoning

23

Client1.2.3.6

Resolver1.2.3.4

NS5.6.7.8

Off-path Attacker6.6.6.6

s d1.2.3.6 1.2.3.4x 53TXID 127A?$1.foo.org

(1)

s d1.2.3.4 5.6.7.853 53TXID 3544A?$1.foo.org

(2) s d5.6.7.8 1.2.3.453 53TXID 1ns.foo.org A 6.6.6.6

(3)s d5.6.7.8 1.2.3.453 53TXID 3544ns.foo.org A 6.6.6.6(4)

s d1.2.3.4 1.2.3.653 xTXID 127$1.foo.org NXD

s d5.6.7.8 1.2.3.453 53TXID 65536ns.foo.org A 6.6.6.6

216 spoofed DNSresponses for eachTXID value

s d5.6.7.8 1.2.3.453 53TXID 3544$1.foo.org NXD

Response with correct TXID is

cached

Response ignored since no matching pending request

(5)

Page 22: Socket Overloading for Fun and  Cache-Poisoning

Socket-Overloading for Attacks on DNS – DNS Cache Poisoning

24

Client1.2.3.6

ProxyResolver1.2.3.4

UpstreamResolver8.8.8.8

Off-path Attacker6.6.6.6s d

1.2.3.6 1.2.3.4x 53TXID 127A?$1.atk.com

(1)

s d1.2.3.4 8.8.8.8X>1024 53TXID Y{1,…,216}A?$1.atk.com

If correct port is hit in (4), then time-out, and retransmission

(5)

(2)

(3)s d8.8.8.8 1.2.3.453 65000TXID 1ns.atk.com A 6.6.6.6

(4)

s d8.8.8.8 1.2.3.453 65000TXID 65535ns.atk.com A 6.6.6.6

drop

Burst of N spoofedpackets to port 65000

query

response

response

Page 23: Socket Overloading for Fun and  Cache-Poisoning

Socket-Overloading for Attacks on DNS – NS Pinning via Resolver Socket-Overloading

26

Client1.2.3.6

Resolver1.2.3.4

NS5.6.7.8

Off-path Attacker6.6.6.6

s d1.2.3.6 1.2.3.45555 53A?$1.foo.org

(1)

s d1.2.3.4 5.6.7.83424 53A?$1.foo.org

(2)

s d6.6.6.6 1.2.3.4x 3424AAAAAAAAAA

s d5.6.7.8 1.2.3.453 3424$1.foo.org NXD

loss (3)

Burst of NPackets to a known port

s d1.2.3.4 5.6.7.83425 53A?$1.foo.org

Timeoutretransmission

(4)Repeat step (2)after a t secs

Page 24: Socket Overloading for Fun and  Cache-Poisoning

Socket-Overloading for Attacks on DNS – NS Pinning via NS Socket-Overloading

27

Client1.2.3.6

Resolver1.2.3.4

NS5.6.7.8

Off-path Attacker6.6.6.6

s d1.2.3.6 1.2.3.45555 53A?$1.foo.org

(2)

s d1.2.3.4 5.6.7.83424 53A?$1.foo.org

(1)

s d6.6.6.6 5.6.7.8x 53AAAAAAAAAA

Burst of NPackets

s d1.2.3.4 5.6.7.854525 53A?$1.foo.orgTimeout

retransmission

(4)

s d6.6.6.6 5.6.7.8x 53AAAAAAAAAA

loss

(3)Burst of NPacketsloss

Page 25: Socket Overloading for Fun and  Cache-Poisoning

Defense and Conclusions• Defense

• DNSSEC• Full port randomization

• Avoid per-destination sequential port allocation

• Conclusions• A new attack tool – UDP socket overloading

• Cache poisoning• NS pinning

• The results show that per-destination ports’ assignment [RFC6056] is vulnerable

28