covert channels inside dns - loria · lucas nussbaum covert channels inside dns 22 / 23. legal...

23
Covert Channels inside DNS Lucas Nussbaum Lucas Nussbaum Covert Channels inside DNS 1 / 23

Upload: votruc

Post on 14-Sep-2018

233 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Covert Channels inside DNS

Lucas Nussbaum

Lucas Nussbaum Covert Channels inside DNS 1 / 23

Page 2: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Introduction

On many networks, to access the Internet:you have to pay (airports, train stations, hotels)or you have to log in (universities networks)

Only service available to all users: DNS

QuestionHow can one access the whole Internet (without logging in)using only DNS?

Lucas Nussbaum Covert Channels inside DNS 2 / 23

Page 3: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

DNS - Domain Name System

“phone book” for the InternetUDP, port 53

Types of records:A: karok.imag.fr⇒ 129.88.69.11CNAME: www-id.imag.fr⇒ karok.imag.frTXT: text...

$ dig -t txt imag.fr

Institut d’Informatique et de Mathematiques AppliqueesIMAG BP 53 F-38041 GRENOBLE Cedex 9 (France)or IMAG 46 Av. Felix Viallet F-38031 GRENOBLE Cedex 1v=spf1 mx ip4:129.88.34.204 ?all

Lucas Nussbaum Covert Channels inside DNS 3 / 23

Page 4: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

DNS - Hierarchy and Delegation

Lucas Nussbaum Covert Channels inside DNS 4 / 23

Page 5: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Tunneling data inside DNS - Principle

encapsulation of data in DNS packetsuse a rogue DNS server on the Internet to decode dataand send it to other servers

Firewall DNS server

Internet Server

I n t e r n e t

Lucas Nussbaum Covert Channels inside DNS 5 / 23

Page 6: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Covert Channels

Definitionparasitic communication channel that draws bandwidth fromanother channel in order to transmit information without theauthorization or knowledge of the latter channel’s designer,owner or operator.

Storage channels - communicate by modifying a storedobjectTiming channels - transmit information by affecting therelative timing of events

Examples: Steganography, IP over HTTP, IP over ICMP

Lucas Nussbaum Covert Channels inside DNS 6 / 23

Page 7: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Covert Channels inside DNS - implementationsNSTX:

IP over DNSuses base64 to uploaduses TXT records without encoding to downloadunmaintained, buggy code (segfaults, mem leaks)splits IP packets in chunks

OzymanDNS:encapsulates a TCP stream in DNS packets (typical use:SSH over DNS)implements a TCP-like machine to reorder/retransmitpacketsuses TXT and EDNS0crashes very frequently; not able to run performancemeasurements

Lucas Nussbaum Covert Channels inside DNS 7 / 23

Page 8: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Covert Channels inside DNS - implementations

Iodine:better codebase than NSTXuses base32 or base64uses NULL records and EDNS0splits IP packets into chunks

Lucas Nussbaum Covert Channels inside DNS 8 / 23

Page 9: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

TUNS

Features:IP over DNSuses only CNAME records (both for upload and download)doesn’t split IP packets, reduces MTU instead (1-1mapping)no need to bother with TCP state machine, reordering /retransmittingprototype written in Ruby (perf. problems with pNet::DNS!)tries to be RFC-compliant

Lucas Nussbaum Covert Channels inside DNS 9 / 23

Page 10: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

TUN/TAP

virtual network interfacestap: layer 2 (ethernet frames)tun: layer 3 (IP packets)

userspace application can associate with them andsend/receive packets to/from the OS network stackused by openvpn, vtun, bochs, qemu, virtualboxavailable on all common platforms (incl. MS Windows)

Lucas Nussbaum Covert Channels inside DNS 10 / 23

Page 11: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Base32? Base64?

Goal: encode binary stream as textBase32: 32 values (5 bits) per character [A-Z][2-7]Base64: 64 values (6 bits) per character [A-Z][a-z][0-9]-+DNS (RFC 1034):

<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str><let-dig-hyp> ::= <let-dig> | "-"<let-dig> ::= <letter> | <digit><letter> ::= any one of the 52 alphabetic characters A through Z inupper case and a through z in lower case<digit> ::= any one of the ten digits 0 through 9

Note that while upper and lower case letters are allowed in domainnames, no significance is attached to the case. That is, two nameswith the same spelling but different case are to be treated as ifidentical.

Lucas Nussbaum Covert Channels inside DNS 11 / 23

Page 12: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Base32? Base64?

