the most downloaded ones. For other platforms such as
iOS and macOS, the number of downloads per app is not
visible, and we instead use the number of user ratings
to pick the most rated apps. The idea is that an app with
more ratings will likely have more users.
2.
Multiple OSs and versions. In our evaluation, we also
cover multiple platforms, namely Android, iOS, macOS,
Windows, and Linux. This is important because the be-
havior of an app may depend on the platform that it is
running on. Therefore, we also explicitly picked apps
that support multiple platforms. Additionally, the fea-
tures and behavior of an app may depend on whether a
free or paid version is used, and because of this, we will
also test both paid and free VPN clients.
3.
Overlap with previous papers. To enable an easier
comparison with related work, we also evaluated VPNs
that recent papers studied [10, 30,35, 47, 49]. That is, we
picked VPNs that are evaluated in all or many of these
papers. These papers themselves chose VPNs based on
popular review and recommendation websites, personal
recommendations, widely-used free and paid ones, etc.
In total, we investigated 63 VPN applications and 4 OS built-
in VPNs on multiple mobile and desktop platforms over five
mainstream operating systems. All combined, we tested 195
unique VPN client and OS combinations for the LocalNet
attacks, and 53 unique combinations for the ServerIP attacks.
5.2 Hardware and Software Setup
We tested our attacks against 15 devices that cover mobile
and desktop platforms: three iPhones (iPhone 12 mini with
iOS 14.1, iPhone 12 with iOS 16.1.1, and iPhone 13 Pro Max
with iOS 15.6.1), three Androids (Android 9, 12 and 13), one
Android pad (Android 8.1.0), two MacBooks (macOS 12.6
and 13.0.1), two laptops running Windows 10 and 11 Pro, and
laptops running four different Ubuntu releases (16.04, 18.04,
20.04, and 22.04). To create a rogue AP we use a Panda
300Mbps Wireless 802.11n USB dongle, a laptop running
Ubuntu 16.04, and version 0.4.6 of the
create ap
script to
start and configure the AP [36]. Finally, we use a web browser,
e. g., Chrome or Safari, to check if we can visit the target web-
sites outside the VPN tunnel, and we also double-check leaks
outside the VPN tunnel by inspecting traffic in Wireshark.
Once the rogue AP is started using the
create ap
script,
victim devices can connect to it for access to the Internet, and
all the traffic coming from the victim device can be inspected
with the Wireshark packet analyzer. The
create ap
script
also allows users to configure the IP address of the AP and
thereby the subnet used by the local network. In our tests, this
IP address is picked such that the resulting subnet of the local
network contains the target website’s IP address.
To test paid VPN clients, we created an account for each
client, paid for the service, and verified its correct opera-
tion. When no standalone client was available, but VPN pro-
files like OpenVPN configurations were offered by the VPN
provider, we downloaded the config files, and then conducted
the tests using the OS built-in VPN or a 3rd-party VPN client.
5.3 LocalNet attacks: Experimental Setup
The steps to perform the LocalNet attacks are shown in Fig-
ure 5 and were implemented to determine if a VPN client
is vulnerable. The goal of these steps is to make the victim
leak traffic toward
target.com
outside the VPN tunnel. In
our tests, this website is not using HTTPS, meaning if it is
accessed outside the VPN tunnel we can then redirect the
request to a malicious phishing clone of the website. This
malicious copy is hosted in our local network on a Windows
web server running Internet Information Services (IIS). The
victim will only see this (easily recognizable) malicious copy
if it tries to access it outside the VPN tunnel, i.e., it will only
see it when vulnerable to our attack.
In step
1
⃝
of the attack, we assume that the victim has con-
nected to the rogue AP and that it will use DHCP to request
an IP address. In step
2
⃝
, the rogue AP will not reply with a
typical RFC1918 private IP address, but it will instead hand
out an IP address within the same subnet as the IP address
corresponding to
target.com
. In our example, the IP address
of the target is 1.2.3.20, and the rogue AP uses the correspond-
ing subnet 1.2.3.0/24 for the local network. When the VPN
client then establishes a secure tunnel in step
3
⃝
, it will update
the client’s routing table to send all traffic through this tunnel,
except traffic towards devices within the local network so that
local devices remain accessible when using the VPN. This
means most internet traffic will still use the VPN tunnel, as
indicated in step
4
⃝
, meaning the victim is unlikely to notice
the attack since the VPN keeps working as expected.
In step
5
⃝
, the victim visits
target.com
. Since the IP
address of this website now falls within the local network, the
victim will directly access the server without using the secure
VPN tunnel. That is, the client will use ARP to determine the
MAC address of the local device that has IP address 1.2.3.20,
and will then send traffic directly to the malicious clone of
the website that is hosted within the same local network.
We remark that in the above example, all traffic to IP ad-
dresses in the subnet 1.2.3.0/24 will be sent outside the VPN
tunnel. The attack can be made more targeted by defining the
local network as a smaller subnet such as 1.2.3.16/29. This
would make the victim send traffic to IP addresses within the
range 1.2.3.16-23 outside the VPN tunnel. Alternatively, an
adversary can assign the IP range 0.0.0.0/1 or 128.0.0.0/1 to
the local network to intercept nearly all IP traffic.
5.4 LocalNet Attacks: Results
The number of VPN clients vulnerable to LocalNet attacks is
summarized in Figure 6 and a detailed overview is presented