Anonymity Check your Anonymity.


Fixxx

Moder
Joined
20.08.24
Messages
267
Reaction score
494
Points
63
1724713447623.png

The article is created to allow users to analyze the anonymity of their presence and provide more detailed information about the verification methods.
First, go to BrowserLeaks (or similar). We'll talk about 14 verification methods:


1. HTTP proxy headers

Some proxies append their headers to the request initiated by the user's browser. Often this is the real IP address of the user. Make sure that if the proxy server writes anything in the headers listed below, at least it's not your address:
HTTP_VIA, HTTP_X_FORWARDED_FOR, HTTP_FORWARDED_FOR, HTTP_X_FORWARDED, HTTP_FORWARDED, HTTP_CLIENT_IP, HTTP_FORWARDED_FOR_IP, VIA, X_FORWARDED_FOR, FORWARDED_FOR, X_FORWARDED, FORWARDED, CLIENT_IP, FORWARDED_FOR_IP, HTTP_PROXY_CONNECTION


2. Open ports of HTTP proxy

The IP address from which the request to our page came can reveal a lot. For example, you can see which ports are open on the other side? The most burnt ports: 3128, 1080 and 8123. If you avoid using them you can easily avoid unwarranted suspicions of using 3proxy, SOCKS 5 or Polipo.


3. Open ports of web proxy

As with HTTP you can assign a web proxy to any port but we wanted the test to run very quickly, so we limited it to reverse connects on ports 80 and 8080. Is a web page returned? Great! At the moment, we can identify PHProxy, CGIProxy, Cohula and Glype. Non-standard ports with authentication close the issue.


4. Suspicious hostname

Having an IP address you can try to resolve the client's hostname. Stop words that may hint at a tunnel: vpn, hide, hidden, proxy. It's not advisable to associate domain names with personal VPNs, and if you do, it's better to avoid "speaking" names.


5. Difference in time zones (browser and IP)

Based on GeoIP data you can determine the country by the user's IP and consequently, their time zone. Then you can calculate the time difference between the browser and the time corresponding to the VPN server's time zone. Is there a difference? Then the user is likely hiding. For Russia there's no exact database of latitude and longitude for regions and since there are many time zones we don't consider these addresses in the final result. With European countries it's the opposite - they are easily exposed. When switching to a VPN don't forget to adjust the system time, change the time in the browser or work with proxies.


6. IP belonging to the Tor network

If your IP address is a Tor node from the site's list - congratulations! You have been exposed.
Nothing criminal but the fact of revealing that you are hiding is not very pleasing.


7. Turbo browser mode

By collecting IP address ranges of Google, Safari, Opera and comparing them to the user's address you can assume the use of traffic compression services in browsers of these companies. Usually these services also leak your real address in the headers. Don't rely on traffic compression as an anonymity tool.
8. Web proxy detection (JS method)

By comparing window.location.hostname with the host of the requested page you can determine if a web proxy is being used.
Web proxies (our anonymizers) are generally unreliable, so it's best to avoid such anonymization methods altogether.


9. IP leakage through Flash

Adobe Flash works very well bypassing user proxies. By initiating a connection to our server you can determine the user's IP. By running a special daemon that logs all incoming connections with key tags you can learn a lot. The best way not to disclose your address is to not use Adobe Flash at all or disable it in the browser settings. For example, the Firefox browser disables Flash by default, so it's worth considering.


10. Tunnel detection (two-way ping)

By pinging the client's IP from our server side you can determine the approximate route length. The same can be done from the browser side; XMLHttpRequest pulls an empty page from our nginx. A loop difference of more than 30 ms can be interpreted as a tunnel. Of course, the routes there and back may differ or the web server may slow down a bit, but overall, the accuracy is quite good. The only way to protect yourself is to block ICMP traffic to your VPN server by properly configuring your firewall.


11. DNS leak

Finding out which DNS a user is using is not a problem; we have written our DNS server that records all requests to our uniquely generated subdomains. The next step was to gather statistics on several million users who uses which DNS. We linked them to providers, discarded public DNS and obtained a list of DNS/ISP pairs. Now it's quite easy to find out if a user claims to be a subscriber of one network but uses DNS from another. Using public DNS services partially solves the problem.
12. Leakage through social networks

This is not an IP address leak but by sharing the names of authorized users left and right, for example, Facebook leaks private data that undermines all surfing anonymity. The "Logout" button after each session generally solves the issue but the best recommendation is not to use social networks...


13. WEB-RTC

WebRTC allows establishing video conferencing without using plugins through modern browsers like Mozilla and Chrome but at the same time reveals your real IP even when using a VPN as well as a list of all local IP addresses behind NAT. WebRTC is supported only in Chrome and Firefox browsers. There is no native support for WebRTC in Internet Explorer and Safari browsers.

Disabling WebRTC in Firefox:
Enter in the browser address bar: about:config
Enter in the search: media.peerconnection.enabled
Set the value to "false" and check again!​