Base64: 64 charactersDNS: 63 characters [A-z][a-z][0-9]-

nstx: [A-Z][a-z][0-9]-_

Lucas Nussbaum Covert Channels inside DNS 12 / 23

Page 13: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Sending and receiving data

Sending from client to server: easy.Just encapsulate data in a DNS packet as soon as it isreceived.

Receiving from server: harder.Client polls server with nearly empty requests.Server answers with data.

Improvement:Server keeps requests for a little while if there’s nothing tosend.

Lucas Nussbaum Covert Channels inside DNS 13 / 23

Page 14: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Performance?

Compare NSTX, Iodine, TUNS (OzymanDNS is too buggy)Latency?Bandwidth?How does performance evolve when the networkconditions degrade?

Lucas Nussbaum Covert Channels inside DNS 14 / 23

Page 15: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Experimental setup

servercl ient emulator

Using 3 Grid’5000 nodes (Helios)Running on Linux 2.6.22 - i686, not amd64Using Linux TC/Netem for network emulationEmulation parameters applied when packets exit theemulator nodeFor all experiments: output bandwidth of emulator nodelimited to 1 Mbps

Lucas Nussbaum Covert Channels inside DNS 15 / 23

Page 16: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Latency - ping started by client (-i 1)

0

50

100

150

200

250

0 50 100 150 200

perc

eive

d R

TT

(m

s)

emulated RTT (ms)

IdealNSTX - UPIodine - UPTuns - UP

Lucas Nussbaum Covert Channels inside DNS 16 / 23

Page 17: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Latency - ping started by server (-i 1)

0

200

400

600

800

1000

1200

1400

0 50 100 150 200

perc

eive

d R

TT

(m

s)

emulated RTT (ms)

IdealNSTXIodineTuns

Lucas Nussbaum Covert Channels inside DNS 17 / 23

Page 18: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Bandwidth - upload (client to server)

0

100

200

300

400

500

0 50 100 150 200

band

wid

th (

Kbp

s)

emulated RTT (ms)

NSTXIodineTuns

Lucas Nussbaum Covert Channels inside DNS 18 / 23

Page 19: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Bandwidth - download (server to client)

0

100

200

300

400

500

0 50 100 150 200

band

wid

th (

Kbp

s)

emulated RTT (ms)

NSTXIodineTuns

Lucas Nussbaum Covert Channels inside DNS 19 / 23

Page 20: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Bandwidth under 2% loss - upload

0

50

100

150

200

0 50 100 150 200

band

wid

th (

Kbp

s)

emulated RTT (ms)

NSTXIodineTuns

NSTX - no lossIodine - no lossTuns - no loss

Lucas Nussbaum Covert Channels inside DNS 20 / 23

Page 21: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Demo

IMAG-VPN?Accessing the Internet from Grid’5000?

Lucas Nussbaum Covert Channels inside DNS 21 / 23

Page 22: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Conclusion

IP over DNS works!KISS (Keep It Simple, Stupid) works

Tuns: about 700 LOCPerformance?

Ruby: not as fast as C code (big surprise!)pNet::DNS is SLOWBut good design can replace fast code(having both is better, of course)

NSTX and Iodine perform a lot betterBut often don’t work in real networksIn experiments: no intermediate DNS servers

Lucas Nussbaum Covert Channels inside DNS 22 / 23

Page 23: Covert Channels inside DNS - Loria · Lucas Nussbaum Covert Channels inside DNS 22 / 23. Legal issues Code pénal, article 323-1: Le fait d’accéder ou de se maintenir, frauduleusement,

Legal issues

Code pénal, article 323-1:Le fait d’accéder ou de se maintenir, frauduleusement, dans toutou partie d’un système de traitement automatisé de données estpuni de deux ans d’emprisonnement et de 30000 eurosd’amende.Lorsqu’il en est résulté soit la suppression ou la modification dedonnées contenues dans le système, soit une altération dufonctionnement de ce système, la peine est de trois ansd’emprisonnement et de 45000 euros d’amende.

Code pénal, article 323-3-1:Le fait, sans motif légitime, d’importer, de détenir, d’offrir, decéder ou de mettre à disposition un équipement, un instrument,un programme informatique ou toute donnée conçus ouspécialement adaptés pour commettre une ou plusieurs desinfractions prévues par les articles 323-1 à 323-3 est puni despeines prévues respectivement pour l’infraction elle-même oupour l’infraction la plus sévèrement réprimée.

Lucas Nussbaum Covert Channels inside DNS 23 / 23