Detecting and Preventing Anonymous Proxy Usage
|
|
|
- Marshall West
- 9 years ago
- Views:
Transcription
1 Interested in learning more about security? SANS Institute InfoSec Reading Room This paper is from the SANS Institute Reading Room site. Reposting is not permitted without express written permission. Detecting and Preventing Anonymous Proxy Usage Many organizations filter the Internet sites that their users may view. They do this for legitimate reasons that include preventing hostile work environments for their users, protecting network assets and data from malicious code or theft, and complying with regulations and company policies. Anonymous proxy services allow users to bypass most filtering systems. This paper explores methods organizations may use to detect and prevent anonymous proxy usage. Copyright SANS Institute Author Retains Full Rights AD
2 Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 GCIH Gold Certification Author: John Brozycki, [email protected] Advisor: Dr. Eric Cole Accepted: 9/13/2008
3 Abstract... 2 Introduction... 2 Legitimate uses of anonymous proxies... 2 Section I: Detecting Known Proxies... 2 Blacklists... 2 TOR... 2 Interlude: Adapting Regular Expressions to Snort Rules... 2 Section II: Identifying and Detecting Popular Proxy Systems... 2 Overview... 2 Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 PHPProxy... 2 Glype... 2 CGIProxy... 2 SSL Proxies... 2 Section III: Other Ways To Proxy...2 Translators... 2 Google Translator... 2 Yahoo Babel Fish... 2 Windows Live Translator... 2 InterTran... 2 Home Network Proxies
4 LozDodge... 3 Detecting Access to Dynamic IP Addresses... 3 Detecting Dynamic DNS Hosts... 3 SSH Tunneling and Rogue VPNs... 3 Section IV: Detecting Proxied Access To Your Websites... 3 User-Agents... 3 Scanning Back... 3 Section V: Advanced Proxy Detection... 3 Literal Searches... 3 Web Log Base64 Searches... 3 Conclusions... 3 Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 References... 3 Appendix A: findddns.pl... 3 Appendix B: findbase64.pl
5 Abstract Many organizations filter the Internet sites that their users may view. They do this for legitimate reasons that include preventing hostile work environments for their users, protecting network assets and data from malicious code or theft, and complying with regulations and company policies. Anonymous proxy services allow users to bypass most filtering systems. This paper explores methods organizations may use to detect and prevent anonymous proxy usage. Introduction Today s incident handlers and IT/Security professionals face many challenges in securing their networks and enforcing company policies that protect those networks. A growing concern is the use of anonymous proxy services [1]. With anonymous proxies, a user accesses an anonymous proxy website and selects an intended website (such as one that is blocked for the user) that the proxy will retrieve and display within its own page. More frequently, obfuscation techniques are used to hide the destination website, transmitted to the proxy server from the user via a parameter in the URL, making Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 detection extremely difficult. New proxy sites popping up every day make the problem even more challenging. Users are able to circumvent policies and most of the technical measures put in place to enforce them, putting companies at risk of malware, illegal content, data loss, and hostile work environments if inappropriate content is accessed. Can access to these proxy services be detected and prevented? Further, are there instances when users should be allowed to use anonymous proxy services? Many existing solutions rely almost entirely on blacklisting undesirable web sites, with the end result being that many users learn that anonymous proxies allow them to easily bypass this filtering. While blacklists serve a purpose, how do you know if users are circumventing your policies and your blacklists? One answer is to focus on detecting access to anonymous proxies. This paper will focus on techniques for detecting access to anonymous proxy services. The first section, Detecting Known Proxies, will focus on known proxy services that can be blacklisted as well as TOR (The Onion Router). The second section, Identifying and Detecting Popular Proxy Systems, will focus on the popular proxy packages such as PHPPRoxy, CGIProxy, and Glype. The third section, 4
6 Other Ways to Proxy, will focus on translators, home network proxies, SSH and rogue VPNs. The fourth section, Detecting Proxied Access to Your Website, will discuss the challenges of detecting proxied access by Internet users to web sites that you host. Within the sections I will examine search strings you can use to review your web access logs, look at regular expressions you can use to search for whole types of anonymous proxies in logs or incorporate into a Snort IDS rule, and suggest a way to use anonymous proxy advertisement sites to update your own blacklists. Finally, in section five, Advanced Proxy Detection, some advanced proxy detection techniques will be discussed including some Perl scripts to help detect dynamic DNS usage and Base64 encoding within URLs, which is heavily used by today s anonymous proxy servers to conceal destination web addresses. Legitimate uses of anonymous proxies It s worth noting that there can be legitimate uses of proxy services. Proxy servers can allow access to sites that might normally restrict you based on IP address range. If your organization engages in research this may be important. Anonymous proxy servers also mask the user s origin, which may Key fingerprint also be important = AF19 FA27 if your 2F94 organization 998D FDB5 wishes DE3D not F8B5 to 06E4 advertise A169 certain 4E46 access, such as to competitor s web sites. Anonymous proxies can also generally be set to filter certain content, such as Java script, flash, and other components that can contain malicious content. (It s probably a better idea for an organization to do this filtering itself rather than relying on an anonymous proxy for this protection!) Anonymous proxies can also pose security and privacy risks to users. Anonymous proxies come and go every day, established by people driven by varying motives, thus opening the possibility that at least some will siphon passwords or push malware. In early 2007 Microsoft warned about a weakness in the Web Proxy Automatic Discovery (WPAD) protocol that could cause user systems to download configuration settings that would make the systems use malicious proxy servers [2]. It s just as easy to create a few dozen anonymous proxy servers (or a few dozen names which you change or recycle over time and point to the same machines) and wait for users in schools and businesses desperate to bypass Internet filters to come to you. Although there may be some legitimate circumstances for some users to access anonymous proxy servers, in most cases you will not want your users accessing them and you will want to know about it when it happens. 5
7 Section I: Detecting Known Proxies If you know something is a proxy, you can block it with a blacklist. This can be a lot of work to keep up. One possibility is to make use of proxy advertisement sites to update your blacklist for you. 1. Blacklists Blacklists are not generally effective at preventing new or previously unknown proxy sites because the proxy sites have to be known before they can be added to a blacklist. However, as part of a larger solution, performing blacklisting of anonymous proxies is generally worth the effort. Blacklists can prevent already known proxies from being reused, leaving only newly created or renamed sites accessible. Blacklists are relatively low cost in that using them in blocking rules or log searches doesn t severely impact system performance. In some cases you may know something is a proxy but not have a way to readily detect it, so including it on a list of blocked sites gets the job done. Most anonymous proxy servers want to attract users (especially if they are hosting ads to generate revenue) and so are advertised by their owners. Just as proxy users can find these lists, so too can security Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 analysts who want to block these proxies. With a little bit of scripting, sites that host fresh lists of new anonymous proxy servers can be mined and the sites blocked. One such site that hosts proxy lists is mwolk.com. It tracks new proxy servers and also allows owners of new proxy sites to submit URLs for inclusion on the list, which is updated daily. The data contained in this list can be used to create an automatic feed for your blacklist. On the mwolk.com site, the proxy list resides at mwolk.com/proxy_list.html. It can be easily retrieved by several methods and utilities including CURL. To use the CURL command in Unix/Linux/OS X, the syntax would look like this: curl > proxy_list.html Once the html is retrieved to a local file, GREP can be used to select only the lines that contain the URLs for newly listed proxies and CUT can be used to filter the actual URL from the rest of the line in the HTML. A command to do this is: grep url\"\>\<a\ href=\"http proxy_list.html cut -d \" -f 6 > blacklist.txt 6
8 Another site offering proxy lists is Proxy4free at This site lists the IP (Internet Protocol) addresses and ports of anonymous proxies around the world, and appears to be updated about once a week. This site breaks its proxy listing down into five separate pages. Using the same technique, the IP addresses can be extracted and incorporated into a black list. curl > proxy1.html curl > proxy2.html curl > proxy3.html curl > proxy4.html curl > proxy5.html grep whois\.cgi\?domain\= proxy1.html cut -d \= -f 3 cut -d \" -f 1 sort uniq > proxy.txt grep whois\.cgi\?domain\= proxy2.html cut -d \= -f 3 cut -d \" -f 1 sort uniq >> proxy.txt grep whois\.cgi\?domain\= proxy3.html cut -d \= -f 3 cut -d \" -f 1 sort uniq >> proxy.txt grep whois\.cgi\?domain\= proxy4.html cut -d \= -f 3 cut -d \" -f 1 sort uniq >> proxy.txt grep whois\.cgi\?domain\= proxy5.html cut -d \= -f 3 cut -d \" -f 1 sort uniq >> proxy.txt By running these commands in a scheduled process, this information can be automatically Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 updated every day. Newer proxy listing sites can also be added as they are discovered and, if the sites change their output, the GREP and CUT commands can be adapted to continue retrieving proxy URLs. There are some free proxy lists that people have compiled, but all seem to suffer from lack of attention; someone started the blacklist with good intentions and then ran out of time to keep it updated. If you run across a good blacklist it may prove a valuable resource, but keep in mind that it is likely not the owner s top priority. Tapping sites that advertise proxies, such as the examples just discussed, can ensure that you re able to blacklist many of the new proxies out there more effectively. 2. TOR TOR, or The Onion Router, is a project to provide free software and volunteered network infrastructure (TOR nodes) to provide anonymity online. It s goal, as described on the TOR Project website is to protect you by: bouncing your communications around a distributed network of relays run by volunteers all around the world: it prevents somebody watching 7
9 your Internet connection from learning what sites you visit, and it prevents the sites you visit from learning your physical location. [3] While preventing someone who is monitoring your Internet connection from learning what sites you visit has positive connotations for free speech in many parts of the world, it presents a problem for corporate and educational environments where identification and control of sites accessed is necessary to enforce acceptable use policies, minimize data leakage, and stop users from accessing harmful content. To test for TOR detection methods I first installed the Vidalia package, a free multi-platform suite of TOR tools containing TOR, a GUI for TOR called Vidalia, Privoxy (a TOR add-on which filters out ads, banners, and pop-ups), and Torbutton, the Firefox add-on that allows one button enabling and disabling of TOR sessions within Firefox. I then used Wireshark to capture network traffic as I initiated a TOR session. Wireshark s ability to reconstitute a TCP stream was used to observe the content being sent and Key fingerprint received. = I AF19 noticed FA27 a string 2F94 that 998D the FDB5 client DE3D sends F8B5 out 06E4 each time A169 it 4E46 establishes a connection with TOR. The string is as follows: Tor1.0 U client <identity>0 TOR clients will attempt connections on the following ports: , , and According to the TOR FAQ the TOR clients will use ports 80, 443, 9001, or 9030 outbound [4]. If you can t block installation of Vidalia/TOR client on PCs in your network, you can write a Snort rule to detect them. The next section will discuss adapting regular expressions to Snort. Depending on what you are logging, you may not capture TOR client access in your web access logs, so an IDS is one way to catch TOR usage. Here is one rule for detecting TOR client usage in Snort: alert tcp $HOME_NET any -> $EXTERNAL_NET 80,443,9001,9030 (msg: TOR client access detected ; pcre: /.*(Tor).+(client <identity>).*/i ; classtype:policy-violation; sid:50009; Others have also found methods of detecting TOR usage. David Bianco posted a TOR detection Snort rule on his blog on 1/25/2005 [5]. David s rule is as follows: 8
10 alert tcp any any -> $HOME_NET any (msg: "TOR 1.0 Proxy Connection Attempt"; content: "TOR"; content: "<identity>"; within:30; classtype:policy-violation; resp:rst_all; sid: ; rev:1;) Interlude: Adapting Regular Expressions to Snort Rules Snort is a popular and widely used open source Intrusion Detection System. Snort supports the ability to incorporate Perl Compatible Regular Expressions or PCRE. Perl encloses regular expressions within a pair of / instead of the single quotes that were used with GREP. Given the regular expression above for detecting access to a CGIProxy proxy server, a generic Snort rule could be created to alert in real time rather than waiting for a log review. There is also another option available with Snort. If you read David Bianco s rule, above, you may have noticed the resp:rst_all parameter. Snort can be compiled with the ability to do flexible response. This can allow it to send out TCP reset packages to attempt to reset the connection. It can Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 also function in inline mode, where all Internet traffic must pass through the Snort device, giving it the ability to drop traffic that matches specific rules. Regular expressions to find proxy access can be used to create Snort rules that would prevent the proxy access in real time. Configuration of Snort goes well beyond this paper. However, if you have the Snort expertise (or know someone who does) you could opt to use rules to prevent in addition to detect proxy access. In addition to Snort rules, I ll also use regular expressions to try to detect proxies while scanning web access log files with the GREP command (built into most Unix-like operating systems and available as a download for Windows operating systems) and in Perl programs. Regular expressions can be both complex and challenging. A good way to test or develop a regular expression is with a regular expression testing program or online utility. One such utility is Quanetic Software s online RegEx Test at However, if you really want to understand regular expressions the best resource I ve come across is the O Reilly Mastering Regular Expressions book written by Jeffrey Friedl. 9
11 Section II: Identifying and Detecting Popular Proxy Systems Anonymous proxies are often built from a common code base or project. Understanding how the most popular anonymous proxy projects work can allow you to detect all proxies based on a particular project. Overview Most anonymous proxy servers are created using popular CGI and PHP based scripts that provide proxy capabilities and run on both Unix-like and Windows hosts. In both types, a client connects to the server and a CGI program (frequently written in PERL) or PHP script takes the client request and issues a request to the destination site, and then sends that data back to the client. Popularity of proxy scripts is often tied to a particular script s ability to support the full functionality of the destination web site, which grows more complicated as sites include embedded video and JavaScript functionality as well as flash and other media types. Of concern to users of anonymous proxy services is content that is downloaded through the proxy to the browser, where it then executes Key fingerprint and tries to = connect AF19 FA27 back 2F94 directly 998D to FDB5 the website DE3D F8B5 without 06E4 going A169 through 4E46 the proxy. In these instances, your Internet log of blocked sites can come in handy so don t underestimate the value of reviewing what you have successfully blocked. If you see something blocked it doesn t necessarily mean the user didn t get to it. It may indicate the user went through an anonymous proxy but some component that was accessed tried to connect back to the site directly. Some anonymous proxies can check for content such as JavaScript and alter it accordingly, but most recommend that you disable JavaScript and not view other media types. While most proxy users are only concerned with the ability to completely experience the desired web site, the savvier users will also be concerned about getting detected. In the earlier section discussing blacklists, we examined blocking access to a sites that we know are proxies. However, if we can discern characteristics or signatures of the systems these proxies are built on, we can block entire classes of proxies instead of trying to blacklist all of the individual anonymous proxies that are created every day. Most proxy scripts are easy to customize and if this is done the altered script could bypass a signature. In practice, at least as observed at the present time, this isn t commonly done. The vast majority of proxies that I have experienced rolled out on a given script are identical to others running the same script with customization only occurring for the page theme and 10
12 advertisements. In looking at the most popular scripts I ll examine how each can be detected or blocked, allowing all non-customized proxies built on the same script to also be blocked. Techniques and rules can also be utilized to adapt to variations and new proxy scripts that come out in the future. In the introduction, I mention that when a user connects to an anonymous proxy web server the user still needs to pass the URL of the restricted web site he or she is trying to reach. As with any typical website, this is usually passed as a parameter within the URL string. Often, this means that even if the proxy website is not a blocked site, the blocked site can still be read within the URL. This would mean that it could be detected through a simple string search of a web log. It is becoming increasingly common for the destination parameters to be obfuscated through code run in client so that the destination URL cannot be easily read. 3. PHPProxy PHPProxy is a PHP-based proxy server that works on Unix variants as well as Solaris and Windows. The project is maintained at although, at the time Key fingerprint of this writing, = AF19 a new FA27 version 2F94 998D hasn t FDB5 been DE3D released F8B5 since 06E A169 4E46 According to the SourceForge.net statistics page for PHPProxy, in mid-june 2008 it still averages downloads per day [6]. An example of an anonymous proxy that runs on PHPProxy is schoolsnooper.com ( To test the PHPProxy server, a destination of is entered and the resulting URI created is analyzed. The URI is as follows: PHPProxy follows this pattern: hostname}/index.php?q=obfuscatedurl}&hl=identifier} Once you get to the destination site, the proxy places a control frame at the top of the browser window with some interesting options along the bottom. Of particular interest are Rotate 13 and Base64, of which the latter is selected by default. 11
13 Unchecking the Base64 option and loading the page again yields the following URI: Checking the Rotate 13 option yields the following: This confirms that Base64 and ROT13 (taking the real alphabet character and substituting it with what comes, or rotates, 13 positions after it, such that w becomes j ) are the two obfuscation methods used to hide the destination site name. Base64, also used to encode attachments as a binary to text encoding scheme, is built into PHP with the function base64_encode(), so it s not surprising that this would be used for obfuscation. More information on Base64 encoding is available in RFC 3548 available at An online Base64 encoding/decoding utility available at Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 confirms that d3d3lm15c3bhy2uuy29t decodes to To detect any usage of a PHPProxy anonymous proxy server, use the following regular expression: (index\.php\?q=).+(&hl).* For example, if your web log file is named weblog.txt then PHPProxy proxies can be detected by using the GREP command as follows: grep -Ei (index\.php\?q=).+(&hl).* weblog.txt The E parameter tells GREP the search field is a regular expression and the i parameter tells GREP to be case insensitive. A Snort rule to detect this proxy would be: alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg: PHP Proxy detected ; pcre: /(index\.php\?q=).+(&hl).*/i ; classtype:policy-violation; sid:50010;) 12
14 4. Glype Detecting and Preventing Anonymous Proxy Usage As described in the about section of the web page: Glype Proxy is a free web-based proxy script written in PHP. It allows webmasters to quickly and easily set up their own proxy site. There is a huge market for these proxy websites that allow both anonymous browsing and bypassing network filters at school, college or work. [7] Key to its popularity is the fact that current versions fully support the most popular sites and services including MySpace, You Tube, orkut, and others. It is also actively developed. As of May 31, 2008, there were more than 4,500 sites containing the powered by Glype tag as detected through a Google search. Glype stipulates that you must include this text on the page of systems running Glype, but I observed many implementations that did not comply, including sites listed on Glype s own featured proxy page. At a minimum of several thousand systems, Glype must be taken into consideration for detecting anonymous proxies. Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 Earlier versions of Glype gave the user the option of including the destination URL in the clear within the Glype URI or selecting an option to obfuscate it. In not obfuscating the destination URL, it becomes easy to determine the destination. You can simply read the destination URL out of the whole URL string being sent to the Glype server. Perhaps as a consequence, all of the Glype proxies that I ve checked as of May 2008 were enabling obfuscation as the default, without an option to turn this off. Pictured below is a screenshot of the proxy server that was available at the time I observed it in May The site allows for a URL entry. The option button doesn t work, but could allow disabling of cookies, flash, images, and scripts if it functioned. The proxy is hosting Google ads to pay for expenses. When the destination site is reached, there is an additional Google ad at the top of the page. 13
15 is Glype powered but doesn t include the required tag line The URI that Glype creates follows a set pattern just like PHPProxy does. Although this pattern may change in the future, at the current time it is consistent across all versions of Glype that I ve observed. The URI for accessing MySpace from is: Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 Going to another Glype server ( and typing in MySpace as the destination, the URI was as follows: Note that the u= value is exactly the same. This is the obfuscation for In fact, it is Base64 encoded, just like PHPProxy. From this, we can see that Glype servers will use the following pattern: hostname}/browse.php?u=obfuscatedurl}&b=identifier} Further, copying the URL starting at the /browse.php?u= all the way to the end and pasting it after 14
16 the hostname of another Glype server retrieves the same destination URL. To detect specific sites being accessed through Glype, enter the site in a Glype server and copy the obfuscated site from the u= value. For example, to only detect when MySpace is being accessed through Glype, use the string: /browse.php?u=oi8vd3d3lm15c3bhy2uuy29t The Base64 obfuscated URL for looks similar to the encoding utilized by PHPProxy but yet the string is not identical. The u= value of Oi8vd3d3Lm15c3BhY2UuY29t was run through the Base64 decoder available at and confirmed to be Base64 encoded. The string decodes to :// Glype adds a leading :// to all addresses before encoding, likely to keep string searches of Base64 URLs from finding a hit. (An additional base64 encoding and decoding site can be found at To block or detect any usage of a Glype anonymous proxy server, use the following regular Key fingerprint expression: = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 (browse\.php\?u=).+(&b).* To search with GREP as in the previous example: grep -Ei '(browse\.php\?u=).+(&b).*' weblog.txt A Snort rule to detect Glype would be: alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg: Glype Proxy detected ; pcre: /(browse\.php\?u=).+(&b).*/i ; classtype:policy-violation; sid:50015;) 5. CGIProxy Another popular proxy is James Marshall s CGIProxy, which is an actively developed project available at the author s site and is described as a CGI script that acts as an HTTP or FTP proxy [8]. CGIProxy is written in the PERL language instead of PHP. By default, no obfuscation is done to the destination URL. ROT13 support can be enabled if you remove the line comments in the proxy_encode() and proxy_decode() routines. Custom encoding routines may also be created. As the 15
17 author warns, the routines need to be processor-efficient or it will become a performance bottleneck. An example of a site using CGIProxy that utilizes URL encoding is Using this site to access MySpace produces the following URL: The obfuscated text looks like Base64. After removing the forward slashes and extraneous data, starting with the _ character, a Base64 decode yields the following: Oi8vd3d3Lm15c3BhY2UuY29tLw = :// The addition of the forward slash characters is an obvious attempt at thwarting automated parsing; forward slashes usually represent separation of values. Like the other proxy scripts examined it shows that variations of Base64 are predominant due to its built-in function support, the lack of ability or desire by most users to alter the source routines, and the performance penalty that custom encryption or obfuscation could introduce. To detect a CGIProxy proxy use the following regular Key fingerprint expression: = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 (/browse\.php/).+/.+/.+(/b).+/ A GREP statement to detect this would be: grep -Ei '(/browse\.php/).+/.+/.+(/b).+/' weblog.txt A Snort rule for CGI Proxy would be: alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg: CGIProxy detected ; pcre:"/ (/browse\.php/).+/.+/.+(/b).+//i"; classtype:policy-violation; sid:50020;) 6. SSL Proxies Anonymous proxies can employ digital certificates to make detection more difficult as all traffic passed will be encrypted. Except where self-issued (in which case they re not trusted by default browsers) SSL certificates are expensive from both a monetary and CPU (as the server handles the encryption) standpoint. The free, advertised anonymous proxies discussed here are unlikely to pay these premiums, especially when digital certificates get tied to a fully qualified domain name and many 16
18 anonymous proxies come and go or change names week by week. For these reasons, SSL proxies are generally represented by commercial offerings. Examples of SSL proxies include Slicky Proxy ( and Anonymizer ( Because they are commercial entities advertising their names and paying for commercial digital certificates, these proxies are easy to find and easy to block; they will not be changing their domain names frequently, if at all. This is not surprising since their model is to provide anonymous browsing services to customers looking for anonymous browsing, not trying to circumvent filtering. These services can be blocked with a blacklist or a filtering rule as described in the blacklisting section. Section III: Other Ways To Proxy There are other ways to gain proxy services including language translators and SSH and VPN access to home or remote networks. This section will discuss them. 7. Translators Key fingerprint Sometimes = AF19 FA27 tools 2F94 are used 998D for FDB5 purposes DE3D F8B5 beyond 06E4 their A169 original 4E46 intent. Language translation services are a good example. Google, Yahoo, and Microsoft all offer free translation services that take an entered URL and retrieve, translate, and display it within the translation service s browser window. Take away the translation and what you have is basically a proxy. There are some significant disadvantages to using translators as an anonymous proxy. These include the inability in some translators to navigate to additional pages, the inability to run JavaScript, the inability to access media in the retrieved page, and the inability to completely shield the user s activity if JavaScript, flash, or other downloaded elements attempt to reference the destination site directly. Also, since their purpose isn t to hide the translated site, I am unaware of any translators that obfuscate the destination URL, so the destination site will appear within the URL and be detectable if monitored. Still, for some content, translators can be highly effective for bypassing filters. If you can t block these sites outright because they are needed for legitimate use, you ll probably want to monitor them and check on their usage. Frequency and site destination will immediately tip you off if translators are being abused as will monitoring with keywords, such as looking in web logs for sites that you ve blocked, like myspace.com. 17
19 Google Translator Detecting and Preventing Anonymous Proxy Usage Google Translator can be accessed at under the section Translate A Page from Incredibly, the FROM and TO languages can be set to the same values! (You ve got to wonder if someone didn t design it like that on purpose.) To view MySpace using Google Translator as a proxy, one would only have to enter the URL and set both the FROM and TO languages to be English. During the time of this writing, I was sometimes able to get Google Translator to go from English to English and at other times I was not, so Google may be starting to restrict this. Regardless, by selecting a different FROM language the proxy effect works just fine. For example, selecting to translate MySpace from Dutch to English yields the MySpace page with this URL: =UTF-8 Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 The &sl variable indicates the source language, the &tl variable indicates the target language, and the &ie variable indicates the character set to use. As previously noted the destination URL is not obfuscated. The text is clearly present so string searches for restricted sites will catch this. If Google s translation services are not required then blacklist the following site: translate.google.com If translation services are required, string comparisons will be necessary to block or detect access to unauthorized sites. Since it isn t the intent of a translator to provide anonymous proxy capabilities it doesn t obfuscate destination URLs, so the destination site can be easily found in a normal text search of a web access log. This holds true for the remaining translation sites as well. Yahoo Babel Fish Yahoo Babel Fish ( works much like Google Translator. Its FROM/TO language drop down menu doesn t allow you to pair the same FROM and TO languages. However, if MySpace is entered as the translation site and a language pairing such as Dutch to English 18
20 is selected, the retrieved page is in unaltered English. The URL Yahoo creates for doing this is as follows: Babel Fish uses the variable &lp to denote the language pair (in this case Dutch to English, or nl_en ) and the destination website is clearly visible in the URL. Since there are multiple language pair combinations that can yield unaltered pages and English to English isn t allowed, there really isn t a specific combination to focus on to block certain usage. The best bet is to block it outright or to search for unapproved sites within the entire URL. To block all use of Yahoo Babel Fish block access to the site: bablefish.yahoo.com Windows Live Translator Live Translator works much like Yahoo Babel Fish. However, its default view is a side-byside, framed = AF19 comparison FA27 2F94 of the 998D original FDB5 site DE3D and F8B5 the 06E4 translated A169 site. 4E46View option icons in the upper Key fingerprint right of the top control frame allow toggling the window view, allowing only the source (nontranslated) page to be viewed. Using this option, the selected destination language for translation doesn t make any difference because the original version is always available. The URL is as follows: m As with the previous translators, there isn t a string to search on to indicate abuse. Options are to block access outright or to scan web access logs to see if unauthorized sites were accessed. To block all use of Windows Live Translator use: windowslivetranslator.com InterTran Translation Expert s InterTran is another translation service capable of translating (and proxying) web pages. Its URL is Aside from the use of a 19
21 non-standard port (port 2000) that many organizations may already block outbound for http traffic, my experience is that the site is difficult to bring up. Nevertheless, the site should probably be blocked unless you have an explicit need to access it. To block all use of InterTran block the site: 8. Home Network Proxies Recognizing that anonymous proxies can be detected and that some can be set up for malicious purposes (such as capturing passwords) there have been efforts to allow you to use your home broadband connection as an anonymous proxy that you could then reach from work, school, or any Internet connection where filtering was employed. If the proxy is known only to the owner and isn t advertised, it will not be known to any proxy blacklists. LozDodge Key fingerprint LozDodge = AF19 FA27 (available 2F94 998D at FDB5 DE3D F8B5 06E4 A169 4E46is software for Windows operating systems that users install on their home PCs (or on any other unfiltered PCs that they may access) to turn these PCs into personal proxy servers for use when they are at a location where site filtering is enabled. Once installed, a system service named LDG_Service is created. Accessing the LozDodge Server brings up a logon screen as pictured below. After logging in, a URL field is provided. Entering as the destination URL yields the following browser URL, shown here with the non-routable private IP address of the machine I was testing it on: LozDodge provides minimal obfuscation; the destination is immediately evident to the human eye but it may be enough to bypass filters looking for the fully qualified name. The URL is separated at the 20
22 dots, reversed, and forward slashes are also used for good measure. Regardless, a rule looking for myspace would catch it. The goal and capability of this product, at least at the present, is to get you past filters that are only checking the destination site name. One possible filter for LozDodge would be: (\/http\/).+\/.+(.prx) A GREP command to detect this in your web access log: grep -Ei '(\/http\/).+\/.+(.prx)' weblog.txt A Snort rule to detect LozDodge: alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg: LozDodge Proxy detected ; pcre:" /(\/http\/).+\/.+(.prx)/i"; classtype:policy-violation; sid:50025;) While LozDodge appears easy to catch, personal proxy solutions in general present a difficult problem for detection. There is also more incentive for the owner to add customization and obfuscation (or to look for a solution that is easily customized) to protect their personal resource. There are some techniques to detect the access to a home connection even if it cannot easily be Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 determined to be a proxy service. Detecting Access to Dynamic IP Addresses One way to detect access to dynamic IP (consumer) addresses is by utilizing Real time Black List (RBL) resources which have been created and used primarily to aid in blocking spam. There likely isn t any reason a corporate or educational institution should allow access to a broadband user s IP address, so why not alert on it or even block it? (As an added bonus, this can detect when users or compromised systems access a phish, botnet, or other malware hosted on a consumer IP address.) Several dynamic blocklists/blacklists exist. One example blocklist is SORBS ( which also maintains an individual listing of dynamic IP addresses. Not limited to only spam IPs. SORBS adds in dynamic IP blocks as people report them and as it finds them itself. Most RBLs work just like a DNS server. As an example, say you wanted to check the IP address to see if it was a known dynamic address. You could manually use the HOST 21
23 command as follows: host dnsbl.sorbs.net DNS SERVER IP} The IP Address is reversed and the RBL DNS server name is appended and then a DNS server to run the query for your client is added. A successful lookup, meaning the IP address was on the list, would look like this: host dnsbl.sorbs.net Using domain server: Name: Address: #53 Aliases: dnsbl.sorbs.net has address Note that a non-routable IP address is returned. It is the existence of the record that matters. (There is a significance to the last octet of the private IP address returned:.10 as it indicates that the record is associated with a dynamic/user account. For more information, see the return codes at: Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 An unsuccessful lookup, meaning the IP address was not on the list, would look like this: host dnsbl.sorbs.net Using domain server: Name: Address: #53 Aliases: Host dnsbl.sorbs.net not found: 3(NXDOMAIN) The first query result would indicate that the IP address was in the blacklist as a dynamic IP address. The question now becomes how to make this actionable. For the purposes of this paper, I m going to stick to detection, but the concepts could be applied to blocking as well. Using techniques similar to those used to extract proxy server names for blacklists, the same could be done to extract a 22
24 list of URLs accessed through your corporate proxy server, web filter, firewall, etc. Given a list of sites accessed, both by URI and IP addresses, we ll start with a text file that s formatted as follows: aserver.somewhere.com/default.htm From this file, we want to extract any IPs to another file, reverse the order of the four octets, and do a lookup to see if the IP is a known dynamic IP address. The following four line script will extract entries from list.txt that are IP addresses, reverse the octet order, create and run a script file that checks each entry against the SORBS database, and puts any hits (i.e.: where a private IP was returned) in a file called homeusers.txt. To add or replace with another RBL, simply replace.dul.dnsbl.sorbs.net with the correct information for the other RBL. Note that is a fast DNS server that I m using for this example, but you can (and probably should) use others in place of it. Also note that the second, indented line is a continuation of the first line. Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 grep '^[0-9]\1,3\}\.[0-9]\1,3\}\.[0-9]\1,3\}\.[0-9]\1,3\}$' list.txt awk -F. 'print "host " $4."." $3."." $2."." $1.".dul.dnsbl.sorbs.net >> temp2.txt"}' > temp1.bat chmod +x temp1.bat temp1.bat grep temp2.txt awk -F. 'print $4."." $3."." $2."." $1}' > homeusers.txt The GREP command searches for IP addresses in the input file lists.txt and then pipes the output to awk. Awk is used to output a command starting with the HOST command, then to separate the four octets of the IP address by using the. as the delimiter, then output the fields backwards ( becomes ) and finally to append the sorbs.net domain, IP of the DNS server being used, and syntax to append the destination file temp2.txt with the results. The CHMOD command is used to make the temp1.bat output file executable under Unix-like operating systems (it s not necessary if using Windows). On the third line the batch/script file (temp1.bat) is run, with output going to the file temp2.txt. Finally, in the last line GREP is used to pull out any hits with the RBL, undoing the reversing of the IP address before outputting the entry to the file homeusers.txt. All of these commands are supported natively in most Unix-like operating systems. GNU Awk for Windows can 23
25 be found at and GNU Grep for Windows can be found at: Reviewing the file homeusers.txt should give you the destinations that you want to take a closer look at. Spamhaus has a similar Policy Block List (pbl.spamhaus.org) but their service is not free for business/professional use. To see if you qualify or to get rates go to One problem with relying on an RBL is that there are none that I am aware of that cover the Internet Service Provider IP address space 100%. If you are a company or a school that has users who are likely to be using a few common providers, it is worthwhile to do an online check on some of the IP addresses used locally by each provider to see if the associated address block is in their database. In the case of SORBS, the page is at If not found, you can contribute it yourself (for SORBS that would be done via the form at which simultaneously helps your company, as well as any other that uses the service. Key fingerprint In = the AF19 next FA27 section 2F94 a Perl 998D script FDB5 will DE3D be F8B5 introduced 06E4 A169 that can 4E46 help strip out web log entries where IP addresses were used. While IP addresses are sometimes used to access legitimate web sites (especially in the web developer carelessly left a direct IP address link or reference on a page) this is often suspect and worth reviewing. Detecting Dynamic DNS Hosts A myriad of dynamic DNS services exist with most offering at least some services for free. Examples include; and freedns.afraid.org, all available as of June 2008, and there are many others. These services allow you to run a client or access a web page where you can update your IP address to an entry within one of the dynamic DNS domains (or your own domain if you ve paid for one) whenever your ISP changes your IP address. In so doing, it allows people to access their home systems with a name, such as BobsPC.dynamicdnsprovider.com, instead of remembering their currently assigned IP address. Dynamic DNS providers are numerous and often add new domain names, making blacklisting a mostly fruitless exercise. However, there is a way to detect them. 24
26 Most ISPs have created reverse lookup records for all of their dynamic IP addresses. For example, take the IP address I have as I type this at a public library, which is 24.xx I m sanitizing the real address by replacing the second octet with xx. If I do a reverse lookup (in Windows: ping -a 24.xx , in Unix/Linux/OS X: host 24.xx ) I get results as follows: rrcs-24-xx nyc.biz.rr.com This is because that address belongs to the ISP; they are authoritative for the address block and they provide the answer when a reverse lookup request is made for an IP address. Although the dynamic DNS providers can provide forward DNS resolution as owners of the domain, their DNS servers are not used for reverse lookups. Therefore, one technique to detect the use of dynamic DNS is to take the domain part of a web access log entry, resolve the IP address, do a reverse lookup of the IP address, and compare the two names. If the domain names don t match, it s probably someone using a dynamic DNS provider. As an example, I have set up a dynamic account with no-ip.com. The dynamic name johntest.zapto.org will now resolve to my home IP, currently 24.xx The name that my ISP Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 provides for reverse lookups of my IP address is cpe-24-xx xxx.res.rr.com. If I attempted to access a proxy running on my home system from a work or school location, the web access log might contain an entry like this: http/com/myspace/www/.prx/ To strip out the domain name, we ll look for the :// from the left and the next / after that, and grab everything in between. The CUT command can only accept a single character as a delimiter, which might make it a complex, multiple pass process to strip out. In actuality, we can specify the field number as well and, in doing so, it becomes pretty easy. Given a file of URLs only (you ll need to add further commands to get down to this if your log file contains more info) the following command will extract the domains: cut -d "/" -f 3 weblog.txt sort uniq The results are used as the input for the HOST command. However, due to the need for logic and file control, a batch command script was abandoned for a Perl script. The Perl script is findddns.pl, which is in Appendix A. The script works as follows. The CUT command is still utilized via an external call, which includes piping the output into SORT and UNIQ to remove duplicate domains to 25
27 minimize lookups. The CUT external call here assumes a file with only one field, the URL field, for example: If your web log file has multiple fields, use CUT similarly to extract just the URL field and pipe that into the existing CUT command. For example, if you had ten fields separated by commas and the URL field was the fourth field, you might wan to use: cut -d \t -f 16 weblog.txt cut -d / -f 3 sort uniq. (However, the CUT command only works on a single character. One way to get around this is to type the first quote, then press CONTROL and V at the same time and, while still holding them down, press the TAB key, then end quote it. It will look like you ve got about five blank spaces between the quotes, and it takes a little practice to do. If you can t get it to work, there s always the AWK solution, which will be discussed in a moment.) The first cut looks for tab-delimited fields in a Key fingerprint file named = webog.txt AF19 FA27 2F94 and takes 998D the FDB5 sixteenth DE3D F8B5 field 06E4 (which A169 is the 4E46 URL field in Microsoft ISA logs) and pipes that into a second CUT command. The second CUT command uses the / as a delimiter and grabs the third field. Since the output from the first CUT command should be something like the third field will be everything after the // and up to the first / after the fully qualified name. (Note: sometimes the CUT command doesn t parse properly and crashes processing the input. I ve observed it crashing often when processing log files from Microsoft s ISA Server. When it crashes, you will still have the data that it had processed so far, but not the rest of the file, so it s important to monitor any errors generated when CUT is run. You may also have trouble entering a Tab or other value that fields are separated on. The AWK language can help out here. To replace the above CUT commands with AWK it would be: awk -F \t print $16} weblog.txt awk -F / print $3}. Once the URLs have been extracted via CUT or AWK, they are ready to be processed by the Perl script. The script reads in the output of the CUT commands, which are domains such as and mydynamicdnsservice.com. The HOST command is called to retrieve the IP address from the name. The HOST command is then called again to perform a 26
28 reverse DNS lookup of the IP address. The script attempts to grab the simplified name, which is the information needed to distinguish the domain without any specific host information, and compare the original to the one retrieved from the reverse lookup. Using my jontest.zapto.org dynamic DNS example above, the name I set up resolves to the IP 24.xx , and a reverse DNS lookup of the IP yields cpe-24-xx xxx.res.rr.com. Comparing the simplified name we see that.zapto.org doesn t equal.rr.com. This also works for many anonymous proxies that have multiple names or aliases or resolving to the same IP. For example, the proxy mentioned earlier resolves to an IP that has a reverse DNS value of.techentrance.com. There are legitimate sites that can be set up this way, but you can frequently tell by looking at the name if it is likely a proxy or not. This didn t work out as well as I had hoped. I found it surprising how many sites don t have a reverse DNS record set up. Further, many sites are convoluted with the name resolving to many IPs (for load balancing or redundancy) and/or one or more aliases, and even lookups on the IP address can return multiple names. This means there are a lot of false positives as so many legitimate domains aren t configured correctly or resolve to many different values. The script grabs the first name or IP address retrieved for simplicity, which may cause it not to match a legitimate entry even if one of its Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 values is a match. Although HOST has been ported to Windows ( the parameters and response are not quite the same and will not work with this script without modification. Another limitation is that it is not country domain aware, so while it will strip out.domain.com successfully when identifying a domain, if the original domain is domain.co.uk it will strip it out to co.uk. Also, I found that Akamai distributed caching servers cause a lot of false positives. I added a section for ignoring certain hits from the output. Instructions are in the comments for adding more and, as another to do this could be an external file that the script reads to make it easier to edit. Finally, a Perl module to handle the DNS calls (perhaps Net:DNS) could improve upon the external HOST calls and make the script more universal. Even without these improvements and the problem of false positives, the script is still useful for reviewing IP access and domain mismatches. It should make reviewing easier even if there are a lot of false positives. The script output contains a header row and each value is tab delimited, so it can be easily imported into Excel or another spreadsheet for easy sorting and review. Directions and comments are included in the script. 27
29 9. SSH Tunneling and Rogue VPNs The SSH protocol enables encrypted connections as well as the ability to tunnel various traffic over it via port redirections. It can be used to remotely connect to a home system and web traffic tunneled through that connection. To address this, it is a good idea to monitor SSH traffic destinations and limit its usage where possible, such as a white list of acceptable destination if SSH is used. Since access will require an IP address or domain name (likely dynamic) previous detection techniques should help here, too. VPNs may be used in similar fashion. Individuals could establish connections to VPN services set up on a home network or to a rogue or compromised VPN site to access filtered sites. For VPNs on home networks you can use the techniques for detecting access to dynamic DNS hosts or consumer IP address ranges. Monitoring outbound VPN usage, if allowed, is a good idea to determine what is normal and what is not. If your organization doesn t have any reason to allow outbound VPN access you can block the ports numbers used for IPSec. A listing of the ports can be found on the VPNTools web site ( Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 Section IV: Detecting Proxied Access To Your Websites Many websites wish to control the regions where users can access their web resources. One example is the British Broadcasting Company or BBC, which tries to restrict usage of video content available through its iplayer to British IP addresses only. Many people have figured out that if they can access a UK-based proxy server that supports proxying of the media and features they need to view the content, they can easily get around this limitation [9]. There are two ways where detection can occur. The first is when the proxy server acts as a client to request the data from your server on behalf of the user. The second is by interrogating clients or scanning back as they make requests. Unfortunately, both have severe disadvantages. User-Agents When a browser client connects to a web server, it identifies itself with a string called the User- Agent. For example, Firefox on my Mac produces the following User-Agent when I access websites 28
30 (as captured in Wireshark): User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-us; rv:1.9) Gecko/ Firefox/3.0 In order to detect access to a website through a proxy, the proxy would need to produce a unique signature User-Agent by altering the original. Using the website which displays User-Agent values, I confirmed that directly accessing it with my Mac yielded the same results as obtained through the Wireshark capture. In trying proxy sites already examined in each of the categories within this paper, it s apparent that they all do a good job of passing the browser User-Agent through unaltered. Interestingly, when Google Translator was tried it did modify the User-Agent, but then its purpose is not to be an anonymous proxy. The agent that Google Translator provided is as follows: User Agent: Mozilla/5.0 (Macintosh; D; Intel Mac OS X 10.5; en-us; rv: 1.9) Gecko/ Firefox/3.0, gzip (gfe) (via translate.google.com) Key fingerprint In short, the = AF19 User-Agent FA27 2F94 isn t 998D going FDB5 to give DE3D away F8B5 an 06E4 anonymous A169 4E46 proxy server. Scanning Back The other method is to scan back the address of each client that accesses your web site. To do this, you send out a website request, such as for to the address of the client connecting to you. If you get an answer with the data for then the site is likely a proxy that is being used to access your site. For many organizations performing active scanning is not acceptable. For others, the volumes of connection attempts they experience make this impractical. However, if you have the desire and the resources, this may be something for you to consider. One free project is the Frost Jedi Open Proxy Detector, a PHP-based proxy detector, available at the Frost Jedi Group s website ( You can see an example of it at In my testing of it, I found that results were not always accurate from one scan to another, and often took a considerable amount of time. This isn t necessarily the fault of the detector; proxy sites can frequently be utilized to the point of exhausting their resources and not show up as a proxy simply because they do not respond in time. Additionally, some proxies may not 29
31 respond to requests from certain IP ranges, making it more difficult to test without a second system in a different IP range. One technique might be to initially allow the connection and farm off the proxy detection to another system. If the system determines the client is a proxy, a rule could be automatically added to a router or firewall to prevent access and hopefully disrupt the current connection, if it is still up. This is a risky proposition and best left to situations where preventing proxy access is crucial and the risk of false positives or abuse (attempts by malicious individuals to get legitimate sites blocked by finding a way to get the proxy detector to register a false negative) is acceptable. It should also be noted that this can help in reducing proxy access but will never be able to block all proxy access. As one example of why this is the case, a proxy could allow inbound connectivity to a non-standard port. Making a proxy detector scan all possible ports for all connecting hosts is not practical and could likely be viewed as a hostile action by legitimate networks that connect to you, possibly even getting your address range blocked. Since you can t scan every port value there is always the chance that the client connecting to you is a proxy but you won t detect it. As cool as scanning back may seem, so far the associated problems really keep it from being practical. Utilizing black lists currently appears to be the safest, least processing intensive method to use, although it will Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 not catch all attempts. Section V: Advanced Proxy Detection In the pre-modern coal mining days, canaries were used to detect the build up of poisonous gases in the mine [10]. In detecting anonymous proxy usage, there are some things we can look for in network traffic that could be indicative of a proxy (and without having to sacrifice any small, yellow song birds!) Myspace is once again an example of a site that users want to go to that administrators might want to block. (If some other prohibited site is more appropriate for your instance, use it here instead.) Knowing some of the popular obfuscation methods, we can create the Base64 and ROT13 representations of myspace (leaving off the www. and the.com ) and alert or log on URLs that include literal string matches. In the case of Base64, every 3 characters of the original string are converted to 4 characters in the encoded string, so adding or changing characters at or near the 30
32 beginning of the string completely alters the results. In the case of rotational encoding, such as ROT13, there s a one for one substitution so we don t need to create multiple search values to catch the search string within a larger string. Literal Searches The following literal search values could be used to review the daily Internet access logs to detect obfuscated instances of MySpace or other prohibited sites. The point would not be to detect all anonymous proxy usage, but to pick a popular site you think users might try to access and search specifically for encodings of it to detect a new proxy. Using Base64 encoding sites as mentioned earlier, you may create the encoding for any sites that you want to check for. Examples are given below for MySpace. Base64 of myspace is bxlzcgfjzq== Base64 of is d3d3lm15c3bhy2uuy29t Base64 of :// is Oi8vd3d3Lm15c3BhY2UuY29tIA0K Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 ROT13 of myspace is zlfcnpr Web Log Base64 Searches There are legitimate uses for Base64 encoding in URLs. However, since this is a predominant means of obfuscation for anonymous proxy services, it s worth reviewing logs for Base64 usage to detect anonymous proxy usage. There is no specific utility for detecting Base64 that I am aware of, so I set to the task of making one. Several problems had to be overcome. Base64 takes each character, translates it to it s ASCII value, stores the ASCII value in binary, 8-bit format as 1 s and 0s, and then grabs 6 bit groups (since in binary 6 bits are needed to represent 64 possibilities) to represent the Base64 values. Because 6 bits and 8 bits take 4 bytes to align (6*4=24 and 8*3=24) Base64 values are always expressed in 4-byte groupings (three ASCII characters become four Base64 characters) so a Base64 value should always be divisible by four. If the original string doesn t take up the entire four bytes, the Base 64 value is supposed to be padded with the equal sign character, which represents a null value [11]. For more details as well as an online encoder and decoder visit 31
33 To detect Base64 usage, I wrote a Perl script, findbase64.pl, which is in Appendix B. The script takes as input a file containing a single URL per line. Once again, the CUT command (or AWK) can be used to extract the URL field from your web access logs. For example, Microsoft ISA server log files are tab delimited and hold the URL in the sixteenth field, so use the CUT trick to get the Tab character using CONTROL, V, and the Tab key or, better yet, use AWK: awk print $16} weblog.txt awk -F / print $3}. The script parses each URL, grabbing each section between the / s. It looks for characters that aren t valid Base64 characters (such as., %,!, _, ], or +) to exclude some entries. Next it checks the length to see if it s divisible by four. Finally, it decodes the string and checks to see if any of the ASCII values of the characters are not expected regular characters (values ) Code values below 32 are not printable characters and code values above 128 are extended characters, which would not be valid in a URL. Even after these tests, there are still strings that are not Base64 encoded but are divisible by four that will decode to strings that are normal ASCII characters. In fact, I was deeply Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 disappointed in just how many there were. In a log file with about 1.5 million records, I was getting QuickTime and a decompressor are needed to see this picture. tens of thousands of false positive hits. I observed the contents of these false decodes and found several combinations that weren t valid in URLs, such as \^ and ~\, as well as several others. Having the program filter out decoded strings that contained those values greatly reduces the number of false positives. In fact, on the log file with 1.5 million records, I got 133 hits, only four of which were false positives. Most of the rest were legitimate sites that made use of Base64 encoding within the URL string. I m happy to report that the first time I ran the script on a file containing real data it caught a user accessing MySpace through an anonymous proxy at roflrofl.com. 32
34 As with the other Perl script, output is to a tab-delimited file that can be easily loaded into a spreadsheet for review or sorting. A finding number is listed first (if more than one Base64 encoding is found in a single URL, each is listed in a new row with the same finding number so if you change the sorting in the spreadsheet you can tell which entries were from the same record) then the Base64 decoding, then the original field it was decoded from, and then finally the original URL. In the first few lines of the program is a variable called $Strict which defaults to 1. This means use strict Base64 checking and ignore strings that aren t divisible by four. However, I have found anonymous proxies that simply drop off the equal sign (or equivalent URL encoding.) This doesn t effect decoding it, but it makes the script miss it since the length is too short to conform to the standard. If you change the value of $Strict to 0 the script will not use the divisible by four check. As a result, you ll catch Base64 encodings that don t adhere to the standard, but you ll also get more false positives of strings that aren t Base64 but decode to valid Base64 values. One improvement would be to add additional checking within a single string, as I ve also found sites where two or more encoded values are within one set of / s. Still, I ve found it to work extremely well and even the non-proxy results are interesting. A warning is that some sites actually use Base64 encoding to carry userids and passwords Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 and this script can reveal them. The script runs very fast on my Core 2 Duo laptop, running through a file with about 1.5 million records in roughly 30 seconds. Conclusions Although there is no single, easy way to detect anonymous proxy usage, I ve reviewed a number of techniques that can detect or block many proxies. Blacklists are a good starting point, especially if you can automate the updating of them by utilizing proxy-advertising sites. Snort rules can give instant alerts or, for the advanced Snort users, may be used to block proxy access. Finally, GREP searches through web access logs and a couple of Perl programs to look for dynamic DNS usage and Base64 usage can help detect anonymous proxy usage. Combined, these tools and techniques can help you stay on top of anonymous proxy usage in your environment. 33
35 References Detecting and Preventing Anonymous Proxy Usage [1] Sahasrabudhe, Shailendra. Risks Posed By Anonymous Proxies. 17 March Accessed 1 May 2008 at < [2] Zoica, Remus. New Threat That Can Be Used to Divert Web Traffic Through a Malicious Proxy Server. 31 March Accessed 28 August 2008 at < [3] Tor project staff. Tor: anonymity online. Unknown. Accessed 30 May 2008 at < [4] Tor project staff. TorFAQ. Accessed 30 May 2008 at < [5] Bianco, David. Detecting Tor on your network. 25 January Accessed 30 May 2008 at Key fingerprint < = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 [6] Anonymous. Usage Statistics for phpproxy. 11 June Accessed on 11 June 2008 at < [7] Anonymous. About Glype. Accessed 31 May 2008 at < [8] Marshall, James. HTTP/FTP Proxy in a CGI Script. What it is, what it is Accessed on 19 June 2008 at < 6/19/2008> [9] Oldfogey. Question: Proxy sites: I want the BBC site to think I am in the UK.?. June Accessed on 8 July 2008 at < [10] Pollick, Michael. What does It Mean to be a Canary in a Coal Mine? Accessed 8 July 2008 at < [11] Anonymous. How does Base 64 Encoding Work? 12 September Accessed on 20 June 2008 at < 34
36 Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 35
37 Appendix A: findddns.pl Detecting and Preventing Anonymous Proxy Usage (Find Dynamic DNS usage and direct IP address usage within a web log. latest version at # ====================================================================== # TITLE: findddns.pl # AUTHOR: John Brozycki # DATE : 7/15/2008 # LAST MODIFIED: 7/27/2008 # PURPOSE: Logs domain mismatches between the domain used in the URL # and the domain returned from a reverse DNS lookup performed # on the IP address the original domain resolved to. Only the # last two name sections, ie: domain.com, are compared to prevent # false positives for sites that have aliases (such as # and which # are noted as a "Domain mismatch." Domains that don't have a # reverse DNS record are noted as "Unresolved rdns" Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 # Sites accessed by IP address are noted as "IP Address Access." # Final output file DYNDNS.TXT can be imported into Excel and # sorted by these categories. # This will help detect: users accessing home systems via Dynamic # DNS services, direct access to IP addresses, as well as many # anonymous proxy services that are aliased to the same IP and # thus don't have a corresponding rdns entry. # DEPENDENCIES: Requires the underlying operating system to support # CUT, SORT, UNIQ, and HOST. # # INPUT/OUTPUT: Input is a text file named 'weblog.txt' which is formatted # as follows: # # # # An intermediary file, websites.txt, is created by the # external CUT command. 36
38 # Final output is to a file named DYNDNS.TXT Detecting and Preventing Anonymous Proxy Usage # ====================================================================== # # # Perl trim function to remove whitespace from the start and end of the string. sub trim($); # sub trim($) # Trim function from my $string = shift; $string =~ s/^\s+//; $string =~ s/\s+$//; return $string; } # weblog.txt is the input file of websites accessed, with "website URL" as the # only field present. The CUT utility will be run externally to strip out Key fingerprint # the site domain = AF19 from FA27 the full 2F94 URL. 998D FDB5 DE3D F8B5 06E4 A169 4E46 # The stripped site domain wil be sorted and then duplicates removed to minimize # redundant lookups. # NOTE: If your web log file contains additional fields, you can modify the CUT # command to reduce it to a single field with the website URL. #`cut -d "/" -f 3 weblog.txt sort uniq > websites.txt`; #External command open (OUTFILE, ">dyndns.txt") or die "Cannot open output file: $!"; open (WEBFILE, "websites.txt") or die "Cannot open input file: $!"; $URLisIP = 0; # Print a header file for the output file print OUTFILE ("Category\tLogfile Domain\tRDNS Domain\tLogfile URL\tIP Address\n"); # Process all rows in log file while (<WEBFILE>) $weburl = $_; #Load $line with the line read in from the input file chomp($weburl); #Remove trailing newline character $weburl =~ s/\.$//; #Sanitize a trailing dot by removing it. # Clean off any trailing port assignment, like ":443" 37
39 if ($weburl =~ m/.*:.*/) $weburl = substr($weburl,0,index($weburl,":")); $URLisIP = 0; Detecting and Preventing Anonymous Proxy Usage # Determine is site is an IP address or name if ($weburl =~ /^\d1,3}\.\d1,3}\.\d1,3}\.\d1,3}$/) $URLisIP = 1; $origurl = $weburl; # Save a copy of the original URL read from the log file without an port info if ($URLisIP!= 1) # Call the HOST -t A command to retrieve IP address. chomp($ipaddr = `host -t A -W 2 $weburl`); #Remove all newline chars if query reply had multiple lines $IPaddr =~ s/\n/ /g; Key fingerprint if ($IPaddr = AF19 =~ /.*(not FA27 found).*/i) 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 $IPextract = "Not Found"; } else # Extract the IP address from the HOST command output. It starts eight # characters after the beginning of the word "address" and is at most # 15 characters long (i.e. aaa.bbb.ccc.ddd). $IPextract = substr($ipaddr, index($ipaddr, "address ") + 8, 15); chomp($ipextract); $IPHasASpace = index($ipextract," ",5); if ($IPHasASpace!= -1) $IPextract = substr($ipextract,0,$iphasaspace); } 38
40 else $IPextract = $weburl; Detecting and Preventing Anonymous Proxy Usage # Call the HOST -t A command against the IP address to get the RevDNS name. chomp($reversed = `host -t A -W 2 $IPextract`); # If query response came back with multiple lines get rid of all but the first. if (index($reversed,"\n")!= -1) $Reversed = substr($reversed,0,index($reversed,"\n")); if ($URLisIP!= 1) # Remove trailing "." that HOST output creates if querying an IP, using CHOP. chop($reversed); #Remove all newline chars if query reply had multiple lines Key fingerprint $Reversed = =~ AF19 s/\n/ FA27 /g; 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 # Extract the reverse DNS from the command output $Reverse = substr($reversed, index($reversed, "pointer ") + 8); # Pull out the Top Level Domain by finding last "." $TLD = substr($reverse, rindex($reverse,".")); # Get domains for RevDNS lookup and original entry from file. $DomName = substr($reverse,rindex($reverse,".",rindex($reverse,$tld)-1)); $TLDurl = substr($weburl, rindex($weburl,".")); $DomNameurl = substr($weburl,rindex($weburl,".",rindex($weburl,$tldurl)-1)); # If name is only two parts, ie: domain.com, use the original value read from # the log file. if (not $weburl =~ m/.+\..+\..+/) # Domain has only two parts, ie: domain.com and we munged it so # set it to the original value from the log file and set the reverse # DNSed name to the original value, before stripping out the TLD. $DomNameurl = $origurl; 39
41 if (not $Reverse =~ m/.+\..+\..+/) Detecting and Preventing Anonymous Proxy Usage # Domain name retrieved from reverse DNS has only two parts, ie: domain.com # and we took too much out of it (stripping wasn't needed) so set $DomName # to the value before it was stripped, which was $Reverse. $DomName = $Reverse; # Use included TRIM function to remove any spaces. $DomName = trim($domname); $DomNameurl = trim($domnameurl); $NotFound = 0; $weburl = $origurl; $OutputMsg = "Unknown Error"; # If the names don't match, we want to write the entry to a log. # "Unresolved Mismatch" means the reverse DNS didn't get an answer. # "Domain Mismatch" means the domains didn't match up. "IP access" means # an IP address was used in the URL, not a name. "No rdns exists" means Key fingerprint # that a reverse = AF19 lookup FA27 value 2F94 doesn't 998D exist FDB5 for the DE3D record F8B5 searched. 06E4 A169 4E46 # Make the comparison all lowercase, as some misconfigured rdns records # actually differ by case, i.e. 2o7.net and 2O7.net (letter O not 0.) if (lc($domname) ne lc($domnameurl)) if (index($reversed,"not found")!= -1) $DomName = "Not found"; $NotFound = 1; if ($NotFound == 1) $OutputMsg = "Unresolved rdns"; } else $OutputMsg = "Domain mismatch"; 40
42 if (index($reversed,"no PTR")!= -1) $DomName = "No record"; $OutputMsg = "No rdns record exists"; if (index($reversed,"timed out")!= -1) Detecting and Preventing Anonymous Proxy Usage $DomName = "timed out"; $OutputMsg = "Timed out"; # If original log entry was an IP address, the HOST lookup and # string manipulation will yield invalid results, so set them # here. if ($origurl =~ /^\d1,3}\.\d1,3}\.\d1,3}\.\d1,3}(:[0-9]1,5})?$/) $DomNameurl = $origurl; if (index($domname,"not found")!= -1) Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 $DomName = ("Not found"); $IPextract = $origurl; $OutputMsg = "IP Address access"; chop($reverse); $DomName = $Reverse; $DoNotPrint = 0; if (not $origurl =~ m/\./) # If no "dot" then Intranet or alias - don't bother printing $DoNotPrint = 1; if ($Reverse =~ /.*(Not found).*/i) $DomName = "Not Found"; # Put sites you don't want to 'hit' and output on here by adding additional "elsif" statements. 41
43 # For values that appear in "Log Domain File" column in the results use: # elsif ($DomNameurl =~ m/.*value.*/i) $DoNotPrint = 1} # For values that appear in "RDNS Domain" column in the results use: # elsif ($DomName =~ m/.*value.*/i) $DoNotPrint = 1} if ($DomName =~ m/.*akamai.*/i) elsif ($DomName =~ m/^.*aka\..*/i) elsif ($DomNameurl =~ m/^.*akamai.*/i) $DoNotPrint = 1 } # akamai.net or akamaitechnologies.com $DoNotPrint = 1} # aka.dest_domain} $DoNotPrint = 1} # aka.dest_domain} elsif ($DomName =~ m/.*\.google\.com.*/i) $DoNotPrint = 1} # Google site $OutputMsg = $OutputMsg."\t".$DomNameurl."\t".$DomName."\t".$origURL."\t".$IPextract."\n"; if ($DoNotPrint == 0) print OUTFILE ($OutputMsg); print ($OutputMsg."\n"); #Comment out this line if you don't want output to screen, too close WEBFILE; Key fingerprint close OUTFILE; = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 42
44 Appendix B: findbase64.pl Detecting and Preventing Anonymous Proxy Usage (Find and decode Base64 usage within a web log. latest version at # ====================================================================== # TITLE: findbase64.pl # AUTHOR: John Brozycki [email protected] # DATE : 7/15/2008 # LAST MODIFIED: 7/31/2008 # PURPOSE: Logs occurrences of Base64 encoding within a URL string. # Each URL that contains a Base64 encoded value is given a # sequential finding number, and each encoded value is decoded # and output. Output is as follows: # Finding#, Decoded value, Found in, original URL. # Values are Tab delineated and a header row is provided so # load up the output file in your favorite spreadsheet app. # A caveat with Base64 checking is that some anonymous Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 # proxies drop the padding instead of URL encoding it. The # result is that it still decodes correctly, but it's not # "proper" Base64. I set up a strict variable, $Strict, so # it can be set to '0' if you want strict Base64 checking or # '1' if you want loose checking. Loose checking will result # in more false positives being output. # DEPENDENCIES: Requires the MIME::BASE64 module, which is built in to # most modern versions. If your Perl implementation # doesn't already support this, go to search.cpan.org to get it. # INPUT/OUTPUT: Input is a text file named 'weblog.txt' which is formatted # as follows: # # # # # Final output is to a file named BASE64CHECK.TXT # ====================================================================== 43
45 # # Detecting and Preventing Anonymous Proxy Usage # Use the MIME::Base64 module to decrypt Base64 obfuscated text. #use MIME::Base64; use MIME::Base64 (); # open (OUTFILE, ">base64check.txt") or die "Cannot open output file: $!"; open (CHECKFILE, "<weblog.txt") or die "Cannot open input file: $!"; # Print a header file for the output file print OUTFILE ("Finding\tBase64\tFound In\tURL\n"); $FindingNumber = 0; $LineCt = 0; $Matches = 0; $Strict = 1; # Set to 0 for loose Base64 checking $previousurl = ""; # Process all rows in log file while (<CHECKFILE>) Key fingerprint = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 $weburl = $_; #Load $line with the line read in from the input file chomp($weburl); #Remove trailing newline character $CurrentPos = 0; $Length = length($weburl); $LineCt = $LineCt + 1; # Look for initial "//" and set current position to two characters beyond it $DoubleSlash = index($weburl,"//"); if ($DoubleSlash ge 0) # Found $CurrentPos = $DoubleSlash + 2; # # Main loop through the URL # while ($CurrentPos < $Length) $Slash = index($weburl,"/",$currentpos); 44
46 #$CheckForB64 = 0; if ($Slash == -1) } # no more slashes found $TempElement = substr($weburl,$currentpos); $CurrentPos = $Length; Detecting and Preventing Anonymous Proxy Usage else # process the next URL element section $ElementLength = $Slash - $CurrentPos; $TempElement = substr($weburl,$currentpos,$elementlength); $CurrentPos = $Slash + 1; $ElementLength = length($tempelement); if ($ElementLength >= 4) # Base64 needs to be at least 4 chars Key fingerprint $EqualPos = AF19 = index($tempelement,"="); FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 # If element contains a var like "?var=" then strip it out. if (($TempElement =~ m/.*\?*=/) && ($EqualPos < $ElementLength - 4)) #Take the string after the = character. $TempElement = substr($tempelement,index($tempelement,"=") + 1); $ElementLength = length($tempelement); # If Base64 encoding ended with an "=" sign at the end, it will likely be "URL" encoded # as the "=" sign has meaning within a URL. The value it has is "%3D". if ($TempElement =~ m/(%3d)+/) $TempElement =~ s/%3d/=/; # Clean off any trailing variables like "&b=52" if ($TempElement =~ m/.*&.*/) $TempElement = substr($tempelement,0,index($tempelement,"&")); 45
47 $ElementLength = length($tempelement); Detecting and Preventing Anonymous Proxy Usage # Base64 is always on a 4 byte boundary (padded with "=" if needed.) If we get a 0 from Length MOD 4 # then we know the length is right for a Base64 string. $DivByFour = $ElementLength%4; # It's not Base64 if it has a:.%!_ in it. Also, Base64 is in 4 byte blocks so if # the string is not divisible by 4, it's not Base64. A caveat is that some anonymous # proxies drop the padding instead of URL encoding it. The result is that it still decodes # correctly, but it's not "proper" Base64. I set up a strict variable so it can be set to # '0' if you want strict Base64 checking or '1' if you want loose checking. Loose checking # will result in more false positives output. if ( (not $TempElement =~ m/[.%!_]+/) && (($DivByFour == 0) ($Strict == 0)) ) # print "got here\n"; $DecodedValue = MIME::Base64::decode($TempElement); # If we've decoded a non-base64 value, the ASCII value will probably not be # one of the first 128 regular characters and give a value > 128. This extra Key fingerprint # check = AF19 will FA27 prevent 2F94 some 998D false FDB5 positives. DE3D F8B5 06E4 A169 4E46 $Len = length($decodedvalue); $PosInString = 0; $NotB64 = 0; # print "PosInString: ".$PosInString." Length: ".$Len."\n"; while ($PosInString < $Len) $CurChar = substr($decodedvalue,$posinstring,1); # Get current character's ASCII value $ASCIIval = ord($curchar); # We don't want non printable, space, or extended ASCII codes if (($ASCIIval > 128) ($ASCIIval < 33)) $NotB64 = 1; $PosInString = $PosInString + 1; # There are several invalid character combinations that can result if decoding a string 46
48 # that wasn't really Base64 encoded. Look for them here and, if found, flag as notbase64. # These include "+-", "'^", "~)", "+^", ~*, *^ if ($DecodedValue =~ m/.*((\+-) (\'\^) (~\)) (\+\^) () (~\*)) (\*\^).*/) $NotB64 = 1; # If not detected to be notbase64 and the string is atleast 4 characters... if ((not $NotB64 == 1) && ($PosInString >= 4)) # print "Str: ".$TempElement." Decode: ".$DecodedValue." Ordinal: ".$CHRChar."\n"; if ($weburl ne $previousurl) $FindingNumber +=1; $previousurl = $weburl; print ($FindingNumber."\t".$DecodedValue."\t".$TempElement."\t".$weburl."\n"); Key fingerprint = $Matches AF19 FA27 = $Matches 2F94 998D + 1; FDB5 DE3D F8B5 06E4 A169 4E46 print OUTFILE ($FindingNumber."\t".$DecodedValue."\t".$TempElement."\t".$weburl."\n"); # end TempElement # end Element Length #end Current pos # EOF print $Matches." matches on ".$FindingNumber." URLs out of ".$LineCt." rows processed.\n"; close CHECKFILE; close OUTFILE; 47
49 Last Updated: August 5th, 2016 Upcoming SANS Training Click Here for a full list of all Upcoming SANS Events by Location SANS Portland 2016 Portland, ORUS Aug 08, Aug 13, 2016 Live Event DEV531: Defending Mobile Apps San Francisco, CAUS Aug 08, Aug 09, 2016 Live Event DEV534: Secure DevOps San Francisco, CAUS Aug 10, Aug 11, 2016 Live Event Data Breach Summit Chicago, ILUS Aug 18, Aug 18, 2016 Live Event SANS Bangalore 2016 Bangalore, IN Aug 22, Sep 03, 2016 Live Event SANS Virginia Beach 2016 Virginia Beach, VAUS Aug 22, Sep 02, 2016 Live Event SANS Chicago 2016 Chicago, ILUS Aug 22, Aug 27, 2016 Live Event SANS Alaska 2016 Anchorage, AKUS Aug 22, Aug 27, 2016 Live Event SANS Adelaide 2016 Adelaide, AU Sep 05, Sep 10, 2016 Live Event SANS Brussels Autumn 2016 Brussels, BE Sep 05, Sep 10, 2016 Live Event SANS Northern Virginia - Crystal City 2016 Crystal City, VAUS Sep 06, Sep 11, 2016 Live Event SANS Network Security 2016 Las Vegas, NVUS Sep 10, Sep 19, 2016 Live Event SANS London Autumn London, GB Sep 19, Sep 24, 2016 Live Event SANS ICS London 2016 London, GB Sep 19, Sep 25, 2016 Live Event Security Leadership Summit Dallas, TXUS Sep 27, Oct 04, 2016 Live Event SANS Oslo 2016 Oslo, NO Oct 03, Oct 08, 2016 Live Event SANS Seattle 2016 Seattle, WAUS Oct 03, Oct 08, 2016 Live Event SANS DFIR Prague 2016 Prague, CZ Oct 03, Oct 15, 2016 Live Event SANS Baltimore 2016 Baltimore, MDUS Oct 10, Oct 15, 2016 Live Event SANS Tokyo Autumn 2016 Tokyo, JP Oct 17, Oct 29, 2016 Live Event SANS Tysons Corner 2016 Tysons Corner, VAUS Oct 22, Oct 29, 2016 Live Event SANS San Diego 2016 San Diego, CAUS Oct 23, Oct 28, 2016 Live Event SANS Munich Autumn 2016 Munich, DE Oct 24, Oct 29, 2016 Live Event SOS SANS October Singapore 2016 Singapore, SG Oct 24, Nov 06, 2016 Live Event SANS FOR508 Hamburg in German Hamburg, DE Oct 24, Oct 29, 2016 Live Event Pen Test HackFest Summit & Training Crystal City, VAUS Nov 02, Nov 09, 2016 Live Event SANS Sydney 2016 Sydney, AU Nov 03, Nov 19, 2016 Live Event SANS Dallas 2016 OnlineTXUS Aug 08, Aug 13, 2016 Live Event SANS OnDemand Books & MP3s OnlyUS Anytime Self Paced
Detecting Anonymous Proxy Usage
Detecting Anonymous Proxy Usage John Brozycki March 2008 GIAC GPEN, GCIH, GSEC, GCIA, GCFW, GCFA, GREM [email protected] SANS Technology Institute - Candidate for Master of Science Degree 1 1 John
Stopping secure Web traffic from bypassing your content filter. BLACK BOX
Stopping secure Web traffic from bypassing your content filter. BLACK BOX 724-746-5500 blackbox.com Table of Contents Introduction... 3 Implications... 4 Approaches... 4 SSL CGI Proxy... 5 SSL Full Proxy...
SSL VPN Portal Options
1. ProSecure UTM Quick Start Guide This quick start guide describes how to use the SSL VPN Wizard to configure SSL VPN portals on the ProSecure Unified Threat Management (UTM) Appliance. The Secure Sockets
Kiwi SyslogGen. A Freeware Syslog message generator for Windows. by SolarWinds, Inc.
Kiwi SyslogGen A Freeware Syslog message generator for Windows by SolarWinds, Inc. Kiwi SyslogGen is a free Windows Syslog message generator which sends Unix type Syslog messages to any PC or Unix Syslog
Content Filtering Client Policy & Reporting Administrator s Guide
Content Filtering Client Policy & Reporting Administrator s Guide Notes, Cautions, and Warnings NOTE: A NOTE indicates important information that helps you make better use of your system. CAUTION: A CAUTION
Filter Avoidance and Anonymous Proxy Guard
March 21, 2011 Author: Audience: SWAT Team Evaluator Product: Cymphonix Network Composer EX Series, XLi OS version 9 Filter Avoidance and Anonymous Proxy Guard Filter Avoidance The award winning XLi technology
Chapter 6 Virtual Private Networking Using SSL Connections
Chapter 6 Virtual Private Networking Using SSL Connections The FVS336G ProSafe Dual WAN Gigabit Firewall with SSL & IPsec VPN provides a hardwarebased SSL VPN solution designed specifically to provide
SOUTHERN POLYTECHNIC STATE UNIVERSITY. Snort and Wireshark. IT-6873 Lab Manual Exercises. Lucas Varner and Trevor Lewis Fall 2013
SOUTHERN POLYTECHNIC STATE UNIVERSITY Snort and Wireshark IT-6873 Lab Manual Exercises Lucas Varner and Trevor Lewis Fall 2013 This document contains instruction manuals for using the tools Wireshark and
Proxy Blocking: Preventing Tunnels Around Your Web Filter. Information Paper August 2009
Proxy Blocking: Preventing Tunnels Around Your Web Filter Information Paper August 2009 Table of Contents Introduction... 3 What Are Proxies?... 3 Web Proxies... 3 CGI Proxies... 4 The Lightspeed Proxy
SonicOS Enhanced 3.8.0.6 Release Notes TZ 180 Series and TZ 190 Series SonicWALL, Inc. Firmware Release: August 28, 2007
SonicOS Enhanced 3.8.0.6 TZ 180 Series and TZ 190 Series SonicWALL, Inc. Firmware Release: August 28, 2007 CONTENTS PLATFORM COMPATIBILITY SONICWALL RECOMMENDATIONS KNOWN ISSUES RESOLVED KNOWN ISSUES UPGRADING
F-Secure Messaging Security Gateway. Deployment Guide
F-Secure Messaging Security Gateway Deployment Guide TOC F-Secure Messaging Security Gateway Contents Chapter 1: Deploying F-Secure Messaging Security Gateway...3 1.1 The typical product deployment model...4
How to Prevent Secure Web Traffic (HTTPS) from Crippling Your Content Filter. A Cymphonix White Paper
How to Prevent Secure Web Traffic (HTTPS) from Crippling Your Content Filter A Cymphonix White Paper How to Prevent Secure Web Traffic (HTTPS) from Crippling Your Content Filter Introduction Internet connectivity
Driving more business from your website
For financial intermediaries only. Not approved for use with customers. Driving more business from your website Why have a website? Most businesses recognise the importance of having a website to give
Security from the Ground Up eblvd uses a hybrid-asp model designed expressly to ensure robust, secure operation.
eblvd enables secure, cloud-based access to a PC or server over the Internet. Data, keyboard, mouse and display updates are transmitted over a highly compressed, encrypted stream, yielding "as good as
Chapter 4 Firewall Protection and Content Filtering
Chapter 4 Firewall Protection and Content Filtering This chapter describes how to use the content filtering features of the ProSafe Dual WAN Gigabit Firewall with SSL & IPsec VPN to protect your network.
Web Application Vulnerability Testing with Nessus
The OWASP Foundation http://www.owasp.org Web Application Vulnerability Testing with Nessus Rïk A. Jones, CISSP [email protected] Rïk A. Jones Web developer since 1995 (16+ years) Involved with information
Step-by-Step Configuration
Step-by-Step Configuration Kerio Technologies C 2001-2003 Kerio Technologies. All Rights Reserved. Printing Date: December 17, 2003 This guide provides detailed description on configuration of the local
Chapter 2 Connecting the FVX538 to the Internet
Chapter 2 Connecting the FVX538 to the Internet Typically, six steps are required to complete the basic connection of your firewall. Setting up VPN tunnels are covered in Chapter 5, Virtual Private Networking.
How to test and debug an ASP.NET application
Chapter 4 How to test and debug an ASP.NET application 113 4 How to test and debug an ASP.NET application If you ve done much programming, you know that testing and debugging are often the most difficult
FTP Service Reference
IceWarp Server FTP Service Reference Version 10 Printed on 12 August, 2009 i Contents FTP Service 1 V10 New Features... 2 FTP Access Mode... 2 FTP Synchronization... 2 FTP Service Node... 3 FTP Service
FTP Service Reference
IceWarp Unified Communications Reference Version 11.3 Published on 1/6/2015 Contents... 3 About... 4 Reference... 5 General Tab... 5 Dialog... 6 FTP Site... 6 Users... 7 Groups... 11 Options... 14 Access...
TMS Phone Books Troubleshoot Guide
TMS Phone Books Troubleshoot Guide Document ID: 118705 Contributed by Adam Wamsley and Magnus Ohm, Cisco TAC Engineers. Jan 05, 2015 Contents Introduction Prerequisites Requirements Components Used Related
How to make a VPN connection to our servers from Windows 8
How to make a VPN connection to our servers from Windows 8 Windows 8 is able to make a newer type of VPN connection called a Secure Socket Tunnelling Protocol (SSTP) connection. This works just like a
Steps for Basic Configuration
1. This guide describes how to use the Unified Threat Management appliance (UTM) Basic Setup Wizard to configure the UTM for connection to your network. It also describes how to register the UTM with NETGEAR.
N-CAP Users Guide Everything You Need to Know About Using the Internet! How Firewalls Work
N-CAP Users Guide Everything You Need to Know About Using the Internet! How Firewalls Work How Firewalls Work By: Jeff Tyson If you have been using the internet for any length of time, and especially if
PaperCut Payment Gateway Module - RBS WorldPay Quick Start Guide
PaperCut Payment Gateway Module - RBS WorldPay Quick Start Guide This guide is designed to supplement the Payment Gateway Module documentation and provides a guide to installing, setting up and testing
Instructions for Configuring Your Browser Settings and Online Security FAQ s. ios8 Settings for iphone and ipad app
Instructions for Configuring Your Browser Settings and Online Security FAQ s ios8 Settings for iphone and ipad app General Settings The following browser settings and plug-ins are required to properly
Chapter 4 Firewall Protection and Content Filtering
Chapter 4 Firewall Protection and Content Filtering The ProSafe VPN Firewall 50 provides you with Web content filtering options such as Block Sites and Keyword Blocking. Parents and network administrators
Connection and Printer Setup Guide
Connection and Printer Setup Guide For connection issues, see the following sections of this document: "Connection Requirements" on page 1 "Log on" on page 2 "Troubleshooting Your Connection" on page 4
DiskPulse DISK CHANGE MONITOR
DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com [email protected] 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product
Setting up pfsense as a Stateful Bridging Firewall.
Setting up pfsense as a Stateful Bridging Firewall. Contents Contents Setting up pfsense as a Stateful Bridging Firewall.... 1 What king of system these directions will try and help you create.... 1 Selecting
Blue Coat Security First Steps Solution for Deploying an Explicit Proxy
Blue Coat Security First Steps Solution for Deploying an Explicit Proxy SGOS 6.5 Third Party Copyright Notices 2014 Blue Coat Systems, Inc. All rights reserved. BLUE COAT, PROXYSG, PACKETSHAPER, CACHEFLOW,
A User s Guide to Helm
A User s Guide to Helm WebHost Automation Ltd http://www.webhostautomation.com/ January 2006 Doc: HELM300.02.09 Complying with all applicable copyright laws is the responsibility of the user. Without limiting
Laptop Backup - Administrator Guide (Windows)
Laptop Backup - Administrator Guide (Windows) Page 1 of 86 Page 2 of 86 Laptop Backup - Administrator Guide (Windows) TABLE OF CONTENTS OVERVIEW PREPARE COMMCELL SETUP FIREWALL USING PROXY SETUP FIREWALL
Qvis Security Technical Support Field Manual LX Series
Table of Contents Page 1: Motion Detection 1.0 Configuring Motion Detection for LX Apollo / LX Zeus DVRs 2 1.1 Motion Playback on LX Apollo / LX Zeus DVRs 3 1.2 Scheduling Motion and Continuous Recording
Deep analysis of a modern web site
Deep analysis of a modern web site Patrick Lambert November 28, 2015 Abstract This paper studies in details the process of loading a single popular web site, along with the vast amount of HTTP requests
W3Perl A free logfile analyzer
W3Perl A free logfile analyzer Features Works on Unix / Windows / Mac View last entries based on Perl scripts Web / FTP / Squid / Email servers Session tracking Others log format can be added easily Detailed
Smart Card Authentication. Administrator's Guide
Smart Card Authentication Administrator's Guide October 2012 www.lexmark.com Contents 2 Contents Overview...4 Configuring the applications...5 Configuring printer settings for use with the applications...5
Sophos for Microsoft SharePoint startup guide
Sophos for Microsoft SharePoint startup guide Product version: 2.0 Document date: March 2011 Contents 1 About this guide...3 2 About Sophos for Microsoft SharePoint...3 3 System requirements...3 4 Planning
SonicWALL Global Management System Configuration Guide Standard Edition
SonicWALL Global Management System Configuration Guide Standard Edition Version 2.3 Copyright Information 2002 SonicWALL, Inc. All rights reserved. Under copyright laws, this manual or the software described
Chapter 3 LAN Configuration
Chapter 3 LAN Configuration This chapter describes how to configure the advanced LAN features of your ProSafe Dual WAN Gigabit Firewall with SSL & IPsec VPN. This chapter contains the following sections
ABB solar inverters. User s manual ABB Remote monitoring portal
ABB solar inverters User s manual ABB Remote monitoring portal List of related manuals Title ABB Remote monitoring portal User s manual NETA-01 Ethernet adapter module User s manual Code (English) 3AUA0000098904
Google Analytics Guide
Google Analytics Guide 1 We re excited that you re implementing Google Analytics to help you make the most of your website and convert more visitors. This deck will go through how to create and configure
A quick giude to... Affiliate program
A quick giude to... Affiliate program In this guide... Learn how to get started as a GetResponse Affiliate, how to manage your account and how to make the most of your advertising efforts. Table of Contents
Safe internet: Getting Started Guide
Safe internet: Getting Started Guide Table of Contents 1. Preface 1 2. Before You Install 2 2.1 Disabling Firewalls 2 2.2 About Accelerators 3 3. About Profiles 4 4. Installation and Initial Configuration
Cloud Backup Express
Cloud Backup Express Table of Contents Installation and Configuration Workflow for RFCBx... 3 Cloud Management Console Installation Guide for Windows... 4 1: Run the Installer... 4 2: Choose Your Language...
Security Correlation Server Quick Installation Guide
orrelogtm Security Correlation Server Quick Installation Guide This guide provides brief information on how to install the CorreLog Server system on a Microsoft Windows platform. This information can also
AlienVault. Unified Security Management (USM) 5.x Policy Management Fundamentals
AlienVault Unified Security Management (USM) 5.x Policy Management Fundamentals USM 5.x Policy Management Fundamentals Copyright 2015 AlienVault, Inc. All rights reserved. The AlienVault Logo, AlienVault,
How to make a VPN connection to our servers from Windows 7
How to make a VPN connection to our servers from Windows 7 Windows 7 is able to make a new type of VPN connection called a Secure Socket Tunnelling Protocol (SSTP) connection. This works just like a traditional
Setting Up Scan to SMB on TaskALFA series MFP s.
Setting Up Scan to SMB on TaskALFA series MFP s. There are three steps necessary to set up a new Scan to SMB function button on the TaskALFA series color MFP. 1. A folder must be created on the PC and
Controlling Risk, Conserving Bandwidth, and Monitoring Productivity with Websense Web Security and Websense Content Gateway
Controlling Risk, Conserving Bandwidth, and Monitoring Productivity with Websense Web Security and Websense Content Gateway Websense Support Webinar January 2010 web security data security email security
Web DLP Quick Start. To get started with your Web DLP policy
1 Web DLP Quick Start Websense Data Security enables you to control how and where users upload or post sensitive data over HTTP or HTTPS connections. The Web Security manager is automatically configured
BASIC ANALYSIS OF TCP/IP NETWORKS
BASIC ANALYSIS OF TCP/IP NETWORKS INTRODUCTION Communication analysis provides powerful tool for maintenance, performance monitoring, attack detection, and problems fixing in computer networks. Today networks
SPAMfighter Mail Gateway
SPAMfighter Mail Gateway User Manual Copyright (c) 2009 SPAMfighter ApS Revised 2009-05-19 1 Table of contents 1. Introduction...3 2. Basic idea...4 2.1 Detect-and-remove...4 2.2 Power-through-simplicity...4
Installation Guide For ChoiceMail Enterprise Edition
Installation Guide For ChoiceMail Enterprise Edition How to Install ChoiceMail Enterprise On A Server In Front Of Your Company Mail Server August, 2004 Version 2.6x Copyright DigiPortal Software, 2002-2004
Application Detection
The following topics describe Firepower System application detection : Overview:, page 1 Custom Application Detectors, page 7 Viewing or Downloading Detector Details, page 15 Sorting the Detector List,
Debug Failed to connect to server!
Debug Failed to connect to server! Version 2 To many of the first time visitors to the forums, the following screenshot may look all too familiar. There are many causes for this error and unfortunately
Sendspace Wizard Desktop Tool Step-By-Step Guide
Sendspace Wizard Desktop Tool Step-By-Step Guide Copyright 2007 by sendspace.com This publication is designed to provide accurate and authoritative information for users of sendspace, the easy big file
Chapter 8 Advanced Configuration
Chapter 8 Advanced Configuration This chapter describes how to configure the advanced features of your ProSafe 802.11g Wireless VPN Firewall FVG318. Configuring Dynamic DNS If your network has a permanently
ThinPoint Quick Start Guide
ThinPoint Quick Start Guide 2 ThinPoint Quick Start Guide Table of Contents Part 1 Introduction 3 Part 2 ThinPoint Windows Host Installation 3 1 Compatibility... list 3 2 Pre-requisites... 3 3 Installation...
SYMETRIX SOLUTIONS: TECH TIP August 2014
Controlling Symetrix SymNet, Jupiter and Integrator Series Products over the Internet Note: All the information below applies to the AirTools Voice Processor 2x and AirTools Multiband Processor 2m as well.
VPN. Date: 4/15/2004 By: Heena Patel Email:[email protected]
VPN Date: 4/15/2004 By: Heena Patel Email:[email protected] What is VPN? A VPN (virtual private network) is a private data network that uses public telecommunicating infrastructure (Internet), maintaining
Regain Your Privacy on the Internet
Regain Your Privacy on the Internet by Boris Loza, PhD, CISSP from SafePatrol Solutions Inc. You'd probably be surprised if you knew what information about yourself is available on the Internet! Do you
MN-700 Base Station Configuration Guide
MN-700 Base Station Configuration Guide Contents pen the Base Station Management Tool...3 Log ff the Base Station Management Tool...3 Navigate the Base Station Management Tool...4 Current Base Station
User Manual. Onsight Management Suite Version 5.1. Another Innovation by Librestream
User Manual Onsight Management Suite Version 5.1 Another Innovation by Librestream Doc #: 400075-06 May 2012 Information in this document is subject to change without notice. Reproduction in any manner
Network Security - ISA 656 Application Firewalls
Network Security - ISA 656 Application Angelos Stavrou August 20, 2008 Moving Up the Stack Application Moving Up the Stack Filtering levels Advantages Disadvantages Example: Protecting Email Email Threats
EKT 332/4 COMPUTER NETWORK
UNIVERSITI MALAYSIA PERLIS SCHOOL OF COMPUTER & COMMUNICATIONS ENGINEERING EKT 332/4 COMPUTER NETWORK LABORATORY MODULE LAB 2 NETWORK PROTOCOL ANALYZER (SNIFFING AND IDENTIFY PROTOCOL USED IN LIVE NETWORK)
Cleaning Encrypted Traffic
Optenet Documentation Cleaning Encrypted Traffic Troubleshooting Guide iii Version History Doc Version Product Date Summary of Changes V6 OST-6.4.300 01/02/2015 English editing Optenet Documentation
Passive Vulnerability Detection
Page 1 of 5 Passive Vulnerability Detection "Techniques to passively find network security vulnerabilities" Ron Gula [email protected] September 9, 1999 Copyright 1999 Network Security Wizards
Plesk 11 Manual. Fasthosts Customer Support
Fasthosts Customer Support Plesk 11 Manual This guide covers everything you need to know in order to get started with the Parallels Plesk 11 control panel. Contents Introduction... 3 Before you begin...
Intrusion Detection and Prevention: Network and IDS Configuration and Monitoring using Snort
License Intrusion Detection and Prevention: Network and IDS Configuration and Monitoring using Snort This work by Z. Cliffe Schreuders at Leeds Metropolitan University is licensed under a Creative Commons
RemotelyAnywhere Getting Started Guide
April 2007 About RemotelyAnywhere... 2 About RemotelyAnywhere... 2 About this Guide... 2 Installation of RemotelyAnywhere... 2 Software Activation...3 Accessing RemotelyAnywhere... 4 About Dynamic IP Addresses...
Chapter 8 Router and Network Management
Chapter 8 Router and Network Management This chapter describes how to use the network management features of your ProSafe Dual WAN Gigabit Firewall with SSL & IPsec VPN. These features can be found by
You can probably work with decimal. binary numbers needed by the. Working with binary numbers is time- consuming & error-prone.
IP Addressing & Subnetting Made Easy Working with IP Addresses Introduction You can probably work with decimal numbers much easier than with the binary numbers needed by the computer. Working with binary
Server Security. Contents. Is Rumpus Secure? 2. Use Care When Creating User Accounts 2. Managing Passwords 3. Watch Out For Aliases 4
Contents Is Rumpus Secure? 2 Use Care When Creating User Accounts 2 Managing Passwords 3 Watch Out For Aliases 4 Deploy A Firewall 5 Minimize Running Applications And Processes 5 Manage Physical Access
Safe internet for business use: Getting Started Guide
Safe internet for business use: Getting Started Guide Table of Contents 1. Preface 1 2. Before You Install 2 2.1 Disabling Firewalls 2 2.2 About Accelerators 3 3. About Profiles 4 4. Installation and Initial
Product Guide. Sawmill Analytics, Swindon SN4 9LZ UK [email protected] tel: +44 845 250 4470
Product Guide What is Sawmill Sawmill is a highly sophisticated and flexible analysis and reporting tool. It can read text log files from over 800 different sources and analyse their content. Once analyzed
Software Version 1.0 ConnectKey TM Share to Cloud April 2013. Xerox ConnectKey Share to Cloud User / Administrator s Guide
Software Version 1.0 ConnectKey TM Share to Cloud April 2013 Xerox ConnectKey Share to Cloud User / Administrator s Guide 2013 Xerox Corporation. All rights reserved. Xerox, Xerox and Design, and Xerox
Deploying Secure Internet Connectivity
C H A P T E R 5 Deploying Secure Internet Connectivity This chapter is a step-by-step procedure explaining how to use the ASDM Startup Wizard to set up the initial configuration for your ASA/PIX Security
How to train your Browser Controller
How to train your Browser Controller Table of Contents ABOUT 3 TOP BAR SETTINGS 3 CHILD LOCK 3 SPYDERWEB 3 PERSONAL PRIVACY EXPOSURE 4 KEY & STATS 4 GRAPH VIEW 4 AUTO-REFRESH 5 DOMAIN GEO-LOCATION INFO
DRIVE-BY DOWNLOAD WHAT IS DRIVE-BY DOWNLOAD? A Typical Attack Scenario
DRIVE-BY DOWNLOAD WHAT IS DRIVE-BY DOWNLOAD? Drive-by Downloads are a common technique used by attackers to silently install malware on a victim s computer. Once a target website has been weaponized with
DEPLOYMENT GUIDE Version 2.1. Deploying F5 with Microsoft SharePoint 2010
DEPLOYMENT GUIDE Version 2.1 Deploying F5 with Microsoft SharePoint 2010 Table of Contents Table of Contents Introducing the F5 Deployment Guide for Microsoft SharePoint 2010 Prerequisites and configuration
Host Discovery with nmap
Host Discovery with nmap By: Mark Wolfgang [email protected] November 2002 Table of Contents Host Discovery with nmap... 1 1. Introduction... 3 1.1 What is Host Discovery?... 4 2. Exploring nmap s Default
Chapter 6 Configuring the SSL VPN Tunnel Client and Port Forwarding
Chapter 6 Configuring the SSL VPN Tunnel Client and Port Forwarding This chapter describes the configuration for the SSL VPN Tunnel Client and for Port Forwarding. When a remote user accesses the SSL VPN
technical brief browsing to an installation of HP Web Jetadmin. Internal Access HTTP Port Access List User Profiles HTTP Port
technical brief in HP Overview HP is a powerful webbased software utility for installing, configuring, and managing networkconnected devices. Since it can install and configure devices, it must be able
Some Special Fields of Data Security
Some Special Fields of Data Security Keszthelyi András [email protected] Our age is called information age which shows the importance of any kind of data. Because of this one should protect
Access Control Rules: URL Filtering
The following topics describe how to configure URL filtering for your Firepower System: URL Filtering and Access Control, page 1 Reputation-Based URL Filtering, page 2 Manual URL Filtering, page 5 Limitations
Student ANGEL FAQs. General Issues: System Requirements:
Student ANGEL FAQs General Issues: What is ANGEL? How do I log in? What is my username and password? How do I activate my account? I forgot my C number/password, what do I do? I registered after the first
Agenda. Taxonomy of Botnet Threats. Background. Summary. Background. Taxonomy. Trend Micro Inc. Presented by Tushar Ranka
Taxonomy of Botnet Threats Trend Micro Inc. Presented by Tushar Ranka Agenda Summary Background Taxonomy Attacking Behavior Command & Control Rallying Mechanisms Communication Protocols Evasion Techniques
ReadyNAS Remote White Paper. NETGEAR May 2010
ReadyNAS Remote White Paper NETGEAR May 2010 Table of Contents Overview... 3 Architecture... 3 Security... 4 Remote Firewall... 5 Performance... 5 Overview ReadyNAS Remote is a software application that
Live Agent for Support Agents
Live Agent for Support Agents Salesforce, Spring 16 @salesforcedocs Last updated: February 18, 2016 Copyright 2000 2016 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of
Internet Privacy Options
2 Privacy Internet Privacy Sirindhorn International Institute of Technology Thammasat University Prepared by Steven Gordon on 19 June 2014 Common/Reports/internet-privacy-options.tex, r892 1 Privacy Acronyms
How to Configure Captive Portal
How to Configure Captive Portal Captive portal is one of the user identification methods available on the Palo Alto Networks firewall. Unknown users sending HTTP or HTTPS 1 traffic will be authenticated,
Sophos Mobile Control as a Service Startup guide. Product version: 3.5
Sophos Mobile Control as a Service Startup guide Product version: 3.5 Document date: August 2013 Contents 1 About this guide...3 2 What are the key steps?...4 3 First login...5 4 Change your administrator
Chapter 4 Security and Firewall Protection
Chapter 4 Security and Firewall Protection This chapter describes how to use the Security features of the ProSafe Wireless ADSL Modem VPN Firewall Router to protect your network. These features can be
INSTALLATION AND CONFIGURATION GUIDE (THIS DOCUMENT RELATES TO MDAEMON v9.5.0 ONWARDS)
Web: Overview INSTALLATION AND CONFIGURATION GUIDE (THIS DOCUMENT RELATES TO MDAEMON v9.5.0 ONWARDS) This document is designed to provide a quick installation and configuration guide for MDaemon along
Remote PC Guide for Standalone PC Implementation
Remote PC Guide for Standalone PC Implementation Updated: 2007-01-22 The guide covers features available in NETLAB+ version 3.6.1 and later. IMPORTANT Standalone PC implementation is no longer recommended.