Disabling WebRTC in Chrome:
To block WebRTC in Google Chrome you need to install the WebRTC Block plugin.​

Disabling WebRTC on Android for Chrome users:

In the Chrome browser address bar, enter: chrome://flags/#disable-webrtc
Set the value to "enable".​


Another alternative way to detect proxies and VPNs:
 

Fixxx

Moder
Joined
20.08.24
Messages
267
Reaction score
494
Points
63
14. MSS and MTU

MTU or Maximum Transmission Unit is the maximum amount of data that can be transmitted in one packet. MTU is set for each network adapter even for routers through which traffic from you to the remote server is transited. In most cases the internet uses an MTU of 1500 but there are noticeable exceptions that often follow certain rules. When your browser or any other network-related software creates a TCP connection to a remote server the Maximum Segment Size (MSS) value is placed in the packet headers. This value informs the server of the maximum segment size it can transmit in one packet. It's very close to the Maximum Transmission Unit (MTU) and immediately informs the server about the capabilities of your internet connection, excluding unnecessary fragmentation and allowing full utilization of your channel. When you send a packet while connected to a VPN using a protocol (PPTP, L2TP(IPsec), IPsec IKE) it's encapsulated in another packet, incurring overhead costs. Large packets that would have been sent without fragmentation without a VPN now need to be fragmented. To avoid such fragmentation the operating system sets a lower MTU on the network interface than the real network interface's MTU, so the OS doesn't attempt to create large packets that would require fragmentation. In the case of PPTP, L2TP(IPsec), IPsec there are no standards for the tunnel MTU; values are set to work in most cases, often set by estimation. Typically this is 1400 allowing the use of PPTP on channels with an MTU up to 1440 without fragmentation.

OpenVPN is one of the most popular VPN options. When compatibility with old or problematic software is required OpenVPN doesn't set a lower MTU value on the VPN interface by default but changes the MSS value inside the encapsulated TCP packet. This is controlled by the mssfix parameter set by default to 1450. It adjusts the MSS to fully utilize the channel with an MTU of 1450 calculating its overhead to pass through a channel with an MTU of 1450 and above without fragmentation. As a result we can not only identify OpenVPN users with the standard mssfix 1450 but also determine their connection protocol (IPv4, IPv6), transport layer protocol (TCP, UDP), encryption parameters, compression and MAC as they introduce their unique overheads reflected in MSS. If 64-bit encryption is used - it's Blowfish. If 128-bit - it's AES.

Testing two VPN services: VyprVPN and ibVPN. Both services are susceptible to settings identification using the described method. If you don't want to be detected in this way you can disable mssfix by setting it to 0 on both the server and clients, thereby obtaining an MSS of 1460 (typical for IPv4) corresponding to an MTU of 1500 - a typical MTU for a regular wired connection that the vast majority of users have. However, in this case you will experience unnecessary fragmentation leading to increased delays and reduced bandwidth. Therefore, it's advisable to set the MTU to 1400, 1380 or similar (should be a multiple of 10) since such values are often used by providers - for example, in mobile internet connections.


Now let's talk about "WITCH?"

This small project will tell you about the settings of your OpenVPN connection (if you haven't changed mssfix) attempt to determine your OS and compare it with the OS in the User-Agent, get the PTR record for your IP and compare it with a set of rules, determining if you are using an internet channel, designed for home or server users.
First seen = 2015/07/24 17:19:29
Last update = 2015/07/24 18:39:37
Total flows = 7
Detected OS = Linux 3.11 and newer
HTTP software = Firefox 10.x or newer (ID seems legit)
MTU = 1409
Network link = OpenVPN UDP bs64 SHA1
Language = Russian
Distance = 15
Uptime = 1 days 19 hrs 39 min (modulo 165 days)
PTR test = Probably home user
Fingerprint and OS match. No proxy detected.
OpenVPN detected. Block size is 64 bytes long (probably Blowfish), MAC is SHA1.

1724713909869.png

WITCH? also easily identifies Tor Browser users as it uses the same static User-Agent (as Windows) on all OS and exit nodes are run under Linux and FreeBSD. As a result of testing on different OS and providers:

- Mobile Internet from some providers passes all connections through a proxy under Linux. This was detected when a person accessed WITCH? with an iPhone and the OS was identified as Linux. It's likely that this is how they change HTML tags and modify website designs.
- The MTU for mobile devices can be virtually anything but typically ends in 0. The same SIM in different phones uses different MTU values.
- The code responsible for mssfix in OpenVPN is very slow.


At the end of the article I suggest testing the excellent resource p0f.

This project can passively listen to traffic, determine OS, MTU and browser, notify about OS mismatch between packet creator and User-Agent. It also has an API.
With some modifications and signature updates it can be used to detect users of popular VPN protocols, proxy users and those spoofing User-Agent information.
 
Last edited:
Top Bottom